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

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

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

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

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

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

A C# programozási nyelv alapjai

Webprogramozás szakkör

AZ ALGORITMUS. az eredményt szolgáltatja

Java programozási nyelv

Programozás alapjai (ANSI C)

Algoritmizálási feladatok

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

Vezérlési szerkezetek

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK

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

START. Billentyűzár ki. Üss be egy számot. Beütöttem az összes számot. Hívás. Várakozás. felveszik. Beszélek. Befejezem a beszélgetést.

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.

BASH script programozás II. Vezérlési szerkezetek

Megjegyzés: A leírás abszolút kezdők számára készült elnézést azoktól, akik ezen a szinten már túlvannak!

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

Bevezetés az Arduino mikrovezérlők programozásába

1. Jelölje meg az összes igaz állítást a következők közül!

Programozási segédlet

Nézzük tovább a lexikai egységeket!

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

Bevezetés az informatikába

Megszólal a Kütyü. Arduino bevezető hangszóró vezérlése 1 / 5 oldal

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

Algoritmusok. Hogyan csináljam?

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Az algoritmusok alapelemei

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

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

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

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

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

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

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

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

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

MSP430 programozás Energia környezetben. Az I/O portok kezelése

Programozási alapismeretek 1. előadás

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

OOP #1 (Bevezetés) v :39:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

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

MSP430 programozás Energia környezetben. LED kijelzok második rész

Bevezetés az elektronikába

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.

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

A JavaScript főbb tulajdonságai

Algoritmusok. Dr. Iványi Péter

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

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

ALGORITMUSOK ÉS PROBLÉMAOSZTÁLYOK (1. előadás)

Smalltalk 2. Készítette: Szabó Éva

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

Szelekció. Döntéshozatal

Programozási tételek. PPT 2007/2008 tavasz.

BASH SCRIPT SHELL JEGYZETEK

INFORMATIKAI ALAPISMERETEK

Algoritmusok, adatszerkezetek, objektumok

Komputeralgebra Rendszerek

INFORMATIKAI ALAPISMERETEK

1. Alapok. #!/bin/bash

A programozás alapjai

Dr. Schuster György február / 32

MSP430 programozás Energia környezetben. Az első lépések

Arduino bevezető Szenzorhálózatok és alkalmazásaik

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

Operációs Rendszerek II. labor. 2. alkalom

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

ELEMI PROGRAMOZÁSI TÉTELEK

Bevezetés a programozásba I.

Algoritmusok tervezése

Bevezetés a mikrovezérlők programozásába: Programciklusok szervezése, analóg I/O

Egyszerű programozási tételek

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

Számítógépes döntéstámogatás. Genetikus algoritmusok

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

Neumann János Számítógép-tudományi Társaság Programozás, robotprogramozás szakkör Három félév 3 * 8 foglalkozás

Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6.

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

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

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

Mérési útmutató. A/D konverteres mérés. // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait.

Fejlett programozási nyelvek C++ Iterátorok

ALGORITMIZÁLÁS ALAPJAI. Tömösközi Péter

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

MSP430 programozás Energia környezetben. Hétszegmenses LED kijelzok

3 A C programozási nyelv szintaktikai egységei

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana

PROGRAMOZÁSMÓDSZERTAN I

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

Aritmetikai kifejezések lengyelformára hozása

INFORMATIKA javítókulcs 2016

Bevezetés a mikrovezérlők programozásába: I/O portok kezelése, számrendszerek, bitműveletek

Kiterjesztések sek szemantikája

UH-zongora - zenélés mikrokontrollerrel

Átírás:

Algoritmusok

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

Követelmények Véges: nem állhat végtelen sok lépésből Teljes: teljes megoldást ad a problémára Determinisztikus: ugyanolyan bemenő adatokkal ugyanazt az eredményt adja Egyértelmű: minden lépés után pontosan tudjuk, hol kell folytatni

Megadás módjai Szóban Folyamatábrával Struktogram-mal Mondatszerű leírással Sz.g. program (ez is algoritmus)

Folyamatábra vs. struktogram

Szekvenciális algoritmusok Egyszerű leírás, nincs elágazás, feltétel, stb. Pl.: Összeszerelési útmutató, kiürítési terv, stb. HF.: írjanak példát szekvenciális algoritmusokra! (csak példát, az algoritmust nem muszáj)

Vezérlési szerkezetek Szekvencia (sor) Szelekció (elágazás) Iteráció (ciklus) Böhm Jacopini sejtés (Mills tétel): Ezzel a 3 vezérlési szerkezettel minden strukturált program felírható (Ez a strukturált programozás alaptétele)

Teafőzés Vegyünk egy ibrik vizet Melegítsük Forró a víz? ha nem: vissza 2-ik pont Tegyünk egy csészébe teafiltert Öntsük rá a forró vizet Ízesítsük, és várjunk 5 percet Feladat: átkelés az úttesten

Változó használata Írjunk 10 egymást követő term. számok a képernyőre: Lehet szekvenciálisan: 10x írunk ki számot Lehet ciklussal: x legyen 0 írjuk ki x-et növeljük x-et 1-el Ha x<=9 vissza 2 stop

Feladat HF: MF208/19;26 Írjunk algoritmust: Bekér két számot, és kiírja, h melyik nagyobb Készítsük el az alg. folyamatábráját is!

Arduino Mikrokontroller, egy programozható chip Az Arduino nyílt bárki gyárthat Emulátorok: http://blog.oscarliang.net/arduino-simulator-free-virtu al-circuit-hardware/ http://simulator-for-arduino-free-version.updatestar.c om/hu

