Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
PROGRAMOWANIE KOMPUTERÓW
Tomasz BAJOREK dr inż., pok. 28 tbajorek.prz.rzeszow.pl PROGRAMOWANIE KOMPUTERÓW sem w lab. sem w lab. tematyka: podstawy programowania (obiektowego) elementy j. ObjectPascal w systemie Delphi program laboratorium - reguły odbywania zajęć i zaliczenia DELPHI 7 Personal - darmowe, literatura: S.Wołek - Programowanie komputerów cz.I., cz. II pliki wykładów + przykładów - w sieci tbajorek.prz.rzeszow.pl zaliczenie - bez egzaminu laboratorium – test praktyczny 1
2
Istota programowania komputerów
tworzenie własnych programów Chcemy zapisać, co trzeba liczyć (przetwarzać) w sposób prosty, wygodny i zrozumiały dla człowieka Program komputerowy w PaO język programowania (wysokiego poziomu) język komputerowy (wewnętrzny) tłumaczenie (translacja) komputer język programowania - zbiór reguł zapisu algorytmu (operacji obliczeniowych) system programowania - edycja, tłumaczenie, wykonywanie, uruchamianie (debugging) 2
3
ułatwia opracowywanie programów
Wniosek: podwójna rola komputera ułatwia opracowywanie programów wykonuje programy (obliczenia) 3
4
Podział języków programowania
j. obiektowe j. proceduralne (klasyczne) 4
5
Przegląd języków programowania
styl tekstowy (DOS-owy): FORTRAN PL-1, ALGOL, COBOL PASCAL, C, C++ MODULA, ADA pr. naturalne pr. strukturalne pr. pakietowe pr. obiektowe BASIC styl graficzny (Windows-owy): SMALLTALK DELPHI C obiektowy VisualBASIC języki skryptowe stron WWW: po stronie klienta - JavaScript po stronie serwera – VBScript (ASP), PHP 5
6
Programowanie obiektowe (OOP)
Istota struktura programu: stosuje się rzeczywiste obiekty, przedstawiane przez dane (pola) operacje programu dotyczą obiektów (metody – operacje na polach) wykonywanie programu: sterowane zdarzeniami (event_driven) - naciśnięcie klawisza, kliknięcie myszką, wybranie opcji menu, przepełnienie dyskietki program nie jest sekwencyjnie wykonywany oczekiwanie na zdarzenie wystąpienie zdarzenia aktywizacja procedury obsługi (metody) realizacja wspomagana przez system operacyjny Windows 6
7
pochodna języka Pascal:
System Delphi pochodna języka Pascal: zintegrowane środowisko tworzenia aplikacji IDE środowisko RAD język ObjectPascal przykład 1: dodajemy lub mnożymy dwie liczby sterowanie z menu przycisk koniec kolor tła wg przycisków radiowych kolor liczb wg przycisku wyboru 7
8
Modularna struktura programu
składowe struktury: program główny (projekt) moduł (jednostka kompilowalna) – postać półskompilowana + łącznie - biblioteki podprogram (procedura, funkcja) 8
9
program, moduł - jednopoziomowy podprogram - hierarchiczny
układ: program, moduł - jednopoziomowy podprogram - hierarchiczny struktura programu, modułu, podprogramu: - nagłówek - opis obiektów /część deklaracyjna, opisowa - zapis akcji /część operacyjna, akcyjna składowe: - deklaracje, definicje - instrukcje - komentarze - dyrektywy 9
10
ogólna struktura programu (modułu, podprogramu):
unit nazwa; // nagłówek { inny dłuższy komentarz } uses ... // deklaracja modułów const ... // definicja stałych type ... // definicja typów var ... // deklaracja zmiennych begin instrukcja_1; // operacje instrukcja_2; . . . end. część opisowa część akcyjna odwołania do składowych obiektów (właściwości, metody) - kwalifikowane Application.Terminate; Nadawca.Dane.Color := clGreen; Odbiorca.Wynik.Text := Nadawca.Dane.Text; Odbiorca.Wynik.Clear; 10
11
Narzędzia pakietu programowania – środowisko DELPHI
Projektant formularzy dodawanie (usuwanie) komponentów graficznych z biblioteki VCL rozmieszczanie i zmiana rozmiarów komponentów: indywidualnie grupa komponentów (Shift + kliknięcie) lub kontur + menu kontekstowe Repertuar komponentów standardowe + dodatkowe okienka dialogowe dostęp + obsługa + raporty baz danych serwer i strony WWW Czynności projekt interfejsu – komponenty i ich właściwości (Inspektor obiektów) tworzenie kodu dla obsługi metod (Events) kompilacja i wykonanie (Run) - błędy 11
12
Inspektor obiektów wybór obiektu wskazanie w formularzu lista obiektów
typy właściwości tekst (wpisywanie) wybór z listy właściwości strukturalne - rozwijanie lub okno ustawiania właściwości mnogościowe - rozwijanie składowych najważniejsze właściwości: - nazwa obiektu (dla operacji) - name - tytuł (nagłówek) - caption - kolor - color czcionka – font zawartość obsługa zdarzeń - nazwy procedur (tworzonych w edytorze): pierwsza 2 x kliknięcie obiektu inne 2 x kliknięcie w pozycję można wybierać z istniejących 12
13
Przykład: Edytor tekstu
mechanizmy: wstawianie, usuwanie, wycinki, schowek zamiana na komentarz wspomaganie pisania (podpowiedzi) uzupełnianie tekstu (wstawianie nazwy) Ctrl+spacja : - po kropce - wybieranie tekstem lub wskazaniem koniec: kropka, spacja, Enter, średnik, nawias musi być poprawny początek wstawianie wzorców Ctrl+J podpowiedź o parametrach procedury/funkcji Ctrl+Shift+spacja przykład 2: przepisywanie z pola Edit do Memo 13
14
` Standardowe komponenty graficzne VCL Formularz (okno) - Form
właściwości name: string - nazwa obiektu (formularza) caption: string - tytuł okna menu: - główne - obiekt popUpMenu: - kontekstowe - obiekt Przycisk akcji - Button właściwości name: string - nazwa obiektu (przycisku) caption: string - tytuł przycisku (&z - litera klawisza skrótu) zdarzenia i metody onClick - obsługa kliknięcia 14
15
Pole edycji jednowierszowej – Edit
otrzymywanie lub wprowadzanie danych tekstowych pełna edycja informacji zaznaczanie wycinka tekstu i operacje właściwości (ważniejsze) text: string - treść wiersza zdarzenia i metody w. text := war_tekstowa - ustawienie (wpisanie) z. onClick - obsługa kliknięcia z. onChange - dowolna zmiana zawartości p. clear - wyzerowanie pola 15
16
Pole edycji wielowierszowej – Memo
wartości wprowadzane z klawiatury lub programowo możliwość edycji wielowierszowej współpraca ze schowkiem właściwości: lines: Tstrings - cała lista wierszy lines[nr_w] - dostęp do wiersza (numeracja od 0) lines[nr_w] := wyr_tekstowe - zmiana treści wiersza lines.count: integer liczba składowych listy 16
17
Przykłady: metody - dla lines : - p. clear; - zeruje
- p. append( s: string ); - dodaje na koniec listy; - f. add( s: string ): integer; - podobnie wynik - nr wiersza (od 0) - p. insert( index: integer; s: string); - wstawia w pozycji index - p. delete( index: integer ); - usunięcie wiersza - p. loadFromFile( fileName: string ); - dopisanie z pliku tekstowego - p. saveToFile( fileName: string); zapisanie do pliku Przykłady: Memo1.Lines.Add( 'Kowalski'); Memo1.Lines[2] := Edit1.Text; Memo1.Lines.Insert( 5, 'Kowalski‘ ); Memo1.Font.Size := 14; Memo1.Clear; 17
18
Język ObjectPascal - podstawowe elementy
Alfabet języka symbole podstawowe (pascalowe) Słowa kluczowe nazwy zastrzeżone Identyfikatory (nazwy) ciąg liter (także _ ) lub cyfr, rozpoczynający się od litery, różny od słowa kluczowego Stałe numeryczne - liczby całkowite - ciąg cyfr, ewentualnie poprzedzonych przez + - rzeczywiste - zapis zwykły m.n - zapis wykładniczy (naukowy) 18
19
var lista_nazw_zmiennych: integer; lista_nazw_zmiennych: real;
Zmienne całkowite i rzeczywiste (proste) Zmienne przechowują dane – muszą być deklarowane ich nazwy (identyfikatory) i przyporządkowanie do typu var lista nazw zmiennych: typ1; lista nazw zmiennych: typ2; ....; Postać deklaracji: var lista_nazw_zmiennych: integer; lista_nazw_zmiennych: real; np.: var i, j, k: integer; a, b, suma: real;
20
Typy standardowe Typy liczbowe całkowite: Integer
i inne (Byte, Word...) rzeczywiste podstawowy Real i inne Single Double Extended, różnią się zakresem Typ znakowy: Char Typ tekstowy (łańcuchowy): String Typ logiczny: Boolean (wartości true i false)
21
Typy definiowane Typ wyliczeniowy Definicja: ( lista wartości ) np.
var dzien : (po, wt, sr, cz, pi, so ,ni); Typ okrojony Typ okrojony wyznacza podzbiór dowolnego typu porządkowego (boolean, char, całkowitoliczbowy, wyliczeniowy) zwanego typem bazowym: w1 .. w2 gdzie w1 <= w2 var dni : ; Inne (strukturalne) poznamy potem – tablicowy, rekordowy, plikowy
22
Typy można definiować a potem używać
np. type dni = (po, wt, sr, cz, pi, so ,ni); var dzien : dni; UWAGA: dni to nazwa typu, dzien to nazwa zmiennej, tylko w niej można przechować wartości, np. dzien := wt; //to jest instrukcja wykonywana Typ okrojony Typ okrojony wyznacza podzbiór dowolnego typu porządkowego (boolean, char, całkowitoliczbowy, wyliczeniowy) zwanego typem bazowym: w1 .. w2 gdzie w1 <= w2 var dni : ; Inne (strukturalne) poznamy potem – tablicowy, rekordowy, plikowy
23
Wyrażenie arytmetyczne
Postać - sensowna kombinacja – podobnie jak w Excelu: argumenty: - stałe - ich wartości - zmienne - ich wartości - wywołania funkcji - ich wartości operatory - jednoargumentowe - dwuargumentowe nawiasy - kolejność operacji wyrażenie stała wyrażenie zmienna wyrażenie funkcja (wyrażenie) wyrażenie wyrażenie operator wyrażenie 23
24
Operatory: 24
25
kolejność wykonywania operacji
nawiasy - w pierwszym rzędzie ważność operatorów: jednoargumentowe multiplikatywne addytywne w grupie jednakowo ważnych - od lewej do prawej funkcje standardowe - wywołanie nazwa_funkcji( argument ) wartość wyrażenie rekurencja ogólnie: zawsze nawias typ argumentu i wyniku określony 25
26
zaokrąglenie do całkowitej
abs real/integer wartość bezwzględna int real część całkowita frac część ułamkowa round integer zaokrąglenie do całkowitej trunc obcięcie do całkowitej maxint maksymalna wartość całkowita stała exp funkcja wykładnicza earg ln logarytm naturalny ln arg arg 0 sqr real integer kwadrat arg2 sqrt pierwiastek kwadratowy arg 0 sin sin arg arg w radianach cos cos arg arctan arctg arg wynik w radianach pi 26
27
Przykłady wyrażeń: 27
28
Podstawowe instrukcje proste
Instrukcja przypisania - nadanie wartości zmiennej zmienna := wyrażenie; Np.: N := -234; suma := suma + x; Wprowadzanie i wyprowadzanie danych - z/do pola Edit funkcje konwersji tekstowo-numerycznej: intToStr( v: integer ): string; - integer string strToInt( s: string ): integer; - string integer strToFloat( s: string ): real; - string real floatToStr( v: real ): string; - real string 28
29
przykład praktyczny: 29
30
Stałe, zmienne i wyrażenia tekstowe
stałe - znakowe i tekstowe napisy - pojedyncze znaki, ciągi (łańcuchy) znaków postać '.....' Przykłady: 'Nowak' stałę znakowe - typ char , np. 'A' zmienne łańcuchowe (tekstowe) - typ string np. 'Pan Kowalski' - deklaracja zmiennej string[ rozmiar ] istnieje mechanizm selekcji znaku zmienna[ pozycja ] znak wyrażenia tekstowe - podobnie jak arytmetyczne: argumenty: - stała tekstowa - zmienna znakowa lub tekstowa - wywołanie funkcji o wartości znakowej lub tekstowej operator jeden łączenia (konkatenacji) "+" Np.: 'Object' + 'Pascal' ObjectPascal 30
31
Stałe, zmienne, wyrażenia i operacje logiczne
stałe true prawda "1" tak false fałsz "0„ nie zmienne logiczne - typ boolean np.: var jest_zwolniony: boolean; wyrażenia logiczne - podobnie jak arytmetyczne: argumenty: - stałe logiczne - zmienne logiczne - funkcje o wartościach logicznych - relacje nawiasy - ( ) operatory 31
32
Np.: k > 2 suma <= 10.0 sin( 2*x + a) >= 0.5
relacja (porównanie) W1 W2 wartość true | false W1, W2 obydwa numeryczne (typu Real lub Integer) obydwa znakowe lub tekstowe (porównanie alfabetyczne) operator znaczenie = równy <> nierówny > większy >= większy lub równy < mniejszy <= mniejszy lub równy Np.: k > 2 suma <= 10.0 sin( 2*x + a) >= 0.5 nazwisko >= 'K' 32
33
Operatory logiczne negacja not arg np.: not( k<5 ) k >= 5
koniunkcja (iloczyn logiczny) arg1 and arg2 np.: ( k >= -5 ) and ( k <= 5 ) -5 k +5 alternatywa (suma logiczna) arg1 or arg2 np.: ( k < -5 ) or ( k > 5 ) | k | > 5 33
34
Instrukcja warunkowa "jeśli", "if"
postać skrócona if warunek then instrukcja; Wb postać pełna if warunek then instrukcja_1 else instrukcja_2; 34
35
- zmiana a, b lub c chowa pola wyników i napis
przykład: Założenia: - zmiana a, b lub c chowa pola wyników i napis - gdy delta < 0 tylko napis "Wynik - brak pierwiastków" - gdy delta = 0 napis "Wynik - jeden pierwiastek podwójny" widać jedno pole wyniku i wartość pierwiastka - gdy delta > 0 napis "Wynik - dwa pierwiastki" widać dwa pola wyniku i dwie wartości pierwiastków - podwójne kliknięcie w tło okna zeruje pola współczynników, chowa pola wyników i skraca napis na "Wynik:" 35
36
składowe okna i programu:
- w_a, w_b, w_c - pola współczynników - wynik - etykieta - tekst o wyniku - x1, x2 - pola wyniku - a, b, c, delta - zmienne wewnętrzne procedury wyznaczania wyniku - wyznacz, koniec - procedury obsługi kliknięcia przycisków - Zeruj - obsługa podwójnego kliknięcia w okno - Schowaj, - obsługa zmiany wartości pól współczynników 36
37
schemat blokowy: 37
38
procedure TForm1.wyznaczClick(Sender: TObject);
var a, b, c, // współczynniki równania delta: real; begin a := strToFloat(w_a.text); b := strToFloat(w_b.text); c := strToFloat(w_c.text); delta := b*b - 4*a*c; if delta < 0 then form1.wynik.Caption := 'Wynik - brak pierwiastków' else if delta = 0 then begin form1.wynik.Caption := 'Wynik - pierwiastek podwójny'; x1.text := floatToStr( -b/2/a ); x1.visible := true; end else begin delta := sqrt( delta ); form1.wynik.Caption := 'Wynik - dwa pierwiastki:'; x1.text := 'x1 = ' + floatToStr( ( -b - delta )/2/a ); x2.text := 'x2 = ' + floatToStr( ( -b + delta )/(2*a) ); x2.visible := true; end; 38
39
procedure TForm1.Schowaj (Sender: TObject); begin
procedura Schowaj procedure TForm1.Schowaj (Sender: TObject); begin x1.Visible := false; x2.Visible := false; wynik.Visible := false end; procedura Zeruj procedure TForm1.Zeruj (Sender: TObject); begin Schowaj(Sender); w_a.Clear; w_b.Clear; w_c.Clear; end; 39
40
Instrukcja wyboru – case..of..
Instrukcja case umożliwia alternatywne wykonanie wielu instrukcji w zależności od wartości wyrażenia typu porządkowego. Postać instrukcji: case w of s1 :Instrukcja_1 ; s2 :Instrukcja_2 ; .... [ else Instrukcja_k ] end ; w - wyrażenie–selektor typu porządkowego (np. całkowitego, znakowego), s - stałe wyboru (etykiety wyboru) w możliwej postaci: s - pojedyncza wartość, s1, s2, sn - lista wartości, s1..s2 - zakres wartości (okrojenie), możliwe połączenie listy i zakresów, np. s1..s2, s3 , s4. 40
41
Przykład: var miesiac : 1..12 ; dni : 1..31 ; begin
miesiac := StrToInt (Edit1.Text) ; case miesiac of 2 : dni := 28 ; {pojedyncza wartość} 4, 6 , 9, 11 : dni := 30 ; {lista} 1..12 : dni := 31 ; {zakres} {lub else dni := 31} end ; end; 41
42
begin end Instrukcja złożona (sekwencji)
Przy konieczności wykonania więcej niż jednej instrukcji wewnątrz dowolnej instrukcji strukturalnej stosujemy tzw. instrukcję złożoną (sekwencji): begin ciąg instrukcji end
43
Iteracje Iteracje – użycie:
sumowanie, obliczenia statystyczne, sortowanie, wyszukiwanie maksimum, minimum itp. Algorytmy: Zbiór elementów np. w tablicy (macierzy) – wyszukaj najmniejszy element: - załóż że 1-szy jest najmniejszy - sprawdź następny, jeśli mniejszy to zapamiętaj - czy ostatni? jeśli nie to powtórz poprzedni krok
44
Instrukcja for.. do.. (dla.. wykonuj..)
45
to downto for Z := W1 W2 do Instrukcja Postać: x := 0 ; i1:=1 ;
for i := i1 to i2 do x := x+5 ; x := 0 ; for i := 1 to 3 do x := x+5 ; x := 0 ; for i := 3 downto 1 do x := x+i ; // użycie zmiennej sterującej w instrukcji
46
repeat until WB ; ciąg instrukcji x := 3 ; repeat x := x + 5
Instrukcja repeat..until.. (powtarzaj .. aż..) Postać: repeat ciąg instrukcji until WB ; Ciąg instrukcji wewnętrznych w instrukcji repeat..until.. jest powtarzany dopóty, dopóki wyrażenie logiczne WB posiada wartość false, zmiana na true powoduje zakończenie pętli x := 3 ; repeat x := x + 5 until x > 100 ; Uwaga: możliwość nieskończonej pętli !!
47
while WB do Instrukcja ;
Instrukcja while..do.. (dopóki.. wykonuj..) Postać: while WB do Instrukcja ; Działanie instrukcji polega na powtarzaniu wykonywania wewnętrznej instrukcji, dopóki wyrażenie logiczne WB posiada wartość true. Wartość ta jest sprawdzana każdorazowo przed wykonaniem instrukcji wewnętrznej. Uwaga: konieczność wykonania w instrukcji (także złożonej) takiej operacji, która wpływa na wartość wyrażenia logicznego, aby iteracja mogła się kiedyś skończyć.
48
Przykład: var i, suma : integer ; begin i := 2 ; suma := 0 ;
while i <= 100 do suma := suma + i ; i := i + 2 ; end ;
49
DELPHI - PODOKNA KOMUNIKATÓW ShowMessage - komunikat informujący
związane są z osobnymi oknami przekazują informację dla użytkownika, wymagającą podjęcia przez niego decyzji: - komunikat informujący - komunikat z dialogiem komunikat w formularzu użytkownika dialogu wejściowego ShowMessage - komunikat informujący p. ShowMessage( wyrażenie tekstowe ) - pokazuje tekst w dodatkowym oknie z przyciskiem OK - w pasku tytułowym nazwa aplikacji (programu .exe) 49
50
Menu główne mainMenu właściwości zasady:
przedstawia pasek menu głównego - baza dla pozycji menu (sekcji) komponent niewidoczny - widać skutek nazwa obiektu ma być podana na jako właściwość menu formularza właściwości item - lista sekcji menu z ich zawartością (drzewo) items[ index:integer ]: TMenuItem - jedna sekcja lub opcja zasady: 2x kliknięcie w items lub w symbol menu kreator menu (menu designer) dodawanie, usuwanie opcji tytuł sekcji (opcji) - & oznacza znak podkreślony (klawisz skrótu) podmenu create submenu (operacja z menu podręcznego) 2x klik w pozycję procedura obsługi (zdarzenie onClick) 50
51
Menu podręczne kontekstowe popupMenu
pole menu kontekstowego - aktywizowanego prawym kliknięciem komponent niewidoczny - widać skutek nazwa obiektu ma być podana na jako właściwość popupMenu - formularza lub innego komponentu właściwości i metody items: Tmenu - lista sekcji menu z ich zawartością (drzewo) items[ index:integer ]: TMenuItem - jedna opcja lub podsekcja alignment: (paLeft, paCenter, paRight) - położenie pola menu w stosunku do kursora zasady: projektowanie jak menu główne menu designer w formularzu może być wiele menu podręcznych związanych z różnymi komponentami (kontekst) 51
52
Przykład 3 52
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.