Rendszer és Szoftvertechnológia Tanszék

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

Programozás I. Szelekciók: egy- és kétágú szelekció
Kifejezések 2+3 Egy egyszerű kifejezés… © Pasztuhov Dániel, www.programozas-oktatas.hu.
LEgyméretű tömbök, vektorok Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./0. lVektorok definiálása lVektorok definiálása kezdőértékekkel.
LFüggvények Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 20./0. lFüggvények deklarációja és prototípusa lA függvénydefiníció lHivatkozás.
2009 Bevezetés a programozásba Krankovits Melinda.
JavaScript.
© Kozsik Tamás Tömbök, kollekciók és egyéb alaposztályok.
Dinamikus tömbök.
Sztringek.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
Bevezetés a Java programozásba
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
1 Programozás alapjai GEIAL312B (ANSI C) BSc (Bachelor of Science) / Alap képzés 2005/2006. őszi félév Miskolci Egyetem Általános Informatikai Tanszék.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
2. Gyakorlat Követelmények / „C” ismétlés
Függvények, mutatók Csernoch Mária.
C A C nyelv utasításai.
Mutatók, tömbök, függvények
Borland C/C++ mintapéldák
Borland C/C++ mintapéldák függvényekre. 1. példa Írjunk olyan függvényt amely egy számot kiirat.
Programozás I. Horváth Ernő.
LDinamikus tömbök, kétdimenziós tömbök Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 21./0. lVektorok létrehozása futásidőben, dinamikusan.
1 Programozás alapjai GEIAL312B (ANSI C) BSc (Bachelor of Science) / Alap képzés 2005/2006. őszi félév Miskolci Egyetem Általános Informatikai Tanszék.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Programozás I. Ciklusok
Programozás I Függvények általános jellemzői
Programozás I. Adatállományok dr Póder Margit f. docens Rendszer és Szoftvertechnológia Tanszék.
Rendszer és Szoftvertechnológia Tanszék
dr Póder Margit f. docens Rendszer- és Szoftvertechnológia Tanszék
Vizuális és web programozás II.
Excel Hivatkozások, függvények használata
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
P ROGRAMOZÁS I/O műveletek. S YSTEM.C ONSOLE A programjainknak fontos része a felhasználóval való kommunikáció. Adatokat kell kérni tőle, vagy közölnünk.
szakmérnök hallgatók számára
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
A Pascal programozási nyelv alapjai
A Pascal programozási nyelv alapjai
Operátorok Értékadások
Készítette: Csíki Gyula
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Egy első generációs gép (az IAS) felépítése
Objektum orientált programozás 3. Függvények Nagy Szilvia.
Objektum orientált programozás
Objektum orientált programozás
ACCESS Lekérdezések, űrlapok, jelentések
Táblázatkezelés KÉPLETEK.
Fontos tudnivalók A MATLAB egy fajta objektummal dolgozik (Mátrix)
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
C Programozási alapok.
Algoritmizálás, adatmodellezés
Típuskonverzió a C++ nyelvben
A 2. géptermi beszámoló VBA anyagának összefoglalása
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
Programtervezés, programozás I. 2.5 tömbök,stringek
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
Informatikai gyakorlatok 11. évfolyam
Kifejezések C#-ban.
Programozási alapismeretek
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Változók.
A struct, az union és az enum típus
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Könyvtári függvények I. Input / output kezelés függvényei
Konverziós operátorok
Típusok, változók, konstansok
Előadás másolata:

Rendszer és Szoftvertechnológia Tanszék Programozás I. 1.4, 1.5, 1.6, 1.7 Rendszer és Szoftvertechnológia Tanszék

1.4. Formázott adatbevitel és kivitel Áttekintés: A változók kezdeti értékadással, értékadással, és/vagy adatbeviteli művelet során kaphatnak értéket. A printf függvényt üzenetek, illetve változókban tárolt értékek képernyőn való formázott megjelenítéséhez használjuk. A C++ lehetővé teszi különleges karakterek használatát a printf függvénnyel, hogy tabulátor vagy új sor karaktert állítsunk elő, vagy akár hangot adjunk ki a számítógép beépített hangszórójából. A scanf függvény a szabványos beviteli eszközről olvas be adatokat. printf és scanf: könyvtári függvények, prototípus az STDIO.H állományban.

