Informatika2-2013

A MathWikiből
(Változatok közti eltérés)
(Feladatok)
 
(3 szerkesztő 87 közbeeső változata nincs mutatva)
1. sor: 1. sor:
== C fordítás konzolban ==
 
  
===== Első fordítás gcc-vel =====
 
Nyiss egy szövegszerkesztőt, és másold be egy új fájlba a "hello.c" kódját:
 
<c>
 
#include <stdio.h>
 
int main() {
 
    int x = 2;
 
    printf("hello world! %d\n", x);
 
    return 0;
 
}
 
</c>
 
Nyiss egy konzolt és menj abba a könyvtárba (cd paranccsal) ahová elmentetted a "hello.c"-t.
 
  
Fordítsd le, készíts "hello" nevű futtatható fájlt:
 
  
<code>
+
== Tárgykövetelmények (BMETE91AM25) ==
gcc -o hello hello.c
+
</code>
+
  
Futtasd le a kapott programot!
+
'''Eladó/gyakvezető:''' Wettl Ferenc, Kovács Kristóf, Pálovics Róbert
  
===== Második fordítás gcc-vel =====
+
'''Jelenléti követelmények:''' A legalább elégséges félévközi jegy megszerzésének szükséges feltétele legalább 10 laborgyakorlaton való részvétel, melyet a gyakorlat eleji kis zárthelyikkel ellenőrzünk. Egy laborgyakorlatról való hiányzás kivételes esetben valamely párhuzamosan meghirdetett megfelelő gyakorlaton való igazolt részvétellel pótolható.
  
Mostantól használjuk a gcc warning-kapcsolóit, hogy lássuk a kisebb hibákat, figyelmeztetéseket is!
+
'''Félévközi számonkérések:'''
 +
* '''1. ZH időpontja és helyszíne: 8.hét, Április 5. Péntek, 16-18, F2E'''
 +
* '''2. ZH időpontja és helyszíne: 13.hét, Május 10. Péntek, 16-18, Q-I'''
 +
* '''pót ZH időpontja és helyszíne: 14.hét, Május 17. Péntek, 16-18, H607'''
 +
* '''pótpót ZH időpontja és helyszíne: póthét, Május 22. Szerda, 10-12, ST földszint nagy'''
 +
* 2 db 25 pontos zárthelyi dolgozat
 +
** 1. zh: 8. hét; pótlás: 14. hét, témája: C programozási nyelv
 +
** 2. zh: 13. hét; pótlás: 14. hét, témája: Python programozási nyelv
 +
* 12 db 5 pontos programozási feladat megoldása.
 +
* 10 db 1 pontos röpdolgozat megoldása
  
<code>
+
'''A félév végi osztályzat:''' Az elégtelentől különböző félévközi jegy elérésének feltétele ­ a jelenléti követelmények teljesítésén túl, hogy a zárthelyi dolgozatok elérjék a 10 pontot, a 8 legjobb programozási feladat mindegyike legalább 2 pont legyen, és a röpdolgozatokból összegyűljön 4 pont. Ekkor a félévközi jegy a zárthelyik, a röpdolgozatok és a 8 legjobb programozási feladat összpontszáma alapján az alábbi módon adódik:
gcc -W -Wall -o hello hello.c
+
* 38 ponttól 54 pontig: elégséges (2)
</code>
+
* 55 ponttól 69 pontig: közepes (3)
 +
* 70 ponttól 84 pontig: jó (4)
 +
* 85 ponttól 100 pontig: jeles (5)
  
Rontsd el a "hello.c" kódot a következő módokon, majd mindig mentsd el és fordítsd le újra (és a következő elrontás előtt mindig állítsd vissza a helyes verziót):
+
'''Konzultációk:''' ZH előtt vagy szükség esetén.
* törölsz egy pontosvesszőt a sor végéről
+
* a printf-es sorban x helyett valami más betűt írsz
+
* létrehozol egy y nevű egész típusú változót az x után, de nem használod a kódban
+
* kitörlöd az utolsó } -t
+
* törlöd a "return 0;" sort
+
* töröld a legelsõ #include sort
+
  
<br />
+
[https://docs.google.com/spreadsheet/ccc?key=0Al4MbIseceL8dFJVVFBoWGs0eUNILUxuY1NzN3RxTEE&usp=sharing Eredmények]
  
== CodeBlocks használata ==
+
== Ajánlott irodalom, linkek ==
 +
[http://math.bme.hu/~kkovacs/python_install/python_install.html Python installálás windowsra]
  
==== Használat ====
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Osszefoglalas1_6 Összefoglalás az 1. ZH-ra]
  
* A feladatokhoz hozzatok létre mindig egy új üres file-t (File / New / Empty file), ezt mindenképpen .c kiterjesztéssel mentsétek el pl: ''feladat1.c''.
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Osszefoglalas8_11 Összefoglalás a 2. ZH-ra]
* Fordítani a Build / Build-el tudtok, vagy a megfelelõ ikonnal, a lefordított programot a Build / Run -al indíthatjátok, vagy egyszerûbben F9-el fordíthattok majd utána azonnal indíthatjátok is a programot.
+
  
