Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Bemutatkozás. Bemutatkozás. Bemutatkozás. Bemutatkozás. 1. előadás. A tárgy címe: A programozás alapjai 1

Hasonló dokumentumok
A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

C programozás. 1 óra Bevezetés

Adatszerkezetek 1. Dr. Iványi Péter

Bevezetés a programozásba

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

Programzás I gyakorlat

Adatszerkezetek 1. előadás

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

A programozás alapjai 1 Rekurzió

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)

Adatbázis rendszerek Gy: Algoritmusok C-ben

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

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

Számítógép architektúra

Programozási nyelvek (ADA)

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

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

A TANTÁRGY ADATLAPJA

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

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

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Algoritmusok és adatszerkezetek II.

Mindenki abból a három tantárgyból tesz szigorlatot, amelyet hallgatott.

Elemi adatszerkezetek

Programozás I gyakorlat

Bevezetés az informatikába Tételsor és minta zárthelyi dolgozat 2014/2015 I. félév

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

Adminisztrációs feladatok Strukturált programok A C programnyelv elemei

Aritmetikai kifejezések lengyelformára hozása

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

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

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7.

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Adatbázis és szoftverfejlesztés elmélet

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

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

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

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

Java II. I A Java programozási nyelv alapelemei

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

SZOFTVERFEJLESZTÉS. Földtudományi mérnöki mesterszak / Geoinformatikus-mérnöki szakirány. 2017/18 II. félév. A kurzus ebben a félévben nem indult

Kifejezések. A programozás alapjai előadás. Operátorok. Kifejezések. Operátorok precedenciája. Operátorok precedenciája

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.

Bevezetés a programozásba. 8. Előadás: Függvények 2.

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Bevezetés az informatikába

Algoritmusok, adatszerkezetek, objektumok

Programozás. Bevezetés. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Programozási nyelvek 6. előadás

Vezérlési szerkezetek

Adatszerkezetek 7a. Dr. IványiPéter

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1

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

Java II. I A Java programozási nyelv alapelemei

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus adatszerkezetek. Dinamikus adatszerkezetek. Önhivatkozó struktúrák. Önhivatkozó struktúrák

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

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

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

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. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

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

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

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

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

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

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ási segédlet

Informatika tagozat osztályozóvizsga követelményei

Programozás I gyakorlat

Adatstruktúrák, algoritmusok, objektumok

Irányítástechnika Elıadás. PLC-k programozása

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

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

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

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Programozás alapjai (ANSI C)

Objektumorientált Programozás III.

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

Tartalomjegyzék Algoritmusok - pszeudókód

Adatbázis rendszerek. dr. Siki Zoltán

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

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

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Bevezetés a C++ programozási nyelvbe

Programozás I gyakorlat

TANTÁRGYI ADATLAP. 2.7 A tantárgy jellege DI

A TANTÁRGY ADATLAPJA

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

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

Labor gyakorlat Mikrovezérlők

Java programozási nyelv

Az Informatika Elméleti Alapjai. Információ-feldolgozó paradigmák A számolás korai segédeszközei

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Átírás:

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1 Ajánlott irodalom A programozás fogalma Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu 2012. február 7. A tárgy címe: A tárgy adminisztratív oldala: www.hit.bme.hu/~vitez/progalap1/2012tavasz/ Informatika 2 Digitális technika 2 Informatika 1 A programozás alapjai 2 A számítógép részegységei, alacsony- és magasszintű programnyelvek, az imperatív programozási paradigma, adattípus fogalma, változók Digitális technika 1 A programozás alapjai 1 A számítástudomány alapjai 1

A C programozási nyelv, kalkuláció verem alkalmazásával, RPN (Reverse Polish Notation), vezérlési szerkezetek (elöl- és hátultesztelő ciklusszervezés, igazságértékre ill. egész típusokra alapozott választásos vezérlésszervezés) A struktúrált programozás alapjai, top-down és bottom-up programtervezés, programszegmensek, név-, érték-, referencia szerinti paraméterátadás Összetett típusok: halmazok, vektorok, konglomerátumok, szekvenciális és véletlen elérésű adatállományok Klasszikus vektoralgoritmusok: eldöntés, keresés, kiválasztás, leválogatás, rendezés, összefésülés, rekurzió: az elegancia veszélyei, a rekurzió megvalósításának processzor oldali támogatása Dinamikus adatszerkezetek: listák, fák, listák különleges alkalmazásai: sorok, prioritásos sorok, verem, fák tipikus alkalmazásai: K-ágú fák: bináris rendezőfa, bejárás, kiegyensúlyozás 2

Az eseményvezérelt (állapotváltozóra alapozott) program modell, adatfeldolgozás, visszalépéses algoritmus, tipikus feladatok Miből lesz a jegy? Jelenlét Számonkérések Házi feladat Jelenlét Számonkérések Házi feladat Laboratóriumban Tesztek az óra elején Zárthelyi dolgozat Jelenlét Számonkérések Házi feladat A követelmények hivatalos változata: www.hit.bme.hu/~vitez/progalap1/2012tavasz/ Megismerését a második gyakorlaton aláírással igazolni kell 3

Ajánlott irodalom Ajánlott irodalom Benkő Tiborné Dr. Poppe András Együtt könnyebb a programozás C N. Wirth algoritmusok + adatstruktúrák = programok Ajánlott irodalom Ajánlott irodalom W. Amsbury Data Structures from Arrays to Priority Queues Thomas H. Cormen Charles E. Leiserson Ronald L. Rivest Clifford Stein Új algoritmusok A programozás fogalma A programozás fogalma Programozás: előírni a számítógépnek, hogy mit csináljon Programozási paradigmák: azok az elvek, amelyek mentén a problémát megközelítjük 4