A printf és a scanf függvények segítségével megadott formátum szerint lehet kiírni ill. beolvasni alap típusú adatokat és sztringeket. 1.4.1. mintaprogram #include <stdio.h> #include <conio.h> void main (void) { //kedvenc számom clrscr (); //képernyő törlés int szam; //az egész típusú, szam nevű változó deklarálása printf ("Add meg a kedvenc számodat (1-999) !"); //Tájékoztató szöveg kiírása a képernyőre scanf ("%d", &szam); //egy szám beolvasása a billentyűzetről, //a kapott érték a szam nevű változóba kerül printf ("A kedvenc számod: %d", szam); //a kedvenc szám kiírása a képernyőre getch (); //billentyű leütésére vár }

A printf függvény printf (formátumstring, változólista); A formátumstring: általában string konstans: normál karaktersorozatok speciális konverziókat előíró karakterek: az argumentumok értelmezésének módja, a megjelenítés formája. A konverziós előírás teljes formája hat részre osztható, ebből egyes részek elhagyhatók: %- 1 2 . 4 l f % jel _____________| jelző _ ______________| minimális mezőszélesség__| pontosság _______________| méretmódosító _____________| konverziós betű ______________|

1.4.2. mintaprogram -részlet: egész számok formázott kiírása int i=1342, j=-8769; printf ("\n%d%d",i,j); printf("\ni=%5d j=%8d",i,j); -------------------------------------------------------- 1342 –8769 i= 1342 j= -8769

1.4.3. mintaprogram -részlet: lebegőpontos számok formázott kiírása float a=12.1234567,b=0.00034567; printf("\n1. a=%10.2f",a); printf("\n2. a=%15.8f",a); printf("\n3. a=%10.2e",a); printf("\n4. b=%10.5f",b); printf("\n5. b=%15.7f",b); printf("\n6. b=%10.2e",b); ---------------------------------------- 1. a= 12.12 2. a= 12.12345670 3. a= 1.21e+01 4. b= 0.00035 5. b= 0.0003457 6. b= 3.46e-04

Különleges kimeneti karakterek használata 1.4.1. táblázat: Escape szekvenciák Escape szekvencia Decimális kód jelentés \a 7 hangjelzés \b 8 BckSpace \n 10 LinrFeed ………….. (nemgrafikus karakterek)

A scanf függvény A scanf függvény formázott adatbevitelt valósít meg: a szabványos beviteli eszközről olvas be adatokat, és az esetek többségében a printf konverziók fordítottját hajtja végre. Hívásának általános formája: scanf (formátumstring, változó_címlista);   Az argumentumlista memóriacímeket tartalmaz, ahová a beolvasott elemeket el kell helyezni. Mint az 1.4.1. mintaprogramban láthatjuk, egy változónak megfelelő memóriacímet a & operátorral jelölünk ki. scanf ("%d",&szam);

Túlcsordulási hibák adat bevitelnél Futtassuk például az 1.4.1. mintaprogramot. Gépeljük be az 50000 számot: - túlcsordulási hiba keletkezik. Típuseltérési hibák adat bevitelnél Ha a program egy adott típusú (pl. int) értéket vár, a felhasználó pedig más típusú (pl. char) értékeket visz be: hiba keletkezik.

Ellenőrző kérdések Mire szolgál a formátumstring a printf és a scanf függvényeknél ? Az argumentumlistában szerepelhetnek-e konstansok ? Mi a hatása a printf függvény formátum-stringjében elhelyezett \n escape szekvenciának ? Adjon meg három escape szekvenciát, melyet a printf utasítás formátumstringjében gyakran használhatunk. A printf függvény hívásának általános formája. A printf függvény formátum-stringje milyen karaktercsoportokból áll ? Mit határoz meg a printf függvény formátum-stringjében megadható konverziós előírás? Írjon fel néhány példát. A printf függvény formátum-stringjében megadható konverziós előírás hat részre osztható. Melyek ezek és mi a szerpük ? Mi történik, ha a scanf utasításban az argumentumlista elemeinél a változónevek elé nem tesszük ki a & operátort ? Mely esetekben lép fel túlcsordulási hiba adat bevitelnél ?

Mi a hiba az alábbi printf függvényhívásban ? float a=12.33, b=0.22; printf (”\na:%d”, a, ”b:”, b);

Egyszerű műveletek elsajátítása  Áttekintés: Matematikai műveletek végzésére a programjainkban aritmetikai műveleti jeleket használunk. A megfelelő sorrendben történő műveletvégzéshez a fordító precedenciát (elsőbbségi osztályt) rendel hozzá az egyes műveleti jelekhez. Zárójelek használatával a kifejezésekben irányíthatjuk azt a sorrendet, mellyel a program végrehajtja az egyes műveleteket. C++ programokban az inkrementálás (++) és a dekrementálás (--) műveleti jelet használhatjuk az egyes értékek változókhoz való hozzáadására, illetve kivonására.

