Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

Hasonló dokumentumok
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)

main int main(int argc, char* argv[]) { return 0; } main return 0; (int argc, char* argv[]) main int int int main main main

Információs Technológia

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

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

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

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

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

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

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 6. Dr. Iványi Péter

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

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

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

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

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

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

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Mutatók. Dr. Bécsi Tamás 7. Előadás

10. gyakorlat Tömb, mint függvény argumentum

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

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

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

Programozás I. 5. Előadás: Függvények

Programozás alapjai 8.Gy: Program struktúra

/* Az iter függvény meghívása és a visszatérő érték átadása a gyok változóba */ gyok = iter( n, a, e ) ;

e) Írj kódrészletet, mely az int d változó utolsó előtti bitjét 1-re állítja.

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

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

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

Programozás alapjai C nyelv 9. gyakorlat. Rekurzió. Rekurzív algoritmus

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

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Rekurzió. Programozás alapjai C nyelv 9. gyakorlat. Rekurzív algoritmus. Rekurzív algoritmus fajtái. Példa: n! (2) Példa: n!

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

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

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

C string műveletek (string.h alkalmazása)

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

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

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

1. Alapok. Programozás II

Struktúrák (struct) A struktúra szerkezetét meghatározó deklaráció általános formája:

Informatika terméktervezőknek

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

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

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

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

A C# programozási nyelv alapjai

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

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Pénzügyi algoritmusok

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

Országzászlók (2015. május 27., Sz14)

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

Programozás I. gyakorlat

Matematikai alapok. Dr. Iványi Péter

Programozás C és C++ -ban

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

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

Adatszerkezetek és algoritmusok

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

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

7/8. gyakorlat Karaktertömbök és sztringkezelés

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

A C# PROGRAMOZÁSI NYELV

C programozási nyelv

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

C# gyorstalpaló. Készítette: Major Péter

Mérnöki programozás 7. Szerkesztette: dr. Vass Péter Tamás

Programozás II gyakorlat. 6. Polimorfizmus

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

Karakter- és sztringkezelő függvények, matematikai függvények

Java II. I A Java programozási nyelv alapelemei

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

Vezérlési szerkezetek

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

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

Programozási Nyelvek: C++

Óbudai Egyetem. C programozási nyelv