Egyszerű arduino algoritmus Led blinking: void loop() { digitalwrite(13, HIGH); // set the LED on delay(1000); // wait for a second digitalwrite(13, LOW); // set the LED off delay(1000); } // wait for a second

Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása alatt változhat.

Változók Változó neve: ált.ban betűvel (angol abc) kezdődik, és betűvel vagy számmal, egyéb jelekkel folytatódhat. Pl.: X1, abc12, 3D -nem jó Értékadás: Értékadás bal oldalán a változó címét veszi figyelembe a program, jobb oldalon szereplő változó az értékét képviseli X=2; 2=X; X=Z; X = X + 1; változó címe = érték

Egyszerű arduino algoritmus Led blinking változókkal void loop() { Int lab = 13; // lab nevű változó Int ido = 1000; // ido nevű változó digitalwrite(lab, HIGH); delay(ido); digitalwrite(lab, LOW); delay(ido); }

Ciklusok Előírt lépésszámú ciklus: A ciklus kezdetekor meghatározható, hogy hányszor fut le a ciklus magja Pl.: számok 1-től 120-ig Feltételes ciklus Egy feltételtől függően áll meg Pl.: addig, amíg Entert nem ütnek

WHILE ciklus While (feltétel) { ciklusmag } A ciklus addig ismétlődik, amíg a feltétel igaz

Feladat: index algoritmus 2 ledet villogtatunk attól függően, hogy melyik lábon érkezik LOW jel Az áramkör fordított logikát használ: a lábakon állandóan HIGH jel érkezik, a lábat földelni (LOW) kell, ha zárni akarjuk a kört, vagy használjuk a következő kapcsolást:

Index algoritmus const int bal = 2; const int jobb = 3; const int led_bal = 10; const int led_jobb = 13; void setup() { pinmode(led1, OUTPUT); pinmode(led2, OUTPUT); pinmode(jobb, INPUT); pinmode(bal, INPUT); } void loop(){ while ( digitalread ( bal ) == LOW ) { digitalwrite(led_bal, HIGH); delay ( 200 ); digitalwrite(led_bal, LOW); delay ( 200 ); } // itt végződik a ciklus while ( digitalread ( jobb ) == LOW ) { digitalwrite(led_jobb, HIGH); delay ( 200 ); digitalwrite(led_jobb, LOW); delay ( 200 ); } // itt végződik a ciklus }

Ciklus részei Ciklusfej: ez határozza meg a feltételeket, kezdőértéket, stb. (a kerek zárójelek közötti rész) Ciklusmag: ez a programrészlet ismétlődik (a kapcsos zárójelek közötti rész) Ciklusváltozó: csak előírt lépésszámú ciklusnál van, ebben számoljuk a lépéseket minden ismétlődésnél változik

FOR ciklus (előírt lépésszámú) For (i=1; i<=10; i=i+1) { ciklusmag } i ciklusváltozó i=1 kezdőérték i<=10 amíg i kisebb v egyenlő, mint 10 i=i+1 lépésköz, i értékét egyesével növeljük

Rövid műveletek X = X + 1 X++ X += 1 X += Y Trükkös: Y = X++; Y = ++X;

Feladat: SOS jelzés void loop() { for (i=1; i<=3; i++){ digitalwrite(10, HIGH); // set the LED on delay(200); // wait digitalwrite(10, LOW); the LED off delay(200); } for (i=1; i<=3; i++){ // wait digitalwrite(10, HIGH); delay(600); // set digitalwrite(10, LOW); delay(600); } for (i=1; i<=3; i++){ digitalwrite(10, HIGH); delay(200); digitalwrite(10, LOW); delay(200); } deleay(1000); }

SOS áramkör

Feladat: Írjanak programot, ami a Morse abc alapján kicsipogja a saját nevüket! Készítsünk kő-papír-olló játékot: Véletlen számot generálunk 1-3-ig 1 csipogás: kő 2 csipogás: papír 3 csipogás: olló random(n) véletlen szám n-ig (nîn)

Dobókocka Hogyan változtassuk meg a kő-papír-olló programot (algoritmust), hogy elektronikus dobókocka legyen? Oldjuk meg, hogy a kockadobás gombnyomásra történjen!

Reflexidő Írjunk programot, ami megméri reakcióidőnket! Várunk 3-6 mp-ig véletlenszerűen Felkapcsolunk egy LED-et Számolunk addig, amíg a nyomógombot meg nem nyomják Eloltjuk a LED-et Kiírjuk az eredményt a képernyőre Megjegyzés: számolás helyett pontosabb eredményt kapunk, ha a millis(); függvényt használjuk.

Reakció idő mérő void loop() { delay( random (3000,6001) ); digitalwrite(10, HIGH); // set the LED on kezd = millis(); while ( digitalread ( nyomogomb ) == HIGH ) { // vár 3000-6000 msec } //amíg meg nem nyoják a gombot, nem csinálunk semmit Serial.print ( (millis()-kezd)/1000 ) //a mostani időből kivonjuk a kezdés idejét, és kiírjuk az eredményt }

Feladat -megszámlálás Készítsünk programot, ami minden 10-ik gombnyomásnál csipog egyet! A nyomógomb az 1-es, a hangszóró a 11-es lábon található.

Megszámlálás Void loop { szamlalo = 0; while ( szamlalo < 10 ){ if ( digitalread ( nyomogomb ) == HIGH ) { szamlalo++; } } //cillus vége //ide akkor jutunk, ha... tone(10,1000); delay(200); notone (10,1000) }//program vége

Megszámlálás tétele Megszámoljuk, hogy egy n elemű adathalmazban hány darab adott tulajdonságú elem létezik Algoritmus megszámlálás Darab = 0 Ciklus i=1-től n-ig Ha tulajdonság ( elem( i ) ) == igaz darab = darab +1 Ciklus vége Ki: darab Algoritmus vége

Összefoglalás