<br />
+
== Előadás ==
  
== CodeLite használata ==
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Eloadas A C nyelvről]
  
==== Beállítások ====
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Eloadas_Python A Python nyelvről]
* Indítsd el a CodeLite fejlesztői környezetet!
+
* Állítsd át az indentálást (tabulálást/beljebbezést) a ''Settings -> Global Editor Preferences'' menüpont alatt a ''General -> Indentaiton'' résznél hogy ne használjon tab karaktereket
+
* Hozz létre egy új Workspace-et és benne egy új projektet (mindenképp külön könyvtárban: ''Create the project under a separate directory'' legyen bepipálva), segítség [http://www.math.bme.hu/~kkovacs/codelite/codelite_install.html itt] az oldal vége felé
+
  
==== Használat ====
+
[http://wiki.math.bme.hu/view/Informatika2-2013/EloadasKerdesek Ellenőrző kérdések - C]
  
* Minden feladat megoldását új projektbe kell tenni, hogy a ''main()'' függvények ne ütközzenek (egy projekten belül nem lehet több belőle).
+
== Gyakorlatok ==
* A narancssárga az aktív projekt a workspace-en belül. Ha menüből kiválasztod a fordítást (''Build -> Build project'' vagy F7 billentyű) akkor ez mindig az aktív projektet fogja lefordítani, ha épp másik file van megnyitva a szerkesztődben, akkor is! Ugyanígy a futtatásnál is (menüből ''Build -> Run'' vagy Ctrl-F7) az aktív projekt ''main()'' függvénye fog lefutni!
+
'''C'''
  
<br />
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat01 1. gyakorlat]
== Feladatok ==
+
  
Minden feladatot új file-ba mentsd a CodeBlocks-ban (esetleg Codelite-ban új project-be)!
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat02 2. gyakorlat]
  
===== 1. Feltételes print =====
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat03 3. gyakorlat]
  
===== Segítség =====
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat04 4. gyakorlat]
  
A következõ egy egyszerû feltétel, leteszteli hogy 'x' pozitív vagy negatív esetleg nulla, majd kiírja a számot:
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat05 5. gyakorlat]
  
<c>
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat06 6. gyakorlat]
#include<stdio.h>
+
  
int main(void) {
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat07 7. gyakorlat]
    int x = -5;
+
   
+
    if(x > 0){
+
        printf("Pozitiv");
+
    } else if(x < 0){
+
        printf("Negativ");
+
    } else{
+
        printf("Nulla");
+
    }
+
    printf("A szam: %d \n\n", x);
+
  
    return 0;
+
'''Python'''
}
+
</c>
+
  
Egészítsd ki a következő kódot a megjegyzések helyén!
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat08 8. gyakorlat]
  
<c>
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat09 9. gyakorlat]
#include<stdio.h>
+
  
int main(void) {
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat10 10. gyakorlat]
    /* x és y változók deklarálása, értékadás */
+
  
    printf("X erteke: %d\n", x);
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat11 11. gyakorlat]
    printf("Y erteke: %d\n", y);
+
  
    printf("\n");
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat12 12. gyakorlat]
  
    /* egy feltételes utasítással (if, else if, else) érd el hogy mindig igaz állítás kerüljön a képernyőre */
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat13 13. gyakorlat]
    printf("%d nagyobb mint %d!\n", x, y);
+
    printf("%d nagyobb mint %d!\n", y, x);
+
    printf("%d ugyanannyi mint %d!\n", x, x);
+
  
    return 0;
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat14 14. gyakorlat]
}
+
</c>
+
  
Ha kész, módosítsd úgy a kódot, hogy ne legyen beleírva az elején az ''x'' és az ''y'' értéke, hanem a program a felhasználótól kérjen be egész számokat, a ''scanf()'' függvény segítségével! Példa egy ''z'' egész típusú változó bekérésére:
+
== Házi feladatok ==
 +
Beadási határidő: mindig a következő gyakorlat előtti éjfél.<br />
 +
A c kódokat ide küldjétek: info2 PONT hazi PONT bme KUKAC gmail PONT com
  
<c>
+
A levél tárgya a következő formátumú legyen:
    int z;
+
<tankör>_HF<a feladat száma>_<felhasználói név> <br />
    printf("Add meg z értékét: ");
+
Tehát ha pl. a T2 tankör kovacs loginnevű hallgatójának 1. házijához az email tárgya:
    scanf("%d", &z);
