Elemi alkalmazások fejlesztése I.

Slides:



Advertisements
Hasonló előadás
Koordináták, függvények
Advertisements

Készítette: Kosztyán Zsolt Tibor
83. (1 pont) A felsorolt végeredmények, hatások közül karikázza be a mondatszerű leírással (szöveggel) megadott algoritmus eredményét jelölő betűt, ha.
Logaritmikus keresés Feladat: Adott egy 11 elemű, növekvően rendezett tömb számokkal feltöltve. Keressük meg a 17-es értéket! Ha van benne, hányadik eleme.
Kiválasztás (N,A,sorszam) i := 1 Ciklus amíg (A(i) nem T) i := i+1 Ciklus vége sorszam := i Eljárás vége Kiválasztás.
Exponenciális és logaritmikus függvények ábrázolása
A táblázatkezelés alapjai 1.
Programozási alapismeretek 5. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 5.2/  Programozási tételek.
Programozási alapismeretek 6. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 6.2/  Rekordok/struktúrák.
Illés Tibor – Hálózati folyamok
Programozási alapismeretek 3. előadás
Programozási alapismeretek 13. előadás. ELTE Érdekességek - kombinatorika  Az iskola bejáratánál N lépcsőfok van. Egyszerre maximum K fokot tudunk lépni,
Programozási alapismeretek 10. előadás
Programozási alapismeretek 5. előadás. ELTE 2/  Programozási tételek – a lényeglényeg  Sorozatszámítás Sorozatszámítás.
Készítette: Pető László
Elektrotechnika 3. előadás Dr. Hodossy László 2006.
Papp Róbert, Blaskovics Viktor, Hantos Norbert
2012. február 22. Paulik Áron. Szintaxis: PROGRAM befajlos VÁLTOZÓK: bf: BEFÁJL, kf: KIFÁJL, sz: SZÖVEG MEGNYIT bf: "adatok.txt" BE bf: sz LEZÁR bf …
1.3 Relációk Def. (rendezett pár) (a1 , a2 ) := {{a1} , {a1 , a2 }} .
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Keresés Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 8.1/ Kiválogatás Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
Leszámoló rendezés Készítette: Várkonyi Tibor Zoltán VATNABI.ELTE
Készítette: Szitár Anikó
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Sorozatszámítás Specifikáció (a végleges) :  Bemenet:
C++ alapok, harmadik óra
Gazdálkodási modul Gazdaságtudományi ismeretek I. Üzemtan
További vektor, mátrix algoritmusok
Microsoft Excel Függvények VI..
Készítette: Kosztyán Zsolt Tibor
Készítette: Kosztyán Zsolt Tibor
Hálótervezés Készítette: Kosztyán Zsolt Tibor 18.
Fraktálok. Szemcsenövekedés
TÖMBÖK Asszociatív adatszerkezetek Tömbök
Az abszolút értékes függvények ábrázolása
Másodfokú függvények ábrázolása
Tömbök és programozási tételek
Táblázatkezelés.
Lineáris programozás.
A sztochasztikus kapcsolatok (Folyt). Korreláció, regresszió
III. Előadás Válságmenedzsment II.
Specifikáció Specifikáció Követelményei: Tömör legyen, egyértelmű, precíz, jól formalizált, szemléletes, érthető Meg kell adni a program bemenő adatait.
A Dijkstra algoritmus.
RADIX bináris számokra ___A___ Szembe 2 mutatóval, ha a felsőnél 1-es, az alsónál 0, akkor csere.
Programozási tételek.
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Elektronikus tananyag
Dr. Takács Attila – BME Geotechnikai Tanszék
A derivált alkalmazása
A folytonosság Digitális tananyag.
Programozási alapismeretek * A Zh-írás módszertana.
Programozási alapismeretek 10. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/  Kiválogatás + összegzés.
Objektum orientált programozás
Készítette: Mátyás István agrár mérnöktanár szakos hallgató,
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Függvények aszimptotikus viselkedése: A Θ jelölés
Programozáselmélet 2. rész Denotációs és axiomatikus szemantika.
Szélességi bejárás. Véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő sorrendben Egy csúcsot egyszer járunk be Egyenlő.
Dijkstra algoritmus. Egy minimális költségű utat keres élsúlyozott gráfban A gráf lehet irányított vagy irányítás nélküli Feltétele, hogy pozitív élsúlyok.
Excel alapok Templom Téri Német Nemzetiségi Általános iskola Pilisvörösvár 2015 A leggyakoribb Excel műveletek, ill. típusfeladatok Készítette: Kárpát.
Függvénykapcsolatok szerepe a feladatmegoldások során Radnóti Katalin ELTE TTK.
A Dijkstra algoritmus.
Lineáris programozás Elemi példa Alapfogalmak Általános vizsg.
Nevezetes algoritmusok
Függvények jellemzése
Függvényábrázolás.
Mediánok és rendezett minták
II. konzultáció Analízis Sorozatok Egyváltozós valós függvények I.
III. előadás.
Lineáris keresés Keresés (N,A,sorszam) i := 1
1.3 Relációk Def. (rendezett pár) (a1 , a2) := {{a1} , {a1 , a2 }} .
Előadás másolata:

