kl 2, folie1, ZAPIS PROGRAMU ZA POMOCĄ SCHEMATÓW BLOKOWYCH


ZAPIS PROGRAMU ZA POMOCĄ SCHEMATÓW BLOKOWYCH

Oznaczenia:

Ogólna struktura programu w języku PASCAL

0x08 graphic
{Nagłówek Programu}

program nazwa_programu ( lista_identyfikatorów ) ;

{ SEKCJA DEKLARACJI }

uses lista_nazw_modułów ;

label lista_etykiet ; {Deklaracja etykiet}

const sekwencja_definicji_stałych ; {Definicje stałych}

type sekwencja_definicji_typów ; {Definicje typów}

var sekwencja_deklaracji_zmiennych ; {Deklaracje zmiennych}

procedure nazwa_procedury_1 ; {Definicje procedur}

{Definicja_składowych_procedury_1}

procedure nazwa_procedury_2 ( lista_parametrów ) ;

{Definicja_składowych_procedury_2}

. . .

function nazwa_funkcji_1 : typ_wartosci ; {Definicje funkcji}

{Definicja_składowych_funkcji_1}

function nazwa_funkcji_2( lista_parametrów ) : typ_wartości ;

{Definicja_składowych_funkcji_2}

. . .

{ SEKCJA INSTRUKCJI }

begin

instrukcja_1 ;

instrukcja_2 ;

. . .

instrukcja_N ;

end .

REPREZENTACJA DANYCH W PASCALU

OPIS DANYCH :

definicje stałych CONST

definicje typów TYPE

deklaracje zmiennych VAR

TYP ZMIENNEJ:

zbiór (przedział) jej wartości,

format jej zapisu w pamięci (wielkość pamięci, struktura),

zbiór możliwych operacji.

Typ porządkowy:

Zbiór elementów ze zdefiniowaną relacją porządku.

Funkcje standardowe: Ord( N ) − numer porządkowy,

Pred( N ) − poprzednik (element poprzedzający),

Succ( N ) − następnik (element następny ),

Typy porządkowe całkowite:

Nazwa Zakres Format

Shortint -128 . . 127 1 bajt

Integer -32768 . . 32767 2 bajty

Longint -2 147 483 648 . . 2 147 483 647 4 bajty

Byte 0 . . 255 1 bajt

Word 0 . . 65535 2 bajty

Operatory: + , , * , / , div , mod , = , < , > , <= , >= , <> , :=

div ← operator dzielenia całkowito-liczbowego, np: 5 div 2 = 2

mod ← operator reszty z dzielenia (modulo), np: 5 mod 2 = 1

Typ porządkowy ZNAKOWY:

Nazwa Zakres Format

Char # 0 . . #255 1 bajt

Operatory: = , < , > , <= , >= , <> , := , +

Funkcje standardowe: Chr( numer_znaku ) , UpCase( znak )

Typy prOSTE RZECZYWISTE:

Nazwa Zakres Format

Real - 2.9*10-39 ÷ 1.7*1038 6 bajtów

Single 1.5*10-45 ÷ 3.4*1038 4 bajty

Double 5.0*10-324 ÷ 1.7*10308 8 bajtów

Extended 3.4*10-4392 ÷ 1.1*104932 10 bajtów

Comp ( 263 + 1) . . ( 263 1) 8 bajtów

Operatory: + , , * , / , = , < , > , <= , >= , <> , :=

STANDARDOWE FUNKCJE ARYTMETYCZNE

Nazwa

Wynik

Typ argumentu

Typ wyniku

Abs

wart. bezwzględna

rzeczywisty,
całkowity

rzeczywisty,
całkowity

ArcTan

arcus tangens

rzeczywisty,
całkowity

rzeczywisty

Cos

cosinus

rzeczywisty,
całkowity

rzeczywisty

Exp

e do potęgi

rzeczywisty,
całkowity

rzeczywisty

Frac

część ułamkowa

rzeczywisty,
całkowity

rzeczywisty

Int

część całkowita

rzeczywisty,
całkowity

rzeczywisty

Ln

logarytm naturalny

rzeczywisty,
całkowity (>0)

rzeczywisty

