programoz s i.heckenas/okt/cgyak1.pdfprogramoz s i. a c pr ogramoz s ala pjai 1. gyak orlat j....
TRANSCRIPT
-
Programozás I.A C programozás alapjai
1. Gyakorlat
J. Carelman: Leegyszer!sített számológép
2
Gyakorlatok
• Hely, id"pont:• D104, hétf" 10:55-12:35
• Gyakorlatvezet"k:• Heckenast Tamás, B603,
• Tormási Alex, [email protected]
-
3
Gyakorlatok tematikája
• Bevezetés• min. HW és op. rendszer ismeretek• strukt. progr. alapok: algoritmusok, néhány
adattípus, vezérlési szerkezetek
• fejleszt" környezetek• Értékadás, elágazások, ciklusok• Standard I/O, stringek• Számábrázolás, portabilitás, printf• String konverziók• Bitm!veletek• Keresés, string parzolás• Rekurzív függvények• Pointerek kezelése
4
Ajánlott irodalom• B. W. Kernighan, D. M. Ritchie: A C
programozási nyelv, M!szaki Könyvkiadó, 1985
• Bauer Péter: Programozás I-II. C programnyelv, Universitas-Gy"r Kht., 2005
• Németh János: Turbo C 2.0 fejleszt"rendszer, LSI Oktatóközpont, 1991
• Peth" Ádám: abC C programozási nyelvkönyv, Számalk, 1990
• B. W. Kernighan, R. Pike: A UNIX operációs rendszer, M!szaki Könyvkiadó, 1987
• Pere László: UNIX - GNU/Linux programozás C nyelven, Kiskapu Kiadó, 2003
• A. Koenig: C csapdák és buktatók, Kiskapu Kiadó, 2005
-
5
Oktatási anyagok
• https://ivi.sze.hu/main.php?fajl=tantargyak&szervegys=in&SID
• http://www.sze.hu/~bauer/Prog1fel.htm
• http://www.sze.hu/~heckenas/okt/
6
Fejleszt" környezetek
• Bármely ANSI C környezet, compiler, (csak standard I/O, karakteres felület)
• Borland Turbo C (DOS, “Windows”, DOSBox)• http://bdn.borland.com/museum/antiquesoftware
• gcc (Windows, Linux, Mac OS X)• stb. ...
-
7
Bevezetés
• Miért éppen C?• El"nyök
• népszer! és elterjedt - “hordozható”• alacsonyszint! magasszint! programozási nyelv• kevés szemantikai kényszer - elegáns szintaxis• sok ráépül" további nyelv
• (C++, Objective-C, Java, C#, stb.)• Hátrányok
• alacsonyszint! magasszint! programozási nyelv• kevés szemantikai kényszer - elegáns szintaxis• lapos tanulási görbe
8
Alapfogalmak
• Hardver (HW)• Szoftver (SW)• Operációs rendszer (OR)• Algoritmus• Program• Programozási nyelv
-
9
HW és SW
• HW• az információs rendszer fizikai
elektronikus és mechanikus részei
• SW• a rendszer m!ködését megadó
programok kódolt utasítások formájában
• Neumann elv• memóriában tárolt program• bináris rendszer
10
HW és SW (folyt.)• HW architektúra
• SW rendszer
CPU
Memória
I/O
vezérl!kPerifériák
Sin
OR mag
HW
OR szolg.
Alkalmazások
-
11
Operációs rendszerek
• OR• a számítógépet funkcionálisan
használhatóvá tév" irányító szoftver
• programok futtatása• er"források lefoglalása• ütemezés• I/O kezelés• felhasználói felület (parancs
értelmez")
12
Algoritmusok
• Algoritmus• lépésr"l lépésre definiált eljárás
valamilyen probléma megoldására
• véges számú definiált szabály, utasítás
• véges lépésszám• ismétl"d" utasítások
-
13
Magasszint! programozási nyelvek
• Prog. nyelv generációk• 1GL• 2GL• 3GL
• Formális nyelvek• véges szókészlet, rögzített szintaktika és
szemantika
• Fordító programok• forráskód -> végrehajtható (natív) kód
• Interpreterek• forrás nyelv értelmezése
Forráskód
int main(){...}
Fordító program
Futtatható program
001110101010101010101111
2GL
void main(void) {
int x,y;
for (y=0;y
-
15
Programok
• Program: utasítások rendezett halmaza
• végrehajtás - folyamat• Programozási szerkezetek• szekvencia• feltételes elágazások• ciklusok• eljárás absztrakció
16
Programok (folyt.)
• Program elemek• Adatok• M!veletek
• Leírásuk• Nevek (referenciák, literálok)• változók
• Típusok
-
17
Adatábrázolás
• Bináris reprezentációk• Numerikus értékek• egészek (el"jel?)• lebeg"pontos számok
• Szöveg (karakterek)• Egyszer! adattípusok• Összetett adattípusok
18
M!veletek
• Operátorok• Aritmetikai m!veletek• Bit m!veletek• Logikai m!veletek• Vezérlési utasítások
-
19
Blokk diagramok
• Algoritmusok leírásaStart
Input/
Output
Döntés
Stop
Tevékenység Tevékenység
Feltétel
Tevékenységek
Feltétel
Tevékenységek
Elöltesztel" Hátultesztel"
ciklus
20
Struktúrált programozás
• Top-down megközelítés• Olvashatóbb, könnyebben
karbantartható kód
• Hierarchikus vezérlési szerkezetek• szekvencia• szelekció• ciklusok• csak egy belépési és kilépési
pont
-
21
Példák
!"#$%&'(')*#+,-./)0'#12#'#134#1%45&%)6)#60#)%45&%)6)7
!"#$%%&'()*($(%&+,-(.-/(0-10'012(3$45(0-10'*"46'('7($(3*+8*"*"9('78*4*:0%*'*1;!"#$%#%"'()*+,-&".-%%/&0"1"2"3$45$16,7-8.9-,"8#%-:;&"-$$-"1"&@';
C"E-81@1%"6-548@?=?D4:".-:-==/&"9-"1"D?%F8%-=:%-8G"?:71=#(*+0%:(%:,32(,I(J:,3=1%&'('7($:(,H(.8$'1?-7,"7%/(0-10'*12($:$:($:(*+0%:(%:,3?'(%:?-:$1,1()K19"(,K7+;
I99-,"1:"-=-%9-,"%-&;,%=/,&"-8","-88-,G$:J%%-,"%J$%#,G"9-48.1=?=?%A8B"C"%:,3$2($(%?-?:$1(&1?"%E(*"*30@*'(7@5*R*
@ S+0%:
%-%% "?881,@AB"C",#57:-%$-"-6-8#=%"=:4$:?==18"D-87-%%-=>%-%%/&B
8"#$%&'(')*#9:60,/)0%#12#',#%&;,;#$%&'(')?)%&&%=;4,600%&7
-?+-$3&@'$1(A+B2(C?+B($(%&+,-(.-/(0-10'0@*'(D%$'(>?:71=#(#$"E%(0-10'*1(8?+$54?@(*";(F$($()*?"#$%?11($5$1(@*3(8*"*"(3*+($('G#*1*"30@B*'@*'2($''?-(7%301*"46'($:($5$1)*?"#$%,%1(37@5$557+2($3=+(C*"B*%(0-10'*1(@*3('$>&@';
C"E-81@1%"6-548@?=?D4:".-:-==/&"9-"1"D?%F8%-=:%-8G"?:71=#(*+0%:(%:,32(,I(J:,3=1%&'('7($:(,H(.8$'1?-7,"7%/(0-10'*12($:$:($:(*+0%:(%:,3?'(%:?-:$1,1()K19"(,K7+;
I99-,"1:"-=-%9-,"%-&;,%=/,&"-8","-88-,G$:J%%-,"%J$%#,G"9-48.1=?=?%A8B"C"%:,3$2($(%?-?:$1(&1?"%E(*"*30@*'(7@5*R*
@ S+0%:
-
23
Házi feladat
• Oldjuk meg az el"z" feladatot az i segédváltozó használata nélkül (n értékét nem kell meg"rizni)!
24
Példák
!"#$%&'(')*#+&',-).'#/)#'0#%&101#$%&'(')#2%34&(/./)#5367#8436#'0#9:;%,2,&?.)#)'@)'&2'0049A
!"#$%&'&('&)*'+*",-,&".+&",/*0.*'*1-2"3$014".*563,%.73*"3262',"15689':*!62",*6 *0;&03"*"#4".02",*1/%&*",,"1/;+0.0;":*B*(8;7$*.+8$*"#4*(8;7$.+-#*(8;7$*7,=',81'3*(7..+8&*@7#9'*&8;7,16C*30./AA*'*@",'='&7&*&728AA*@7#9%3*@"9,".+&"16:*D"#4E3*0.+;"
-
25
Példák
!"#$%&'(')*#+,)'--'#,.#'/#%&0/0#$%&'(')#1%23&(4-45'6#)'&4&7')8#.-19)&0(0#:;32;'1;9-/&%)%,%)<
!"#$%&'()*+"#$%&'"&,-.,$/.0"#&(()$1"1$%&,230"4+5()4%6"7$,1&)80"#4,5411"1*'994/:";//40".)",4()".)"4,(4"'?/-?+"GH7.,"04)-&&':?)-'#1%2@#732A#'#74;31-/B2#(%;9,-/B2EC%<
!":8.#1+&%1();.5.,3"(,+