Elemi alkalmazások fejlesztése I. Maximumkeresés tömbökben Elemi alkalmazások fejlesztése I. Készítette: Gregorics Tibor: gt@inf.elte.hu Szabóné Nacsa Rozália: nacsa@inf.elte.hu Lektorálta: Szendrei Rudolf: szr@inf.elte.hu

Feladat 4 7 9 6 Keressük meg egy tömb valamely maximális elemét. Az eredményt írjuk ki a szabványos outputra. 4 7 9 6 Maximális elemek

Absztrakt megoldó program Eredmény megjelenítése Megoldás Itt biztosítjuk, hogy a feladat elvégzéséhez szükséges adatok megfelelő formában álljanak rendelkezésünkre . Adatok előkészítése 1 2 Absztrakt megoldó program A számítások elvégzéséhez felhasználunk egy maximunkeresést. Itt írjuk ki a maximális elem értékét és azt, hogy ez a tömb hányadik eleme. 3 Eredmény megjelenítése

Maximumkeresés tétele: állapottér f: függvény m: az értelmezési tartomány alsó határa n: az értelmezési tartomány felső határa max: a maximális elem értéke ind: a maximális elem indexe i: segédváltozó Maximumkeresés tétele: előfeltétel m  n

Maximumkeresés tétele: struktogram max, ind, i := f(m), m, m+1 i  n max < f(i) max, ind:= f(i), i SKIP i:=i+1

Maximumkeresés tétele: tömbökre max, ind, i := v.lov, v.lob, v.lob+1 i  v.hib max < v[i] max, ind:= v[i], i SKIP i:=i+1

"Kódolás"

Speciális értékadások j = i++; j = i; i = i+1; j = ++i; j = i = i+1;  i++ i = i+1 i-- i = i-1 i+= a i = i+a i-= a i = i-a i*= a i = i*a i/= a i = i/a i%= a i = i%a i = j = k; j = k;i = k;

For utasítás program_1 feltétel mag program_2 for(program_1;feltétel;program_2){ mag } ciklusváltozó for(int i=0;i<n;i++){ mag } for(int i=0;i<n;i++) utasítás;

Tömbök indexelése 4 7 9 6 v[0] v[3] v[n-1] v.lob  0 v.hib  n-1 Az első elem indexe: 0. Az utoló elem indexe: n-1. 4 7 9 6 v[0] v[3] v[n-1] v.lob  0 v.hib  n-1 v.lov  v[0]

Index túlcsordulás ? 4 7 9 6 ? v[n] v[-1] 9 6 ? v[n] v[-1] Ha a vektor -1-dik vagy az n - dik elemére hivatkozunk - SAJNOS!!!! - nincs hibajelzés, de természetesen ilyenkor akármi is történhet. TILOS ILYET CSINÁLNI!!!!!

