Zajmiemy się teraz kodem źródłowym naszego programu. Programy pisane w Delphi są tworzone praktycznie w większości myszką (przynajmniej przez bardzo początkujących programistów). Zaglądanie jednak do kodu źródłowego programu jest konieczne i wcześniej czy później każdy musi tam zajrzeć. Zacznie coś poprawiać, modyfikować, dopisywać. Kod programu szybko się rozrasta i dlatego należy go pielęgnować. KROK 13 Cel: Dopisywanie komentarzy w kodzie źródłowym. 1. Otwórz swój program. 2. Przejdź do źródła. Posłuży ci do tego funkcja Toggle Form/Unit lub naciśnięcie klawisza F12. [rys.1] rys.1 3. Za pomocą paska przewijania, przejrzyj cały kod źródłowy swojego programu. [rys.2] Zauważysz, że niektóre wyrazy są pogrubione, niektóre instrukcje zaczynają się wcięciami w tekście. Widoczne są również systematycznie wstawiane większe odległości miedzy liniami kodu. To wszystko nie jest bez znaczenia. Tak edytowany kod jest czytelniejszy i łatwiej znaleźć jego fragment. Dla kompilatora jest to bez różnicy. Zachęcam zatem do stosowania tych wyróżnień.
rys.2 Gdzie to tylko jest możliwe, należy również wpisywać komentarze. Dają nam możliwość dodawania własnych wyjaśnień, uzupełnień. Odpowiednio zapisane nie są brane pod uwagę przez kompilator i nie mają wpływu na działanie programu. Właściwe i obszerne stosowanie komentarzy pozwala na szybsze i dokładniejsze zrozumienie kodu przez innych, ale przede wszystkim przez nas samych. Przecież rozbudowany program nie powstaje przez tydzień, potrzeba na to miesięcy, a nawet lat. Komentarze - to jedne z podstawowych elementów języka programowania (są to teksty dla programisty lub innego człowieka, a nie komputera, a więc w procesie kompilacji nie są tłumaczone). Umieszczamy je w nawiasach klamrowych { } - jeżeli komentarz przekracza jedną linię tekstu lub używamy ukośników // - dla komentarzy krótkich, nie przekraczających jednej linii tekstu. W komentarzach i apostrofach (... ) możemy używać polskich znaków. Przykład na użycie komentarzy: Program nazwisko; {na końcu linii stawiamy średnik} {początek, po nie stawiamy średnika}
end. writeln ( Jan Łukasiewicz ); readln; {napisz i przenieś do następnej linii, wyświetl to co w nawiasie} {wczytaj i przejdź do następnej linii} {koniec} Wspólnie przeanalizujemy kod naszego programu: 4. Otwórz kod źródłowy swojego programu i wpisz według wzoru. [rys.3] Musisz w tym celu postawić kursor przed pierwszą literą i klawiszem Enter zrobić miejsce na wprowadzenie tekstu: {To jest program Notatnik 1.0, napisany przez: (podaj swoje imię i nazwisko)} Jeżeli użyłeś nawiasów klamrowych ten tekst stał się komentarzem. Skompiluj program. Mam nadzieję, że wszystko działa. Nie zapomnij o postawieniu nawiasu zamykającego. rys.3
A to inny sposób wprowadzania komentarzy. [rys.4] rys.4 Jakiego koloru używa twój program do edycji komentarzy? Czy można zmieniać kolory poszczególnych słów w kodzie źródłowym? Jak to zrobić? 5. Wybierz menu Tools Editor Options... [rys.5] rys.5 6. Wybierz zakładkę Color i ustaw kolor komentarzy na zielony. [rys.6] Okno Editor Properties może mieć nieco odmienny wygląd, w zależności od używanej wersji Delphi. Postaraj się jednak odszukać zakładkę Color i ustawić komentarze na zielony.
Sprawdź, jakie jeszcze możliwości zmiany kolorów poszczególnych słów daje Delphi. rys.6 Czy potrafiłbyś uzupełnić komentarzami swój program? Spróbuj wykonać wpisy samodzielnie. Sprawdź z kodem poniżej. Czy kod źródłowy twojego programu wygląda podobnie? Jeżeli są różnice, zastanów się na jakim etapie mogły powstać i czy mają wpływ na poprawne działanie programu. Jeżeli kompilacja przebiega bez błędów, twój kod jest w porządku. Pamiętaj, że masz w zapasie kopię swojego programu i zawsze możesz z niej skorzystać. Wszystkie dopisane komentarze kolorem zielonym. {To jest program Notatnik 1.0, napisany przez: (podaj swoje imię i nazwisko)} unit Unit1; interface //ciąg deklaracji //nazwa modułów uses //deklaracja używanych modułów Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Menus, Buttons, ComCtrls; Type //deklaracja używanych typów TForm1 = class(tform) Panel1: TPanel; //deklaracje używanych komponentów Panel2: TPanel; Button1: TButton; SpeedButton1: TSpeedButton; k: TSpeedButton;
tekst: TSpeedButton; SpeedButton4: TSpeedButton; SpeedButton5: TSpeedButton; BitBtn1: TBitBtn; SpeedButton6: TSpeedButton; SpeedButton7: TSpeedButton; SpeedButton9: TSpeedButton; SpeedButton10: TSpeedButton; SpeedButton11: TSpeedButton; StatusBar1: TStatusBar; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; FontDialog1: TFontDialog; ColorDialog1: TColorDialog; Memo1: TMemo; MainMenu1: TMainMenu; Plik1: TMenuItem; Zapisz1: TMenuItem; Zamknij1: TMenuItem; Nowy1: TMenuItem; Otwrz1: TMenuItem; N1: TMenuItem; Edycja1: TMenuItem; Wytnij1: TMenuItem; Kopiuj1: TMenuItem; Wklej1: TMenuItem; Format1: TMenuItem; Czcionka1: TMenuItem; T1: TMenuItem; Pomoc1: TMenuItem; Oprogramie1: TMenuItem; N2: TMenuItem; N3: TMenuItem; procedure Button1Click(Sender: TObject); //deklaracje procedur procedure BitBtn1Click(Sender: TObject); procedure tekstclick(sender: TObject); procedure kclick(sender: TObject); procedure SpeedButton4Click(Sender: TObject); procedure SpeedButton5Click(Sender: TObject); procedure SpeedButton10Click(Sender: TObject); procedure SpeedButton11Click(Sender: TObject); procedure SpeedButton7Click(Sender: TObject); procedure SpeedButton6Click(Sender: TObject); procedure Nowy1Click(Sender: TObject); procedure Otwrz1Click(Sender: TObject); procedure Zapisz1Click(Sender: TObject);
procedure Zamknij1Click(Sender: TObject); procedure Wytnij1Click(Sender: TObject); procedure Kopiuj1Click(Sender: TObject); procedure Wklej1Click(Sender: TObject); procedure Czcionka1Click(Sender: TObject); procedure T1Click(Sender: TObject); procedure Oprogramie1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; //deklaracja zmiennych globalnych Implementation {ciąg kodu programu. Do tego miejsca kod programu generowany jest automatycznie. Od tego miejsca kody procedury wpisuje programista} uses Unit2; {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); close; //kod procedury procedure TForm1.BitBtn1Click(Sender: TObject); close; {kod procedury, zamykanie programu} procedure TForm1.tekstClick(Sender: TObject); Memo1.clear; {kod procedury, czyszczenie zawartości pola tekstowego Memo} procedure TForm1.kClick(Sender: TObject); Memo1.CutToClipboard; {kod procedury, wycinanie zawartości pola tekstowego Memo do schowka} procedure TForm1.SpeedButton4Click(Sender: TObject);
Memo1.CopyToClipboard; {kod procedury, kopiowanie zawartości pola tekstowego Memo do schowka} procedure TForm1.SpeedButton5Click(Sender: TObject); Memo1.PasteFromClipboard; {kod procedury, wklejanie ze schowka do pola Memo} procedure TForm1.SpeedButton10Click(Sender: TObject); if OpenDialog1.Execute then Memo1.Lines.LoadFromFile(OpenDialog1.FileName); {kod procedury, jeżeli okno dialogowe Otwórz jest gotowe, to ładuj z pliku całą zawartość do Memo} procedure TForm1.SpeedButton11Click(Sender: TObject); if SaveDialog1.Execute then Memo1.Lines.SaveToFile(SaveDialog1.FileName); {kod procedury, jeżeli okno dialogowe Zapisz jest gotowe, to wszystkie linie z Memo zapisz do pliku} procedure TForm1.SpeedButton7Click(Sender: TObject); if FontDialog1.Execute then Memo1.Font:=FontDialog1.Font; {kod procedury, jeżeli okno dialogowe Czcionka jest gotowe, to zmień zaznaczonej zawartości Memo, atrybuty czcionki} procedure TForm1.SpeedButton6Click(Sender: TObject); if ColorDialog1.Execute then Memo1.Color:=ColorDialog1.Color; jeżeli okno dialogowe Kolor jest gotowe, to zmień kolor Memo} {kod procedury, procedure TForm1.Nowy1Click(Sender: TObject); Memo1.clear; //czyść zawartość pola Memo procedure TForm1.Otwrz1Click(Sender: TObject); if OpenDialog1.Execute then Memo1.Lines.LoadFromFile(OpenDialog1.FileName); {kod procedury, jeżeli okno dialogowe Otwórz jest gotowe, to ładuj z pliku całą zawartość do Memo}
end; //zamykanie procedury procedure TForm1.Zapisz1Click(Sender: TObject); if SaveDialog1.Execute then Memo1.Lines.SaveToFile(SaveDialog1.FileName); {kod procedury, jeżeli okno dialogowe Zapisz jest gotowe, to wszystkie linie z Memo zapisz do pliku} end; //zamykanie procedury procedure TForm1.Zamknij1Click(Sender: TObject); close; //zamknij procedure TForm1.Wytnij1Click(Sender: TObject); Memo1.CutToClipboard; {kod procedury, wycinanie zawartości pola Memo do schowka} end; //zamykanie procedury procedure TForm1.Kopiuj1Click(Sender: TObject); Memo1.CopyToClipboard; {kod procedury, kopiowanie zawartości pola Memo do schowka} procedure TForm1.Wklej1Click(Sender: TObject); Memo1.PasteFromClipboard; {kod procedury, wklejanie ze schowka do pola Memo} end; //zamykanie procedury procedure TForm1.Czcionka1Click(Sender: TObject); if FontDialog1.Execute then Memo1.Font:=FontDialog1.Font; {kod procedury, jeżeli okno dialogowe Czcionka jest gotowe, to zmień zaznaczonej zawartości Memo, atrybuty czcionki} procedure TForm1.T1Click(Sender: TObject); if ColorDialog1.Execute then Memo1.Color:=ColorDialog1.Color; jeżeli okno dialogowe Kolor jest gotowe, to zmień kolor Memo} {kod procedury,
procedure TForm1.Oprogramie1Click(Sender: TObject); Form2.Show; //pokaż drugi formularz end. //zamykanie programu Komentarze możesz pisać swoimi słowami tak, żebyś w przyszłości mógł z nich skorzystać. By były dla ciebie zrozumiałe. W miarę powstawania programu komentarze będziemy uzupełniać. Mam nadzieję, że analiza kodu programu pomogła zrozumieć istotę programowania. Warto przy tej okazji zajrzeć do literatury omawiającej elementy języka i strukturę modułu.