Programozás alapjai (ANSI C)

Hasonló dokumentumok
Programozás alapjai 1.Gy: Algoritmizálás P R O

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Bevezetés. Dr. Iványi Péter

Programozási alapismeretek 1. előadás

Bevezetés az informatikába

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Algoritmusok. Dr. Iványi Péter

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

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

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

Programozási alapismeretek. 1. előadás. A problémamegoldás lépései. A programkészítés folyamata. Az algoritmus fogalma. Nyelvi szintek.

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

Programozási nyelvek 6. előadás

Webprogramozás szakkör

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

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Informatika tanítási módszerek

Az algoritmusok alapelemei

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Algoritmusok, adatszerkezetek, objektumok

Egyszerű programozási tételek

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

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

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.

Adatok ábrázolása, adattípusok

Java programozási nyelv

AZ ALGORITMUS. az eredményt szolgáltatja

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

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

Az informatika kulcsfogalmai

Algoritmus fogalma. Mi az algoritmus? HF: Al Khwarizmi. Egy adott probléma megoldásának leírása elemi lépések sorozatával

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

Programozás alapjai Bevezetés

Szoftver-technológia I.

ALGORITMUSOK, ALGORITMUS-LEÍRÓ ESZKÖZÖK

Programtervezés. Dr. Iványi Péter

A számítógépes feladatok a várt megoldáshoz egyértelmű utalásokat tartalmazzanak.

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

A program valamilyen feladat, probléma megoldására készül, általános szerkezete: INPUT ALGORITMUS OTUPUT

Webprogramozás szakkör

Adatbázis rendszerek Gy: Algoritmusok C-ben

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Bevezetés a programozásba I.

Algoritmusok tervezése

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

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

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

Objektumorientált paradigma és a programfejlesztés

Algoritmikus gondolkodás

A szoftverfejlesztés eszközei

INFORMATIKAI ALAPISMERETEK

Információtartalom vázlata

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

Programozási Módszertan definíciók, stb.

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

Programozási segédlet

INFORMATIKAI ALAPISMERETEK

Algoritmizálás, adatmodellezés 1. előadás

Témakörök. Szoftverfejlesztés: Algoritmizálás: Programozási nyelvek:

OKTATÁSI MINISZTÉRIUM. SZÓBELI VIZSGATÉTELEK A többször módosított 100/1997. (VI. 13.) Korm. rendelet alapján szervezett OKJ szakmai vizsgához

/ o s t a n év

PROGRAMOZÁSMÓDSZERTAN I

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

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

Modell alapú tesztelés mobil környezetben

Algoritmusok. Hogyan csináljam?

Bevezetés a programozásba. 5. Előadás: Tömbök

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

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

Objektumorientált paradigma és programfejlesztés Bevezető

Felvételi tematika INFORMATIKA

C programozás. 1 óra Bevezetés

INFORMATIKA ÉRETTSÉGI VIZSGAKÖVETELMÉNYEK AZ ÉRETTSÉGI VIZSGA RÉSZLETES TEMATIKÁJA

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

Adatszerkezetek I. 1. előadás

Szoftvertervezés és -fejlesztés I.

Python bevezető foglalkozás Python bevezető foglalkozás

Hardver leíró nyelvek (HDL)

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

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

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

S z á m í t ó g é p e s a l a p i s m e r e t e k

Pásztor Attila. Algoritmizálás és programozás az emeltszintű érettségin

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

3 A C programozási nyelv szintaktikai egységei

ELEMI PROGRAMOZÁSI TÉTELEK

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

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

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

Programozási tételek. Dr. Iványi Péter

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

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

A feladat címe, rövid emlékeztetje

Programozás II. előadás

Átírás:

Programozás alapjai (ANSI C) 1. Előadás vázlat A számítógép és programozása Dr. Baksáné dr. Varga Erika adjunktus Miskolci Egyetem, Informatikai Intézet Általános Informatikai Intézeti Tanszék www.iit.uni-miskolc.hu vargae@iit.uni-miskolc.hu 1

A számítógép és programozása Az előadás témakörei: 1. A számítógép komponensei, számábrázolás 2. A számítógép programozása: gépi kódú vs. magasszintű programozás 3. Programozási nyelvek: fejlődése, csoportosítása 4. A programkészítés menete: specifikáció, algoritmizálás, kódolás, tesztelés, dokumentálás 5. Az algoritmus: fogalma, követelményei 6. Algoritmusok leírási módszerei 7. Programozási tételek I. (számlálás, összegzés) 2

