Bevezetés a programozásba I.



Hasonló dokumentumok
Bevezetés a programozásba I.

Bevezetés a programozásba I.

Bevezetés a programozásba. 6. Előadás: C++ bevezető

Bevezetés a programozásba I.

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

1. Alapok. Programozás II

Pénzügyi algoritmusok

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

Informatika terméktervezőknek

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

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

Vezérlési szerkezetek. Szelekció Ciklusok

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

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

6. fejezet: Ciklusok

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

Maximum kiválasztás tömbben

Alkalmazott modul: Programozás 2. fejezet. C++ alapismeretek. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Vezérlési szerkezetek

Alkalmazott modul: Programozás. C++ alapismeretek. C++ alapismeretek Történet

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Bevezetés a programozásba. 9. Előadás: Rekordok

Programozás I. gyakorlat

Bevezetés a programozásba I.

AWK programozás, minták, vezérlési szerkezetek

A C# programozási nyelv alapjai

Programozási alapismeretek 1. előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

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

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

Webprogramozás szakkör

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Szoftvertervezés és -fejlesztés I.

INFORMATIKA tétel 2018

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

AWK programozás, minták, vezérlési szerkezetek

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

Bevezetés a programozásba I.

1. Írjunk programot mely beolvas két egész számot és kinyomtatja az összegüket.

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

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

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

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

Flex tutorial. Dévai Gergely

Bevezetés a programozásba. 11. Előadás: Esettanulmány

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

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

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.

1. gyakorlat

Java II. I A Java programozási nyelv alapelemei

Szelekció. Döntéshozatal

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

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

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

Bevezetés a programozásba II 1. gyakorlat. A grafikus könyvtár használata, alakzatok rajzolása

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

C programozási nyelv

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

Java Programozás 1. Gy: Java alapok. Ismétlés ++

2018, Funkcionális programozás

Szerző Lővei Péter LOPSAAI.ELTE IP-08PAEG/25 Daiki Tennó

Szoftvertechnológia alapjai Java előadások

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

Java II. I A Java programozási nyelv alapelemei

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

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Programozás C és C++ -ban

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

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

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Programozás I gyakorlat

1. Alapok. #!/bin/bash

Programozási alapismeretek 2009/2010

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

Programozás C és C++ -ban

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

INFORMATIKA tétel 2019

C vagy C++? Programozási Nyelvek és Fordítóprogramok Tanszék. Pataki Norbert. Programozási Nyelvek I.

Programozás C++ -ban 2007/1

A C# PROGRAMOZÁSI NYELV

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

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

Programzás I gyakorlat

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

Java programozási nyelv

Gyakorló feladatok Gyakorló feladatok

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

Programozási nyelvek (ADA)

Programozás alapjai 3.Gy: C elágazások, ciklusok P R O

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

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