Pi

3.1415926536

nie ma

rzeczywisty

Round

zaokrąglenie do
najbliższej liczby całkowitej

rzeczywisty

Longint

Sin

sinus

rzeczywisty,
całkowity

rzeczywisty

Sqr

kwadrat

rzeczywisty,
całkowity

rzeczywisty,
całkowity

Sqrt

pierwiastek

rzeczywisty,
całkowity (>0)

rzeczywisty

Trunc

część całkowita

rzeczywisty

longint

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;

Przykłady:

{Program klasyfikujacy wzrost osoby}

var

wzrost : word ;

begin

write( ' Podaj wzrost osoby: ' );

readln( wzrost );

if wzrost<150 then

writeln( ' maly wzrost ' );

if (150<=wzrost) and (wzrost<180) then

writeln( ' sredni wzrost ' );

if 180<=wzrost then

writeln( ' wysoki wzrost ' );

readln;

end.

{Maksimum z trzech liczb}

var

a, b, c, max : real ;

begin

write( ' Podaj pierwsza liczbe: ' );

readln( a );

write( ' Podaj druga liczbe: ' );

readln( b );

write( ' Podaj trzecia liczbe: ' );

readln( c ) ;

max := a ;

if max<b then

max := b ;

if max<c then

max := c ;

writeln( ' Maksimum = ', max:0:2 );

readln;

end.

Instrukcja warunkowa „if then else”

if wyrażenie_logiczne then instrukcja_1

else instrukcja_2 ;

if wyrażenie_logiczne then

begin

{ciąg_instrukcji_1}

end

else

begin

{ciąg_instrukcji_2}

end;

Przykłady:

{ Program klasyfikujacy wzrost osoby - 2 }

var

wzrost : word ;

begin

write( ' Podaj wzrost osoby: ' );

readln( wzrost );

if wzrost<150 then

writeln( ' maly wzrost ' )

else

if wzrost<180 then

writeln( ' sredni wzrost ' )

else

writeln( ' wysoki wzrost ' );

readln;

end.

{ Maksimum z trzech liczb - 2 }

var

a, b, c, max : 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 a>c then

max = a

else

max = c

else

if b>c then

max = b

else

max = c;

writeln( ' Maksimum = ', max:0:2 );

readln;

end.

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

Instrukcja wyboru:

case wyróżnik of

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

Przykłady:

{ Rozpoznawanie klawiszy }

var

znak : char;

begin

writeln( ` Podaj jeden znak: ` );

readln( znak );

case znak of

`a' : write( ` mala litera <a>' );

`x', 'y' : write( ` litera <x> lub <y> ` );

`A' .. `Z' : write( `duża litera ` );

else

write( ` Inny klawisz ` );

end ;

end .

{ Wyświetlanie pełnej nazwy dnia }

type

Dni_tygodnia = ( Pon, Wt, Sr, Czw, Pt,

Sob, Niedz );

var

dzien : Dni_tygodnia ;

begin

. . .

case dzien of

Pon : write( ' Poniedziałek ' );

Wt : write( ' Wtorek ' );

Sr : write( ' Środa ' );

Czw : write( ' Czwartek ' );

Pt : write( ' Piątek ' );

Sob : write( ' Sobota ' );

Niedz : Write( ' Niedziela ' );

end ;

end .

Instrukcja iteracyjna - do wielokrotnego powtarzania(iteracji) tych samych czynności REPEAT

repeat

Instrukcja_1;

Instrukcja_2;

{ . . . }

Instrukcja_N;

until wyr ;

Powtarzaj wykonanie sekwencji instrukcji tak długo, jak długo wyrażenie logiczne będzie mieć wartość False.

Instrukcja iteracyjna WHILE

while wyr do

begin

Instrukcja_1;

Instrukcja_2;

{ . . . }

Instrukcja_N;

end;