1. A számítógép A számítógép: univerzális, digitális, programvezérelt, automata számológép. Neumann-architektúra 3

Komponensei: 1. A számítógép 1) hardver: fizikai alkotóelemek 2) szoftver: a számítógép működéséhez szükséges programok (tárolt program elv) A program: egy feladat megoldására szolgáló, a számítógép számára értelmezhető utasítássorozat. Adatok Program Eredmény 4

2. A számítógép programozása Minden program meghatározott feladatot végez. Ahhoz, hogy a (számító)gép azt tegye, amit mi várunk tőle, pontosan meg kell mondanunk, mi a feladat, és azt hogyan hajtsa végre. Feladat Megoldó algoritmus Forrásprogram Gépikódú program Fordító v. Értelmező 5

3. Programozási nyelvek Precízen definiált mesterséges nyelvek (szintaktika, nyelvtan, szemantika). Programnyelvek Hogyan hajtsa végre a programa feladatot? Imperatív Mit hajtson végre a program? Deklaratív Procedurális Objektum orientált Logikai Funkcionális Algol, Fortran, Pascal, C C++, Java, C# Prolog Lisp, Haskell, Clean, Erlang 6

4. A programkészítés menete 1. Probléma elemzése, feladat meghatározása 2. Program viselkedésének informális leírása 3. A program egyes részeinek megtervezése 4. A program elkészítése 5. Az optimális választások ellenőrzése (algoritmus, pr. nyelv stb.) - gyakran elmarad 6. A pr. kód helyességének vizsgálata (hibakeresés, javítás) 7. Felhasználói és fejlesztői dokumentáció készítése 8. Program telepítése, terjesztése, felhasználó betanítása a kezelésére 9. Garanciális javítások + a (HW, jogi, gazdasági) környezet megváltozása miatti módosítások/frissítések elvégzése 7

5. Algoritmus Algoritmus: jól meghatározott számítási eljárás, amelynek a bemenete egy érték v. értékhalmaz, és amely kimenetként létrehoz egy értéket v. értékhalmazt. A helyes algoritmus: elvégezhető (megoldja az adott feladatot), véges számú lépés után megáll, egyértelmű (minden lépés pontosan definiált), determinisztikus (ugyanarra a bemenetre mindig ugyanazt az eredeményt szolgáltatja), hatékony (felesleges lépéseket nem tartalmaz), és minden azonos jellegű feladatra alkalmazható. 8

5. Algoritmus Az algoritmus építőelemei: Adatok (bemeneti és kimeneti) Műveletek: olyan átalakítás, amely az adatok aktuális értékét felhasználva előállítja az adatok új értékét Vezérlő szerkezetek: a feladat műveletekre bontását és ezek végrehajtási sorrendjét írja le szekvencia (utasítások egymás utánisága) iteráció/ciklus (utasítások ismétlése, amíg teljesül egy vizsgált feltétel) szelekció (az algoritmus feltételtől függő elágaztatása) 9

6. Algoritmusok leírási módszerei Szöveges leírás (nem exakt) Pszeudokód (metanyelv) Folyamatábra vagy blokkdiagram Struktogram: Egyetlen téglalap tagolása, amely a teljes feladat részekre bontását jelenti. Felülről lefelé történő tervezés, strukturált programozási stílus. Jackson diagram vagy struktúra diagram: Szerkezeti ábra. A vezérlő szerkezeteteket ábrázoló téglalapok kifejtése külön téglalapokban történik. 10

Beolvasó utasítás Kiíró utasítás Elemi utasítás (értékadás) Szelekció Előltesztelő ciklus Hátultesztelő ciklus 6. Pszeudo kód elemei Input: változók Output: változók változó := kifejezés HA feltétel AKKOR elemi utasítások EGYÉBKÉNT elemi utasítások FELÉTEL vége AMÍG feltétel ADDIG elemi utasítások CIKLUS vége CIKLUS elemi utasítások AMÍG feltétel 11

Algoritmus elejét ill. végét jelző határszimbólumok Beolvasó és kiíró utasítás (input/output) Elemi utasítás 6. Folyamatábra elemei START STOP Elágazás: a feladat végrehajtása a rombuszba írt feltétel igazságértékétől függően folytatódik Csatlakozási pont (elágazás előtt / után) A végrehajtási sorrendet kijelölő nyilak igaz hamis 12

