Informatika2-2013

A MathWikiből
(Változatok közti eltérés)
 
(3 szerkesztő 82 közbeeső változata nincs mutatva)
1. sor: 1. sor:
 +
 +
  
 
== Tárgykövetelmények (BMETE91AM25) ==
 
== Tárgykövetelmények (BMETE91AM25) ==
7. sor: 9. sor:
  
 
'''Félévközi számonkérések:'''
 
'''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
 
* 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
 
** 1. zh: 8. hét; pótlás: 14. hét, témája: C programozási nyelv
21. sor: 27. sor:
 
'''Konzultációk:''' ZH előtt vagy szükség esetén.
 
'''Konzultációk:''' ZH előtt vagy szükség esetén.
  
== 1. gyakorlat ==
+
[https://docs.google.com/spreadsheet/ccc?key=0Al4MbIseceL8dFJVVFBoWGs0eUNILUxuY1NzN3RxTEE&usp=sharing Eredmények]
 
+
=== 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>
+
gcc -o hello hello.c
+
</code>
+
 
+
Futtasd le a kapott programot!
+
 
+
===== Második fordítás gcc-vel =====
+
 
+
Mostantól használjuk a gcc warning-kapcsolóit, hogy lássuk a kisebb hibákat, figyelmeztetéseket is!
+
 
+
<code>
+
gcc -W -Wall -o hello hello.c
+
</code>
+
 
+
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):
+
* 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 />
+
 
+
=== CodeBlocks használata ===
+
 
+
==== Használat ====
+
 
+
* 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''.
+
* 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 />
+
 
+
=== CodeLite használata ===
+
 
+
==== Beállítások ====
+
* 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 ====
+
 
+
* 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).
+
* 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!
+
 
+
<br />
+
=== Feladatok ===
+
  
Minden feladatot új file-ba mentsd a CodeBlocks-ban (esetleg Codelite-ban új project-be)!
+
== Ajánlott irodalom, linkek ==
 +
[http://math.bme.hu/~kkovacs/python_install/python_install.html Python installálás windowsra]
  
===== 1. Feltételes print =====
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Osszefoglalas1_6 Összefoglalás az 1. ZH-ra]
  
===== Segítség =====
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Osszefoglalas8_11 Összefoglalás a 2. ZH-ra]
  
A következõ egy egyszerû feltétel, leteszteli hogy 'x' nulla vagy nem, majd kiírja a számot:
+
== Előadás ==
  
<c>
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Eloadas A C nyelvről]
#include<stdio.h>
+
  
int main(void) {
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Eloadas_Python A Python nyelvről]
    int x = -5;
+
   
+
    if(x == 0){
+
        printf("Nulla");
+
    } else{
+
        printf("Nem nulla");
+
    }
+
    printf("A szam: %d \n\n", x);
+
  
    return 0;
+
[http://wiki.math.bme.hu/view/Informatika2-2013/EloadasKerdesek Ellenőrző kérdések - C]
}
+
</c>
+
  
Egészítsd ki a következő kódot a megjegyzések helyén!
+
== Gyakorlatok ==
 +
'''C'''
  
<c>
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat01 1. gyakorlat]
#include<stdio.h>
+
  
int main(void) {
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat02 2. 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/Gyakorlat03 3. gyakorlat]
    printf("Y erteke: %d\n", y);
+
  
    printf("\n");
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat04 4. 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/Gyakorlat05 5. 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/Gyakorlat06 6. 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/Gyakorlat07 7. gyakorlat]
  
<c>
+
'''Python'''
    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. gyakorlat ==
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat08 8. gyakorlat]
  
===== 1. For ciklus =====
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat09 9. 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/Gyakorlat10 10. 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/Gyakorlat11 11. 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/Gyakorlat12 12. gyakorlat]
  
<c>
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat13 13. gyakorlat]
#include<stdio.h>
+
  
int main(void) {
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat14 14. gyakorlat]
    /* 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>
+
  
===== 2. Do / while ciklusok =====
+
== 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
  
Í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!
+
A levél tárgya a következő formátumú legyen:
 +
<tankör>_HF<a feladat száma>_<felhasználói név> <br />
 +
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")
  
Segítség a nem egész értékű változó (''atlag'') kiírásához:
+
'''C'''
<c>
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi01 1. házi] (mindenkinek március 1 a határidõ)
    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/Hazi02 2. házi]
  
<c>
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi03 3. házi] (mindenkinek március 15 a határidõ)
do {
+
    /* utasítások amik minden körben lefutnak */
+
} while (/* feltétel */);
+
</c>
+
  
<c>
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi04 4. házi] (kedd, szerdai csoport: március 22 a határidõ, péntek: 29)
while ( /* feltétel */ ) {
+
    /* utasítások amik minden körben lefutnak */
+
}
+
</c>
+
  
<br />
+
* [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)
  
===== 3. Egyszerű gyökkeresés =====
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi06 6. házi] (kedd, szerdai leadási határidõ: április 7, pénteki: április 12)
  
Egészítsd ki a következő kódot, amely megkeresi az 5329 négyzetgyökét (lesz neki, és egész)!<br\>
+
'''Python'''
(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/Hazi07 7. házi] (kiadva: április 9-én)
    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/Hazi08 8. házi]
    return 0;
+
}
+
</c>
+
  
===== 4. Sakktábla =====
+
* [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)
  
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!
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi10 10. házi]
  
Tipp: a ciklusokat egymásba is ágyazhatjuk, de ilyenkor nagyon kell figyelni a ciklusváltozókra!
+
'''PótHázik''' (határidõ május 24.)
  
Egymásba ágyazott ciklus példa:
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/PotHazi1 1. pótházi] (C)
<c>
+
#include<stdio.h>
+
  
int main(void) {
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/PotHazi2 2. pótházi] (Python)
    int i;
+
    int j;
+
  
    for(i = 0; i < 10; i++) {
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/PotHazi3 3. pótházi] (Python)
        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