Matematikai alapműveletek 1.5.1. táblázat: a C++ matematikai alapműveletei Műveleti jel (operátor) Példa * fizetendo = egysegar * db; / atlag = bevetel / db; % maradékos osztás !!! maradek = egesz / oszto; + bevetel = nettoar + afaertek; - profit = bevetel - koltseg

1.5.1 mintapélda: egyszerű aritmetikai alapműveletek #include <stdio.h> #include <conio.h> void main (void) { //Egyszerű aritmetikai műveletek clrscr; printf ("\n4+3=%d",4+3); printf ("\n15-6=%d",15-6); printf ("\n1.1234*2=%f",1.1234*2); printf ("\n16/5=%d",16/5); getch (); }

1.5.2. mintapélda: aritmetikai alapműveletek szemléltetése #include <stdio.h> #include <conio.h> void main (void) { // ÁFA-s számla egy tételének kezelése // a változók deklarációja: float nettoertek = 560; //egy tétel nettó értéke float forgalmi_ado = 0.25; // ÁFA szorzó float fizetett_osszeg = 1000; //a vevo altal fizetett osszeg float ado, visszajar, osszesen; //ado , vevonek visszajar //szamla osszesen értéke clrscr; //számítások: ado = nettoertek * forgalmi_ado; osszesen = nettoertek + ado; visszajar = fizetett_osszeg - osszesen; //az eredmények megjelenítése printf("\nA fizetendő összeg:%10.2f Ft",osszesen); printf("\nVisszajár: %10.2f Ft",visszajar); printf("\nA számla érték %10.2f Ft ÁFA-t tartalmaz",ado); getch (); }

Változó értékének növelése 1-gyel darab = darab + 1; A C++ biztosít egy inkrementálási műveleti jelet, a dupla plusz jelet (++): db++; A dekrementálás műveleti jele a C++-ban A dupla mínusz jel (--) a dekrementálás műveleti jele, ami 1-gyel csökkenti a változó értékét. darab = darab -1; darab--;

A prefix (előtag) és a postfix (utótag) inkrementálás műveleti jelek ++valtozo; valtozo++; A C++ ezt a két műveleti jelet különbözőképpen kezeli ! Példa: kovetkezo_sor = sor++; //postfix inkr. Az előző utasítással megegyező eredményt ad a következő két utasítássor végrehajtása: kovetkezo_sor = sor; sor = sor + 1; Most vizsgáljuk meg a következő utasítást: kovetkezo_sor = ++sor; //prefix inkr.

Feladat ! int db = 0; db++; printf ("\ndb: %d",db--); //kerülendő !!! Mi jelenik meg a képernyőn az alábbi kis program-rész lefutása után ? Mennyi lesz db változóban letárolt érték az alábbi program-részlet lefutása után: int db = 0; db++; printf ("\ndb: %d",db--); //kerülendő !!!

Az aritmetikai műveletek precedenciaszabálya Példa: eredmeny = 1 + 2 * 3; eredmeny = 1 + 2 * 3; eredmeny = 1 + 2 * 3; = 3 * 3; = 1 + 6; = 9; = 7; A fordító minden műveleti jelhez precedencia (elsőbbségi) osztályt rendel hozzá, mely meghatározza, hogy milyen sorrendben kell a műveleteket elvégezni. A rendszer a magasabb precedenciájú műveleteket végzi el előbb, mint az alacsonyabb precedenciájú műveleteket.

Precedencia-táblázat, balról-jobbra szabály 1. precedencia-osztály: ++ -- 2. precedencia-osztály: * / % 3. precedencia-osztály: + - Az azonos precedencia-osztályba tartozó aritmetikai műveletek között a sorrendet a balról-jobbra szabály határozza meg. Példa: eredmeny = 12 / 3 * 4; A műveletek sorrendjének irányítása zárójelekkel koltseg = (darab1 + darab2) * egysegar;

Aritmetikai műveletek túlcsordulása 1.5.4. mintapélda, aritmetikai művelet túlcsordulása #include <stdio.h> #include <conio.h> void main (void) { //Túlcsordulási hiba két egész szám szorzásakor int eredmeny; clrscr (); eredmeny = 200 * 300; printf ("\n200*300=%d",eredmeny); getch (); } 200*300=-5536