A programozás fogalma Paradigmák: A programozás fogalma Ebben a félévben csak imperatív programozás Imperatív -struktúrált - funkcionális Deklaratív -logikai Lépésről lépésre előírjuk, hogy mit kell tenni Mint egy recept: Végy 20 dkg lisztet Keverj bele 3 tojás sárgáját Verd habosra a fehérjéket Óvatosan keverd össze 1 evőkanál cukorral Kóstold meg Add a malacoknak A programozás fogalma Amit minden alkalommal tenni fogunk Megfogalmazzuk a feladatot Adaszerkezetet választunk a való világ modellezéséhez Algoritmust keresünk a feladat megoldásához Kódoljuk az algoritmust Igazából kimaradt egy lépés: Programozási nyelvet választunk az algoritmus hatékony támogatásához Ebben a félévben mindent C programozási nyelven kódolunk Az adat Adat minden, amit a külvilágból számítógépünkben leképezve tárolunk. Az adatnak két alapvető tulajdonsága van: értéke típusa Az értéket kódoltan ábrázoljuk (hacsak nem egy számról van szó). számunkra azt jelenti, hogy mi is az, amit számítógépünkben adatként tárolunk. Ez csak nekünk bír jelentőséggel, a számítógép az adatokat nem értelmezi! a számítógép számára is fontos információt hordoz, azonban egészen más okokból. A fordító programnak tudnia kell, hogy az adott adatnak mekkora helyet kell fenntartani, és milyen kódolással ábrázoljuk. Ezt nevezzük az adat belső ábrázolásának. 5

A felhasználó számára ez a belső kód érthetetlen volna, de nem is kell ismernie. A ki- és beviteli utasítások számára egy másik ábrázolásra van szükségünk, hogy az adatot az ember számára megszokott alakban írhassuk, olvashassuk. Ezt nevezzük az adat külső ábrázolásának. A típus további jelentése a fordítóprogram számára, hogy az illető adattal milyen műveleteket szabad végezni. 2 + 2 megengedett piros * 17 értelmetlen Illetve, ilyen típusú adat milyen művelet eredményeképpen keletkezik. 9 > 3 igazságérték típusú A fordítóprogram önkényesen nem sorolhatja be az általunk használt adatokat, hanem a program részeként deklarálnunk kell minden egyes adatunk típusát. Deklarálnunk kell a programban használt változók függvények típusát Nem kell deklarálni a program szövegébe közvetlenül beírt értékek típusát, mert azokat a fordítóprogram alakjukról felismeri. Típuson tehát azt értjük, hogy mit ábrázolunk milyen belső ábrázolással milyen külső ábrázolással milyen műveleteket végezhetünk vele Változók A változó egy adat tárolására szolgáló memória rekesz, melyre azonosítójával (nevének leírásával) hivatkozhatunk. Meghatározott típusa van. Kifejezésben szerepeltethető. Értéke frissíthető (felülírható az értékadásnak nevezett művelettel) a = 5 ; Az a nevű változó tárolt értéke most 5 lett. 6

Változók A változó egy adat tárolására szolgáló memória rekesz, melyre azonosítójával (nevének leírásával) hivatkozhatunk. Meghatározott típusa van. Kifejezésben szerepeltethető. Értéke frissíthető (felülírható az értékadásnak nevezett művelettel) a = 5 ; b = a - 2 ; A b nevű változó tárolt értéke most 3 lett. Változók A változó egy adat tárolására szolgáló memória rekesz, melyre azonosítójával (nevének leírásával) hivatkozhatunk. Meghatározott típusa van. Kifejezésben szerepeltethető. Értéke frissíthető (felülírható az értékadásnak nevezett művelettel) a = 5 ; b = a - 2 ; a = a + 4 ; Az a nevű változó tárolt értéke most 9 lett. Operandusok Olyan adatok, amelyek egy művelet eredménye képpen jönnek létre. Azok az adatok, amelyeken a műveletet végre kell hajtani. Operandusok Literál Operátorok Operátorok Azok a műveleti jelek, amelyek kijelölik, hogy az adatokon mit kell végrehajtani. A program szövegébe közvetlenül beírt adat 2.9 + a 7

Operandusok Literál Azonosító Operátorok Operandusok Literál Azonosító Kifejezés Operátorok Változó vagy függvény értékére történő hivatkozás 2.9 + a vagy 4 + sin(0.5) Egy megelőző részművelet eredményére történő hivatkozás 2.9 + 3.5 * a Programozási nyelv Matematikai formalizmus, amit számítógéppel értelmezni tudunk Hasonlít a beszélt nyelvhez, hogy könnyen tudjunk fogalmazni A C nyelv eredete Dennis M. Ritchie, Bell Laboaratories, 1972 PDP-11 re Rendszerprogramozási nyelv A UNIX nagy részét is ebben írták. Szigorú nyelvtan, szűk szókincs A C nyelv főbb tulajdonságai sok, hatékony operátor szabványos könyvtári függvények cím-aritmetika pointerekkel "mellékhatások" gyors kód külön fordítás szabványos jól hordozható tömör szintaktika nehezen olvasható, könnyű hibát véteni, nehéz megtalálni előfeldolgozója (preprocesszor) is van Az első program Dennis Ritchie-től #include <stdio.h> main() { printf( Hello World\n ); return 0; } 8

Hogy ne csak szöveg legyen... #include <stdio.h> main() { int a; a = 4; printf( a+1 = %d\n,a+1); return 0; } Hogy ne tudjuk előre a választ... #include <stdio.h> main() { int a; scanf( %d,&a); printf( 3a = %d\n,3*a); return 0; } 9