Przykład 1 { odczytywanie klawiszy do momentu nacisniecia klawisza k' }

{ za pomoca petli REPEAT }

var

znak:char;

begin

repeat

write('podaj znak: ');

znak:=readkey;

until znak='k';

{ za pomoca petli WHILE }

znak:=#0;

while znak<>'k' do

begin

write('podaj znak: ');

znak:=readkey;

end;

end;

Przykład 2 { odgadywanie wartosci wylosowanej liczby z przedziału 1-6 }

Funkcja losowa random(zakres); wybiera losowo liczby całkowite z przedziału

0 do zakres-1. Jeśli zakres nie jest podany funkcja wybiera liczby rzeczywiste z przedziału 0 do 1. Pierwsze wywołanie funkcji random musi być poprzedzone wywołaniem funkcji RANDOMIZE;

var

liczba_losowa,liczba_wczytana:integer;

begin

liczba_losowa:=1+random(6); { losowanie liczby }

repeat { za pomoca petli REPEAT }

write('Odgadnij wylosowana liczbe: ');

readln(liczba_wczytana);

until liczba_wczytana=liczba_losowa;

write('Wylosowana liczba to: ',liczba_losowa);

{ za pomoca petli WHILE }

liczba_wczytana:=0;

while liczba_wczytana<>liczba_losowa do

begin

write('Odgadnij wylosowana liczbe: ');

readln(liczba_wczytana);

end;

write('Wylosowana liczba to: ',liczba_losowa);

end;

Instrukcja iteracyjna FOR TO

Wykorzystywana jest, gdy znana jest liczba cykli.

For zmienna:=wyrażenie1 to wyrażenie2 do

Lub

For zmienna:=wyrażeni1 downto wyrażenie2 do

0x01 graphic

Instrukcja iteracyjna FOR DOWNTO

Przykład 3 { 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;

{ za pomoca petli WHILE }

clrscr;

i:=1;

while i<=dlugosc do

begin

write('-');

i:=i+1;

end;

{ za pomoca petli FOR }

clrscr;

for i:=1 to dlugosc do

write('-');

end;

Przykład { zliczenie 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;

Przykład 5

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

Przykład 6

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

Przykład 10

{ 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}

Zagnieżdżanie instrukcji iteracyjnych

For i:=1 to 2 do

For j:=1 to 3 do

For k:=1 to 4 do

A[i,j,k]:=i*j*k;

Przykład 9

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

Definiowanie procedurY:

procedure Nazwa_procedury( lista_parametrów );

var {itd., jak w sekcji deklaracji programu.

mogą tu być również definicje: stałych, typów

oraz wewnętrznych procedur i funkcji !}

begin

{ciąg instrukcji procedury}

end ;

Definiowanie FUNKCJI:

function Nazwa_funkcji( lista_parametrów ): typ_wyniku;

var {itd., jak w sekcji deklaracji programu.

mogą tu być również definicje: stałych, typów

oraz wewnętrznych procedur i funkcji !}

begin

{ciąg instrukcji procedury}

Nazwa_funkcji := obliczona_wartość ;

end ;

Instrukcja wywołania procedury:

Nazwa_procedury ( Param_1, Param_2, . . . , Param_n );

procedury bez parametrów (np. ClrScr, Break, Continue),

procedury o zmiennej liczbie i zmiennym typie parametrów (np. Write, Readln)

Funkcje i procedury standardowe przeznaczone do pracy z łańcuchami

function LENGTH ( S:string ) : Integer;

Zwraca aktualną długość łańcucha S.

function CONCAT( S1 [, S2, ... Sn] : string ) : string;

Łączy kilka łańcuchów w jeden. L : = Concat(S1,S2); L := S1 + S2;

function COPY( S: string; Poz: Integer; Dlugosc : Integer ):string;

Zwraca wycinek (podłańcuch) łańcucha S.

function POS( S1,S2 : string) : Byte;

Sprawdza, czy w łańcuchu S2 znajduje się podłańcuch S1 i zwraca numer jego pozycji początkowej. Jeżeli w S2 nie ma podłańcucha S1, to zwracane jest 0.

procedure DELETE( var S: string; Poz: Integer; Dlugosc: Integer);

Wycina podłańcuch z łańcucha S.

procedure INSERT( S1 : string; var S2: string; N: Integer);

Wstawia do łańcucha S2 podłańcuch S1

procedure STR( X [: Dlugosc[: Miejsca_dziesiętne]]; var S: string );

Przekształca daną X dowolnego typu liczbowego na łańcuch.

procedure VAL( S: string; var X; var Kod: Integer );

Przekształca łańcuch tekstowy S, na liczbę X.

stary = 'ma' nowy = 'miala'

tekst = 'Ala ma kota' 'Ala miala kota'

function ZamienFragmenty( tekst, stary, nowy : string ): string;

var

pozycja : byte;

begin

if stary<>nowy then

repeat

pozycja := Pos( stary, tekst );

if pozycja > 0 then

begin

delete( tekst, pozycja, length(stary) );

insert( nowy, tekst, pozycja );

end;

until pozycja = 0;

ZamienFragmenty := tekst;

end;

function ObetnijTekst_1( tekst : string; nowa_dlugosc:byte ): string;

begin

if nowa_dlugosc < length( tekst ) then

tekst[ 0 ] := nowa_dlugosc;

ObetnijTekst_1 := tekst;

end;

function ObetnijTekst_2( tekst : string; nowa_dlugosc:byte ): string;

begin

ObetnijTekst_2 := Copy( tekst, 1, nowa_dlugosc );

end;

function ObetnijSpacje( tekst ): string;

var

poczatek : byte;

begin

poczatek := 1;

while (tekst[ poczatek ] = #32) and (poczatek < length( tekst)) do

Inc( poczatek );

Delete( tekst, 1, poczatek1 );

ObetnijSpacje := tekst;

end;

TYP REKORDOWY

dla kilka danych różnego typu, które wspólnie charakteryzują ten sam obiekt

Definicja typu rekordowego:

DANE OSOBOWE

TYPE

Dane_Osobowe = RECORD

Nazwisko ..............................

Nazwisko : string [40];

Imię .......................................

Imie : string[20]

Wiek .....................................

Wiek : byte;

Adres .....................................

Adres : string;

Liczba lat pracy .....................

Liczba_lat_pracy : byte;

END ;

Deklaracja zmiennych rekordowych:

VAR

kierownik, sekretarka, pracownik_1, pracownik_2 : Dane_Osobowe;

spis_osob : array [ 1 .. 100 ] of Dane_Osobowe;

Rekordy zagnieżdżone:

TYPE

Dane_adresowe = record

Miejscowosc : string [20];

Kod_pocztowy : string [6];

Ulica_nr_domu : string [30];

end ;

Miejscowosc

Kod_pocztowy

Ulica_nr_domu

Warszawa

34-678

Wielka 4

Dane_osobowe = record

Nazwisko : string [40];

Imie : string [20];

Adres : Dane_Adresowe; rekord zagnieżdżony

end;



Wyszukiwarka

Podobne podstrony:
Blokowanie użytkownikom możliwości uruchamiania programów za pomocą atrybutów NTFS
Programowanie?ntral DSC za pomoca komputera PC
Programowalny zegar cyfrowy przełącznik za pomocą mikrokontrolera PIC, opis
Modelowanie pól za pomocą programu komputerowego Quick Field, Elektrotechnika
Programowalny zegar cyfrowy przełącznik za pomocą mikrokontrolera PIC opis
Programowanie mikrokontrolerów za pomocą programatora USBasp
MODELOWANIE UKŁADÓW KOMBINACYJNYCH ZA POMOCĄ FUNKTORÓW LOGICZNYCH SCHEMAT
Modelowanie pól za pomocą programu komputerowego QUICKFIELD, Politechnika Lubelska, Studia, Studia,
PROGRAM NAUCZANIA KOMUNIKOWANIA SIĘ ALTERNATYWNEGO ZA POMOCĄ PIKTOGRAMÓW, AUTYZM-do segregacji
Pomiar stożków i kątów, Pomiar stożków i kątów, Schemat pomiaru klina długiego o małym pochyleniu za
Modelowanie pól za pomocą programu Quick Field, Elektrotechnika - notatki, sprawozdania, Teoria pola
Blokowanie stron internetowych za pomocą pliku hosts
Gry w które można zagrać za pomocą programu iZ3D Driver
,radio programowalne, Schemat blokowy odbiornika

więcej podobnych podstron