Idézet … Lehet, hogy a kemény munka nem azonos a tehetséggel, de az biztos, hogy a legjobb helyettesítője. James A. Garfield

1.6. Operátorok és kifejezések A feladatok megoldásához szükséges, elméleti zh-n is számonkérésre kerül.

1.7. Könyvtári függvények A függvény a C program olyan névvel ellátott egysége, amely a program más részeiből hívható, amikor a függvényben definiált, paraméterezhető tevékenységsorozatra szükség van. Példa: #include <stdio.h> void main (void) { int n = 2; printf ("\nn=%d, a hatványérték: %lf", ++n, pow (2, n)); } A fordító az alábbi hibajelzést adja: Function pow should have a prototype.

Matematikai rutinok: prototípus a math.h vagy a float.h fileban. int abs(int x); double fabs(double x); long double fabsl(long double (x)); long int labs(long int x); /* abs example */ #include <stdio.h> #include <math.h> void main(void) { int number = -1234; printf("number: %d absolute value: %d\n", number, abs(number)); }

A függvények visszatérési típusa A visszatérési típus meghatározza a függvényérték típusát, amely tetszőleges skalár (char, short, int, long, float, double, signed, unsigned, felsorolási vagy mutató) vagy strukturált (struct, union) lehet. Alapértelmezés szerint: int típusú lesz a függvényérték. A void típus felhasználásával olyan függvények készíthetők, amelyek nem adnak vissza értéket.

Matematikai rutinok: (prototípus a math.h fileban. ) int abs(int x); double fabs(double x); long double fabsl(long double (x)); long int labs(long int x); /* abs example */ #include <stdio.h> #include <math.h> void main(void) { int number = -1234; printf("number: %d absolute value: %d\n", number, abs(number)); }

Matematikai rutinok: (prototípus a math.h fileban. ) int abs(int x); double pow(double x, double y); double sqrt(double x); Szögfüggvények: x értékét radiánban kell megadni ! double cos(double x); double sin(double x); double tan(double x); Miért fontos ismerni a visszatérési érték típusát ?

Adatfolyam - kezelő függvények és makrók : prototípus az stdio Adatfolyam - kezelő függvények és makrók : prototípus az stdio.h fileban. int printf (const char *format [, argument, ...]); int scanf (const char *format [, address, ...]); int fflush(FILE *stream); Az fflush függvény kiűríti a puffert, ha pufferelt adatátvitel történt. Példa: scanf ("%d", &darabszam); fflush (stdin);

Konzol és port input/output: void clrscr(void); void clreol (void); void gotoxy (int x, int y); int wherex (void); int wherey (void); Szöveges ablak törlése Sor törlése szöveges ablakban a cursor pozíciótól a sor végéig a cursor mozgatása nélkül. A gotoxy a megadott x,y pozícióba mozgatja a kurzort az aktuális szöveges ablakban. Ha a koordináták nem valósak, a függvényhívás hatástalan marad. (pl. gotoxy (40,30)) wherex a kurzor vízszintes pozícióját adja vissza (1...80) az aktuális szöveges ablakban, wherey pedig a függőleges pozíciót (1..25 vagy 1..43 vagy 1..50).

Konzol és port input/output: int getch(void); int getche(void); int putch(int ch); Mindkét függvény egyetlen karaktert olvas közvetlenül a billentyűzetről. Getch nem írja a képernyőre a kapott karaktert, getche viszont a szöveges ablakba írja azt vissza a direkt videot vagy a BIOS-t használva.Visszatérési érték: mindkét függvénynél a billentyűzetről beolvasott karakter kódja. A putch függvény az aktuális szöveges ablakba küldi a ch karaktert.Visszatérési érték: siker esetén a kiírt karakter, egyébként EOF.

Példa a getche használatára a Help-ből /* getche example */ #include <stdio.h> #include <conio.h> void main(void) { char ch; printf("Input a character:"); ch = getche(); printf("\nYou input a '%c'\n", ch); getch (); }

Véletlen szám generálás int random(int num); void randomize(void); random visszatérési értéke egy véletlenszám 0 és (num-1) között. randomize véletlenszerűen inicializálja a véletlenszám generátort. A random meghívását megelőzően kell aktivizálni egyszer a programban, így minden program futtatáskor véletlen szám keletkezik.

Véletlen szám generálás /* random example */ #include <stdlib.h> #include <stdio.h> #include <conio.h> /* prints a random number in the range 0 to 99 */ void main(void) { randomize(); printf("Random number in the 0-99 range: %d\n", random (100)); getch (); }