+
  T2_HF1_kovacs
    /* innentől z-nek van értéke (ha a felhasználó tényleg egész számot adott meg) */
+
Csatolt fájlok esetén is ezt a konvenciót használjátok. (Pl. "T2_HF1_kovacs.c")
</c>
+
  
===== 2. For ciklus =====
+
'''C'''
Segítségnek itt egy for ciklus példa: 0-tól 9-ig kiírjuk a számokat, vagyis a ciklusváltozó értékét (általában ''i''-nek vagy ''j''-nek nevezzük a ciklusváltozót, ami tipikusan minden körben növekszik eggyel, de persze máshogy is lehetne):
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi01 1. házi] (mindenkinek március 1 a határidõ)
  
<c>
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi02 2. házi]
int i;
+
for (i=0; i<10; i++) {
+
    printf("A ciklusváltozo erteke: %d\n", i);
+
}
+
</c>
+
  
Egészítsd ki a következő kódot a megjegyzések helyén! Egy-egy külön változóban legyen a ciklusváltozó kezdőértéke (''start_i'') és utolsó értéke (''end_i''), adj nekik értéket!
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi03 3. házi] (mindenkinek március 15 a határidõ)
  
A for ciklusban ''i'' legyen a ciklusváltozó, és az értéke hármasával növekedjen vagy csökkenjen (attól függően hogy ''start_i'' vagy ''end_i'' a nagyobb).
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi04 4. házi] (kedd, szerdai csoport: március 22 a határidõ, péntek: 29)
  
<c>
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi05 5. házi] (a ZH-ra való tekintettel a pénteki csoport leadási határideje: április 7, viszont a házi megoldása jó gyakorlás a ZH-ra)
#include<stdio.h>
+
  
int main(void) {
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi06 6. házi] (kedd, szerdai leadási határidõ: április 7, pénteki: április 12)
    /* start_i és end_i változók deklarálása, értékadás */
+
    /* i-t is deklarálni kell ! */
+
   
+
    for (/* inic. */ ; /* feltétel */; /* minden ciklusmag végén */) {
+
        printf("%d\n", i);
+
    }
+
    return 0;
+
}
+
</c>
+
  
===== 3. Do / while ciklusok =====
+
'''Python'''
  
Írj C kódot, ami a felhasználótól egy ciklusban egész számokat kér be addig, amíg 0 értéket nem kap. Ekkor pedig írja ki a képernyőre a kapott nemnulla számok átlagát!
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi07 7. házi] (kiadva: április 9-én)
  
Segítség a nem egész értékű változó (''atlag'') kiírásához:
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi08 8. házi]
<c>
+
    printf("%f", atlag);
+
</c>
+
  
Oldd meg a feladatot ''do-while'' (hátultesztelő) és ''while'' (elöltesztelő) ciklussal is!
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi09 9. házi] (mindenkinek 14. hét hétfõ a határidõ, de jó gyakorlás a ZH-ra, így ajánlott megoldani)
  
<c>
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi10 10. házi]
do {
+
    /* utasítások amik minden körben lefutnak */
+
} while (/* feltétel */);
+
</c>
+
  
<c>
+
'''PótHázik''' (határidõ május 24.)
while ( /* feltétel */ ) {
+
    /* utasítások amik minden körben lefutnak */
+
}
+
</c>
+
  
<br />
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/PotHazi1 1. pótházi] (C)
  
== Bónusz Feladatok ==
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/PotHazi2 2. pótházi] (Python)
  
===== 4. Egyszerű gyökkeresés =====
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/PotHazi3 3. pótházi] (Python)
 
+
Egészítsd ki a következő kódot, amely megkeresi az 5329 négyzetgyökét (lesz neki, és egész)!<br\>
+
(Segítség: nem kell hogy haténkony legyen a kód, elég ha egyesével végigpróbálgatjuk a számokat hogy az-e a gyöke.)
+
<c>
+
#include<stdio.h>
+
 
+
int main(void) {
+
    int szam = 5329;
+
    int gyok;
+
    /* szamolj valamilyen ciklusban, valoszinuleg egy feltetel is kell majd a cikluson belul */  
+
 
+
    printf("A %d gyoke %d\n", szam, gyok);
+
    return 0;
+
}
+
</c>
+
 
+
===== 5. Sakktábla =====
+
 
+
Rajzolj ki egy ''NxN''-es sakktábla mintát, ahol X-szel jelöljük a fekete mezőket, és üresen hagyjuk (egy szóköz) a fehéreket. Nem kell keretet adni a táblának. A sakktábla méretét (''N'') a felhasználótól kérd be!
+
 
+
Tipp: a ciklusokat egymásba is ágyazhatjuk, de ilyenkor nagyon kell figyelni a ciklusváltozókra!
+
 
