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

Hasonló dokumentumok
5. gyakorlat. Konstansok Tömbök Stringek

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

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

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 alapjai 9.Gy: Struktúra 2.

10. gyakorlat Struktúrák, uniók, típusdefiníciók

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

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

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.

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

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

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

Vezérlési szerkezetek

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

8. gyakorlat Pointerek, dinamikus memóriakezelés

Programozás I. gyakorlat

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

INFORMATIKA javítókulcs 2016

BASH SCRIPT SHELL JEGYZETEK

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

12. gyakorlat Enum; Tárolási osztályok Preprocesszor utasítások; Moduláris programozás

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

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

Informatika terméktervezőknek

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

1. Alapok. Programozás II

7. gyakorlat Sorozatok, Fájlkezelés

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

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)

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

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

3 A C programozási nyelv szintaktikai egységei

Bevezetés a programozásba I.

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

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

INFORMATIKA tétel 2019

7. gyakorlat. Fájlkezelés IO haladó Függvények haladó

Vezérlési szerkezetek. Szelekció Ciklusok

Programozás I gyakorlat

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

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

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

1. Alapok. #!/bin/bash

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

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

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

/* 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 ) ;

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

Programozás C++ -ban 2007/1

Stack Vezérlés szerkezet Adat 2.

Programozási Nyelvek: C++

Webprogramozás szakkör

Programozás I gyakorlat

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

10. gyakorlat. Pointerek Tárolási osztályok

Apple Swift kurzus 3. gyakorlat

Példák tematikus csoportosításban

Programozás I. gyakorlat

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

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

Programozás I gyakorlat

Programozási segédlet

Programozás C és C++ -ban

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

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

C programozás. 1 óra Bevezetés

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

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Forráskód formázási szabályok

Bevezetés a programozásba I.

A C# programozási nyelv alapjai

INFORMATIKA tétel 2018

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

A C programozási nyelv III. Pointerek és tömbök.

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

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

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

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

A C programozási nyelv III. Pointerek és tömbök.

3. ZH-ban a minimum pontszám 15

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

Programozási nyelvek Python

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

Készítette: Nagy Tibor István

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

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

A programozás alapjai 1 Rekurzió

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

C programozási nyelv

Felvételi tematika INFORMATIKA

Szoftvertervezés és -fejlesztés I.

Programozás I. Első ZH segédlet

2018, Funkcionális programozás

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

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

Java II. I A Java programozási nyelv alapelemei

Algoritmusok pszeudókód... 1

Átírás:

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

Házi ellenőrzés (f0069) Valósítsd meg a linuxos seq parancs egy egyszerűbb változatát, ami beolvas két egész számot, majd a kettő közötti egész számokat (a határértékeket is beleértve) növekvő soronként kiírja. Ha az első szám kisebb a másodiknál, akkor növekvő, ellenkező esetben csökkenő sorrendben ír ki.

Házi ellenőrzés (f0070) Kérj be a felhasználótól egy tetszőleges karaktert. Ezután döntsd el a karakterről, hogy az kisbetű, nagybetű vagy szám! Valósítsd meg ifelse, valamint switch-case szerkezettel is!

Házi ellenőrzés (f0083) Az intervallum.c program feladata ellenőrizni, hogy egész számok egy zárt intervalluma tartalmaz-e egy harmadik egész számot. Teszteld a programot különböző értékekkel! Mi a hiba a programban, miért úgy működik ahogy, és hogyan lehet javítani?

Házi ellenőrzés (f0098) Írj egy olyan programot, ami beolvas egy logikai értéket reprezentáló 0 vagy 1 értéket. Ha 0-t írtunk, akkor kiírja, hogy 'H', ha 1-et, akkor kiírja, hogy 'I'. Ettől eltérő esetben nem ír ki semmit. Úgy valósítsd meg a programot, hogy egy függvény logikai értéket várjon paraméterben és karaktert ad vissza visszatérési értékként.

Házi ellenőrzés (f0085) Lehet-e olyan szelekciós vezérlést írni C-ben, hogy az if ág nem csinál semmit, az else ág viszont igen? Ha lehet, hogyan? Ha nem, miért nem?

Konstansok Az eddigi programjainkban változókat használtunk (azaz, az értéke bármikor megváltozhatott) Bizonyos esetekben viszont hasznos, ha vannak állandó értékeink (konstansok) tudunk-e példát? C-ben nincs kimondottan konstans létrehozására szolgáló kulcsszó, preprocesszor makrókkal van megoldva #define NÉV érték Bármi lehet (akár kódrészlet is), egy az egyben behelyettesít, nem ellenőriz, csak copy-paste -el

Konstansok Példák Létrehozhatunk saját sortörés konstanst #define NL printf("\n"); Vagy akár csinálhatunk saját logikai típust is #define TRUE 1 #define FALSE 0 #include <stdio.h> #define NL printf( \n ); #define N 5 #define TRUE 1 #define FALSE 0 int main() { int i, felt; scanf("%d", &i); felt = (i==n) if ( felt == TRUE ) { Printf("%d-t írtál be", N); NL; } return 0; }

Preprocesszálás - előfeldolgozás A konstansokat (és az include-ot) is a preprocesszor dolgozza fel. A #-el jelezzük, hogy neki szól a sor. A gcc -E kapcsolójával meg tudjuk nézni, mit csinált a kódunkkal gcc -E konstans.c > konstans.i gcc konstans.i -o konstans A preprocesszor csak egy egyszerű helyettesítő, így ha valami rosszat írunk, akkor az csak fordítási/futtatási időben jelenik meg hibaként

Tömbök Több, logikailag összetartozó, azonos típusú adat tárolására alkalmas A méretét létrehozáskor meg kell adni (egyéb eset később) Mérete csak egész szám lehet (konstans vagy konkrét érték) A mérete a program során nem változhat

Tömbök Általános alakja típus nev[meret]; Pl. int pontok[10]; pontok[2] = 10; printf("%d\n", pontok[2]);

Tömbök indexelése Tömb elemére tömbindex segítségével hivatkozhatunk Tömb indexelés 0-val kezdődik, és a tömb mérete-1 -ig tart Tömbindex egész szám lehet, de itt már nem csak előre ismert érték, hanem akár egész típusú változó vagy egész visszatérési értékű függvény is lehet A C nem figyel a tömbhatárokra, ezért ezt nekünk kell megtenni (egyébként hibát kapunk)

Feladat (f0133) Nézzük meg a tombindexeles.c programot! Mi az N és az M konstans? Mi történik, ha az egyik vagy másik értéket sokkal nagyobbra veszed, mint a másikat?

Feladat (f0136) Készíts egy programot, amely beolvas legfeljebb 128 egész számot, eltárolja őket egy tömbben, lecseréli a tömbelemeket az abszolút értékeikre, majd kiírja a tömböt. Előbb csináljuk meg tömb nélkül. Mikor nem megfelelő ez a megoldás? Használjunk tömböket ugyan erre!

Tömbök, mint függvényparaméterek A függvény paraméterlistájában jelezni kell, hogy tömböt várunk a méretet nem kötelező kitenni Függvény híváskor csak a tömb nevét kell átadni paraméterben cím szerinti átadás (ld. később)

Tömbök, mint függvényparaméterek void tombos_fgv(int bemenet[]) { } int tomb[10]; tombos_fgv(tomb);

Feladat (f0136) Készíts egy programot, amely beolvas legfeljebb 128 egész számot, eltárolja őket egy tömbben, lecseréli a tömbelemeket az abszolút értékeikre, majd kiírja a tömböt. Előbb csináljuk meg tömb nélkül. Mikor nem megfelelő ez a megoldás? Használjunk tömböket ugyan erre! Oldjuk meg úgy a feladatot, hogy az egyes műveleteket (beolvasás, abszolútérték, kiíratás) egy-egy függvény valósítsa meg!

Feladat (f0143) Készíts egy programot, amely beolvas legfeljebb 256 egész számot, eltárolja őket egy tömbben, majd a tömböt úgy alakítja át, hogy a sorban egymás után ismétlődő elemek közül csak egyet hagy meg. Hogy fog kinézni az algoritmus? Milyen részei lesznek? Milyen függvényeket írjunk?

Feladat (f0144) Készíts egy programot, amely beolvas legfeljebb 255 nemnegatív egész számot, majd kiírja a sorozat elemeinek a sorozat minimumától való eltérését. A program inputja egy nemnegatív számokból álló legfeljebb 255 elemű számsorozat, melyet a -1 érték zár. A program kimenete egy ugyanennyi elemű nemnegatív számsorozat, ahol az egyes elemek az adott input elem minimumtól való eltérését mutatja. A kimenetben a számok egy-egy szóközzel vannak elválasztva, a sort pedig egy sorvége jel zárja.

Stringek C-ben nincs külön típus a szövegek (stringek) tárolására A szöveget karakterek tömbjeként tárolja Egy tömbelem = egy karakter a szövegben Szöveg végét speciális végejellel jelöli '\0' = 0 Ez bárhol lehet a tömbön belül, tehát tárolhatunk rövidebb szöveget is a tömbben, mert kiíratáskor csak eddig lesz feldolgozva

Stringek Szöveg vége jel mindig legyen máshogy nem tudnánk, meddig tart a szöveg Mindig számoljuk bele, mikor helyet foglalunk neki 10 karakteres szóhoz mekkora tömb fog kelleni?

Stringek Pl. char szo[10] = "alma"; 0 1 2 3 4 5 6 7 8 9 a l m a \0????? Ilyen esetben a méret egyébként el is hagyható, akkor pontosan akkora helyet foglal neki a C, amekkora szükséges

Stringek Nem lehet közvetlenül értéket adni neki, csak 1) Kezdeti értékadással (=inicializálással) 2) Betűnkénti megadással 3) Beolvasással 4)strcpy függvénnyel

String értékadási módok Inicializálással char szo[] = Hello World ; Karakterenkénti értékadással char szo[5]; szo[0] = 'H'; szo[1] = 'e';...

String értékadási módok Beolvasással char szo[20]; scanf( %s, szo); strcpy függvénnyel char szo[20]; strcpy(szo, Hello World!\n );

Stringek IO Beolvasáskor és kiíratáskor a %s formátumkaraktert kell használni Pl. scanf("%s", nev); printf("%s", nev); Ide nem kell & jel!

Feladat (f0134) Vizsgáld meg a sztring.c programot. Mi a hiba? Javítsd ki úgy, hogy a) az str változó inicializálással kapjon értéket, és úgy is, hogy b) az str változó NE inicializálással kapjon értéket! (ezzel dolgozz tovább)

Feladat (f0134) Mi a különbség a két kiíratás között? Mely esetben lenne látható a különbség? A kiíratások előtt cseréld le az str változó 2. karakterét '%'-ra. Mit tapasztalsz? A kiíratások előtt cseréld le az str változó 6. karakterét '\0'-ra (nullás kódú karaktere). Mit tapasztalsz? Kiíratások után cseréld vissza ugyanezt a karaktert az eredeti értékére, majd újból írasd ki a sztringet. Mit tapasztalsz? Írasd ki a teljes str tömb minden karakterét, és hasonlítsd össze a sztringként kiírt értékkel. A sztring méretét csökkentsd 4-re. Mit tapasztalsz?

Feladat (f0169) Határozd meg egy 128 karakter méretű tömbben elférő, a felhasználó által megadott sztring hosszát. Először saját ötlettel álljunk neki. Vajon hogy tudjuk megszámolni? Használjuk a <string.h> erre alkalmas függvényét.

Feladat (f0137) Készíts egy programot, amely beolvas egy legfeljebb 127 karakter hosszú sztringet, egy másik változóba megfordítja, majd kiírja a megfordított értéket.

Feladat (f0139) Készíts egy programot, amely beolvas egy legfeljebb 255 karakter hosszú sztringet, majd kiírja a sztringben található számjegyek számát. Használjunk függvényeket mik fognak kelleni? Valósítsuk meg a feladatot!

Jövő hét Jövő héten 2. mini ZH a múlt heti anyagból! Vezérlési szerkezetek (feltételes, ismétléses) műveletek (összeadás, kivonás, szorzás, valós és maradékos osztás) logikai kifejezések (relációs jelek, &&,,!)