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



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

A C programozási nyelv I. Bevezetés

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

A C programozási nyelv I. Bevezetés

C programozás. 1 óra Bevezetés

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Programozás C és C++ -ban

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

Programozás C++ -ban 2007/1

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

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

Java II. I A Java programozási nyelv alapelemei

Programozás I. gyakorlat

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

Szoftvertechnológia alapjai Java előadások

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

Programozás. Programozás villamosmérnököknek

Programozás I gyakorlat

1. Alapok. Programozás II

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

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

Programzás I gyakorlat

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

Pénzügyi algoritmusok

Programozás C és C++ -ban

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

A C# programozási nyelv alapjai

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

Típusok és konstansok

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

Programozás I gyakorlat

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

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

Bevezetés a C++ programozási nyelvbe

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

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

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

Bevezetés a C++ programozási nyelvbe

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.

Információs Technológia

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

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

Java II. I A Java programozási nyelv alapelemei

Informatika terméktervezőknek

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

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

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

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

A C# PROGRAMOZÁSI NYELV

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

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

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.

C programozási nyelv

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

Programozás C++ -ban

12. gyakorlat Enum; Tárolási osztályok Preprocesszor utasítások; Moduláris programozás

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. Függvények. Függvények(2)

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

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

Forráskód formázási szabályok

Elôszó a magyar kiadáshoz A Kiadó Elôszó

Függvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.

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

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

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

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

Programozási nyelvek JAVA EA+GY 1. gyakolat

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

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

C programnyelv 1. Kedves Kollegina, Kolléga!

Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1

Szkriptnyelvek II. Perl programok

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

Felhasználó által definiált adattípus

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

Imperatív és procedurális programozás a Javában

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

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

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

Készítette: Nagy Tibor István

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

5. gyakorlat. Konstansok Tömbök Stringek

Programozás I. gyakorlat

Feladat: Hogyan tudunk létrehozni egy olyan vector nevű tömb típust, amely egy háromdimenziós térbeli vektort reprezentál?

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

Programozás alapjai II. (1. ea) C++

Programozás alapjai II. (1. ea) C++

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

Programozás alapjai 8.Gy: Program struktúra

Vezérlési szerkezetek. Szelekció Ciklusok

C programozási nyelv. Dr. Schuster György szeptember 18.

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.

Alprogramok, paraméterátadás

3. Gyakorlat Ismerkedés a Java nyelvvel

7. gyakorlat. Fájlkezelés IO haladó Függvények haladó

3 A C programozási nyelv szintaktikai egységei

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

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

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

Átírás:

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 1989, ANSI X3.159-1989 a végleges szabvány Az addigi programok lefordíthatóak legyenek A C forráskód hordozható legyen Nem hordozható, rendszerfüggő részek C nyelv szellemisége" 3

C nyelv 4

C nyelv szellemisége Kernigan és Ritchie A C nyelv azt a filozófiát követi, hogy a programozó tudja mit csinál, csak explicit módon fogalmazza meg mit akar. Kicsi, de egyszerű nyelv Egy dolgot csak egyféle képpen lehessen végrehajtani 5

C++ Bjarne Stroustrup, Bell Laboratórium Első implementáció, 1983 Ötletek: Simula67: osztályok, származtatott osztályok Algol68: operátor kiterjesztés Ada: templétek Egyéb Minden C program lefordítható C++-ban, de nem biztos hogy ugyanaz a tárgykód lesz. 6

C nyelv ISO 9899:1999 melyet C99-es szabványnak is nevezünk Változók bárhol definiálhatók Új adattípusok, pl. long long int, boolean, complex Változó hosszúságú tömbök Egy soros megjegyzés bevezetése Új könyvtári függvények Makrók javítása Bizonyos értelemben szigorúbb is lett 7

Alacsony szintű nyelv Típusok C nyelv jellemzői Karakterek, egész és lebegőpontos számok különböző formái Származtatott típusok Mutatók, címaritmetika Tartalmazza a struktúrális programozás vezérlőszerkezeteit 8

C nyelv jellemzői Függvények visszatérési értéke, valamelyik típus Bármely függvény rekurzíven hívható Függvénydefiníciók nem ágyazhatók egymásba Explicit memória kezelés, nincs garbage collection Adatbevitel és kivitel nem a nyelv része hanem standard könyvtár tartalmazza A programot le kell fordítani!!! 9

Alapismeretek Egy program készítése, mely kinyomtatja: Hello World! 10

Hello World 1. #include <stdio.h> void main() { printf( Hello World!\n ); } 11

Fordítás programozó szövegszerkesztő forrás modul hello.c 12

