Alapismeretek. Programozás I. Hatwágner F. Miklós szeptember 29. Széchenyi István Egyetem, Gy r

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Alapismeretek. Programozás I. Hatwágner F. Miklós szeptember 29. Széchenyi István Egyetem, Gy r"

Átírás

1 Programozás I. Széchenyi István Egyetem, Gy r szeptember 29.

2 Forrásfájltól a programfuttatásig 1 Forrásszöveg megszerkesztése (.c kiterjesztés, ASCII szövegfájl) elso.c /* elso.c */ #include <stdio.h> void main(void) { printf("ez egy C program!\n"); } Kimenet Ez egy C program! _

3 Forrásfájltól a programfuttatásig 2 Fordítás ( compiler) elso.c fordító elso.obj Üzenetek típusai: hibaüzenetek (error) gyelmeztet üzenetek (warning) Megjegyzések: elso.c, 1. sor: /* elso.c */ /* nyitja és */ zárja több soron át tarthat nem ágyazhatók egymásba

4 Forrásfájltól a programfuttatásig El feldolgozó (preprocessor): egybeépítve a fordítóval közvetlenül a fordítás el tt lép m ködésbe elhagyja a megjegyzéseket végrehajtja, majd elhagyja a direktívákat elso.c előfeldolgozó fordító elso.obj elso.c, 2. sor #include <stdio.h>

5 Forrásfájltól a programfuttatásig El feldolgozó direktíva: egy sorban, melynek els nem fehér karaktere a # Fehér karakter (white space): pl. szóköz, soremelés, lapdobás, tabulátor, de még a megjegyzés is #include: betölti a paraméter szövegfájlt stdio.h fejfájl (header): adattípusok, konstansok deníciói, függvények jellemz i standard input/output < és > jelek: csak egy bizonyos helyen keresi a fájlt (include les)

