1 / 38

PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

PROGRAMOWANIE STRUKTURALNE WYKŁAD 2. Wprowadzenie do programowania w Pascalu cd. Mgr inż. Agnieszka Sroka. TEMATY. Etapy tworzenia programu. Zasady programowania strukturalnego.

jerrod
Download Presentation

PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PROGRAMOWANIE STRUKTURALNEWYKŁAD 2 Wprowadzenie do programowania w Pascalu cd. Mgr inż. Agnieszka Sroka

  2. TEMATY • Etapy tworzenia programu. Zasady programowania strukturalnego. • Podstawy zapisywania programu w języku Pascal: słowa kluczowe, identyfikatory, komentarze, liczby, symbole podstawowe. • Struktura programu w języku Pascal. • Praca w środowisku FreePascal: budowa okna, pisanie procedur, kompilacja i uruchamianie. • Procedury wejścia/wyjścia. • Deklaracja stałych i zmiennych w programie. • Operatory i wyrażenia. • Instrukcje warunkowe. Tworzenie programów z instrukcjami warunkowymi. • Instrukcje iteracyjne. Tworzenie programów z operatorami iteracyjnymi.

  3. Etapy tworzenia programu. • określenie danych wejściowych, • określenie celu (wyniku konchowego), • analiza problemu i wybór modelu, • przedstawienie algorytmu: - w postaci opisu słownego, - w postaci listy kroków, - w postaci schematu blokowego (postać graficzna algorytmu), - za pomocą jednego z języków formalnych (np. UML). • analiza poprawności rozwiązania, • kodowanie algorytmu w postaci instrukcji języka programowania, • zapis programu do pliku, • kompilacja i usuwanie usterek, • utworzenie wersji wykonywalnej, • testowanie i analiza wyników.

  4. Etapy tworzenia programu.

  5. Zasady programowania strukturalnego. • program powinien składać się z niedużych jednostek zwanych procedurami, w których obrębie nie ma już mniejszych podprogramów • w kodzie modułu powinno być tylko jedno wejście i jedno wyjście • kod powinien być budowany z pomocą następujących konstrukcji podstawowych: • ciągu sekwencyjnego • rozgałęzienia warunkowego • pętli ze sprawdzeniem warunku powtarzania na początku lub końcu ciągu sekwencyjnego • instrukcji wyboru jeden z wielu • możliwe jest zagnieżdżanie jednych konstrukcji wewnątrz innych • należy ograniczyć do niezbędnego minimum stosowanie skoku bezwarunkowego • program powinien zapewniać proste i jasne rozwiązanie problemu, być napisany w poprawnym stylu, przejrzysty, czytelny

  6. Podstawy zapisywania programu w języku Pascal. Program w TP podzielony jest na: • Nagłówek (Program pole;) • Część deklaracyjną (Deklaracja modułów, stałych i zmiennych) • Część wykonawczą (Begin .... End.) • Słowa kluczowe Zastrzeżone słowa języka (Object) Pascal. Są integralną częścią języka i nie mogą być definiowane przez programistę: and | array | as | asm | begin | case | class | const | constructor | destructor | dispinterface |div | do | downto | else | end | except | exports | file | finalization | finally | for | function | goto | if | implementation | in | inherited | initialization | inline | interface | label | library | mod | nil | not | object | of | or | out | packed | procedure | program | property | raise | record | repeat | resourcestring | set | shl | shr | string | then | threadvar | to | try | type | unit | until | uses | var | while | with | xor

  7. Podstawy zapisywania programu w języku Pascal. • Identyfikatory Definicja identyfikatora w notacji BNF ma postać: <identyfikator> ::= <litera> { <litera> | <cyfra> } <litera> ::= A | B | C | D | E | F | G | H | I |J | K | L | M | N |O | P | Q | R | S | T | U | V | W | X | Y | Z a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z | _ <cyfra> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7| 8 | 9 Identyfikator to ciąg liter lub cyfr zaczynający się od litery (znak _ zaliczany jest do liter). Długość identyfikatora jest dowolna, ale tylko pierwszych 255 znaków jest znaczące. Identyfikator nie może zaczynać się od cyfry, np. dozwolony jest identyfikator: _11 natomiast nie wolno użyć: 11_. Nie wolno również używać w identyfikatorach słów kluczowych. Identyfikatory służą do oznaczania programów, procedur, funkcji, metod, parametrów formalnych, modułów, bibliotek DLL, typów, zmiennych, stałych, etykiet (identyfikator etykiety może być też liczbą), pól rekordów i obiektów.

  8. Podstawy zapisywania programu w języku Pascal. • Komentarze Komentarze są to ciągi wyrazów, znaków nie mających wpływu na przebieg programu, oznacza się je w następujące sposoby: {komentarz} (*komentarz*) //komentarz • Zapis liczb Liczba całkowita dziesiętna musi być z przedziału : [-2 147 483 648, 2 147 483 647] Liczba całkowita szesnastkowa (należy użyć symbolu $ i liter od A do F dla oznaczenia cyfr szesnastkowych) powinna być z przedziału: [-$80000000, $7FFFFFFF] Liczba rzeczywista składa się z: mantysy – jest to liczba dziesiętna postaci: część-całkowita [. część-ułamkowa] opcjonalnie: litery E (lub e) – oznacza że podstawą wykładnika jest liczba 10 cechy – jest to liczba całkowita

  9. Podstawy zapisywania programu w języku Pascal. • TYPY DANYCH:     • TYPY CAŁKOWITEshortint (-128..127) 1Binteger (-32768..32767} 2Blongint {-2147483648.. 2147483647} 4Bbyte {0..255} 1 bajtword {0..65535} 2 bajty     • TYP RZECZYWISTYreal od 5.0e-324 do 1.7e308.   • TYP LOGICZNY boolean - TRUE (prawda) lub FALSE (fałsz) • Łańcuchy • Łańcuch jest to ciąg znaków (maksymalnie 255) zapisanych w jednej linii i ujętych w apostrofy, znaków sterujących oraz znaków w postaci dziesiętnej i szesnastkowej poprzedzonych znakiem #. • TYP ZNAKOWY char - pojedynczy znak o kodach ASCII (0..255) np. znak "A" czy "!"     • TYP ŁAŃCUCHOWYstring - ciąg o dł.0-255 znaków, przykładowym łańcuchem jest: 'To jest tekst‘.

  10. Podstawy zapisywania programu w języku Pascal. • Instrukcja przypisania. Nadawanie wartości następuje bardzo często za pośrednictwem instrukcji przypisania, która ma ogólna postać: zmienna := wyrażenie; Operator „ := ” nazywa się operatorem przypisania , symbol zmienna oznacza tu identyfikator; wyrażenie musi być typu konwertowanego do typu zmiennej. W wersji najprostszej: zmienna := stała ; liczba := 10 ; {czytamy : zmiennej liczba przypisz wartość 10 ;} Przykład 1. var a,b :integer; begin a:=1; b:=a; writeln(c); writeln(b); end . Przykład 2. (Zmienne miały różne typy.) Program Instr_przypisania ; var liczba : integer; litera : char; BEGIN liczba := 33; {wynik wykonania programu } litera := char (liczba); { ! } writeln(litera); END.

  11. Struktura programu w języku Pascal. program nazwa_programu; {Nagłówek programu - opcjonalny} ................................................... { SEKCJA DEKLARACJI } uses lista_nazw_modułów ; const sekwencja_definicji_stałych ; {Definicje stałych} type sekwencja_definicji_typów ; {Definicje typów} label lista_etykiet ; {Deklaracja etykiet} var sekwencja_deklaracji_zmiennych ; {Deklaracje zmiennych} procedure nazwa_procedury_1 ; {Definicje procedur} begin{ Definicje składowych procedury_1 – kod procedury }end; procedure nazwa_procedury_2 ( lista_parametrów ) ; begin{ Definicje składowych procedury_2 – kod procedury }end; . . .

  12. Struktura programu w języku Pascal. function nazwa_funkcji_1 : typ_wartosci ; {Definicje funkcji} begin { Definicje składowych funkcji_1 – kod funkcji } nazwa_funkcji_1:= wynik; { przekazanie wyniku funkcji na zewnatrz } end; function nazwa_funkcji_2( lista_parametrów ) : typ_wartosci ; begin { Definicje składowych funkcji_2 – kod funkcji } nazwa_funkcji_2:= wynik; { przekazanie wyniku funkcji na zewnatrz } end; .................................................... { SEKCJA INSTRUKCJI } begin instrukcja_1 ; instrukcja_2 ; . . . instrukcja_N ; end .

  13. Procedury wejścia/wyjścia. • Write(); - powoduje wypisanie wartości wyrażenia zawartego w nawiasie.Writeln(); - powoduje wypisanie wartości wyrażenia zawartego w nawiasie i przejście do nowego wiersza.Write(123); Writeln(x); Writeln(‘To jest zdanie’); Write(‘Tekst’,4,’ ‘);Write(x:4:2);Readln(); - odczytanie danej z klawiatury i zakończonej naciśnięciem klawisza Enter.Read(); - odczytanie danej z dysku. Instrukcję Readln(); (bez parametru) stosujemy do zatrzymania programu. Naciśnięcie klawisza Enter powoduje dalszy ciąg programu.

  14. Deklaracja stałych i zmiennych w programie. • Definiowanie stałych Definicje stałych rozpoczynają się od słowa kluczowego const. Każda definicja stałej ma następującą postać: nazwa_stałej = wartosc_stałej; Typ stałej jest określany na podstawie nadawanej jej wartości. Definicja stałej globalnej może występować tylko raz w całym programie. Wartości stałej nie można modyfikować w części wykonawczej programu. Przykładowe definicje stałych: Const k = 15; { stała całkowita typu integer } n = 40000; { stała całkowita typu word } d = 500000; { stała całkowita typu longint } x = -3.14; { stała rzeczywista typu real } y = 0.3E2; { stała rzeczywista typu real } c = ’K’; { stała znakowa

  15. Deklaracja stałych i zmiennych w programie. • Deklarowanie zmiennych Zmienne globalne, tj. dostępne w całym programie, deklaruje się w sekcji deklaracji zmiennych programu. Deklaracje zmiennych rozpoczynają się od słowa kluczowego var. Każda deklaracja zmiennej ma następującą postać: nazwa_zmiennej : typ_zmiennej; Typ zmiennej musi być: • jednym z typów standardowych, • typem zdefiniowanym wcześniej przez użytkownika, • typem opisanym w deklaracji zmiennej. Deklaracja zmiennej globalnej może występować tylko raz w całym programie.

  16. Deklaracja stałych i zmiennych w programie. Przykładowe deklaracje zmiennych: Var a, b : integer; { zmienne typu integer } c : char; { zmienna typu char } d : boolean; { zmienna typu boolean } e, h : longint; { zmienne typu longint } x, y, z, w : real; { zmienne typu real } s : string; { zmienna typu string } W deklaracji zmiennej można użyć typu zdefiniowanego przez użytkownika. type Bajt = byte; { typ o nazwie Bajt - zgodny z bajt } Tlicz = real; { typ o nazwie Tlicz - zgodny z real } Var p : Bajt; { zmienna typu Bajt } q, r : Tlicz; { zmienne typu Tlicz }

  17. Operatory i wyrażenia. • Operatory

  18. Operatory i wyrażenia. • Konstrukcja i obliczanie wyrażeń Wyrażenia są budowane w oparciu o stałe, zmienne, operatory, nazwy funkcji i zbiorów oraz nawiasy okrągłe. Wyrażenia zapisujemy w jednym wierszu, bez opuszczania znaku mnożenia, z wykorzystaniem nawisów zwykłych. Wartościowanie wyrażenia – wyznaczenie wartości wyrażenia, tj. wykonanie operacji na argumentach zgodnie kolejnością określona przez nawiasy zwykłe lub priorytet operatorów. Przykładowe wyrażenia: (a-b)/(c+d); a-c/(d+e); (a+b)/c-d. Reguły obliczania wartości wyrażeń zawierających operatory: - wykonywanie obliczeń w kolejności określonej przez nawiasy grupujące; - w pierwszej kolejności realizacja działań dla operatorów o najwyższym priorytecie; - w przypadku jednakowego priorytetu operatorów wykonywanie działań od lewej strony do prawej.

  19. Instrukcje warunkowe.Tworzenie programów z instrukcjami warunkowymi. • INSTRUKCJA WARUNKOWA „IF THEN” if wyrażenie_logiczne then instrukcja ; _____________________________________________________ if wyrażenie_logiczne then begin instrukcja_1; instrukcja_2; { ciąg instrukcji } . . . instrukcja_n; end;

  20. Instrukcje warunkowe.Tworzenie programów z instrukcjami warunkowymi.

  21. Instrukcje warunkowe.Tworzenie programów z instrukcjami warunkowymi. • INSTRUKCJA WARUNKOWA „IF THEN ELSE” if wyrażenie_logiczne theninstrukcja_1 else instrukcja_2 ; ________________________________________________________ if wyrażenie_logicznethen begin {ciąg_instrukcji_1} end else begin {ciąg_instrukcji_2} end;

  22. Instrukcje warunkowe.Tworzenie programów z instrukcjami warunkowymi.

  23. Instrukcje warunkowe.Tworzenie programów z instrukcjami warunkowymi. { Uporządkuj trzy liczby } var a, b, c : real ; begin write( ' Podaj pierwsza liczbe: ' ); readln( a ); write( ' Podaj druga liczbe: ' ); readln( b ); write( ' Podaj trzecia liczbe: ' ); readln( c ) ; if a>b then if b>c then writeln( a,b,c ) else if a>c then writeln( a,c,b ) else writeln( c,a,b ) else if a>c then writeln( b,a,c ) else if b>c then writeln( b,c,a ) else writeln( c,b,a ) readln; end.

  24. Instrukcje warunkowe.Tworzenie programów z instrukcjami warunkowymi. • INSTRUKCJA WYBORU: case wyróżnikof zakres_1: instrukcja_1; zakres_2: instrukcja_2; . . . zakres_N: instrukcja_N; end; ________________________________________________________ case wyróżnikof zakres_1: instrukcja_1; zakres_2: instrukcja_2; . . . zakres_N: instrukcja_N; else instrukcja_M; end;

  25. Instrukcje warunkowe.Tworzenie programów z instrukcjami warunkowymi.

  26. Instrukcje iteracyjne. • INSTRUKCJA ITERACYJNA REPEAT

  27. Instrukcje iteracyjne. • INSTRUKCJA ITERACYJNA WHILE

  28. Instrukcje iteracyjne. • INSTRUKCJA ITERACYJNA FOR TO

  29. Instrukcje iteracyjne. • Instrukcja iteracyjna FOR DOWNTO

  30. Tworzenie programów z operatorami iteracyjnymi. Przykład 1{ odczytywanie klawiszy do momentu naciśnięcia klawisza k' } var znak:char; begin repeat{ za pomoca petli REPEAT } write('podaj znak: '); znak:=readkey; until znak='k'; znak:=#0; { za pomoca petli WHILE } while znak<>'k' do begin write('podaj znak: '); znak:=readkey; end; end;

  31. Tworzenie programów z operatorami iteracyjnymi. Przykład 2 { drukowanie na ekranie poziomej kreski o zadanej długości } var i,dlugosc:integer; begin write('Podaj zadana dlugosc kreski: '); readln(dlugosc); clrscr; { za pomoca petli REPEAT } i:=1; repeat write('-'); i:=i+1; until i>dlugosc; clrscr; { za pomoca petli WHILE } i:=1; while i<=dlugosc do begin write('-'); i:=i+1; end; clrscr; { za pomoca petli FOR } for i:=1 to dlugosc do write('-'); end;

  32. Tworzenie programów z operatorami iteracyjnymi. Przykład 3{ policzenie sumy N podanych liczb } var i,N:integer; liczba,suma:real; begin write('Podaj ile liczb chcesz zsumowac:'); readln(N); suma:=0; { za pomoca petli FOR } for i:=1 to N do begin write('Podaj ',i,' liczbe: '); readln(liczba); suma:=suma+liczba; end; writeln('Suma podanych liczb wynosi: ', suma ); end;

  33. Tworzenie programów z operatorami iteracyjnymi. Przykład 4{ sumowanie podawanych liczb aż ich wartość przekroczy granicę } var liczba,suma,granica:real; begin write('Podaj wartosc graniczna sumowania:'); readln(granica); suma:=0; { za pomoca petli REPEAT } repeat write('Podaj liczbe: '); readln(liczba); suma:=suma+liczba; until suma>granica; writeln('Suma podanych liczb przekroczyla ',granica, ' i wynosi: ', suma ); end;

  34. Tworzenie programów z operatorami iteracyjnymi. Przykład 5{ sumowanie liczb naturalnych aż ich wartość przekroczy granicę } var i:integer; liczba,suma,granica:real; begin write('Podaj wartosc graniczna sumowania:'); readln(granica); suma:=0; { za pomoca petli WHILE } i:=0; while suma<=granica do begin suma:=suma+i; i:=i+1; end; writeln('Suma podanych liczb wynosi: ', suma ); end;

  35. Tworzenie programów z operatorami iteracyjnymi. Przykład 6 { wyznaczenie wartości maximum z podanych 10 liczb } var i:integer; liczba,maximum:real; begin maximum:=-1.7e38; {najmniejsza wartosc liczby real} for i:=1 to 10 do begin write('Podaj ',i,' liczbe: '); readln(liczba); if liczba>maximum then maximum:=liczba; end; write('Najwieksza wartosc wynosi: ',maximum); end;

  36. Tworzenie programów z operatorami iteracyjnymi. Przykład 7 { wyznaczenie wartości i pozycji maximum z podanych liczb } var i,pozycja,N:integer; liczba,minimum:real; begin write('Podaj ile liczb chcesz sprawdzic:'); readln(N); minimum:=+1.7e38; {najwieksza wartosc liczby real} pozycja:=-1; i:=1; while i<=N do begin write('Podaj ',i,' liczbe: '); readln(liczba); if liczba<minimum then begin minimum:=liczba; pozycja:=i; end; i:=i+1; end; writeln('Najmniejsza byla ',pozycja, ' liczba o wartosci: ',minimum); end;

  37. Tworzenie programów z operatorami iteracyjnymi. Przykład 8{ policzenie wartości n! } function SILNIA( n:word ):longint; var i:word; s:longint; begin s:=1; for i:=2 to n do s:=s*i; SILNIA:=s; end;{-------------------------------------------SILNIA}

More Related