PASzSz. Dr. Kotsis Domokos



Hasonló dokumentumok
OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

6. A Pascal nyelv utasításai

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

Algoritmizálás és adatmodellezés tanítása 1. előadás

Delphi programozás I.

Programozás alapjai. 5. előadás

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

INFORMATIKAI ALAPISMERETEK

Occam 1. Készítette: Szabó Éva

A C# programozási nyelv alapjai

Java II. I A Java programozási nyelv alapelemei

Szoftvertervezés és -fejlesztés I.

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

FELADATGYÜJTEMÉNY. 9.évfolyam...

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Algoritmizálás + kódolás C++ nyelven és Pascalban

Megoldott feladatok. Informatika

Delphi programozás IV.

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Programozás alapjai Free Pascal

1. Egyszerű (primitív) típusok. 2. Referencia típusok

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Delphi programozás III.

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

S z á m í t ó g é p e s a l a p i s m e r e t e k

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

C# gyorstalpaló. Készítette: Major Péter

Szkriptnyelvek. 1. UNIX shell

7. Strukturált típusok

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

2.6. Utasítások használata

Rendezések. A föltöltés nemcsak az r-re vonatkozik, hanem az s-re is. Ez használható föl a további rendezések

Kifejezések. Kozsik Tamás. December 11, 2016

A Pascal programozási nyelvben minden programnak a következő szerkezete van:

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Java II. I A Java programozási nyelv alapelemei

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

1. Alapok. #!/bin/bash

Algoritmizálás és adatmodellezés tanítása 4. előadás

Informatika terméktervezőknek

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Webprogramozás szakkör

Programozás alapjai. 2. előadás

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

Algoritmusok - pszeudókód... 1

Programozási nyelvek (ADA)

Kifejezések. Kozsik Tamás. December 11, 2016

Egyszerű programok készítése Kifejezések Bitszintű műveletek Relációs műveletek... 58

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Szoftvertechnológia alapjai Java előadások

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

Közismereti informatika 2.zh T-M szakirány

BASH script programozás II. Vezérlési szerkezetek

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

Programozás I. gyakorlat

Dokumentáció az 1. feladatsorhoz (egyszerű, rövidített kivitelben)

OOP: Java 1.Gy: Java alapok

Bevezetés a programozásba I.

1 A pascal program szerkezete

INFORMATIKAI ALAPISMERETEK

Objektumorientált Programozás II.

Smalltalk 2. Készítette: Szabó Éva

A C# PROGRAMOZÁSI NYELV

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

1. Jelölje meg az összes igaz állítást a következők közül!

INFORMATIKAI ALAPISMERETEK

PROGRAMOZÁSI NYELVEK (ELMÉLET)

Bevezetés a C++ programozásba

Programozás alapjai 9.Gy: Struktúra 2.

Maximum kiválasztás tömbben

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Mintavételes szabályozás mikrovezérlő segítségével

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

C programozás. 1 óra Bevezetés

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Sztringkezelő függvények. A string típusú változók kezelése, használata és szerepük a feldolgozás során

Számítógépes grafika

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Komputeralgebra Rendszerek

Programozás alapjai 3.Gy: C elágazások, ciklusok P R O

Bakalárska práca Bakalár munka

Adatbázis és szoftverfejlesztés elmélet

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

INFORMATIKAI ALAPISMERETEK

Algoritmusok tervezése

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

AWK programozás, minták, vezérlési szerkezetek

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

Programozás alapjai. 10. előadás

Tartalomjegyzék Algoritmusok - pszeudókód

Átírás:

PASzSz Készítette: Dr. Kotsis Domokos

Első témakör: Lazarus terminál alkalmazás készítése. Lazarus terminál alkalmazás készítése. Egyszerű algoritmusok leírása, megvalósítása.

Free Pascal A Turbo Pascal és a Delphi Object Pascal alapján készült, objekt orientált programozást is lehetővé tévő, sok platformon is futó nyelv és környezet. Erre épül, s így szintén multi platformos a Lazarus vizuális programfejlesztő rendszer. 2012. szeptember 26. 3