6 Forrásfájltól a programfuttatásig Függvénydeníció elso.c, 3. sor void main(void) { típus függvénynév(formális-paraméterlista) { függvény-test } visszatérési érték típusa void ( nincs [másutt: eljárás]) fv. neve main indító program formális-paraméterlista mindig ( és ) között, most nincsenek (void) függvény-test helye: mindig { és } között

7 Forrásfájltól a programfuttatásig Függvényhívás elso.c, 4. sor printf("ez egy C program!\n"); függvénynév(aktuális-paraméterlista) printf megjelenteti paraméterét a szabvány kimeneten karakterlánc konstans: id z jelek között escape szekvencia (vagy jelsorozat, escape sequence): vezérl jelek, nem nyomtatható jelek, programnyelvi jelentéssel bíró jelek megjelenítésére ; utasításvég jelzés

8 Forrásfájltól a programfuttatásig Esc. szekv. Jelentés \a gyelmeztet jelzés (bell, cseng ) \b visszalépés (backspace) \f lapdobás (form feed) \n új sor (new line) \r kocsi vissza (carriage return) \t vízszintes tabulátor (horizontal tab, HTAB) \v függ leges tabulátor (vertical tab, VTAB) \\ fordított törtvonal (backslash) \? kérd jel \' aposztróf \" idéz jel \ooo oktális szám \xhh hexadecimális szám \0 zérus ASCII kódú karakter

9 Forrásfájltól a programfuttatásig 3 Kapcsoló-szerkesztés (link) fv.-ek tárgykódja: statikus könyvtárakban (.lib) (run-time libraries, standard libraries) keretrendszerben beállítható ezek és a kimeneti fájlok elérési útja elso.obj indító program (obj) könyvtárak (lib) kapcsolószerkesztő elso.exe 4 Futtatás

10 Fahrenheit - Celsius átváltás Feladat: Számítsuk ki az összetartozó F értékeket 0 és 300 F között, F értékét rendre 20-asával növelve! = 5 ( F 32) 9 Adatstruktúra: az értékeket konstansként adjuk meg Algoritmus: minden értékpárt egyesével meghatározunk, majd értéküket megjelentetjük

11 Fahrenheit - Celsius átváltás pelda1.c /* PELDA1.C -- Fahrenheit - Celsius átszámítás */ #include <stdio.h> void main(void){ printf("\nfahrenheit - Celsius átszámítás\n\n"); printf("%f Fahrenheit - %f Celsius\n", 0., (5.0/9.0)*( )); printf("%f Fahrenheit - %f Celsius\n", 20., (5.0/9.0)*( )); printf("%f Fahrenheit - %f Celsius\n", 40., (5.0/9.0)*( )); printf("%f Fahrenheit - %f Celsius\n", 60., (5.0/9.0)*( )); printf("%f Fahrenheit - %f Celsius\n", 80., (5.0/9.0)*( )); printf("%f Fahrenheit - %f Celsius\n", 100., (5.0/9.0)*( )); printf("%f Fahrenheit - %f Celsius\n", 120., (5.0/9.0)*( )); printf("%f Fahrenheit - %f Celsius\n", 140., (5.0/9.0)*( )); printf("%f Fahrenheit - %f Celsius\n", 160., (5.0/9.0)*( )); printf("%f Fahrenheit - %f Celsius\n", 180., (5.0/9.0)*( )); printf("%f Fahrenheit - %f Celsius\n", 200., (5.0/9.0)*( )); printf("%f Fahrenheit - %f Celsius\n", 220., (5.0/9.0)*( )); printf("%f Fahrenheit - %f Celsius\n", 240., (5.0/9.0)*( )); printf("%f Fahrenheit - %f Celsius\n", 260., (5.0/9.0)*( )); printf("%f Fahrenheit - %f Celsius\n", 280., (5.0/9.0)*( )); printf("%f Fahrenheit - %f Celsius\n", 300., (5.0/9.0)*( )); }

12 Fahrenheit - Celsius átváltás pelda1.c, 5. sor printf("%f Fahrenheit - %f Celsius\n", 0., (5.0/9.0)*( )); printf els, karakterlánc paraméterét karakterek és formátumspecikációk alkotják. Utóbbi % karakterrel indul, és típuskarakterrel zárul. A formátumspecikációk és printf további akt. paraméterei összetartoznak (sorrend, mennyiség). %<szélesség><.pontosság>típuskarakter Típuskarakter Paraméter típusa Megjelenítés d egész típus decimális egészként f lebeg pontos tizedes tört alak c egy karakter karakterként s karakterlánc karakterláncként

13 Fahrenheit - Celsius átváltás pelda1.c, kimenet Fahrenheit - Celsius átszámítás Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius _

14 Fahrenheit - Celsius átváltás Problémák: rengeteg feleslegesen ismétl d kódrészlet sok hibalehet ség nehézkes karbantarthatóság, stb. módosítunk! Adatszerkezet: Funkció Azonosító Típus Jelleg tartomány alsó határa also egész munka tartomány fels határa felso egész munka lépésköz lepes egész munka aktuális Fahrenheit érték fahr valós munka, output aktuális Celsius érték celsius valós munka, output

15 Fahrenheit - Celsius átváltás Algoritmus: pelda2.c változók deklarálása, kezd értékadások fejlécsor megjelentetése ciklusmag ismétlése, amíg fahr <= felso ciklusmagban: számolás, értékpár kijelzése, fahr léptetése /* PELDA2.C -- Fahrenheit - Celsius átszámítás */ #include <stdio.h> void main(void) { int also, felso, lepes; float fahr, celsius; printf("\nfahrenheit - Celsius átszámítás\n\n"); printf("fahrenheit - Celsius\n"); printf(" \n"); also = 0; felso = 300; lepes = 20; fahr =also; while(fahr<=felso) { celsius = (5.0/9.0)*(fahr-32.0); printf("%10.0f%10.1f\n", fahr, celsius); fahr = fahr+lepes; } }

16 Fahrenheit - Celsius átváltás Blokkszerkezet el ször deklarációs utasítások, majd végrehajtható utasítások (nem keveredhetnek) minden változót deklarálni kell Deklarációs utasítás Típusok típus azonosítólista; azonosítólista: vessz vel elválasztott azonosítók int el jeles, xpontos bels ábrázolású egész float 4 bájtos, lebeg pontos bels ábrázolású valós (mantissza el jelével 3 bájt + karakterisztika el jelével 1 bájt, ábrázolási határok: ±3, ±3, , 6-7 decimális jegy pontosság)

17 Fahrenheit - Celsius átváltás Hozzárendelés pelda2.c, 12. sor celsius=(5.0/9.0)*(fahr-32.0); objektum = kifejezés módosítható balérték: értéket felvenni képes objektum jobbérték: meghatározható érték kifejezés esetleges implicit típusmódosítás Elöltesztel ciklus pelda2.c, 11. sor while(fahr<=felso) { while(kifejezés) utasítás kifejezés aritmetikai: igaz (1) esetén ismétli az utasítást, hamis (0) esetén a ciklust követ utasításra lép utasítás több utasításból is állhat { és } kifejezés-nek változnia kell végtelen ciklus

18 Fahrenheit - Celsius átváltás Explicit típusmódosítás (típus)kifejezés pelda2.c, kimenet Fahrenheit - Celsius átszámítás Fahrenheit - Celsius _

19 Fahrenheit - Celsius átváltás Probléma túl sok változó (nem is változik az értékük!) módosítunk! pelda3.c /* PELDA3.C -- Fahrenheit - Celsius átszámítás */ #include <stdio.h> void main(void) { int fahr; printf("\nfahrenheit - Celsius átszámítás\n\n"); printf("fahrenheit - Celsius\n"); printf(" \n"); for(fahr=0; fahr<=300; fahr=fahr+20) printf("%10d%10.1f\n", fahr, (5.0/9.0)*(fahr-32)); }

20 Fahrenheit - Celsius átváltás Elöltesztel, iteratív ciklusutasítás for(<init-kifejezés>; <kifejezés>; <léptet -kifejezés>) utasítás 1 init-kifejezés végrehajtása, ha megadták 2 utasítás végrehajtása, ha kifejezés igaz; lehet összetett 3 léptet -kifejezés végrehajtása, ha megadták, majd ugrás a 2. pontra while átalakítható for ciklusra: <init-kifejezés>; while(kifejezés) {utasítás; <léptet -kifejezés;>} printf paramétere kifejezés is lehet Probléma: konstansok szétszórva a programban nehézkes, lassú módosítások, rengeteg hibalehet ség módosítunk!

21 Fahrenheit - Celsius átváltás Szimbolikus állandók (egyszer makrók) egyszer kell deniálni, majd a megfelel helyeken használni ket könny a változásokat átvezetni #dene azonosító helyettesít -szöveg pelda4.c /* PELDA4.C -- Fahrenheit - Celsius átszámítás */ #define ALSO 0 #define FELSO 300 #define LEPES 20 #include <stdio.h> void main(void) { int fahr; printf("\nfahrenheit - Celsius átszámítás\n\n"); printf("fahrenheit - Celsius\n"); printf(" \n"); for(fahr=also; fahr<=felso; fahr=fahr+lepes) printf("%10d%10.1f\n", fahr, (5.0/9.0)*(fahr-32)); }

22 Fahrenheit - Celsius átváltás Szokás a #define direktívákat külön fejfájlba helyezni, majd arra hivatkozni A fájlnév most idéz jelek között áll! beginend.h /* BEGINEND.H -- saját fejfájl */ #define ALSO 0 /* Alsó hatar. */ #define FELSO 300 /* Fels határ. */ #define LEPES 20 /* Lépésköz. */ #define begin { #define end } #define LACI for #include <stdio.h> pelda4m.c /* PELDA4M.C -- Fahrenheit - Celsius átszámítás */ #include "beginend.h" int main(void) begin int fahr; printf("\nfahrenheit - Celsius átszámítás\n\n"); printf("fahrenheit - Celsius\n"); printf(" \n"); LACI(fahr=ALSO; fahr<=felso; fahr=fahr+lepes) begin printf("%10d%10.1f\n",fahr,(5.0/9.0)*(fahr-32)); end end

23 Be- és kimenet Szabványos be- és kimenet legtöbb operációs rendszer támogatja stdin (standard input): alapértelmezetten a billenty zet stdout (standard output) alapértelmezetten a képerny felhasználó átirányíthatja ezeket (pl. nyomtatóra, fájlba,... ) Egy karakter olvasása szabvány bemenetr l int getchar(void); balról nulla érték bitekkel feltölti, int-re alakítva adja vissza hiba esetén, vagy a fájl végén EOF értéket szolgáltat. fájl vége billenty zeten? Pl. Ctrl+Z stdio.h részlet #dene EOF (-1) Függvény prototípusa megadja a visszatérési érték típusát a függvény nevét paramétereinek számát, sorrendjét, típusát azaz teljes formai információval szolgál a függvényr l

24 Be- és kimenet Egy karakter írása a szabvány kimenetre int putchar(int k); visszatérési érték sikeres esetben k, hiba esetén ett l eltér érték Készítsünk programot, ami a fájl végéig átmásolja a szabvány bemenetr l érkez jeleket a kimenetre! pelda5.c /* PELDA5.C -- Bemenet átmásolása a kimenetre */ #include <stdio.h> void main(void) { int c; printf("\nbemenet másolása a kimenetre:\n\n"); printf("gépeljen Ctrl+Z -ig sorokat!\n\n"); c=getchar(); while(c!=eof) { putchar(c); c=getchar(); } }

25 Be- és kimenet A getchar az OS billenty zet pueréb l olvas; ENTER leütéséig nem fér hozzá a begépelt karakterekhez! Készítsünk programot, ami megszámolja a szabvány bemenetr l érkez jeleket! pelda6.c /* PELDA6.C -- Karakterszámlálás */ #include <stdio.h> void main(void) { long nc; nc = 0l; printf("a bemenet karaktereinek leszámlálása:\n\n"); printf("gépeljen Ctrl+Z-ig!\n\n"); while(getchar()!=eof) ++nc; printf("a bemenet karaktereinek száma %ld volt.\n", nc); }

26 Be- és kimenet Adattípus deklaráció, pontosítva pelda6.c, 4. sor long nc; <típusmódosítók> <alaptípus> azonosítólista; el jel kezelése: signed (aé.) / unsigned hosszmódosítók: short / long még az alaptípus is elhagyható (aé. int), de az alaptípus és a típusmódosítók egyszerre nem hagyhatók el! short int long pelda6.c, 5. sor nc = 0l; az l a long, az u pedig az unsigned utótag

27 Be- és kimenet Növelés, csökkentés pelda6.c, 8. sor while(getchar()!=eof) ++nc; növelés, inkrementálás (increment): ++ csökkentés, dekrementálás (decrement): unáris nagyon magas prioritású el tag (prex) / utótag (postx) operátor változatok Az el tag/utótag operátorok hatása az eredményre int a, b; b = 6; a = ++b; /* a==7 és b==7 */ a = b++; /* a==7 és b==8 */ pelda6.c, 9. sor printf("a bemenet karaktereinek száma %ld volt.\n", nc); Hosszmódosítók: h short, l long

28 Be- és kimenet Feladat: sorok összeszámolása a bemeneten pelda7.c /* PELDA7.C -- Sorszámlálás */ #include <stdio.h> void main(void) { int c, nl; nl = 0; printf("a bemenet sorainak leszámlálása:\n\n"); printf("gépeljen Ctrl+Z -ig!\n\n"); while((c=getchar())!= EOF) if(c == '\n') ++nl; printf("\na bemeneten %d sor volt.\n", nl); } Vö. pelda5.c pelda7.c megoldását! c = getchar(); while(c!= EOF) { if(c == '\n') ++nl; c = getchar(); }

29 Be- és kimenet Ciklusszervezés összetett kifejezés felhasználásával gyelni kell a m veletek prioritására! mi történne zárójelezés nélkül? Operátor Asszociativitás () [] ->. balról jobbra! ~ * & (típus) sizeof jobbról balra * / % balról jobbra + - balról jobbra << >> balról jobbra < <= > >= balról jobbra ==!= balról jobbra & balról jobbra ^ balról jobbra balról jobbra && balról jobbra balról jobbra?: jobbról balra = += -= *= /= %= &= ^= = <<= >>= jobbról balra, balról jobbra

30 Be- és kimenet Kétirányú szelekció pelda7.c, 9. sor if(c == '\n') ++nl; if(kifejezés) utasítás1 <else utasítás2> az utasítások lehetnek összetettek, vagy akár újabb szelekciós utasítások többágú szelekció

31 Be- és kimenet Feladat: bemenetr l érkez karakterek, szavak és sorok összeszámolása Adatszerkezet vegyünk fel egészeket a karakterek (nc), szavak (nw) és sorok (nl) számlálásához szükség lesz egy egészre a következ jel olvasásához (c) és egy állapotjelz re (szó belsejében járunk-e, inword) Algoritmus számlálókat nullázzuk le, szón kívül állunk tájékoztató üzenetek megjelenítése karakterek olvasása ciklussal EOF-ig, közben nc növelése, nl növelése, ha az utolsó karakter újsor volt, szóhatár észlelése fehér karakterek gyelésével; szó belsejébe lépve nw növelése végül az eredmények kijelzése

32 Be- és kimenet pelda8.c /* PELDA8.C -- A bemenet sorainak,szavainak,karaktereinek számlálása */ #include <stdio.h> #define YES 1 #define NO 0 void main(void) { int c, nl, nw, nc, inword; inword = NO; printf("a bemenet karaktereinek,\n"); printf(" sorainak és\n"); printf(" szavainak leszámlálása:\n"); printf("a bemenet vége: Ctrl+Z vagy EOF.\n\n"); nl = nc = nw = 0; while((c=getchar())!= EOF) { ++nc; if(c == '\n') ++nl; if(c==' ' c=='\n' c=='\t') inword=no; else if(inword == NO) { inword=yes; ++nw; }} printf("sor=%d szo=%d karakter=%d\n", nl, nw, nc); }

33 Be- és kimenet Többszörös hozzárendelés pelda8.c, 12. sor nl = nc = nw = 0; fontos, hogy nl, nc és nw mind balértékek asszociativitás gyorsabb m ködés, tömörebb forrásszöveg

34 Tömbök Feladat: készítsünk programot, mely a szabvány bemenetr l olvas karaktereket EOF-ig, s közben megszámolja, hogy az egyes számjegy karakterekb l, fehér karakterekb l és minden más karakterb l hány darab érkezett! Algoritmus Deklaráljuk az egyszer változókat és a tömböt! A számlálók (beleértve a tömböt is) nullázandók! Jelenítsünk meg tájékoztató üzenetet! M ködtessünk ciklust, amíg EOF nem érkezik a bemenetr l! Ciklusmagban: Háromágú szelekcióval ki kell választani a megfelel kategóriát, majd a neki megfelel számlálót meg kell növelni! Megjelenítend k a számlálók értékei!

35 Tömbök pelda9.c /* PELDA9.C -- Számjegyek, üres és egyéb karakterek leszámlálása */ #include <stdio.h> void main(void) { int c; /* bemeneti karakter */ int i; /* számláló */ int nwhite; /* üres karakterek */ int nother; /* egyéb karakterek */ int ndigit[10]; /* szám karakterek */ printf("számjegyek, üres- és egyeb karakterek leszámlálása\n"); printf("a bemeneten EOF-ig vagy Ctrl+Z-ig.\n\n"); nwhite = nother = 0; for(i=0; i<10; ++i) ndigit[i] = 0; while((c=getchar())!= EOF) if(c>='0' && c<='9') ++ndigit[c-'0']; else if(c==' ' c=='\n' c=='\t') ++nwhite; else ++nother; printf("számjegyek\n\n"); for(i=0; i<10; ++i) printf("%d = %d\n", i, ndigit[i]); printf("\n\nüres karakterek = %d\negyéb karakterek= %d\n", nwhite, nother); }

36 Tömbök Tömb deníció pelda9.c, 8. sor int ndigit[10]; /* szám karakterek */ típus tömbazonosító[méret]; méret pozitív, egész érték állandó kifejezés állandó kifejezés értéke fordítási id ben kiszámítható Tömb helyfoglalása sizeof(tömbazonosító) méret*sizeof(típus) sizeof megadja a típus vagy objektum bájtokban mért méretét Tömbelemek (indexes változó) elérése tömbazonosító[index] 0 index meret 1

37 Tömbök pelda9.c, 12. sor for(i=0; i<10; ++i) ndigit[i] = 0; Az i számjegyek számát ndigit[i] tárolja! (Azaz pl. 0-ból ndigit[0], 1-b l ndigit[1], sít. érkezett.) pelda9.c, 14. sor if(c>='0' && c<='9') ++ndigit[c-'0']; A számjegy karakterek kódjai folytonosan követik egymást a kódtáblában c-'0' a két kód különbségét a megfelel indexet adja!

38 Függvények El re megírtak könyvtárakban (.lib) vagy tárgymodulokban (.obj), pl. printf, getchar,... Mi készítjük el! Feladat: jelezzük ki 2 els 10 hatványát! pelda10.c /* PELDA10.C -- Hatványozó függvény tesztelése */ #include <stdio.h> #define MEDDIG 10 int power(int x, int n); void main(void) { int i; printf("kett hatványai:\n\n"); for(i=0; i<meddig; ++i) printf("2**%d = %d\n", i, power(2, i)); } int power(int x, int n) { /* x n-edik hatványa, ha n>0, különben 1 */ int i, p; p = 1; for(i=1; i<=n; ++i) p=p*x; return(p); }

39 Függvények Denícióból csak egy létezhet, összhangban a deklarációkkal, prototípusokkal Prototípus el zze meg a hívást! Hogyan konvertáljuk a paraméterek típusát? Paraméterátadás érték szerint A fv. nem int-et ad vissza? Legalább deklarálni kell! Függvény deklaráció / prototípus / deníció elhelyezése Fv. deníciók nem ágyazhatók egymásba Visszatérési érték: return <kifejezés>; Vt. érték típusa: tömb és függvény nem lehet, aé. int Implicit típuskonverzió, ha szükséges return el fordulásai Kilépés függvényb l: return vagy } elérésekor

40 Prodzsekt Forrásfájlok témánkénti, funkciónkénti csoportosítása main egy és pontosan egy forrásban szerepelhet! Prodzsektfájl készítés fuggv.c /* FUGGV.C - A power függvény. */ int power(int x, int n) { /* x n-edik hatványa, ha n>0, különben 1 */ int i, p; p = 1; for(i=1; i<=n; ++i) p=p*x; return(p); } foprog.c /* FOPROG.C -- Hatványozó függvény tesztelése */ #include <stdio.h> #define MEDDIG 10 int power(int x, int n); void main(void) { int i; printf("kett hatványai:\n\n"); for(i=0; i<meddig; ++i) printf("2**%d = %d\n", i, power(2,i)); }

41 Prodzsekt foprog.c fuggv.c foprog.obj fuggv.obj indító program (obj) könyvtárak (lib) fordítás kapcsolószerkesztés foprog.obj fuggv.obj prodzsekt.exe Fájlok közötti implicit függ ség újrafordítás szükség esetén Kezelése: automatikusan vagy explicit megadással stdio.h foprog.c foprog.obj fuggv.c fuggv.obj indító prg. könyvtárak prodzsekt.exe

42 Karakterláncok Deníció: char tömbazonosító[méret]; Mérete: méret*sizeof(char) méret Indexelés: [0; méret-1] Karakter konstans bels ábrázolása: int Van értelme? nev1 == nev2, nev1<nev2,... nev 'G' 'i' 'z' 'i' 'k' 'e' '\0' Feladat: Készítsen programot, amely neveket olvas a szabvány bemenetr l EOF-ig vagy üres sorig! Megállapítandó és kijelezend a leghosszabb név! Probléma: Szöveg beolvasása Szöveg tárolása

43 Karakterláncok getline() int getline(char s[], int lim) { /* Max. lim méret karakterlánc beolvasása s-be. A függvény a karakterlánc hosszát adja vissza. s tömbnek lim+1 méret nek kell lennie. */ int c, i; for(i=0; i<lim && (c=getchar())!=eof && c!='\n'; ++i) s[i]=c; s[i] = '\0'; return(i); } Formális paraméter tömb méret nélküli! Billenty zet puer problémákat okoz: karakterek (EOF is!) csak Enter leütés után olvasható ki mi történik, ha lim-nél több karaktert gépeltek be?

44 Karakterláncok getline() int getline(char s[], int lim) { /* Max. lim méret karakterlánc beolvasása s-be. A függvény a karakterlánc hosszát adja vissza. s tömbnek lim+1 méret nek kell lennie. */ int c, i; for(i=0; i<lim && (c=getchar())!=eof && c!='\n'; ++i) s[i]=c; s[i] = '\0'; return(i); } Formális paraméter tömb méret nélküli! Billenty zet puer problémákat okoz: karakterek (EOF is!) csak Enter leütés után olvasható ki mi történik, ha lim-nél több karaktert gépeltek be? getline() puer ürítés while(c!=eof && c!='\n') c=getchar();

45 Karakterláncok copy() void copy(char s1[], char s2[]) { /* s1 masolása s2-be. s2-t elég nagynak tételezi fel. */ int i; i = 0; while((s2[i]=s1[i])!= '\0') ++i; } string.h strcpy() stdio.h getline() POSIX

46 Karakterláncok pelda11.c /* PELDA11.C -- A leghosszabb szövegsor kiválasztása */ #include <stdio.h> #define MAXLINE 1000 int getline(char s[],int lim); void copy(char s1[], char s2[]); void main(void) { int len; /* Az aktuális sor hossza */ int max; /* Az aktuális max. sor hossza */ char line[maxline+1]; /* Az aktuális sor */ char save[maxline+1]; /* Az aktuális max. sor */ printf("a leghosszabb szövegsor kiválasztása\n"); printf("a sorokat zárja le Enter-rel!\n"); printf("utoljára adjon meg egy üres sort vagy Ctrl+Z-t!\n\n"); max = 0; while((len=getline(line, MAXLINE)) > 0) if (len>max) { max=len; copy(line, save); } printf("a leghosszabb sor:\n"); if(max > 0) printf("\n%s\n", save); } /* Volt sor */ int getline(char s[],int lim) {... } void copy(char s1[], char s2[]) {... }

47 Változók tulajdonságai Alapfogalmak Hatáskör/érvényességi tartomány Az a programterület, ahol hivatkozható, elérhet. Élettartam Az az id szak, amíg memóriát foglal. Változó deníciója Olyan deklaráció, melynek során memóriafoglalás is történik. Tárolási osztály Meghatározza, hogy az objektum 1 hol jön létre a memóriában (regiszter / statikus / dinamikus terület) 2 deniálja az objektum élettartamát

48 Változók tulajdonságai Lokális (bels ) változók Pl. i a copy(), getline() fv.-ekben Hatásköre: a blokk, amiben deniálták (és annak blokkjai; lokális hatáskör) Élettartama: amíg saját blokkjában van a vezérlés (lokális élettartam) Memóriaterület: futásid ben foglalt, rendszerint a veremben Alapértelmezett (implicit) kezd érték: nincs Alapértelmezett tárolási osztály: auto Függvények formális paraméterei lokális változók.

49 Változók tulajdonságai Változó deklarációja, pontosítva <tárolási-osztály><típusmódosítók><alaptípus> azonosítólista; Tárolási osztályok: auto register static extern Pl. auto i; auto signed int i;

50 Változók tulajdonságai További alapfogalmak Fordítási egység El feldolgozott forrásmodul. Részei: függvénydeníciók küls deklarációk Küls deklaráció Minden fv. testén kívüli deklaráció küls /globális változó

51 Változók tulajdonságai Globális (küls ) változók Hatásköre: fordítási egységben a deklarációtól a modul végéig (fájl/globális hatáskör) Élettartam: teljes futásid (statikus élettartam) Memóriaterület: fordítási id ben, els dleges adatterületen Alapértelmezett kezd érték: minden bit zérus Alapértelmezett tárolási osztály: extern extern explicit használata nincs memóriafoglalás! Azonos nev lokális változó elfedi modul1.c extern int i; extern char s[]; /*... */ modul2.c int i; char s[64]; /*... */

52 Változók tulajdonságai pelda12.c, els rész /* PELDA12.C -- A leghosszabb szövegsor kiválasztása */ #include <stdio.h> #define MAXLINE 1000 /* A beolvasott sor max. hossza */ char line[maxline+1]; /* Az aktuális sor */ char save[maxline+1]; /* Az aktuális max. sor */ int max; /* Az aktuális max. sor hossza */ int getline(void); void copy(void); void main(void) { int len; /* Az aktuális sor hossza */ printf("a leghosszabb szövegsor kiválasztása\n"); printf("a sorokat zárja le Enter-rel!\n"); printf("utoljára adjon meg egy üres sort vagy Ctrl+Z-t!\n\n"); max = 0; while((len=getline()) > 0) if (len>max) { max=len; copy(); } printf("a leghosszabb sor:\n"); if(max > 0) printf("\n%s\n",save); } /* Volt sor */

53 Változók tulajdonságai pelda12.c, második rész int getline(void) { /* MAXLINE méret karakterlánc beolvasása line-be. A függvény a karakterlánc hosszát adja vissza. line tömbnek MAXLINE+1 méret nek kell lennie. */ int c, i; for(i=0; i<maxline && (c=getchar())!=eof && c!='\n'; ++i) line[i]=c; line[i] = '\0'; return(i); } void copy(void) { /* line másolása save-be. save-t elég nagynak tételezi fel */ int i; i = 0; while((save[i]=line[i])!= '\0') ++i; }

54 Változók tulajdonságai Globális változók használata + fv. paraméter átadása megtakarítható nehezen újrahasznosítható fv.-ek: küls változókat is vinni kell lehetséges névegyezések csak lokális változók és fv. paraméterek esetén nincs ilyen gond nehezebben áttekinthet, karbantartható program

55 Inicializálás Kezd értékadás deklarációban. Statikus élettartam: program indulásakor, konstans kifejezéssel Lokális élettartam: minden létrejövetelkor, bármilyen legális kifejezéssel típus azonosító<=inicializátor>; típus tömbazonosító[<méret>]<=inicializátorlista>;, ahol típus <tárolási-osztály><típusmódosító><alaptípus> Az inicializátor egy hozzárendelés-kifejezés ( típusok, konverziók) Tömböknél: inicializátorlista elemszáma tömb elemszáma Ha inicializátorlista elemszáma < tömb elemszáma további elemek nullázódnak Ha <méret>-et nem specikálták, megállapítják inicializátorlista elemszámából

56 Inicializálás Deníció, hozzárendelés char k, j; k = 'b'; int i; i = 42; float ftomb[3]; ftomb[0] = 1.; ftomb[1] = 2.; ftomb[2] = 3.; int itomb[3]; itomb[0] = itomb[1] = itomb[2] = 0; char ctomb[4]; ctomb[0] = 'Z'; ctomb[1] = 's'; ctomb[2] = 'u'; ctomb[3] = '\0'; Inicializálás char k='b', j; int i = 42; float ftomb[3] = {1., 2., 3.}; int itomb[3] = {0}; char ctomb[4] = {'Z', 's', 'u', '\0'} char ctomb2[] = "Zsu";

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2019. augusztus 29. Feladat: írjuk ki az els 10 természetes szám négyzetét! #i n c l u d e i n t main ( v o i d ) { p r

Részletesebben

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. október 11. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja

Részletesebben

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r Programozás I. Széchenyi István Egyetem, Gy r 2014. november 16. Áttekintés kel kapcsolatos fogalmak deklaráció Több, kompatibilis változat is elképzelhet. Meg kell el znie a fv. hívását. Mindenképp rögzíti

Részletesebben

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

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. február 18. Informatikai rendszerek fejlesztése Rendszertervezés (System Engineering) Üzleti folyamat tervezés (Business Process Engineering)

Részletesebben

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

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. március 3. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja Miért

Részletesebben

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,

Részletesebben

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,

Részletesebben

Típusok és konstansok

Típusok és konstansok Programozás I. Széchenyi István Egyetem, Gy r 2013. október 3. Szimbólumok Forráskód részei: szimbólumok (szintaktikai egységek, tokenek) fehér karakterek (összevonás, gyelmen kívül hagyás) Szimbólumok:

Részletesebben

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. szeptember 27. Háromszög szerkeszthet ségének ellen rzése ANSI C (C89) megvalósítás #i n c l u d e i n t main ( v

Részletesebben

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3 Darvay Zsolt Típusok és nevek a forráskódban Állandók és változók Hatókörök és az előfeldolgozó Bevitel és kivitel Kifejezések Utasítások Mutatók Függvények Struktúrák és típusok Állománykezelés C programozás

Részletesebben

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

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás A tárgy órái Előadás hetente (St101) csüt. 8:15 Bécsi Tamás C elmélet Ajánlott irodalom Dennis Ritchie: A C programozási nyelv Gyakorlat hetente

Részletesebben

M veletek és kifejezések

M veletek és kifejezések Programozás I. Széchenyi István Egyetem, Gy r 2013. szeptember 29. M veletek & kifejezések M veletek az operandusok száma szerint: Egyoperandusos, operátor operandus, pl. 6, sizeof(long) Kétoperandusos,

Részletesebben

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 6. Széchenyi István Egyetem, Gy r

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 6. Széchenyi István Egyetem, Gy r Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. szeptember 6. Számítógép lehet ségei Tisztázandó kérdések: Mit tud a számítógép? (programnyelvek, programok,... ) A feladat melyik

Részletesebben

Objektumok tulajdonságai

Objektumok tulajdonságai Programozás I. Széchenyi István Egyetem, Gy r 2013. november 4. Objektumok attribútumai objektum Konstans vagy változó érték(ek)et tartalmazó, azonosítható memóriaterület. deklaráció Kapcsolatot teremt

Részletesebben

C programnyelv 1. Kedves Kollegina, Kolléga!

C programnyelv 1. Kedves Kollegina, Kolléga! C programnyelv 1 Kedves Kollegina, Kolléga! A jegyzetet Önnek készítettem azért, hogy referencia anyaga legyen a Programnyelv és a Programfejlesztés tárgyakhoz. Szeretném a segítségét igénybe venni abból

Részletesebben

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 C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.10.. -1- Mit tudunk már? Típus fogalma char, int, float,

Részletesebben

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

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. február 18. Minimum és maximumkeresés u s i n g n a m e s p a c e s t d ; i n t main ( ) { c o u t

Részletesebben

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

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3) Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Mit tudunk már? Típus fogalma char, int, float, double változók deklarációja operátorok (aritmetikai, relációs, logikai,

Részletesebben

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

C programozás. 6 óra Függvények, függvényszerű makrók, globális és C programozás 6 óra Függvények, függvényszerű makrók, globális és lokális változók 1.Azonosítók A program bizonyos összetevőire névvel (azonosító) hivatkozunk Első karakter: _ vagy betű (csak ez lehet,

Részletesebben

Programozás I gyakorlat

Programozás I gyakorlat Programozás I. - 2. gyakorlat Változók, kiiratás, bekérés Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Számítástudomány Alkalmazása Tanszék Utolsó frissítés: September 24, 2007 1 tar@dcs.vein.hu

Részletesebben

Programozás I gyakorlat

Programozás I gyakorlat Programozás I. - 2. gyakorlat Változók, típusok, bekérés Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Rendszer - És Számítástudományi Tanszék Utolsó frissítés: September 21, 2009 1 tar@dcs.vein.hu

Részletesebben

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

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek Programozás alapjai gyakorlat 4. gyakorlat Konstansok, tömbök, stringek Házi ellenőrzés (f0069) Valósítsd meg a linuxos seq parancs egy egyszerűbb változatát, ami beolvas két egész számot, majd a kettő

Részletesebben

2 TARTALOMJEGYZÉK ÉS ELŐSZÓ

2 TARTALOMJEGYZÉK ÉS ELŐSZÓ C programnyelv 1 1BEVEZETÉS...5 2JELÖLÉSEK...7 3ALAPISMERETEK...8 3.1Forrásprogram...8 3.2Fordítás... 8 3.3Kapcsoló szerkesztés (link)... 12 3.4Futtatás...12 3.5Táblázat készítése... 13 3.6Bemenet, kimenet...

Részletesebben

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa Miskolci Egyetem Általános Informatikai Tanszék Bevezetés a C programozási nyelvbe Az Általános Informatikai Tanszék C nyelvi kódolási szabványa Oktatási segédletek a levelező műszaki informatikus hallgatók

Részletesebben

C programozási nyelv Pointerek, tömbök, pointer aritmetika

C programozási nyelv Pointerek, tömbök, pointer aritmetika C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve

Részletesebben

Programozás 1. Dr. Iványi Péter

Programozás 1. Dr. Iványi Péter Programozás 1. Dr. Iványi Péter 1 C nyelv B.W. Kernighan és D.M. Ritchie, 1978 The C Programming language 2 C nyelv Amerikai Szabványügy Hivatal (ANSI), 1983 X3J11 bizottság a C nyelv szabványosítására

Részletesebben

Programozás II. 2. Dr. Iványi Péter

Programozás II. 2. Dr. Iványi Péter Programozás II. 2. Dr. Iványi Péter 1 C++ Bjarne Stroustrup, Bell Laboratórium Első implementáció, 1983 Kezdetben csak precompiler volt C++ konstrukciót C-re fordította A kiterjesztés alapján ismerte fel:.cpp.cc.c

Részletesebben

C programozás. 1 óra Bevezetés

C programozás. 1 óra Bevezetés C programozás 1 óra Bevezetés A C nyelv eredete, fő tulajdonságai 1. Bevezető C nyelv alapelemei többsége a BCPL (Basic Combined Programming Language {1963}) Martin Richards B nyelv Ken Thompson {1970}

Részletesebben

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3) Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Függvények C program egymás mellé rendelt függvényekből áll. A függvény (alprogram) jó absztrakciós eszköz a programok

Részletesebben

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2) Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.05. -1- Függvények C program egymás mellé rendelt függvényekből

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak

Részletesebben

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés A C programozási nyelv V. Struktúra Dinamikus memóriakezelés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 1 A struktúra deklarációja 1.

Részletesebben

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK Sapientia EMTE 2015-16 1 Felülnézet 1 Feltételes fordítás #if, #else, #elif, #endif, #ifdef, #ifndef stb. Felülnézet 2 #include: hatására a preprocesszor

Részletesebben

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 15. Széchenyi István Egyetem, Gy r

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 15. Széchenyi István Egyetem, Gy r Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. október 15. Leghosszabb 3D vektorok kikeresése 1 #i n c l u d e 2 #i n c l u d e 3 #d e f i n e MAX 1000

Részletesebben

Bevezetés a C++ programozási nyelvbe

Bevezetés a C++ programozási nyelvbe Bevezetés a C++ programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék CPP0 / 1 Története A C++ programozási nyelv a C programozási nyelv objektum orientált kiterjesztése. Az ANSI-C nyelvet

Részletesebben

Készítette: Nagy Tibor István

Készítette: Nagy Tibor István Készítette: Nagy Tibor István A változó Egy memóriában elhelyezkedő rekesz Egy értéket tárol Van azonosítója (vagyis neve) Van típusa (milyen értéket tárolhat) Az értéke értékadással módosítható Az értéke

Részletesebben

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

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. április 4. Számok rendezése Feladat: Fejlesszük tovább úgy a buborék rendez algoritmust bemutató példát, hogy a felhasználó adhassa meg a

Részletesebben

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Programtervezési stratégiák. Top-down tervezés. Top-down tervezés. Bottom-up tervezés. 4.

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Programtervezési stratégiák. Top-down tervezés. Top-down tervezés. Bottom-up tervezés. 4. 212. február 28. A PROGAMOZÁS ALAPJAI 1 Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu Miről lesz ma szó? Programtervezési stratégiák Top-down Bottom-up Függvények Szintaxis

Részletesebben

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Programozás alapjai gyakorlat. 2. gyakorlat C alapok Programozás alapjai gyakorlat 2. gyakorlat C alapok 2016-2017 Bordé Sándor 2 Forráskód, fordító, futtatható állomány Először megírjuk a programunk kódját (forráskód) Egyszerű szövegszerkesztőben vagy fejlesztőkörnyezettel

Részletesebben

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

Programozás alapjai 9.Gy: Struktúra 2. Programozás alapjai 9.Gy: Struktúra 2. Ördögi részletek P R O A L A G 35/1 B ITv: MAN 2018.11.10 Euró árfolyam statisztika Az EURO árfolyamát egy negyedéven keresztül hetente nyilvántartjuk (HUF / EUR).

Részletesebben

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi. Függvények 1.Függvények...1 1.1.A függvény deníció szintaxisa... 1..Függvények érték visszatérítése...3 1.3.Környezettel kapcsolatos kérdések...4 1.4.Lokális változók használata...4 1.5.Rekurzív hívások...5.kód

Részletesebben

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

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 31. Széchenyi István Egyetem, Gy r Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. március 31. Városok közötti távolság Feladat: két város nevének beolvasása, városok közötti távolság megjelenítése. Kilépés azonos városok

Részletesebben

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

Mintavételes szabályozás mikrovezérlő segítségével Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés

Részletesebben

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

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás 5.3. Mutatók,tömbök A mutató vagy pointer olyan változó, amely egy másik változó címét tartalmazza. A C nyelvű programokban gyakran használják a

Részletesebben

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

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED AWK - szintaxis, vezérlési szerkezetek Operációs rendszerek 11. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik

Részletesebben

1. Gyakorlat. Rövid elméleti összefoglaló. <tárolási osztály>típus <típus > változónév <= kezdőérték><, >;

1. Gyakorlat. Rövid elméleti összefoglaló. <tárolási osztály>típus <típus > változónév <= kezdőérték><, >; Rövid elméleti összefoglaló 1. Gyakorlat A C++ nyelv hatékony, általános célú programozási nyelv, amely hagyományos fejlesztőeszközként és objektum-orientált programozási nyelvként egyaránt használható.

Részletesebben

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3) Programozás alapjai C nyelv 5. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.17. -1- Tömbök Azonos típusú adatok tárolására. Index

