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
PROGRAMOWANIE STRUKTURALNE
WYKŁAD 2
Wprowadzenie do programowania w Pascalu cd.
Mgr inż. Agnieszka Sroka
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.
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.
Etapy tworzenia programu.
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
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
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.
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
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 #.
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.
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;. . .
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 .
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.
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
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.
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 }
Operatory i wyrażenia.
Operatory
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.
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.
Instrukcje warunkowe.Tworzenie programów z instrukcjami
warunkowymi.
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;
Instrukcje warunkowe.Tworzenie programów z instrukcjami
warunkowymi.
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.
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;
Instrukcje warunkowe.Tworzenie programów z instrukcjami
warunkowymi.
Instrukcje iteracyjne.
INSTRUKCJA ITERACYJNA REPEAT
Instrukcje iteracyjne.
INSTRUKCJA ITERACYJNA WHILE
Instrukcje iteracyjne.
INSTRUKCJA ITERACYJNA FOR TO
Instrukcje iteracyjne.
Instrukcja iteracyjna FOR DOWNTO
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;
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;
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;
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;
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;
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;
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;
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}