int tokeletes(int szam) { int i,oszto=0; for(i=1; i<szam; i++) { if(szam %i == 0) { oszto+=i; }

Óbudai Egyetem. C programozási nyelv

Programozás C nyelven 5. ELŐADÁS. Sapientia EMTE

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

Java II. I A Java programozási nyelv alapelemei

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

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

Matematikai alapok. Dr. Iványi Péter

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.

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

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

Bevezetés a C++ programozási nyelvbe

Információs Technológia

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

Stack Vezérlés szerkezet Adat 2.

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

Példák tematikus csoportosításban

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

Átírás:

Programozás alapjai C nyelv 10. gyakorlat Szeberényi Imre BME IIT <szebi@iit.bme.hu> Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.21. -1- Standard függvények Standard függvények amelyeket ismerni kell: stringkezelő <string.h>, karakter osztályozó <ctype.h>, konvertáló <stdlib.h>, matematikai <math.h>, input/output <stdio.h> Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.21. -2- Union A struktúrához hasonlóan különböző típusú adatok tárolására alkalmas, de egy adott időpillanatban csak egy fajta adata lehet. Használatának helytakarékossági oka lehet, vagy valamilyen konverziós trükk. Deklarációja és használata formailag megegyezik a struktúrával. union_spec: union union_tip_azon opc { dekl_lista Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.21. -3-

union trukkos { char by[2]; int integ; u; Union példák u1.integ = 623; low = u.by[0]; high = u.by[1]; struct takarekos { enum {kar, integ, valos tip; union { char kar; int integ; float valos; adat; uzen; if (uzen.tip == kar) ch = uzen.adat.kar; else if (uzen.tip == valos) fl = uzen.adat.valos;... Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.21. -4- Bitmező Adott számú bitet tartalmazó változó. Használatának egyetlen oka a helytakarékosság. Deklarációja és használata formailag hasonlít a struktúrához. struct_spec: struct struct_tip_azon opc { deklarator opc : állandó struct bitek { int ketbit:2; int hatbit:6; int sep:0; int egybit:1; bit; bit.ketbit = 3; bit.hatbit = 8; biztosan új szóban kezdődjön Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.21. -5- Függvénypointer Nem csak változót, hanem függvényt is elérhetünk indirekten. Fontos, mert így lehet átadni függvényt paraméterként. Függvényre mutató pointer: int (*fp)(float x); int típusú fügvényre mutató pointer float paraméterrel Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.21. -6-

Példa: gyökkeresés Írjunk függvényt, ami egy folytonos függvény nullahelyét megkeresi intervallumfelezéssel. A függvény paraméterként kapja: az intervallumot ([a,b]) a hibahatárt (eps) függvény pointerét eredményre mutató pointert Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.21. -7- Gyököl int gyokol(double a, double b, double eps, double (*f)(double x), double *gyok) { double x, y; do { x = (a+b) / 2; /* felezünk */ y = (*f)(x); if (fabs(y) <= eps) break; /* hiba kicsi, kilep */ if ((*f)(a) * y < 0) b = x; /* előjelet vált? */ else if (*f)(b) * y < 0) a = x; else return(0); /* azonos parton van */ while (1); /* nem itt lep ki */ *gyok = x; /* megvan a gyök */ return(1); Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.21. -8- #include <stdio.h> #include <math.h> int gyokol(...) Gyököl (2) main() { int ret; double a = -0.1, b = 2.9, x; ret = gyokol(a, b, 0.01, cos, &x); printf("ret: %d [%f, %f] %f\n", ret a, b, x); ret = gyokol(a, b, 0.01, sin, &x); printf("ret: %d [%f, %f] %f\n", ret a, b, x); Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.21. -9-

qsort() quick sort algoritmus általános célra összehasonlító függvényt paraméterként kapja: void qsort(void *base, size_t num, size_t width, int (*cmp)(void *e1, void *e2)); Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.21. -10- qsort példa #include <stdio.h> #include <stdlib.h> #include <string.h> int cmp(const char **s1, const char **s2) { return(strcmp(*s1, *s2)); main() { char *t[] = {"szilva", "cseresznye", "alma", "barack"; int n = sizeof(t)/sizeof(char*), i; qsort(t, n, sizeof(char *), cmp); for (i = 0; i <n; i++) printf("%s\n", t[i]); Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.21. -11- Függvénypointerek tömbje Rugalmas programstruktúrát és/vagy általános megoldást tesz lehetővé. Pl: általános menükezelő, ami a menüszövegek mellett paraméterként kapja az aktivizálandó függvényeket is: void menu(char *t[], void (*f[])()); int típusú fügvényre mutató pointer int (*fp[10])(float x); tömb float paraméterrel Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.21. -12-

Jelölések int a - int int *a - int pointer int *a[] - int pointerek tömbje int (*a)[] - int tömbre mutató pointer int a() - int függvény int *a() - int pointerrel visszatérő függvény int (*a)() - int függvényre mutató pointer int (*a[])() - int függvényre mutató pointereket tartalmazó tömb Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.21. -13- Goto Nem szeretjük, mert nehezen átlátható, nem a strukturált programozás elveivel ellentétes. Néha azonban megkerülése felesleges bonyodalmakkal jár (többszörösen egymásba ágyazott ciklusok). Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.21. -14- Goto fajtái Lokális (függvényen belül) goto cimke; Szalonképesebb változat: break, continue Globális (függvények között) Nem nyelvi elem. setjmp, longjmp Csak nagyon indokolt esetben és körültekintően. Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.21. -15-