Részletesebben

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása A programozás alapjai 1 A C nyelv típusai 4. előadás Híradástechnikai Tanszék C típusok -void - skalár: - aritmetikai: - egész: - eger - karakter - felsorolás - lebegőpontos - mutató - függvény - union

Részletesebben

Bevezetés a programozásba I.

Bevezetés a programozásba I. Bevezetés a programozásba I. 6. gyakorlat C++ alapok, szövegkezelés Surányi Márton PPKE-ITK 2010.10.12. Forrásfájlok: *.cpp fájlok Fordítás: a folyamat, amikor a forrásfájlból futtatható állományt állítunk

Részletesebben

A C programozási nyelv II. Utasítások. A függvény.

A C programozási nyelv II. Utasítások. A függvény. A C programozási nyelv II. Utasítások. A függvény. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv II (Utasítások, fuggvények) CBEV2 / 1 Kifejezés utasítás Kifejezés utasítás, blokk

Részletesebben

B I T M A N B I v: T M A N

B I T M A N B I v: T M A N Műszaki informatika Tesztek+Megoldások B I v: T 2015.04.19 M A N 1/42 Tesztek + Megoldások Alapfogalmi kitérő kérdéssor IPA kérdéssor CPA kérdéssor 2/42 Ellenőrző kérdések 1. 1. Melyik Neumann elv következménye

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok 2009. november 13. Ismétlés El z órai anyagok áttekintése Ismétlés Specikáció Típusok, kifejezések, m veletek, adatok ábrázolása, típusabsztakció Vezérlési szerkezetek Függvények, paraméterátadás, rekurziók

