38
PROGRAMOWANIE STRUKTURALNE WYKŁAD 2 Wprowadzenie do programowania w Pascalu cd. Mgr inż. Agnieszka Sroka

PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

  • Upload
    jerrod

  • View
    35

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

PROGRAMOWANIE STRUKTURALNE

WYKŁAD 2

Wprowadzenie do programowania w Pascalu cd.

Mgr inż. Agnieszka Sroka

Page 2: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

TEMATY

1. Etapy tworzenia programu. Zasady programowania strukturalnego.

2. Podstawy zapisywania programu w języku Pascal: słowa kluczowe, identyfikatory, komentarze, liczby, symbole podstawowe.

3. Struktura programu w języku Pascal.4. Praca w środowisku FreePascal: budowa okna, pisanie

procedur, kompilacja i uruchamianie.5. Procedury wejścia/wyjścia.6. Deklaracja stałych i zmiennych w programie.7. Operatory i wyrażenia.8. Instrukcje warunkowe. Tworzenie programów z instrukcjami

warunkowymi.9. Instrukcje iteracyjne. Tworzenie programów z operatorami

iteracyjnymi.

Page 3: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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.

Page 4: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

Etapy tworzenia programu.

Page 5: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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

Page 6: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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 kluczoweZastrzeż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

Page 7: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

Podstawy zapisywania programu w języku Pascal.

IdentyfikatoryDefinicja 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.

Page 8: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

Podstawy zapisywania programu w języku Pascal.

KomentarzeKomentarze 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

Page 9: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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)

   • TYP ZNAKOWY char - pojedynczy znak o kodach ASCII (0..255) np. znak "A" czy "!"

    • TYP ŁAŃCUCHOWY string - ciąg o dł.0-255 znaków, przykładowym łańcuchem jest: 'To jest tekst‘.

Ł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 #.

Page 10: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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.vara,b :integer;begina:=1;b:=a;writeln(c);writeln(b);end .

Przykład 2. (Zmienne miały różne typy.)Program Instr_przypisania ;varliczba : integer;litera : char;BEGINliczba := 33; {wynik wykonania programu }litera := char (liczba); { ! }writeln(litera);END.

Page 11: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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;. . .

Page 12: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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 }begininstrukcja_1 ;instrukcja_2 ;. . .instrukcja_N ;end .

Page 13: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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. 

Page 14: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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

Page 15: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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.

Page 16: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

Deklaracja stałych i zmiennych w programie.

Przykładowe deklaracje zmiennych:Vara, 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.

typeBajt = byte; { typ o nazwie Bajt - zgodny z bajt }Tlicz = real; { typ o nazwie Tlicz - zgodny z real }Varp : Bajt; { zmienna typu Bajt }q, r : Tlicz; { zmienne typu Tlicz }

Page 17: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

Operatory i wyrażenia.

Operatory

Page 18: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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ższympriorytecie;- w przypadku jednakowego priorytetu operatorów wykonywanie

działań od lewej stronydo prawej.

Page 19: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2
Page 20: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

INSTRUKCJA WARUNKOWA „IF THEN”

if wyrażenie_logiczne then instrukcja ;_____________________________________________________

if wyrażenie_logiczne thenbegin

instrukcja_1;instrukcja_2; { ciąg instrukcji }. . .instrukcja_n;

end;

Instrukcje warunkowe.Tworzenie programów z instrukcjami

warunkowymi.

Page 21: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

Instrukcje warunkowe.Tworzenie programów z instrukcjami

warunkowymi.

Page 22: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

Instrukcje warunkowe.Tworzenie programów z instrukcjami

warunkowymi. INSTRUKCJA WARUNKOWA „IF THEN ELSE”

if wyrażenie_logiczne then instrukcja_1

else instrukcja_2 ;________________________________________________________

if wyrażenie_logiczne thenbegin

{ciąg_instrukcji_1}end

elsebegin

{ciąg_instrukcji_2}end;

Page 23: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

Instrukcje warunkowe.Tworzenie programów z instrukcjami

warunkowymi.

Page 24: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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 thenif 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 thenwriteln( b,a,c )

elseif b>c then

writeln( b,c,a )else

writeln( c,b,a )readln;end.

Page 25: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

Instrukcje warunkowe.Tworzenie programów z instrukcjami

warunkowymi. INSTRUKCJA WYBORU:

case wyróżnik ofzakres_1: instrukcja_1;

zakres_2: instrukcja_2;. . .

zakres_N: instrukcja_N;end;

________________________________________________________case wyróżnik of

zakres_1: instrukcja_1;zakres_2: instrukcja_2;

. . .zakres_N: instrukcja_N;

else instrukcja_M;end;

Page 26: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

Instrukcje warunkowe.Tworzenie programów z instrukcjami

warunkowymi.

Page 27: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

Instrukcje iteracyjne.

INSTRUKCJA ITERACYJNA REPEAT

Page 28: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

Instrukcje iteracyjne.

INSTRUKCJA ITERACYJNA WHILE

Page 29: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

Instrukcje iteracyjne.

INSTRUKCJA ITERACYJNA FOR TO

Page 30: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

Instrukcje iteracyjne.

Instrukcja iteracyjna FOR DOWNTO

Page 31: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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;

Page 32: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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;

Page 33: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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;

Page 34: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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;

Page 35: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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;

Page 36: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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;

Page 37: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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;

Page 38: PROGRAMOWANIE STRUKTURALNE WYKŁAD 2

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}