Informatika2-2013

A MathWikiből
(Változatok közti eltérés)
(CodeBlocks használata)
 
(3 szerkesztő 91 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
+
  
<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 feladathoz nyiss új projektet a CodeLite-ban!
+
[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]
Egészítsd ki a következő kódot a megjegyzések helyén!
+
  
<c>
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat04 4. gyakorlat]
#include<stdio.h>
+
  
int main(void) {
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat05 5. 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/Gyakorlat06 6. gyakorlat]
    printf("Y erteke: %d\n", y);
+
  
    printf("\n");
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat07 7. 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 */
+
'''Python'''
    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/Gyakorlat08 8. 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:
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat09 9. gyakorlat]
  
<c>
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat10 10. gyakorlat]
    int z;
+
    printf("Add meg z értékét: ");
+
    scanf("%d", &z);
+
    /* innentől z-nek van értéke (ha a felhasználó tényleg egész számot adott meg) */
+
</c>
+
  
===== 2. For ciklus =====
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat11 11. gyakorlat]
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):
+
  
<c>
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat12 12. gyakorlat]
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/Gyakorlat13 13. gyakorlat]
  
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/Gyakorlat14 14. gyakorlat]
  
<c>
+
== Házi feladatok ==
#include<stdio.h>
+
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
  
int main(void) {
+
A levél tárgya a következő formátumú legyen:
    /* start_i és end_i változók deklarálása, értékadás */
+
<tankör>_HF<a feladat száma>_<felhasználói név> <br />
    /* i-t is deklarálni kell ! */
+
Tehát ha pl. a T2 tankör kovacs loginnevű hallgatójának 1. házijához az email tárgya:
   
+
  T2_HF1_kovacs
    for (/* inic. */ ; /* feltétel */; /* minden ciklusmag végén */) {
+
Csatolt fájlok esetén is ezt a konvenciót használjátok. (Pl. "T2_HF1_kovacs.c")
        printf("%d\n", i);
+
    }
+
    return 0;
+
}
+
</c>
+
  
===== 3. Do / while ciklusok =====
+
'''C'''
 +
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi01 1. házi] (mindenkinek március 1 a határidõ)
  
Í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/Hazi02 2. házi]
  
Segítség a nem egész értékű változó (''atlag'') kiírásához:
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi03 3. házi] (mindenkinek március 15 a határidõ)
<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/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)
do {
+
    /* utasítások amik minden körben lefutnak */
+
} while (/* feltétel */);
+
</c>
+
  
<c>
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi06 6. házi] (kedd, szerdai leadási határidõ: április 7, pénteki: április 12)
while ( /* feltétel */ ) {
+
    /* utasítások amik minden körben lefutnak */
+
}
+
</c>
+
  
===== 4. Egyszerű gyökkeresés =====
+
'''Python'''
  
Egészítsd ki a következő kódot, amely megkeresi az 5329 négyzetgyökét (lesz neki, és egész)!<br\>
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi07 7. házi] (kiadva: április 9-én)
(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) {
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi08 8. házi]
    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);
+
* [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)
    return 0;
+
}
+
</c>
+
  
===== 5. Sakktábla =====
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi10 10. házi]
  
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!
+
'''PótHázik''' (határidõ május 24.)
  
Tipp: a ciklusokat egymásba is ágyazhatjuk, de ilyenkor nagyon kell figyelni a ciklusváltozókra!
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/PotHazi1 1. pótházi] (C)
  
Egymásba ágyazott ciklus példa:
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/PotHazi2 2. pótházi] (Python)
<c>
+
#include<stdio.h>
+
  
int main(void) {
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/PotHazi3 3. pótházi] (Python)
    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