Részletesebben

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

Programozás alapjai 2.Gy: A C nyelv alapjai P R O Programozás alapjai 2.Gy: A C nyelv alapjai. P R O A L A G 1/32 B ITv: MAN 2018.10.02 Code::Blocks Indítsa el mindenki! 2/32 1 Code::Blocks Új projekt 2 3 4 5 3/32 Code::Blocks Forráskód Kód fordítása:

Részletesebben

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

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe Mechatronika és mikroszámítógépek 2017/2018 I. félév Bevezetés a C nyelvbe A C programozási nyelv A C egy általános célú programozási nyelv, melyet Dennis Ritchie fejlesztett ki Ken Thompson segítségével

Részletesebben

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

AWK programozás, minták, vezérlési szerkezetek 10 AWK programozás, minták, vezérlési szerkezetek AWK adatvezérelt szkriptnyelv text processing, adat kiterjesztés, tagolt adatok automatizált soronkénti feldolgozása a forrásállományt soronként beolvassa

Részletesebben

Bevezetés a programozásba I.

Bevezetés a programozásba I. Bevezetés a programozásba I. 3. gyakorlat Tömbök, programozási tételek Surányi Márton PPKE-ITK 2010.09.21. ZH! PlanG-ból papír alapú zárthelyit írunk el reláthatólag október 5-én! Tömbök Tömbök Eddig egy-egy

