Informatika2-2013

A MathWikiből
(Változatok közti eltérés)
(2. Do / while ciklusok)
 
(3 szerkesztő 77 közbeeső változata nincs mutatva)
9. 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
23. 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 ===
+
== Ajánlott irodalom, linkek ==
 +
[http://math.bme.hu/~kkovacs/python_install/python_install.html Python installálás windowsra]
  
===== Első fordítás gcc-vel =====
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Osszefoglalas1_6 Összefoglalás az 1. ZH-ra]
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:
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Osszefoglalas8_11 Összefoglalás a 2. ZH-ra]
  
<code>
+
== Előadás ==
gcc -o hello hello.c
+
</code>
+
  
Futtasd le a kapott programot!
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Eloadas A C nyelvről]
  
===== Második fordítás gcc-vel =====
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Eloadas_Python A Python nyelvről]
  
Mostantól használjuk a gcc warning-kapcsolóit, hogy lássuk a kisebb hibákat, figyelmeztetéseket is!
+
[http://wiki.math.bme.hu/view/Informatika2-2013/EloadasKerdesek Ellenőrző kérdések - C]
  
<code>
+
== Gyakorlatok ==
gcc -W -Wall -o hello hello.c
+
'''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):
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat01 1. gyakorlat]
* 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 />
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat02 2. gyakorlat]
  
=== CodeBlocks használata ===
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat03 3. gyakorlat]
  
==== Használat ====
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat04 4. gyakorlat]
  
* 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/Gyakorlat05 5. gyakorlat]
* 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 />
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat06 6. gyakorlat]
  
=== CodeLite használata ===
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat07 7. gyakorlat]
  
==== Beállítások ====
+
'''Python'''
* 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/Gyakorlat08 8. gyakorlat]
  
* 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).
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat09 9. gyakorlat]
* 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 />
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat10 10. 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/Gyakorlat11 11. gyakorlat]
  
===== 1. Feltételes print =====
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat12 12. gyakorlat]
  
===== Segítség =====
+
[http://wiki.math.bme.hu/view/Informatika2-2013/Gyakorlat13 13. gyakorlat]
  
A következõ egy egyszerû feltétel, leteszteli hogy 'x' nulla vagy nem, majd kiírja a számot:
+
[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:
    int x = -5;
+
<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:
    if(x == 0){
+
  T2_HF1_kovacs
        printf("Nulla");
+
Csatolt fájlok esetén is ezt a konvenciót használjátok. (Pl. "T2_HF1_kovacs.c")
    } else{
+
        printf("Nem nulla");
+
    }
+
    printf("A szam: %d \n\n", x);
+
  
    return 0;
+
'''C'''
}
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi01 1. házi] (mindenkinek március 1 a határidõ)
</c>
+
  
Egészítsd ki a következő kódot a megjegyzések helyén!
+
* [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õ)
#include<stdio.h>
+
  
int main(void) {
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi04 4. házi] (kedd, szerdai csoport: március 22 a határidõ, péntek: 29)
    /* 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/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)
    printf("Y erteke: %d\n", y);
+
  
    printf("\n");
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi06 6. házi] (kedd, szerdai leadási határidõ: április 7, pénteki: április 12)
  
    /* 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/Hazi07 7. házi] (kiadva: április 9-én)
}
+
</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/Hazi08 8. házi]
  
<c>
+
* [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)
    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>
+
  
<br/>
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/Hazi10 10. házi]
<br/>
+
  
== 2. gyakorlat ==
+
'''PótHázik''' (határidõ május 24.)
  
===== 1. For ciklus =====
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/PotHazi1 1. pótházi] (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):
+
  
<c>
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/PotHazi2 2. pótházi] (Python)
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! Adjuk össze a számokat 1-tõl kezdve, egyesével, pl: 1 + 2 + 3 = 6. A programunk azt a számot adja ki, hogy az elsõ hány darab számot kell összeadni, hogy legalább 4212-t kapjunk.
+
* [http://wiki.math.bme.hu/view/Informatika2-2013/PotHazi3 3. pótházi] (Python)
 
+
<c>
+
#include<stdio.h>
+
 
+
int main(void) {
+
    /* változók deklarálása, értékadás */
+
    /* i-t is deklarálni kell ! */
+
   
+
    for (/* inicializálás */ ; /* feltétel */; /* minden ciklusmag végén */) {
+
        /* számolás */
+
    }
+
    /* kiírás */
+
    return 0;
+
}
+
</c>
+
 
+
===== 2. Do / while ciklusok =====
+
Szintaktika:
+
 
+
<c>
+
do {
+
    /* utasítások amik minden körben lefutnak */
+
} while (/* feltétel */);
+
</c>
+
 
+
<c>
+
while ( /* feltétel */ ) {
+
    /* utasítások amik minden körben lefutnak */
+
}
+
</c>
+
 
+
 
+
A következõ kód a felhasználótól egy ciklusban egész számokat kér be addig, amíg 0 értéket nem kap. Ekkor pedig kiírja a képernyőre a kapott nemnulla számok átlagát!
+
 
+
A nem egész értékű változó (''atlag'') kiírásához:
+
<c>
+
    printf("%f", atlag);
+
</c>
+
 
+
Oldd meg a feladatot ''do-while'' (hátultesztelő) és ''while'' (elöltesztelő) ciklussal is!
+
 
+
<c>
+
 
+
</c>
+
 
+
<br />
+
 
+
===== 3. Egyszerű gyökkeresés =====
+
 
+
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>
+
 
+
===== 4. 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>
+
 
+
<!-- Még nem a teljes 2. gyakorlat -->
+

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