C változók. Feladat: Deklaralj egy valos, egy karakter es ket egesz tipusu valtozot! int main() {

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

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

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

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

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

Elıírt lépésszámú ciklusok

Átírás:

Bevezetés a programozásba I. 5. gyakorlat Surányi Márton PPKE-ITK 2010.10.05.

C++ A C++ egy magas szint programozási nyelv. A legels változatot Bjarne Stroutstrup dolgozta ki 1973 és 1985 között, a C nyelvb l (FONTOS! C /= C++ (nem egyenl ) ). A nyelvnek jelenlegi is érvényben lév szabványa 2003-as (C++03), de már fejlesztés alatt van a következ (C++0x). A nyelv támogatja a procedurális programozást is. Ez már valódi programozási nyelv, tehát a fordító ténylegesen futtatható állományt állít el (általában exe-t) A nyelv fájlkezelése valódi, tehát a fájlok ténylegesen léteznek a merevlemezen. A programozás "nyelve" angol, vagyis a kulcsszavak angol nyelv ek (pl. int, string, if, for, while, main, class, true, false)

Fordítás konzolon A fordítóprogram itt már ténylegesen külön program. A gyakorlatokon a GCC (Gnu Compiler Collection)-t fogjuk használni, illetve elvárjuk, hogy a beadott feladatok forduljanak GCC-vel. A GCC egy nagyobb programcsalád (C fordítót is tartalmaz), ebb l a C++ fordító a g++ paranccsal érhet el. A félév során a Code::Blocks-ot fogjuk használni a gyakorlatokon, természetesen mindenki olyan környezetet használ, amilyet szeretne, egyetlen követelmény, hogy "g++ -Wall -pedantic"-al forduljanak a turdus-on.

Hello World! Feladat Feladat: Írjunk programot, ami kiírja, hogy "Hello World"! (a turdus-on (konzolon) fordítsuk, és futtassuk) Specikáció: BE: (nincs) KI: "Hello World"

Típusok C++ típusok EGÉSZ : int : ha int-et osztunk int-tel, akkor az egészosztás! (PlanG-ban DIV volt) VALÓS : double LOGIKAI : bool KARAKTER : char SZÖVEG : string : #include<string> szükséges! fájlok, tömbök: hamarosan

Típusok Trükk az egészosztásra #include <iostream> using namespace std; int main() { int a = 10; // az eredmény 0: cout << a / 100 << endl; // trükk: cout << a / 100.0 << endl; // így az eredmény 0.1 return 0;

Elágazás Vezérlési szerkezetek - elágazás PlanG-hoz hasonlóan, itt is lehet elágazást írni: if (feltétel ) { else { ha a feltétel igaz ez a blokk fut le ha hamis, akkor ez Megjegyzés: az else ág elhagyható.

Elágazás Vezérlési szerkezetek - elágazás PlanG-tól eltér en itt lehet "különben ha" ágat megadni (akárhány ilyen ágat megadhatunk): if (feltétel1) { ha feltétel1 igaz, akkor ez a blokk fut le else if (feltétel2) { ha feltétel1 nem igaz, és feltétel2 igaz, akkor ez a blokk fut le else if (feltétel3) { ha feltétel1, feltétel2 nem igaz, és feltétel3 igaz, akkor ez a blokk fut le else { ha egyik sem igaz, akkor ez a blokk fut le

Ciklusok Vezérlési szerkezetek - ciklusok - elöltesztel s A C++-ban van elöltesztel s- és hátultesztel s ciklus is. Elöltesztel s: while(feltétel) { ciklusmag - amíg a feltétel igaz, addig fut El ször kiértékeli a feltételt, ha igaz, akkor lefut a ciklusmag, majd újra kiértékeli, ha igaz újra lefut... Tehát, ha a feltétel már az elején hamis, akkor a ciklusmag egyszer sem fut le.

Ciklusok Vezérlési szerkezetek - ciklusok - hátultesztel s Hátultesztel s ciklus: do { ciklusmag - utasítások while(feltétel); El ször lefut a ciklusmag, aztán kiértékeli a feltételt. Ha igaz, akkor megint lefut a ciklusmag, és megint kiértékeli... Tehát, ha a feltétel hamis, akkor is lefut egyszer a ciklusmag!

For ciklus Vezérlési szerkezetek - ciklusok - számláló ciklus PlanG-ban a számláló ciklust egy elöltesztel s ciklus segítségével alkalmaztuk. Ez C++-ban így nézne ki: int i = 0; while(i < n) { utasítások ++i; De a C++ ad egy egyszer bb formát: a for ciklust: for(int i = 0; i < n; ++i) { utasítások M ködés szempontjából teljesen megegyezik a fenti "while-os" ciklussal.

For ciklus Vezérlési szerkezetek - ciklusok - for ciklus Általánosan így néz ki: for(kezdeti kif.; ciklusfeltétel; léptető kif.) { utasítások

For ciklus For ciklus - példa Mit csinál a következ program? #include <iostream> using std::cout; using std::endl; int main() { for (int i = 0; i < 10; ++i) cout << i << endl; return 0;

Összehasonlítások, m veletek M veletek Amint már láttuk az értékadás nem ":=" -vel, hanem "=" -vel történik. Pl: i = 0; +,-,*,/: PlanG-hoz hasonlóan, kivétel az egészosztás, ami automatikusan akkor történik, ha egy int-et akarunk osztani egy int-tel. maradék (PlanG-ban MOD): % Pl: kifejezés arra, hogy egy szám páros-e: (a % 2) == 0 FONTOS! a C++-ban a kalap (ˆ) nem hatványozást jelent, hanem bitenkénti KIZÁRÓ VAGY-ot (XOR)!

Összehasonlítások, m veletek Összehasonlítások Az egyenl ségvizsgálat dupla egyenl ségjellel történik: Pl: (a == 3) (Erre érdemes odagyelni, mert a szimpla egyenl ségjel az értékadás!) (A nem-egyenl : "!=") Kisebb-nagyobb, stb. : PlanG-hoz hasonlóan. Logikai ÉS: && (alt gr + c) Pl: if (a > 9 && a < 100)... Logikai VAGY: (alt gr + w) Pl: if (t == 0 t == 1)... Logikai tagadás (NEM):! (felkiáltójel) Pl: if (!(i < 0))...

Összehasonlítások, m veletek M veletvégzés és értékadás egyszerre, inkrementálás num = num * 5; helyett írhatjuk ezt: num *= 5; (és ez igaz a többi m veletre is. Pl: sum += 2; counter -= 10, stb.) Ezáltal egyrészt kevesebbet kell gépelni, másrészt átláthatóbb lesz a kód. Az i = i + 1; helyett írhatnánk, hogy i += 1;, de erre van egy még egyszer bb jelölés: ++i vagy i++. (Ugyanez m ködik csökkentéssel (dekrementálás): i--;)

Összehasonlítások, m veletek ++i vagy i++? Nézzük az alábbi programrészt: int i = 0; cout «++i «endl; Ez ezt írta ki, hogy 1. (Ha balról jobbra nézzük: el ször a ++ van, aztán az 'i'; tehát el ször növeli, aztán veszi az 'i' értékét.) int i = 0; cout «i++ «endl; Ez pedig azt, hogy 0. (Ezt is balról jobbra olvasva: el szöt adja 'i' értékét, majd megnöveli) (Ugyanez igaz a dekrementálásra is.) for ciklusban a ++i -t használjuk, mert bizonyos esetekben hatékonyabb!

Tabulálás, kódolási stílusok A helyes tabulálásról A helyes tabulálás használata fontos! A kód sokkal olvashatóbb, ha az egyes blokkok tabulálva vannak. Pl: Tabulálás nélkül: for(int i=0;i<n;++i){ while(a!=200) cout<<"a nem 200"<<endl; if(a<=200){for(int j=0;j<10;++j){ if(t%10==0){if(4<5){ t*=1; else{ if(5>=4) t++; g/=2;

Tabulálás, kódolási stílusok Helyesen tabulálva for(int i = 0; i < n; ++i) { while(a!= 200) cout << "a nem 200" << endl; if(a <= 200){ for(int j = 0; j < 10; ++j) { if(t % 10 == 0) { if (4 < 5) { t *= 1; else { if (5 >= 4) t++; g /= 2;

Tabulálás, kódolási stílusok Coding style, indent style Láthatjuk, hogy a második kód "szell sebb" is. Pl: i=0; helyett i = 0; -t írtunk. Coding, programming style linkek érdekl d knek: http://en.wikipedia.org/wiki/indent_style http://geosoft.no/development/cppstyle.html http://www2.research.att.com/~bs/bs_faq2.html http://en.wikibooks.org/wiki/c%2b%2b_ Programming/Programming_Languages/C%2B%2B/Code/ Style_Conventions (tipp)

Változók Globális, lokális változók Amint láthattuk, a program futása a main() függvénnyel kezd dik. Ezen függvényen kívül deklarált változók az globális változóknak nevezzük, a függvényeken belüli változókat pedig lokális változóknak. A globális változók mindenhol elérhet ek és érvényesek, tehát a kívül deklarált változók a main() függvényben is elérhet ek. FIGYELEM! A globális változók használata er sen kerülend! Akinek ilyet látunk a házi feladatában, azt nem fogjuk elfogadni! Megjegyzés: ez a tiltás nem vonatkozik a globális konstansokra, de azt is csak indokolt esetben használjuk!

Számkitalálós Els játék C++-ban Feladat: Írjunk számkitalálós játékot! A számítógép generál egy véletlen számot 0 és 100 között, majd bekér egy számot. Ha eltaláltuk, akkor nyertünk; ha nem, akkor a számítógép megmondja, hogy kisebb, vagy nagyobb annál, mint amit beírtunk! BE: egész szám 0 és 100 között KI: kisebb, vagy nagyobb-e, illetve eltaláltuk-e

Számkitalálós Els játék C++-ban #include <iostream> #include <cstdlib> using namespace std; int main() { srand( time(0) ); // random-generator inicializalas int secret = rand() % 100; // egy szam 0-100 kozott int number = 0; bool guessed = false;

Számkitalálós Els játék C++-ban (folyt.) while(!guessed) { cout << "Kerek egy szamot: "; cin >> number; if (number == secret) { cout << "Kitalaltad! A szam: " << secret << endl; guessed = true; else if (number < secret) { cout << "Ennel nagyobb!\n"; else if (number > secret) { cout << "Ennel kisebb!\n"; return 0;

Számkitalálós Feladat Feladat: I-1.) Döntsd el egy egész számról, hogy páros-e! (Szövegesen írjuk ki) Specikáció: BE: pozitív egész szám KI: páros-e

Számkitalálós I-1. #include <iostream> using std::cout; using std::cin; using std::endl; int main() { int number; cout << "Kerek egy egesz szamot:"; cin >> number; if ( (number % 2) == 0 ) cout << "A szam paros.\n"; else cout << "A szam paratlan.\n"; return 0;

Számkitalálós Feladatok I-4.) Számítsd ki egy adott sugarú gömb térfogatát! II-1.b) "Rajzolj" ki egy NxN-es négyzetet *-okból! II-6.) Állíts el N darab véletlenszámot!

Számkitalálós Házi feladatok II-4.) Sorold fel az els N négyzetszámot! I-7.) Döntsd el két számról, hogy megegyezik-e az el jelük! III-5.) Add meg két természetes szám legnagyobb közös osztóját!

Számkitalálós Szorgalmi feladat II-9.) Sorold fel azokat a másodfokú egyenleteket, amelyek minden együtthatója 0 és 10 közötti egész szám, és pontosan egy megoldása van!