Részletesebben

Bevezetés a programozásba I.

Bevezetés a programozásba I. Bevezetés a programozásba I. 8. gyakorlat Fájlkezelés Surányi Márton PPKE-ITK 2010.11.02. Fájlkezelés C++-ban C++-ban van lehet ségünk fájlok kezelésére. Itt már tényleges fájlokkal dolgozunk, nem pedig

Részletesebben

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában Programozás alapjai C nyelv 8. gyakorlat Szeberényi mre BME T Programozás alapjai. (C nyelv, gyakorlat) BME-T Sz.. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény

Részletesebben

1. fejezet: Alapismeretek

1. fejezet: Alapismeretek 1. fejezet: Alapismeretek A C nyelv tanulását kezdjük az alapismeretek gyors elsajátításával. Célunk az, hogy működőképes programokon, de a részletekbe, formális szabályokba és kivételekbe való belebonyolódás

Részletesebben

5. gyakorlat. Konstansok Tömbök Stringek

5. gyakorlat. Konstansok Tömbök Stringek 5. gyakorlat Konstansok Tömbök Stringek Konstansok A C nyelvben a konstansok preprocesszor makrókkal vannak megvalósítva. Konstansdefiniálás alakja: #define NÉV érték Az érték bármi lehet, később a fordítás