A Free Pascal 2.6 az alábbi operációs rendszereken fut ARM: Game Boy Advance, Nintendo DS, Linux, Windows CE Intel/i386: Dos (GO32v2 extender), FreeBSD, Linux, Mac OS X, Haiku, OS/2, Solaris, Win32, Win64, WinCE PowerPC: Linux, Mac OS X, Nintendo Wii PowerPC64: Linux, Mac OS X SPARC: Linux, Solaris AMD64/x86_64: FreeBSD, Linux, Windows 64-bit 2012. szeptember 26. 4

Legfontosabb Lazarus linkek http://lazarus.freepascal.hu http://wiki.freepascal.org http://www.lazarussupport.com 2012. szeptember 26. 5

Pascal program készítése I. Program alkalmazás: 32-bites program, amely nem grafikus környezetben fut, hanem konzol ablakban Általában kis mennyiségű input és output jellemzi File New és válasszuk a Program elemet Rögtön mentsünk egy új könyvtárba 2012. szeptember 26. 6

Pascal program készítése II. A kis- vagy nagybetűnek nincs jelentősége! Csak az angol abc betűit használjuk! A C# beli { és } helyett a begin end pár használandó Az értékadás jele a := Az összehasonlításé a = 2012. szeptember 26. 7

Program fordítása Használhatjuk az F9 billentyűt Használhatjuk a Run Run parancsot Kattinthatunk a zöld háromszögre 2012. szeptember 26. 8

Program mentése Használhatjuk a File Save (esetleg Save as) parancsot Használhatjuk actrl-s billentyűket 2012. szeptember 26. 9

Program alkalmazás legfontosabb file formátumai A főprogram kiterjesztése: lpr (lazarus project). Az alprogramok kiterjesztése pas (pascal). Az eredmény kiterjesztése exe (futtatható állomány). 2012. szeptember 26. 10