+
Egymásba ágyazott ciklus példa:
+
<c>
+
#include<stdio.h>
+
 
+
int main(void) {
+
    int i;
+
    int j;
+
 
+
    for(i = 0; i < 10; i++) {
+
        printf("i: %d \n", i);
+
        for(j = 0; j < i; j++) {
+
            printf(" (%d, %d) ", i, j);
+
        }
+
        printf("\n");
+
    }
+
    printf("\n");
+
}
+
</c>
+

A lap jelenlegi, 2013. május 21., 12:13-kori változata


Tartalomjegyzék

Tárgykövetelmények (BMETE91AM25)

Eladó/gyakvezető: Wettl Ferenc, Kovács Kristóf, Pálovics Róbert

Jelenléti követelmények: A legalább elégséges félévközi jegy megszerzésének szükséges feltétele legalább 10 laborgyakorlaton való részvétel, melyet a gyakorlat eleji kis zárthelyikkel ellenőrzünk. Egy laborgyakorlatról való hiányzás kivételes esetben valamely párhuzamosan meghirdetett megfelelő gyakorlaton való igazolt részvétellel pótolható.

Félévközi számonkérések:

  • 1. ZH időpontja és helyszíne: 8.hét, Április 5. Péntek, 16-18, F2E
  • 2. ZH időpontja és helyszíne: 13.hét, Május 10. Péntek, 16-18, Q-I
  • pót ZH időpontja és helyszíne: 14.hét, Május 17. Péntek, 16-18, H607
  • pótpót ZH időpontja és helyszíne: póthét, Május 22. Szerda, 10-12, ST földszint nagy
  • 2 db 25 pontos zárthelyi dolgozat
    • 1. zh: 8. hét; pótlás: 14. hét, témája: C programozási nyelv
    • 2. zh: 13. hét; pótlás: 14. hét, témája: Python programozási nyelv
  • 12 db 5 pontos programozási feladat megoldása.
  • 10 db 1 pontos röpdolgozat megoldása

A félév végi osztályzat: Az elégtelentől különböző félévközi jegy elérésének feltétele ­ a jelenléti követelmények teljesítésén túl, hogy a zárthelyi dolgozatok elérjék a 10 pontot, a 8 legjobb programozási feladat mindegyike legalább 2 pont legyen, és a röpdolgozatokból összegyűljön 4 pont. Ekkor a félévközi jegy a zárthelyik, a röpdolgozatok és a 8 legjobb programozási feladat összpontszáma alapján az alábbi módon adódik:

  • 38 ponttól 54 pontig: elégséges (2)
  • 55 ponttól 69 pontig: közepes (3)
  • 70 ponttól 84 pontig: jó (4)
  • 85 ponttól 100 pontig: jeles (5)

Konzultációk: ZH előtt vagy szükség esetén.

Eredmények

Ajánlott irodalom, linkek

Python installálás windowsra

Összefoglalás az 1. ZH-ra

Összefoglalás a 2. ZH-ra

Előadás

A C nyelvről

A Python nyelvről

Ellenőrző kérdések - C

Gyakorlatok

C

1. gyakorlat

2. gyakorlat

3. gyakorlat

4. gyakorlat

5. gyakorlat

6. gyakorlat

7. gyakorlat

Python

8. gyakorlat

9. gyakorlat

10. gyakorlat

11. gyakorlat

12. gyakorlat

13. gyakorlat

14. gyakorlat

Házi feladatok

Beadási határidő: mindig a következő gyakorlat előtti éjfél.
A c kódokat ide küldjétek: info2 PONT hazi PONT bme KUKAC gmail PONT com

A levél tárgya a következő formátumú legyen: <tankör>_HF<a feladat száma>_<felhasználói név>
Tehát ha pl. a T2 tankör kovacs loginnevű hallgatójának 1. házijához az email tárgya:

 T2_HF1_kovacs

Csatolt fájlok esetén is ezt a konvenciót használjátok. (Pl. "T2_HF1_kovacs.c")

C

  • 1. házi (mindenkinek március 1 a határidõ)
  • 3. házi (mindenkinek március 15 a határidõ)
  • 4. házi (kedd, szerdai csoport: március 22 a határidõ, péntek: 29)
  • 5. házi (a ZH-ra való tekintettel a pénteki csoport leadási határideje: április 7, viszont a házi megoldása jó gyakorlás a ZH-ra)
  • 6. házi (kedd, szerdai leadási határidõ: április 7, pénteki: április 12)

Python

  • 9. házi (mindenkinek 14. hét hétfõ a határidõ, de jó gyakorlás a ZH-ra, így ajánlott megoldani)

PótHázik (határidõ május 24.)

Személyes eszközök