Részletesebben

C programozási nyelv

C programozási nyelv C programozási nyelv Előfeldolgozó utasítások Dr Schuster György 2011 május 3 Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 1 / 15 A fordítás menete Dr Schuster György

Részletesebben

Programozás I. gyakorlat

Programozás I. gyakorlat Programozás I. gyakorlat 1. gyakorlat Alapok Eszközök Szövegszerkesztő: Szintaktikai kiemelés Egyszerre több fájl szerkesztése pl.: gedit, mcedit, joe, vi, Notepad++ stb. Fordító: Szöveges file-ban tárolt

Részletesebben

7/8. gyakorlat Karaktertömbök és sztringkezelés

7/8. gyakorlat Karaktertömbök és sztringkezelés 7/8. gyakorlat Karaktertömbök és sztringkezelés 1. feladat: Karaktertömb kezelése Egy beolvasott karaktert lineáris kereső eljárással keressen meg az angol ábécében (az ábécé betűit tárolja inicializált

Részletesebben

Programozás C és C++ -ban

Programozás C és C++ -ban Programozás C és C++ -ban 2. További különbségek a C és C++ között 2.1 Igaz és hamis A C++ programozási nyelv a C-hez hasonlóan definiál néhány alap adattípust: char int float double Ugyanakkor egy új

Részletesebben

A C programozási nyelv IV. Deklaráció és definíció

A C programozási nyelv IV. Deklaráció és definíció A C programozási nyelv IV. Deklaráció és definíció Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv IV. (Deklaráció és definíció) CBEV4 / 1 Definíció és deklaráció Definíció: meghatározza

Részletesebben

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism) Programozás alapjai C nyelv 8. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény

