Po pierwsze, jeśli występują błędy składniowe, musisz po prostu uważnie przeczytać błędy kompilatora. Często wiersz jest podświetlony jako błąd, ale tak naprawdę poprzedni wiersz zawierał błąd.
Pamiętaj, że dla ucznia wprowadzającego mogą istnieć pewne artefakty edycyjne, które uniemożliwiają kompilację programu, którego nie można zobaczyć. Na przykład kiedyś widziałem studenta (nie mojego), który zamiast spacji użył spacji: jego kod wyglądał normalnie na edytorze, który zawinął po 80 kolumnach (student był bardzo cierpliwy), a kod działał nawet do momentu dodania //
komentarz w stylu „ ”, który skomentował resztę programu. Podobnie, jeśli kopiujesz próbki kodu ze strony internetowej, często kopiowane są również znaki niedrukowalne (w zależności od tego, jak strona sformatowała kod). W razie wątpliwości wpisz ponownie wiersz bez kopiowania i wklejania. [To trochę niesamowite, ale ostatnio widziałem, że zdarza się to znacznie częściej.]
W przypadku paskudnych błędów kompilatora może być konieczne rozwinięcie programu przez utworzenie nowego pliku i wpisanie całego kodu w miarę postępów. Pamiętaj, aby kompilować po każdym ważnym kroku, zanim przejdziesz do następnego.
OK, a co jeśli nie ma błędów składniowych? Czas przejść przez kod! Możesz użyć do tego debuggera, ale wywoływanie printf
całego kodu jest również bardzo skuteczne. Na przykład, jeśli istnieje for
pętla, dodaj instrukcję print dla licznika pętli. W przypadku zagnieżdżonych for
pętli może się okazać, że zwiększana jest niewłaściwa zmienna.
Zaletą używania printf
s jest jego zdolność do „kompresji” w czasie / przestrzeni tego, co aktualnie oglądasz. Po przejściu przez debugger widzisz również wiele nieistotnych stanów i może to być bardziej nużące. Ponadto, nie widząc historii tego, co zostało wydrukowane na konsoli, możesz przeoczyć niektóre wzory. Chodzi o to, że debugger i printfs są uzupełniającymi się technikami i żadna z nich nie zawsze jest lepsza od drugiej.
Na koniec po prostu zapytaj znajomego, co się dzieje! Zamiast patrzeć na to i mówić „uh”, zapytaj ich, co robią: „co teraz robi n
?” Rozpoczynając dialog, mogą oni odpowiedzieć na własne pytanie lub możesz zdać sobie sprawę ze sposobu, w jaki konceptualizowali program, który ma wadę, która może doprowadzić cię do rozwiązania.
Jak skomentowano w innym miejscu, wszystko to staje się lepsze wraz z doświadczeniem. Mimo że programuję od 20 lat, dopiero w ciągu ostatnich 5 lat pracowałem ze studentami, aby lepiej pomagać im w ich błędach.