Main függvény int main() { //Adatok beolvasása //Maximumkeresés 1 //Eredmény megjelenítése return 0; } 1 visszatérési érték 2 3

Main függvény 2 int main() { //Adatok beolvasása //Maximumkeresés //Eredmény megjelenítése return 0; } 1 1 2 2 3

max, ind, i := v.lov, v.lob, v.lob+1 i  v.hib max < v[i] max, ind:= v[i], i SKIP //Maximumkeresés int ind, max ; max=v[0]; ind = 0; for(int i=1; i<n; i++){ if( v[i]>max ){ max = v[i]; ind = i; } i:=i+1

Main függvény 3 int main() { //Adatok beolvasása //Maximumkeresés 1 //Eredmény megjelenítése return 0; } 1 2 2 3 3

//Eredmény megjelenítése cout << "A tömb egyik maximális eleme: " << max << "." << endl ; cout << "Ez a tömb " << ind+1 << ". eleme." << endl; A tömb egyik maximális eleme: 9. Ez a tömb 7. eleme.

Main függvény 1 int main() { //Adatok beolvasása //Maximumkeresés 1 //Eredmény megjelenítése return 0; } 1 1 2 2 3 3

Háromféle megoldás a tömb használatára konstans tömb statikus helyfoglalású tömb dinamikus helyfoglalású tömb

Konstans tömb létrehozása A tömb elemeinek értékét a program futása közben nem változtatjuk meg. A tömb egész számokat tartalmaz const int v[] = {4, 7, 0, 9, 6, 7, 9, 4}; const int n = sizeof(v)/sizeof(v[0]); implicit konverzió A tömb elemszámát a program futása közben nem változtatjuk meg. n a tömb elemeinek száma.

A tömb megjelenítése cout << " A tömb elemei: "; for (int i=0; i<n; i++){ cout << v[i]; if (i != (n-1)) cout << ", "; else cout << ". " << endl; } A tömb elemei: 4,7,0,9,6,7,9.

Statikus helyfoglalású tömb létrehozása és feltöltése A tömb egész számokat tartalmaz A tömb elemeinek számára adott felső korlát. int v[100]; int n; cout << "Adja meg a tomb elemszamat!" << endl; cin >> n; // Kell még egy ellenőrzés: 0<n<=100 cout << "Adja meg a tomb elemeit!" << endl; for(int i=0; i<n; i++){ cout << i+1 << ". elem: "; cin >> v[i]; } n a tömb elemeinek száma. A tömb elemeinek beolvasása A tömb elemszámát a program futása közben olvassuk be és ellenőrizzük

Dinamikus helyfoglalású tömb létrehozása és feltöltése A tömb egész számokat tartalmaz n a tömb elemeinek száma. int* v; int n; cout << "Adja meg a tomb elemszamat!" << endl; cin >> n; // Kell még egy ellenőrzés: n>0 v = new int[n]; cout << "Adja meg a tomb elemeit!" << endl; for(int i=0; i<n; i++){ cout << i+1 << ". elem: "; cin >> v[i]; } A tömb elemszámát a program futása közben olvassuk be és ellenőrizzük A tömb elemei számára lefoglal elegendő helyet A tömb elemeinek beolvasása

new és delete v[0] v[1] v[2] v[3] v[0] v[1] v[2] v[3] int *v; v =new int[4]; 2 v[0] v[1] v[2] v[3] delete[ ] v; 3 v[0] v[1] v[2] v[3] Amikor nincs rá tovább szükségünk, felszabadítjuk a lefoglalt területet.

Teljes program #include <iostream> using namespace std; int main() { //Adatok beolvasása int* v; int n; cout << "Adja meg a tomb elemszamat!" << endl; cin >> n; if(n<=0){ cout << "Hibás adat!" << endl; char ch; cin >> ch; exit(1); } v = new int[n];

cout << "Adja meg a tomb elemeit!" << endl; for(int i=0; i<n; i++){ cout << i+1 << ". elem: "; cin >> v[i]; } //Maximumkeresés int ind, max ; max=v[0]; ind = 0; for(int i=1; i<n; i++){ if( v[i]>max ){ max = v[i]; ind = i;

//Eredmény megjelenítése cout << "A tömb egyik maximális eleme: " << max << "." << endl ; cout << "Ez a tömb " << ind+1 << ". eleme." << endl; delete[] v; char ch; cin >> ch; return 0; }

Adatellenőrzés (egészek beolvasása) #include <string> int i; string str; cin >> str; i = atoi(str.c_str()); bool hiba = (i == 0 && str != ”0”); atoi() atof()

Do-while utasítás mag feltétel mag do{ mag }while ( feltétel )

Ellenőrzött adatbevitel bool hiba; do{ cout << endl << ”Kérek egy természetes számot:”; string str; cin >> str; n = atoi(str.c_str()); if(hiba = ((n==0 && str!=”0”) || n<0)) cout << ”Hibás adat!”; }while(hiba);

Program végtelenítése do{ // Beolvasás // Főprogram // Kiíratás cout << endl << ”Futtassam újra? (I/N) ”; Char ch; cin >> ch; }while(ch!=’n’ && ch!=’N’)

Vége