Részletesebben

10. gyakorlat Tömb, mint függvény argumentum

10. gyakorlat Tömb, mint függvény argumentum 10. gyakorlat Tömb, mint függvény argumentum 1. feladat: A 6. gyakorlat 1. feladatát oldja meg a strukturált programtervezési alapelv betartásával, azaz minden végrehajtandó funkciót külön függvényben

Részletesebben

El feldolgozó. Programozás I. Hatwágner F. Miklós október 16. Széchenyi István Egyetem, Gy r

El feldolgozó. Programozás I. Hatwágner F. Miklós október 16. Széchenyi István Egyetem, Gy r Programozás I. Széchenyi István Egyetem, Gy r 2013. október 16. feladatai Emlékeztet : forrásfájl (el feldolgozó fordító) kapcsoló-szerkeszt futtatható állomány tevékenységei: kifejti a makrókat (dene)

Részletesebben

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

AWK programozás, minták, vezérlési szerkezetek 10 AWK programozás, minták, vezérlési szerkezetek AWK futtatási módok AWK parancs, közvetlen programkódmegadás: awk 'PROGRAMKÓD' FILE példa: ls -l awk '{print $1, $5}' a programkód helyére minden indentálás

Részletesebben

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

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit

Részletesebben

8. gyakorlat Pointerek, dinamikus memóriakezelés

8. gyakorlat Pointerek, dinamikus memóriakezelés 8. gyakorlat Pointerek, dinamikus memóriakezelés Házi ellenőrzés Egy számtani sorozat első két tagja A1 és A2. Számítsa ki a sorozat N- dik tagját! (f0051) Egy mértani sorozat első két tagja A1 és A2.

Részletesebben

Programozás I gyakorlat

Programozás I gyakorlat Programozás I. - 9. gyakorlat Sztringkezelés, mutatók Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Rendszer- és Számítástudományi Tanszék Utolsó frissítés: November 2, 2009 1 tar@dcs.vein.hu Tar

Részletesebben

0.1. Mi az a standard be- és kimenet?... 1. 0.2. A két mintafeladat leírása

0.1. Mi az a standard be- és kimenet?... 1. 0.2. A két mintafeladat leírása KöMaL Technikai tanácsok az I- és S-jelű pontversenyhez A standard be- és kimenet kezelése Tartalomjegyzék 0.1. Mi az a standard be- és kimenet?............................. 1 0.2. A két mintafeladat leírása.................................

Részletesebben

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

1. Egyszerű (primitív) típusok. 2. Referencia típusok II. A Java nyelv eszközei 1. Milyen eszközöket nyújt a Java a programozóknak Korábban már említettük, hogy a Java a C nyelvből alakult ki, ezért a C, C++ nyelvben járatos programozóknak nem fog nehézséget

Részletesebben

Flex tutorial. Dévai Gergely