Fordítás Előfeldolgozó program Elvégzi a szöveghelyettesítéseket Kifejti a makrókat forrás modul forrás könyvtár előfeldolgozó program hello (belső reprezentáció) előfeldolgozó forrás 13

Fordító (compiler) Fordítás Elemzi a magas szintű nyelv utasításait (gépfüggetlen) Kódot generál (függ a processzor utasításaitól) előfeldolgozó forrás fordító tárgy kód hello.o 14

Fordítás Összefűző-szerkesztő program Feloldja a kereszthivatkozásokat hello.o tárgy kód összefűzőszerkesztő program futtatható program libc.lib libc.dll... modul könyvtár hello.exe 15

C program Bármennyi SPACE karakter vagy üres sor lehet a programban A C program függvényekből és változókból áll A függvény utasításokat tartalmaz main függvény speciális a program futása mindig itt kezdődik!!! Minden programban kell legyen main függvény 16

Üres program main() { } Nem csinál semmit és csak az alap utasításokat lehet használni. Kapcsos zárójelek közé kell tenni egy utasításblokkot. 17

Argumentumok Függvények közötti kommunikáció a hívó függvény adatokat ad át a hívott függvénynek Adatok argumentumok A függvény neve után zárójelek között szerepel Nincs argumentum ha üres, például main() 18

Függvénykönyvtár Fordítóprogramot értesítjük, hogy mely függvényekre lesz szükségünk: #include <stdio.h> stdio.h A file definiálja az egyes bemeneti és kimeneti függvényeket..h kiterjesztés (head=fej), fejléc vagy header file 19

Utasítások A függvény utasításait a kapcsos zárójelek közé kell tenni. Például: printf( Hello World!\n ); A függvényt a nevével és az azt követő argumentum listával kell meghívni. printf : függvény neve Hello World!\n : argumentum Pontosvesszővel zárjuk az utasításokat, függvényhívásokat!!! 20

Szöveg Karakterlánc, szöveg, sztring, string Idézőjelek közötti karakterek Állandó, konstans Nem módosítható közvetlenül Speciális karakter: \n : új sor karakter, egy sort emel printf csak azt nyomtatja amit megadtunk 21

Hello World 2. #include <stdio.h> void main() { printf( Hello ); printf( World! ); printf( \n ); } 22

Mejegyzések, leírások /* ide kerül a megjegyzés */ Bármi tehető a két jel közé. C++ megjegyzés: // Csak egy sornyi megjegyzés Ha lehet ne használjuk még, majd ha C++ -t tanulunk 23

Hello World 3. #include <stdio.h> void main() { /* kiiratás */ printf( Hello ); printf( World! ); printf( \n ); } 24

Változók Adat: Valamely tény vagy fogalom olyan egyezményesen ábrázolt alakja, amely alkalmas arra, hogy emberek vagy automatikus eszközök továbbítsák, értelmezzék vagy feldolgozzák. Információ: Az adat jelentése. Típus: értelmezési tartomány. 25

Adattípusok A memória byte-okra oszlik. A memóriabeli objektumok egy vagy több byteot foglalnak el. Minden byte 8 bitből áll. Az értékeket a bitek mintája határozza meg. A bit minta értelmezése függ az adat típusától. 26

Adattípusok Definíció char int float double Byte 1 2 4 8 Értelmezés Karakter Egész szám Valós szám, egyszeres pontosság Valós szám, kétszeres pontosság 27

Változók MINDEN változó típusát definiálni kell és nem lehet menet közben változtatni!!! típus név ; Név: Karakterek Számok Aláhúzás karakter, _ Kis-és nagybetű különböző!!! Blokk elején, kapcsos zárójel után áll!!! 28

Változók példa void main() { int a; int b, c; a = 1; b = 3; c = a+b; } 29

Beszédes változó nevek void main() { int ho, nap; float testsuly; double fizetes; }... 30

Nem használható nevek asm, auto, break, case, catch, char, class, const, continue, default, do, double, else, enum, extern, float, for, goto, if, inline, int, long, register, return, short, signed, sizeof, static, struct, void, volatile, while,... 31

Rossz példa void main() { int a; a = 1; } int b, c; b = 3; c = a+b; 32

Utasítás blokk void main() { int a; a = 1; { int b, c; b = 3; c = a+b; } } 33

Értékadás Változók értékének beállítása: a = 1; Pontosvesszővel zárjuk le Lehet többet is felsorolni: a = b = 1; 34

short: rövid Minösítő szimbólumok long: hosszú unsigned: előjel nélküli Például: long double : 10 byte-ban van reprezentálva 35

Típusok char signed char unsigned char int long int short int unsigned int unsigned long int 36