1.1. feladat: Bemutatkozás program Project1; {$mode objfpc}{$h+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes { you can add units after this }; Ezt a rendszer elkészíti {$IFDEF WINDOWS}{$R project1.rc}{$endif} begin WriteLn('Kis Pista vagyok'); ReadLn; end. A program A végrehajtandó program eleje, vége 2012. szeptember 26. 11

Változók, deklaráció I. A változókat deklarálni kell, azaz meg kell adni nevüket, típusukat (mire akarjuk őket használni), méretüket, mielőtt a végrehajtható kód blokkra (begin end) sor kerülne, egy var kezdetű blokkban. A végrehajtandó kódban értéket kell nekik adni, azután fel lehet azt használni. 2012. szeptember 26. 12

Deklaráció Var vált1, vált2,... : típus1; vált13, vált4,... : típus2;... Fontos: A deklarációnak meg kell előznie a programblokkot, amiben használni akarjuk! 2012. szeptember 26. 13

Változók, deklaráció II. A deklaráció kezdete var x:integer; begin x:= 190; WriteLn('Kiss Pista ',x,' cm magas'); ReadLn; end. egyszerű egész szám Értékadás A változó felhasználása 2012. szeptember 26. 14

Egyszerű változó típusok I. Számok: Integer típusok: ábrázolás egészként pontos, kis terjedelem. Real típusok: ábrázolás karakterisztika-mantissza rendszerben nem pontos, nagy terjedelem. 2012. szeptember 26. 15

Néhány integer típus Név Terjedelem Formátum Byte 0..255 8 bit e.n. Word 0..65535 16 bit e.n. Longword 0..429496729 32 bit e.n. Shortint -127..128 8 bit e. Smallint -32768..32767 16 bit e. Integer -2147483648.. 2147483647 32 bit e. 2012. szeptember 26. 16

Néhány real típus Név Terjedelem Tizes jegy Méret (byte) Single Real Extended 1,5*10^-39.. 3,4*10^38 7-8 4 5*10^-324.. 1,7*10^308 15-16 8 3,6*10^-4951.. 1,1*10^4932 19-20 10 2012. szeptember 26. 17

Egyszerű változó típusok II. Karakter (char) Egy karakter, a konstans aposztrófok (') között. Logikai (boolean) Logikai érték, true, vagy false. 2012. szeptember 26. 18

Operátorok, műveletek Aritmetikai: +, -, *, /, div, mod Összehasonlító: =, <>, <, >, <=, >= Logikai: not, and, or, xor 2012. szeptember 26. 19

Operátorok precedenciája Operátor Precedencia not legmagasabb *, /, div, mod, and második +, -, or, xor harmadik =, <>, <, >, <=, >= legalacsonyabb Figyelem: Ez más, mint a C#-ban volt! Pl.: if x>3 and y=2; más, mint if (x>3) and (y=2);! 2012. szeptember 26. 20

Egyszerű I/O Read(lista); Readln(lista); Write(lista); Writeln(lista); lista: vesszőkkel elválasztott konstansok, változók : után hossz, real számoknál második : után tizedesek száma 2012. szeptember 26. 21

Szekvencia Egy utasítás, vagy utasítások Begin és End között Utasítások végén ; kell. Utasítás: értékadás, eljárás hívás. 2012. szeptember 26. 22

Elágaztatás I. If állítás Then ez_kell_igaz _állítás _esetén Else ez_kell_hamis _állítás _esetén; ez_kell: egy utasítás, vagy utasítások Begin és End között Utasítások végén ; kell, kivéve Else előtt! Az Else rész elhagyható. 2012. szeptember 26. 23

Elágaztatás II. Case Case selector Of érték1: utasítás;.. értékn: utasítás Else utasítások; End; Case selector: sorszámozható értékű kifejezés. Az Else rész elhagyható. 2012. szeptember 26. 24

Ciklus I. While állítás Do ezt_kell_tenni Újra, amíg az állítás igaz. Repeat ezt_kell_tenni Until állítás Újra, amíg az állítás nem igaz. ezt_kell_tenni: egy utasítás, vagy utasítások Begin és End között 2012. szeptember 26. 25

Ciklus II. For cv:=kezdőérték To végérték Do ezt_kell_tenni Újra, a cv ciklusváltozó egyesével nő a kezdőértéktől a végértékig. For cv:=kezdőérték DownTo végérték Do ezt_kell_tenni Újra, a cv ciklusváltozó egyesével csökken a kezdőértéktől a végértékig. cv: egész típusú változó. ezt_kell_tenni: egy utasítás, vagy utasítások Begin és End között. 2012. szeptember 26. 26

1.2. feladat: Átlag I. Készítsen programot, mely beolvas a billentyűzetről számokat, ha a beírt szám negatív, kiírja az addig beolvasott számok átlagát! A beolvasott string konvertálásához használja a StrTOFloat() függvényt. Ehhez a Uses klauzulába vegye fel a Sysutils tételt! 2012. szeptember 26. 27

Felvétel a Uses klauzulába A Uses klauzulába vegye fel a Sysutils tételt! program Project1; {$mode objfpc}{$h+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes, Sysutils { you can add units after this };... 2012. szeptember 26. 28

1.2. feladat: Átlag Ia. var szumma,utolso: real; darab: integer; s1: string; Begin szumma:=0; darab:=0; ReadLn(s1); utolso:= StrToFloat(s1);... 2012. szeptember 26. 29

1.2. feladat: Átlag Ib.... while utolso>=0 do Begin szumma:=szumma+utolso; darab:=darab+1; ReadLn(s1); utolso:= StrToFloat(s1); End;... 2012. szeptember 26. 30

1.2. feladat: Átlag Ic.... if darab>0 then WriteLn((szumma)/(darab)) else WriteLn('Hiba!'); Readln; End. 2012. szeptember 26. 31

1.3. feladat: Átlag II. Készítsen programot, mely beolvas a billentyűzetről számokat, ha a beírt szám negatív, kiírja az addig beolvasott számok átlagát, kivéve a legnagyobb, és a legkisebb nem negatív számot! 2012. szeptember 26. 32

1.3. feladat: Átlag IIa. var szumma,utolso,max,min: real; darab: integer; s1: string; Begin szumma:=0; darab:=0; max:=0; ReadLn(s1); utolso:= StrToFloat(s1); 2012. min:=utolso; szeptember 26. 33

1.3. feladat: Átlag IIb. while utolso>=0 do Begin szumma:=szumma+utolso; darab:=darab+1; if utolso>max then max:=utolso; if utolso<min then min:=utolso; ReadLn(s1); utolso:= StrToFloat(s1); End; 2012. szeptember 26. 34

1.3. feladat: Átlag IIc. if darab>2 then WriteLn((szumma-max-min)/(darab-2)) else WriteLn('Hiba!'); Readln; End. 2012. szeptember 26. 35

A logikai és a karakter típus I. Olvasson be az c és a d változókba egy-egy karaktert. Ha c értéke i, legyen a értéke true, ha d értéke i, legyen b értéke true (egyébként mindkettő legyen false ). Írja a képernyőre, hogy a és b közül melyik igaz ( Mindegyik, Valamelyik, Egyik sem )! 2012. szeptember 26. 36

A logikai és a karakter típus II. var a,b,c: Boolean; d,e,f: char; Begin c:=true; While c do Begin Readln(d); if d='i' then a:=true else a:= false; ReadLn(e); if e='i' then b:=true else b:= false; if (a or b) and not (a and b)then WriteLn('Valamelyik'); if a and b then WriteLn('Mindegyik'); if not(a or b) then WriteLn('Egyik sem'); ReadLn(f); if f='i' then c:=true else c:= false; End; 2012. Readln; szeptember 26. 37

Túlcsordulás Byte típus esetén I. Készítsünk programot, mely 1 byte hosszúságú, (Byte típusú) 255 értékű előjel nélküli egész szám változóhoz 1-t hozzáad. Mi lesz az eredmény? 2012. szeptember 26. 38

Túlcsordulás Byte típus esetén II. var a, b : Byte; begin a:= 255; b:= a+1; WriteLn; WriteLn('a =', a, ', b=a+1=', b, '!!!'); WriteLn; ReadLn; end. 2012. szeptember 26. 39

Túlcsordulás Byte típus esetén III. a=255, b=a+1=0!!! 2012. szeptember 26. 40

Túlcsordulás Shortint típus esetén I. Készítsünk programot, mely 1 byte hosszúságú előjeles (Shortint típusú) -127 értékű egész szám változóból kivon 1-et, majd 2-t. Mi lesz az eredmény? 2012. szeptember 26. 41

Túlcsordulás Shortint típus esetén II. var a, b, c : Shortint; Begin a:= -127; b:= a-1; c:= a-2; WriteLn; WriteLn('a =', a, ', b=a-1= ', b, ', c=a-2=', c, '!!!'); WriteLn; ReadLn; End. 2012. szeptember 26. 42

Túlcsordulás Shortint típus esetén III. a=-127, b=a-1=-128, c=a-2=127!!! 2012. szeptember 26. 43

Pontosság Real típus esetén I. Készítsünk programot, mely egy real típusú lebegőpontos változó értékét 0-tól 1 tizedenként növeli, míg csak az érték 100 nem lesz. (Egyenlőséget vizsgáljon!) A növelést végezze ciklusban. A ciklus magjában helyezzen el vizsgálatot, mely kiírja a változó értékét, ha az nagyobb lesz, mint 200(!). 2012. szeptember 26. 44

Pontosság Real típus esetén II. var a: Real; Begin a:= 0; Repeat a:= a+0.1; If a>200 Then Begin Writeln('a = ', a:5:2, '!!!'); ReadLn; End; Until a=100; WriteLn; WriteLn('a=', a, '!!!'); WriteLn; ReadLn; End. 2012. szeptember 26. 45

Pontosság Real típus esetén III. a =200.10!!! 2012. szeptember 26. 46

1.4. feladat: Alapműveletek Készítsen programot, mely beolvas a billentyűzetről két számot és egy műveleti jelet, majd kiírja a két számmal elvégzett művelet eredményét! Használjon CASE struktúrát! 2012. szeptember 26. 47

Alapműveletek: deklaráció Var op1, op2, ered : real; hiba : boolean; muv : char; 2012. szeptember 26. 48

Alapműveletek: kezdeti értékadás Begin op1 := 0 ; op2 := 0 ; hiba := false; muv := ' '; 2012. szeptember 26. 49

Alapműveletek: adatok beolvasása Writeln; Write('Az elso operandus = '); ReadLn(op1); Write('A muvelet (+-*/) = '); ReadLn(muv); Write('A masodik operandus = '); ReadLn(op2); 2012. szeptember 26. 50

Alapműveletek: case I. Case muv Of '+' : ered := op1 + op2 ; '-' : ered := op1 - op2 ; '*' : ered := op1 * op2 ; '/' : Begin IF Abs(op2) < 1E-20 THEN Begin Writeln( Osztas hiba! '); hiba := true ; End 2012. szeptember 26. 51

Alapműveletek: case I. Case muv Of '+' : ered := op1 + op2 ; '-' : ered := op1 - op2 ; '*' : ered := op1 * op2 ; '/' : Begin IF Abs(op2) < 1E-20 THEN Begin Writeln( Osztas hiba! '); hiba := true ; End 2012. szeptember 26. 52

Alapműveletek: case II. Else Else End; End ered := op1 / op2 ; WriteLn( Muvelet hiba! '); hiba := true ; 2012. szeptember 26. 53

Alapműveletek: kiíratás If Not hiba Then Writeln(op1:5:2,' ',muv,' ', op2:5:2,' = ',ered:5:2); ReadLn; End. 2012. szeptember 26. 54

1.5. feladat: Másodfokú egyenlet Készítsen programot, mely megadja az adott A, B, C együthatókkal felírható Ax 2 +Bx+C=0 egyenlet gyökeit. Készítse el a feladat Pascal programját! Használható az Abs() és az Sqrt() függvény! 2012. szeptember 26. 55

Másodfokú egyenlet megoldása: deklaráció, beolvasás VAR A,B,C,D : real; BEGIN Writeln('Masodfoku egyenlet megoldasa'); Writeln; Writeln('Add meg az egyenlet egyutthatoit!'); Write('A = '); Readln(A); Write('B = '); Readln(B); Write('C= '); Readln(C); 2012. szeptember 26. 56

Másodfokú egyenlet megoldása: vizsgálat If A=0 then if B=0 then if C=0 then else Writeln('Azonossag') else Writeln('Nincs gyok') else Writeln('Egy gyok van: ',-C/B) 2012. szeptember 26. 57

Másodfokú egyenlet megoldása: valós gyökök Begin D:= B*B-4*A*C; If D>= 0 THEN Begin Writeln('X1 = ',(-B+Sqrt(D))/2/A); Writeln('X2 = ',(-B-Sqrt(D))/2/A); End Else 2012. szeptember 26. 58

Másodfokú egyenlet megoldása: komplex gyökök Begin Writeln('X1 = ', -b/2/a,' +',Abs(Sqrt(-D)/2/A),'i'); Writeln('X2 = ', -b/2/a,' -',Abs(Sqrt(-D)/2/A),'i'); End; End; ReadLn; End. 2012. szeptember 26. 59

1.6. feladat: Faktoriális Készítsen programot, mely megadja az adott A szám faktoriálisát. 2012. szeptember 26. 60

1.7. feladat: Prímkeresés Készítsen programot, mely megadja, hogy egy adott a szám (a<3000) prímszám-e. 2012. szeptember 26. 61