Flex tutorial. Dévai Gergely Flex tutorial Dévai Gergely A Flex (Fast Lexical Analyser) egy lexikáliselemz -generátor: reguláris kifejezések sorozatából egy C/C++ programot generál, ami szövegfájlokat képes lexikai elemek sorozatára

Részletesebben

10. gyakorlat. Pointerek Tárolási osztályok

10. gyakorlat. Pointerek Tárolási osztályok 10. gyakorlat Pointerek Tárolási osztályok Pointer A pointer egy mutató egy memóriacellára, egyfajta "parancsikon", csak nem fájlokra, hanem változókra. Létrehozás: tipus * név;, ahol a típus a hivatkozott

Részletesebben

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

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás 4.11. A C előfeldolgozó rendszer A fordítás első lépése a C esetében a különböző nyelvi kiterjesztések feldolgozása: másik állomány tartalmának

Részletesebben

A C programozási nyelv III. Pointerek és tömbök.

A C programozási nyelv III. Pointerek és tömbök. A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,

Részletesebben

Alprogramok, paraméterátadás

Alprogramok, paraméterátadás ELTE Informatikai Kar, Programozási Nyelvek és Fordítóprogramok Tanszék October 24, 2016 Programozási nyelvek Alprogramok Függvények, eljárások Metódusok Korutinok stb. Alprogramok Alprogram: olyan nyelvi

Részletesebben

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények. Dr. Bécsi Tamás 6. Előadás

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények. Dr. Bécsi Tamás 6. Előadás Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények Dr. Bécsi Tamás 6. Előadás Bevezetés Egy idő után az egyetlen main(){ függvénnyel megírt programunk túl nagy méretű lesz. Vannak

Részletesebben

Programozás C++ -ban 2007/1

Programozás C++ -ban 2007/1 Programozás C++ -ban 2007/1 1. Különbségek a C nyelvhez képest Több alapvető különbség van a C és a C++ programozási nyelvek szintaxisában. A programozó szempontjából ezek a különbségek könnyítik a programozó

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok 2012. október 18. Ismétlés El z órai anyagok áttekintése Ismétlés Specikáció Típusok, kifejezések, m veletek Adatok ábrázolása a memóriában Vezérlési szerkezetek Függvények Osztályok, objektumok Paraméterátadás

Részletesebben

Vezérlési szerkezetek. Szelekció Ciklusok

Vezérlési szerkezetek. Szelekció Ciklusok Vezérlési szerkezetek Szelekció Ciklusok Szelekciós vezérlés A program egy feltétel teljesülése alapján választja ki, hogy mely műveleteket hajtsa végre. Alakja: if ( feltétel ) { műveletek, ha feltétel

Részletesebben

A C programozási nyelv III. Pointerek és tömbök.

A C programozási nyelv III. Pointerek és tömbök. A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,

Részletesebben

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Mutatók. Dr. Bécsi Tamás 7. Előadás

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Mutatók. Dr. Bécsi Tamás 7. Előadás Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Mutatók Dr. Bécsi Tamás 7. Előadás 5.3. Mutatók,tömbök A mutató vagy pointer olyan változó, amely egy másik változó címét tartalmazza.

Részletesebben

3 A C programozási nyelv szintaktikai egységei

3 A C programozási nyelv szintaktikai egységei 3 A C programozási nyelv szintaktikai egységei 3.1 Azonosítók Betűk és számjegyek sorozata, betűvel vagy _ (aláhúzás) karakterrel kell kezdődnie. A nagy- és kisbetűk különbözőek. Az azonosítók tetszőleges

Részletesebben

Vezérlési szerkezetek

Vezérlési szerkezetek Vezérlési szerkezetek Szelekciós ok: if, else, switch If Segítségével valamely ok végrehajtását valamely feltétel teljesülése esetén végezzük el. Az if segítségével valamely tevékenység () végrehajtását

Részletesebben

C változók. Feladat: Deklaralj egy valos, egy karakter es ket egesz tipusu valtozot! int main() {

C változók. Feladat: Deklaralj egy valos, egy karakter es ket egesz tipusu valtozot! int main() { C változók Feladat: Deklaralj egy valos, egy karakter es ket egesz tipusu valtozot! float valos; char karakter; int egesz1, egesz2; /* Tobb valtozo ugyan olyan tipusu lehet, ezek deklaraciojat csoportosthatjuk.

Részletesebben

Szövegek C++ -ban, a string osztály

Szövegek C++ -ban, a string osztály Szövegek C++ -ban, a string osztály A string osztály a Szabványos C++ könyvtár (Standard Template Library) része és bár az objektum-orientált programozásról, az osztályokról, csak később esik szó, a string

Részletesebben

Programozás I. 5. Előadás: Függvények

Programozás I. 5. Előadás: Függvények Programozás I 5. Előadás: Függvények Függvény Egy alprogram Egy C program általában több kisméretű, könnyen értelmezhető függvényből áll Egy függvény megtalálható minden C programban: ez a main függvény

Részletesebben

Programozás I gyakorlat. 10. Stringek, mutatók

Programozás I gyakorlat. 10. Stringek, mutatók Programozás I gyakorlat 10. Stringek, mutatók Karakter típus A char típusú változókat karakerként is kiírhatjuk: #include char c = 'A'; printf("%c\n", c); c = 80; printf("%c\n", c); printf("%c\n",

Részletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 1. Előadás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási Tanszék www.kjit.bme.hu Programozás

Részletesebben

AWK programozás Bevezetés

AWK programozás Bevezetés 09 AWK programozás Bevezetés AWK adatvezérelt szkriptnyelv text processing, adat kiterjesztés, tagolt adatok automatizált soronkénti feldolgozása a forrásállományt soronként beolvassa és feldolgozhatóvá

Részletesebben

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon 1. Template (sablon) 1.1. Függvénysablon Maximum függvény megvalósítása függvénynév túlterheléssel. i n l i n e f l o a t Max ( f l o a t a, f l o a t b ) { return a>b? a : b ; i n l i n e double Max (

Részletesebben

Információs Technológia

Információs Technológia Információs Technológia A C programozási nyelv (Típusok és operátorok) Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010 szeptember

Részletesebben

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

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. május 6. Parancssori paraméterek Parancssorban történ programindításkor a program nevét követ en szóközökkel elválasztva paraméterek (command

Részletesebben

Mérnöki programozás 7. Szerkesztette: dr. Vass Péter Tamás

Mérnöki programozás 7. Szerkesztette: dr. Vass Péter Tamás Mérnöki programozás 7 Szerkesztette: dr. Vass Péter Tamás Függvények Függvény (function) egyedi azonosítónévvel ellátott számítási egység. A függvények formájában kidolgozott programkódok viszonylag egyszerűbb

Részletesebben

Megoldott programozási feladatok standard C-ben

Megoldott programozási feladatok standard C-ben Megoldott programozási feladatok standard C-ben MÁRTON Gyöngyvér Sapientia Erdélyi Magyar Tudományegyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro Tartalomjegyzék

Részletesebben

Bevezetés a programozásba Előadás: A const

Bevezetés a programozásba Előadás: A const Bevezetés a programozásba 2 6. Előadás: A const ISMÉTLÉS Interface - Implementation struct Particle { int x,y; unsigned char r,g,b; void rajzol(); }; }; void Particle::rajzol() { gout

Részletesebben