Összefoglalás Egy feladatot megoldó algoritmus kidolgozására nem létezik általánosan alkalmazható eljárás; azaz soha nem csak egy megoldás létezik! Vannak gyakran felhasznált általános algoritmusok: számlálás, összegzés, keresés, rendezés, stb. Programozáskor a számítógép számára értelmezhető nyelven (programozási nyelven) írjuk le a megoldó algoritmust. Ajánlott irodalom (több kötetes): Donald Knuth: A számítógépprogramozás művészete (The Art of Computer Programming) 13

7. Programozási tételek I. Gyakran előforduló általános (generikus) algoritmusok. 1.Összegzés tétele: Adott egy számsorozat. Feladat az összes elem, vagy a T tulajdonsággal rendelkező elemek összegének (szorzatának, átlagának) kiszámítása. 2.Megszámlálás tétele: a feladat egy sorozat összes, vagy a T tulajdonsággal rendelkező elemeinek megszámlálása. 14

7.1 Összegzés tétele Adott egy számsorozat. Számoljuk ki az elemek összegét. Az algoritmus szöveges megfogalmazása: 1. Az összegző (akkumulátor) változót kinullázzuk. 2. Megnézem van-e még hozzáadatlan elem 3. Ha igen, akkor veszem a következő elemet és az összegző változó értékét megnövelem ezzel az elemmel, majd vissza a 2. pontra. 4. Ha nem, akkor vége a ciklusnak és az összegző változóm már tartalmazza az összes elem összegét. 15

7.1 Összegzés tétele Algoritmus: összeg := 0 összeg:=0 AMÍG van még szám ADDIG szám := következő elem összeg := összeg+szám CIKLUS VÉGE nincs van még szám? igen szám:=köv.elem összeg:=összeg+szám 16

7.1 Összegzés tétele variációk Feladat egy számsorozat elemeinek összegét meghatározni. Például: 1-től 100-ig a számok összegzése. Feladat egy számsorozat elemeinek szorzatát meghatározni. Például: N faktoriálisa, 1-től N-ig a számok szorzata. Feladat egy számsorozat elemeinek számtani átlagát meghatározni. Például: 1-től 10-ig a számok összege, elosztva 10-el. Feladat egy számsorozat elemeinek mértani átlagát meghatározni. Például: 1-től 10-ig a számok szorzata, a 10-edik gyök alatt. 17

7.1 Összegzés tétele szorzással Feladat: kiszámítani az első N egész szám szorzatát (N faktoriálisa) Megoldás: Változók: i, szorzat, N BE: N szorzat := 1 i := 1 AMÍG i <= N ADDIG szorzat := szorzat * i i := i + 1 CIKLUS vége KI: szorzat 18

7.1 Feltételes összegzés összeg := 0 Adott egy N elemű sorozat, és egy, a sorozat elemein értelmezett T tulajdonság. A feladat a T tulajdonsággal rendelkező elemek összegzése (szorzása, átlagolása). összeg:=0 AMÍG van még szám ADDIG szám := következő elem HA igaz a feltétel szám-ra AKKOR összeg := összeg+szám FELTÉTEL VÉGE CIKLUS VÉGE nincs Van még szám? igen szám:=köv.elem hamis feltétel számra igaz összeg := összeg+szám 19

7.2 Számlálás tétele Adott egy N elemű sorozat, és egy, a sorozat elemein értelmezett T tulajdonság. A feladat a T tulajdonsággal rendelkező elemek megszámlálása. Az algoritmus szöveges megfogalmazása: 1. A számláló változó értékét nullára állítom 2. Megnézem van-e még megvizsgálatlan elem 3. Ha igen, akkor veszem a köv. elemet és megnézem eleget tesz-e a feltételnek 3.1 ha igen, akkor növelem a számláló változó értékét 1-el 3.2 ha nem, akkor vissza a 2. pontra 4. Ha nem, akkor vége a ciklusnak, és a számláló a végeredményt 20 tartalmazza

7.2 Számlálás tétele Algoritmus: db := 0 db:=0 AMÍG van még szám ADDIG szám := következő elem HA igaz a feltétel szám-ra AKKOR db := db+1 FELTÉTEL VÉGE CIKLUS VÉGE nincs Van még szám? igen szám:=köv.elem hamis feltétel számra igaz db := db+1 21

Elgondolkodtató kérdések Minden tevékenység/probléma algoritmizálható? Mit gondolnak milyen lesz a programozási nyelvek új generációja? Házi feladat Egy rendszeresen végzett házi (vagy házkörüli) munka algoritmusának leírása szövegesen, pszeudo kóddal és folyamatábrával. A programozási tételekre példák készítése szöveges és folyamatábra leírással. 22