Podstawy Programowania
- Ćwiczenia 4
Zasady, Ćw1, Ćw2, Ćw3, Ćw4, Ćw5, Ćw6, Ćw7, Ćw8, Ćw9, Ćw10, Ćw11,
Ćw12, Ćw13
Prowadzący: Rafał Witkowski
Temat: Debugowanie
Aby uruchomić debugera w programie należy używać poleceń z menu pod
przyciskiem Run.
Podstawowe z nich to:
F8 - wykonaj program linia po linii (wykonaj kolejną linię programu)
F7 - wykonaj kolejną linię programu, chyba, że jest to procedura, wtedy
wykonaj pierwszą linię procedury
F4 - wykonaj program do linii w której znajduje się kursor
Ctrl+F5 - dodaj zmienną do Watcha
Watch to okienko, w którym można podglądać wartości zmiennych
wykorzystywanych w programie.
Aby Watch działał tak jak tego od niego oczekujemy należy najpierw
wykonać:
Project -> Options -> Compiler
i odznaczyć pole Optimize.
Jeśli wykonywaną linią programu jest wczytywanie danych, obsługa
przełączy się do czarnego okienka DOSowego programu i będzie czekał, aż
wpiszemy mu tam jakąś liczbę. Po wpisaniu obsługa przełączy się z
powrotem do Dephi, gdzie będzie można kontynuować debugowanie.
Zadanie 1
Poniżej podany został kod programu liczący błędnie NWD wg algorytmu
Euklidesa. Zadanie polega na znalezieniu błędu w poniższym kodzie (przy
pomocy debugowania), a poprawnego wysłania na sprawrkę (zadanie ppr5).
//---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
int d,i;
int liczba1, liczba2; // deklaracja zmiennych
int liczba[3];
scanf("%d",d);
while (d--)
{
for (int i=1 ; i<=2 ; i++) scanf("%d",&liczba[i]);
liczba1 = liczba[1];
liczba2 = liczba[2];
do
{
if (liczba1 > liczba2) liczba2 = liczba1 - liczba2;
else liczba1 = liczba2 - liczba1;
} while (liczba1 != liczba2);
printf("%d\n",liczba2);
}
return 0;
}
//---------------------------------------------------------------------------
Uwaga!
Konstrukcja
głównej pętli programu while (d--) jest jak najbardziej prawidłowa. O
tym dlaczego tak jest można się dowiedzieć czytając ćwiczenia 2