Értelmezése tartományok, 32 bit típus char unsigned char int unsigned int long int unsigned long float double long double alsó határ -128 0-32 768 0-2 147 483 648 0 3.4E -38 1.7E -308 1.2E -4932 felső határ +127 255 32 767 65 535 2 147 483 647 4 294 967 295 3.4E + 38 1.7E + 308 1.2E + 4932 37

Változó típusa A változó típusának mindig azt a legkisebb típust választjuk, amelyik az adott feladatot problémamentesen megoldja. int ev = 2008; float testsuly=71.1; double fizetes = 40500.5; 38

Konstansok Karakter: a Egész szám: 231, -123 Oktális: 034 Hexadecimális: 0x1f Long: 134L Lebegőpontos: 0.34, -0.34, 1.5e-2 Egész vagy tört rész elhagyható, de csak az egyik pont vagy e,e elhagyható de csak az egyik Sztring: szoveg 39

Ellenőrzés Mi a különbség? 7 7 7 40

Ellenőrzés, melyik helyes -236-5000 0.0567e-7 5,67 1/3 3,456.83 0. Helyes Helyes Helyes Hibás Hibás Hibás Helyes.15 Helyes 41

Kiíratás még egyszer printf(<formátum>, [argumentumok]); formátum: egy szöveg, formátum karakterekkel A formátum karakterek helyére az argumentumok értékét írja ki Formátum karakterek száma = argumentumok száma!!! Formátum karakter típusa argument típusa Argumentumokat vesszővel választjuk el. 42

Formátum karakterek formátum karakter %d %x %o %f %lf %c %s típus integer hexadecimális szám oktális szám float double karakter sztring 43

Mezőszélesség %nd : n számjegy szélességben írja ki az egész számot %6d 123 %+d : előjelet mindig jelezze %x.yf : hány egész és hány tizedes jegyet írjon ki x : teljes szélesség y : tizedesek száma %8.2 123.45 44

#include <stdio.h> Adattípusok kiíratása 1. void main() { int a; int b, c; a = 1; b = 3; c = a+b; printf( Két szám összege: %d + %d = %d\n, a, b, c); } 45

Adattípusok kiíratása 2. #include <stdio.h> void main() { int a; int b; a = 1; b = 3; printf( Két szám összege: %d + %d = %d\n, a, b, a+b); } 46

Adattípusok kiíratása 3. #include <stdio.h> void main() { printf( Értékek: %d %lf %s\n, 11, 23.45, hello ); } 47

Speciális karakterek Alakja \ \\ \n \r \t \b \0 \10 \x1f Jelentése idézőjel backslash új sor carriage return tabulátor visszatörlés nullás karakter oktális szám hexadecimális szám 48

Példa1. Hogyan nyomtassuk ki: > Nevem Peter >Hello #include <stdio.h> void main() { printf( Nevem \ Peter\ \nhello ); } 49

Példa2. Hogyan nyomtassuk ki: > c:\windows\win32 > #include <stdio.h> void main() { printf( c:\\windows\\win32\n ); } 50

Beolvasás scanf(<formátum>, [változók címei]); A bemenetről karaktereket olvas be és a formátumban megadott specifikáció szerint értelmezi azokat, majd az eredményt eltárolja a változókban. Például: scanf( %f, &szam); 51

Változók címe A beolvasott értékeket a változókban akarjuk tárolni, így a változó címét kell megadni. A változó címét a változó neve elé írt & karakter segítségével tudjuk előállítani. 52

Példa int x, y, z; scanf("%d,%d,%d", &x, &y, &z); Beolvasás: 2,3,4 <ENTER> 53

Kezdjék átolvasni a fejezeteket Kernighan-Ritchie: A C programozási nyelv 1.1. 1.3. Alfejezetek 3. Fejezet Benkő Tiborné: Programozzunk C nyelven! 3.1. 3.2. Alfejezetek 3.5. Alfejezet 54

Ellenőrző kérdések Mit jelent a változók deklarálása? Mit ad meg a változó típusa? Mire ügyeljünk a C nyelvben használt változók elnevezésénél? Miért nem lehet változónévként használni az alábbi szavakat: break, void. Milyen konstansokat használhatunk a C nyelvben? Hogyan lehet ezeket deklarálni? Miben különbözik a 'w' és a "w" konstans? Az A betű (nagy A) kódja 65. Azonosak-e az alábbi konstansok: 65, 'A', 0101, 0x41 Írja fel az alábbi számokat lebegőpontos konstansként: 0,157-1 56000 65,897 Milyen típusú konstansokat használunk a C nyelvben? Írjon fel mindegyikre egyegy példát. Az alábbi felsorolásban melyek karakter konstansok: 'a', b, "c", 89, "89", '8' Mi a stringliterál? Írjon fel egy példát. 55

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. 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? 56