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

Hasonló dokumentumok
Programozás I. gyakorlat

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

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

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

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

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

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

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

1. Írjunk programot mely beolvas két számot és ellenőrzi hogy mindkét szám zérus-e:

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

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

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

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

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

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

BME MOGI Gépészeti informatika 1.

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

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

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

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

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

INFORMATIKA javítókulcs 2016

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

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

1. Alapok. Programozás II

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

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

Programozás I gyakorlat

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

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.

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

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

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

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

INFORMATIKA tétel 2018

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

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

Vezérlési szerkezetek. Szelekció Ciklusok

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

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

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)

Programozás I. gyakorlat

Megoldott programozási feladatok standard C-ben

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

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

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

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

1. Gyakorlat. Rövid elméleti összefoglaló. <tárolási osztály>típus <típus > változónév <= kezdőérték><, >;

Programozás C++ -ban 2007/1

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

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

M veletek és kifejezések

Programzás I gyakorlat

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

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

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

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

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

1. Olvassuk be két pont koordinátáit: (x1, y1) és (x2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki.

Vezérlési szerkezetek

Adatbázis rendszerek Gy: Algoritmusok C-ben

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

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

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

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

C programozási nyelv

3 A C programozási nyelv szintaktikai egységei

Informatika terméktervezőknek

I. Specifikáció készítés. II. Algoritmus készítés

Maximum kiválasztás tömbben

Programozás C és C++ -ban

BASH SCRIPT SHELL JEGYZETEK

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

Bevezetés a programozásba I.

Bevezetés a Programozásba II 2. előadás. Adattípusok megvalósítása egységbe zárással. Adattípusok megvalósítása egységbe zárással

1. Alapok. #!/bin/bash

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Pénzügyi algoritmusok

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

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

INFORMATIKAI ALAPISMERETEK

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

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

Megoldott programozási feladatok standard C-ben

Bevezetés a programozásba I.

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

Adatbázis és szoftverfejlesztés elmélet

INFORMATIKAI ALAPISMERETEK

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

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

Algoritmusok pszeudókód... 1

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

Szoftvertervezés és -fejlesztés I.

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

Programozás I gyakorlat

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

Programozás C és C++ -ban

A C programozási nyelv

Átírás:

Programozás alapjai 2.Gy: A C nyelv alapjai. P R O A L A G 1/32 B ITv: MAN 2018.10.02

Code::Blocks Indítsa el mindenki! 2/32

1 Code::Blocks Új projekt 2 3 4 5 3/32

Code::Blocks Forráskód Kód fordítása: Build \ Build 2x Project Manager Source code Mindig kapunk egy ilyen alap-kódot! Kód futtatása: Build \ Run Egyszerre: Build \ Build and run 4/32 Logs window Amíg látszik a Terminál ablak, nem lehet újra futtatni a kódot!

Code::Blocks Hiba Vegyünk ki egy aposztrófot! Aztán Build and run Sikertelen fordításkor a hibás sor elején piros jel jelenik meg, és kiíródik a Logs területre a fordító üzenete. Ha nem látszik a Logs ablak, akkor View \ Logs bekapcsolása! Javítsuk, futtassuk! 5/32

A C nyelvű kód #include könyvtári modul hívása könyvtári modul: megírt függvények gyűjteménye, pl. beolvasás a billentyűzetről, kiírás a képernyőre, gyökvonás int main { printf( szöveg ); kiírás a képernyőre return 0; a main függvény visszatérő értéke 6/32 Ez a főprogram, az ebben lévő utasítások hajtódnak végre Mindig ilyen szerkezetű a C program!

Az első program # include <stdio.h> int main ( ) { printf ( Helló Világ! \n ); return 0; Könyvtári modul hívás Főprogram Sorvégjel Sortörés Képernyőre író függvény A főprogram visszatérő értéke 7/32

A programkészítés menete # include <stdio.h> void main ( ) { printf ( Helló Világ! \n ); Prg1.c Szövegszerkesztő (editor) Fordítóprogram Könyvtári modul stdio.h 1FF0 35BB 337DD 239C 410F 396A C44D 006A stdio.h printf 410F 396D 5CF3 B00A 3CDA 4107 FAC4 660D Tárgykódú modul Prg1.obj 1.Megírjuk a forráskódot, és lefordítjuk. 2.A lefordított kódhoz hozzáadjuk a meghívott könyvtári modulokat 3.A linker összeszerkeszti a programot 8/32 4.Végeredmény: a futtatható (exe) program Linker 10011110 11000011 10101100 10111000 00101100 10010010 10010000 01111011 Prg1.exe

Standard könyvtári modulok A standard függvények deklarációját standard könyvtári modulok (header fájlok) tartalmazzák. Az #include un. direktíva a forrásszövegbe beszúrja a megadott fájlt: A standard input-output függvények és konstansok deklarációinak beillesztése (ez mindig kell!): #include <stdio.h> Vegyes gyűjtemény, egy átlagos programozónak nincs rá szüksége, kitörölhető a kódból: #include <stdlib.h> Matematikai függvények deklarációi: #include <math.h> Saját függvények deklarációi 9/32 #include "fuggvenyeim.h"

Kiírás C nyelven (1.) Egyszerű szöveg kiírása (aposztrófok között): printf("helló Világ!"); Szöveg és érték kiírása: Az aposztrófok között %-jel után megadható a kiírt érték típusa, utána vesszővel elválasztva az értéket tartalmazó változó neve. A sum nevű változó értéke fog d típusú adatként a % helyén kiíródni! printf("összeg: a+b+c = %d", sum); Az érték típusa változó elválasztó 10/32

Kiírás C nyelven (2.) Szöveg és érték kiírása megadott módon: \-jel után megadható a kiírás módja, pl: \n sortörés \t tabulálás \\ \ jel kiírása \ kiírása A sum nevű változó értéke fog d típusú adatként a % helyén kiíródni! printf("összeg: a+b+c = %d\n", sum); sortörés A printf() külön tartalmazza a kiírandó szöveget és a kiírást befolyásoló változókat. Ami a dupla idézőjelek között megjelenik változtatás nélkül kiírásra kerül, kivétel ez alól a \ és % karaktereket követő jel, vagy a jelsorozat. 11/32

Változó deklaráció A C nyelvben minden változót kötelező deklarálni! Szintaktikája: Változó: típus azonosító[,azonosító]; Pl. int a, b, c; unsigned int ertek=0; Tömb: típus azonosító[elemek száma]; Pl. int szamok[10]; Az indexelés 0-tól indul! 12/32 Deklarálás Inicializálás

Példa 1. Három szám összege # include <stdio.h> void main ( ) { int a, b, c; int sum=0; a=1; b=2; c=3; sum =a+b+c; printf ("Összeg: a+b+c = %d\n", sum); Összeg: a+b+c = 6 Visszatérési érték típusaként megadva jelzi, hogy nincs visszatérési érték! Ha void a main, nem kell a return 0; utasítás! 13/32

Példa 2. Kör területe # include <stdio.h> void main ( ) { float r, terulet; const float PI=3.14159; r=2.2; terulet = r*r*pi; Tizedes tört formátum: 6 helyen, 2 tizedessel printf ("Az r = %6.2f sugarú kör területe:%10.2f\n", r, terulet); Az r = 2.20 sugarú kör területe: 15.21 14/32

Példa 3. int char # include <stdio.h> void main ( ) { char kar= A ; char egesz=55; printf ( Karakterek: %c és %c\n,kar, egesz); printf ( Egészek: %d és %d\n,kar, egesz); Karakterek: A és 7 Egészek: 65 és 55 Karakter típus 15/32

Példa 4. - Túlcsordulás # include <stdio.h> Tárolás 1 bájton, tartománya: 0.. 255 void main ( ) { unsigned char a, b, s; a=100; b=100; s = a+b; printf("a=%4d, b=%4d, s=%4d\n", a, b, s); a=200; b=200; s = a+b; printf("a=%4d, b=%4d, s=%4d\n", a, b, s); a= 100, b= 100, c= 200 a= 200, b= 200, c= 144 16/32

Egyszerű input scanf ( ) A standard inputról végez formázott bevitelt Ugyanazok a formátum elírások, mint a printf-nél A scanf függvénynek a változó címét kell átadnunk, ahová tennie kell a beolvasott értéket a konverzió után a %d és a %f formátummal történ beolvasás esetén! 17/32

Példa 5. Egész, valós, szöveg beolvasás # include <stdio.h> void main ( ) { int i; float x; char name [50]; scanf ("%d %f %s", &i, &x, name); printf("i=%d, x=%8.2f, name=%s\n", i, x, name); 14 3.5 BitMan i=14, x= 3.50, name= BitMan Nem írja ki semmit, csak beolvassa az adatokat. Nem elegáns, de működik! 18/32

Példa 6. Kör sugara # include <stdio.h> Kiír egy szöveget, aztán void main ( ) { beolvas egy adatot. Normális megoldás! float r, terulet; const float PI=3.14159; printf("kérem a kör sugarát: "); scanf ("%f", &r); terulet = r*r*pi; printf ("Az r= %6.2f sugarú kör területe:%10.2f \n", r, terulet); Kérem a kör sugarát: 3.6 Az r= 3.60 sugarú kör területe: 40.72 19/32 B ITI T MAN

Feladat Készítsünk kalkulátort. Adjon meg két számot, es végezzen el rajtuk valamilyen aritmetikai műveletet. Az eredményt írassa ki a képernyőre. Módosítsa úgy a programot, hogy kérje be a felhasználótól a számokat. Egész es valós értékekkel is próbálják ki! 20/32

Kalkulátor 1. #include <stdio.h> int main() { printf("szamolas fix adatokkal!\n"); printf("%d * %d = %d\n", 7, 4, 7*4); return 0; #include <stdio.h> int main(){ int a=5, b=2, c=a*b; printf("szamolas fix adatokkal!\n"); printf("%d * %d = %d\n", a, b, c); return 0; 21/32

Kalkulátor 2. #include <stdio.h> int main(){ int a=5, b=2, c=a/b; printf("szamolas fix adatokkal!\n"); printf("%d / %d = %d\n", a, b, c); return 0; #include <stdio.h> int main(){ int a=5, b=2; float c=a/b; printf("szamolas fix adatokkal!\n"); printf("%d / %d = %f\n", a, b, c); return 0; 22/32

Kalkulátor 3. #include <stdio.h> int main(){ int a=5, b=2; float c=(float)a/b; printf("szamolas fix adatokkal!\n"); printf("%d / %d = %.2f\n", a, b, c); return 0; 23/32

Kalkulátor 3. #include <stdio.h> int main(){ int a, b; float c; printf("szamolas beolvasott adatokkal!\n"); printf("a="); scanf("%d", &a); printf("b="); scanf("%d", &b); c=(float)a/b; printf("%d / %d = %.2f\n", a, b, c); return 0; 24/32

Feladat Olvassuk be egy kör sugarát, és írassuk a kör területét és kerületét. A sugár legyen valós szám. #include <stdio.h> void main(){ float r; double k, t, pi = 3.14; printf("\nadja meg a kor sugarat: "); scanf("%f", &r); t = r*r*pi; k = 2*r*pi; printf("\na kor terulete: %f\n", t); printf("\na kor kerulete: %f\n", k); Double típusú változót nem lehet beolvasni, a scanf erre alkalmatlan! Double értéket általában float-ként írunk ki. A %e kóddal lehet double-ként kiíratni, ekkor így íródik ki: 4.069440e+001 25/32

Feladat Olvassuk be egy kör sugarát, és írassuk a kör területét és kerületét. Használjuk a math könyvtárat! #include <stdio.h> #include <math.h> main(){ float r; double k, t; printf("\nadja meg a kor sugarat: "); scanf("%f", &r); t = r*r*m_pi; k = 2*r*M_PI; printf("\na kor terulete: %f\n", t); printf("\na kor kerulete: %f\n", k); A math.h standard header állományban definiálva van a PI konstans: M_PI néven 26/32

Feladat Írjon C programot, amely kiszámítja a háromszög területét oldalainak megadásával. Használja a Héron képletet: t 2 = s(s-a)(s-b)(s-c), ahol a, b, c a háromszög oldalainak a hossza es s a kerület fele. Ügyeljen a változók típusára! A terület meghatározásához használja a négyzetgyökvonást végrehajtó függvényt: double sqrt(double num). Ennek deklarációját a math.h standard header állomány tartalmazza. 27/32

A C nyelvű kód #include <stdio.h> #include<math.h> void main(){ int a, b, c; double t, t2, s; printf("\n A haromszog oldalai: "); scanf("%d, %d, %d", &a, &b, &c); A vesszők miatt így kell s = (double)(a + b + c) / 2; megadni az adatokat: t2 = s*(s-a)*(s-b)*(s-c); t = sqrt(t2); printf("\na haromszog terulete: %.2f, kerulete: %d\n", t, a+b+c); 28/32

Feladat Határozza meg egy beolvasott egész szám abszolút értékét. Felhasználjuk a C nyelv legjellegzetesebb operátorát. #include <stdio.h> void main(){ int szam, absz; printf("\nadja meg a szamot: "); scanf("%d", &szam); absz = szam<0? szam*(-1):szam; printf("\n%d abszolut erteke: %d", szam, absz); c=(a<b?a:b); Értelmezése: ha a kisebb b állítás igaz, akkor c legyen egyenlő a-val, egyébként c legyen egyenlő b-vel. 29/32

Feladat Olvassunk be egy egész számot, és döntsük el róla, hogy páros, vagy páratlan. #include <stdio.h> void main() { int a; printf("\nkerek egy egesz szamot: "); scanf("%d", &a); printf( (a%2==0)? " Paros":" Paratlan" ); a%2 az a osztva 2-vel osztási maradéka printf(a<b? a : b ); Értelmezése: ha a kisebb b állítás igaz, akkor kiírja a-t, egyébként kiírja b-t. 30/32

Házi feladatok 1. Írjon C programot, amely bekéri egy téglalap 2 oldalának hosszát és kiszámítja a téglalap területét és kerületét. 2. Írjon C programot, amely segédváltozó használatával felcserél két beolvasott értéket. 3. Írjon C programot, amely két megadott számról eldönti a feltételes operátor használatával, hogy melyik a nagyobb. 4. Készítsen C programot, amely bekéri egy téglatest három oldalának hosszát és kiszámítja annak felszínét (A = 2 * (a*b + a*c + b*c)) és térfogatát (V= a*b*c). A felszín számításánál ügyeljen a helyes zárójelezésre (a műveletek precedenciájára)! 31/32

VÉGE VÉGE 32/32