Informatika2-2014/Gyakorlat09

A MathWikiből
(Változatok közti eltérés)
 
1. sor: 1. sor:
 
+
=== Előadás ===
 +
https://docs.google.com/presentation/d/1TiC4mp_oNR2o3q5L0lV9nO-Q1YizBtmsYDRB2HByd3w/edit#slide=id.g27017fa94_050
 
=== C fordítás konzolban ===
 
=== C fordítás konzolban ===
  

A lap jelenlegi, 2014. április 16., 13:08-kori változata

Tartalomjegyzék

Előadás

https://docs.google.com/presentation/d/1TiC4mp_oNR2o3q5L0lV9nO-Q1YizBtmsYDRB2HByd3w/edit#slide=id.g27017fa94_050

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:

#include <stdio.h>
int main() {
    int x = 2;
    printf("hello world! %d\n", x);
    return 0;
}

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:

gcc -o hello hello.c

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!

gcc -W -Wall -o hello hello.c


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.


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 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!



Ciklusok

For ciklus

  • A for ciklus nem a sage-ben megszokottak szerint mûködik, hisz itt nincsenek listáink amiket bejárhatnánk.
  • Ehelyett a for a while ciklushoz nagyon hasonlóan mûködik, a szintaxis:
for(inicializálás; feltétel; inkrementálás){
    utasítások
}
  • Az inicializálás részben adhatjuk meg azokat az utasításokat amiket csak egyszer a ciklus kezdetekor szeretnénk végrehajtani, ha úgy gondolunk rá mint egy szummára, akkor ez lehet az i = 0 például.
  • A ciklus akkor áll le, amikor a feltétele hamis lesz, tehát amíg igaz, addig fut.
  • Az inkrementálás lépés a ciklus belsejében levõ utasíások (a ciklus magja) után hajtódik végre. Itt tipikusan növelünk egy ciklusváltozót, de akármi mást is lehetne csinálni.
  • Példa egy for ciklusra, ami kiírja a számokat 0-tól 9-ig:
int i;
for (i=0; i<10; i++) {
    printf("A ciklusváltozo erteke: %d\n", i);
}
  • Az i++ egyenértékû az i = i + 1 vagy az i += 1 utasítással.
  • Példa egy sokkal kevésbé hagyományos for ciklusra:
int i = 1;
int j = 1;
for (; i + j != j * 2; i = j + 1) {
    j = i * 2;
}
  • Ez a példa azt is mutatja, hogy a ciklus fejének különbözõ részei egymástól függetlenül elhagyhatók, valamint hogy létezik végtelen ciklus.

While ciklusok

  • A while ciklus a már sage-ben megszokottak szerint mûködik, addig fut, amíg igaz a fejében található feltétel.
  • Talán annyi plusz van, hogy bevezetjük a hátul tesztelõs ciklust, a do while ciklust. Ez a nevébõl is kikövetkeztethetõen utólag tesztel, tehát a magja legalább egyszer lefut.
  • A szintaxis:
while(feltétel){
    utasítások
}
do{
    utasítások
} while(feltétel);
  • Példa egy bonyolultabb while ciklusra, a feladatokban lesz egy hozzá nagyon hasonló:
  • 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.
#include<stdio.h>
 
int main(void) {
    int i = 0;
    float sum = 0;
    int szam = 0;
 
    do{
        scanf("%d", &szam);
        sum += szam;
        i++;
    } while(szam != 0);
 
    i--;
    printf("%f", sum / i);
 
    return 0;
}
  • Bejött egy új típus, a float, õ a lebegõpontos szám, mondhatjuk, hogy a tizedestört. A printf és scanf-ben használandó mintája a "%f".

Feladatok

  • Írd ki az első 100 számot és azok négyzetét
  • Írd ki az első k Fibonacci számot (most C-ben:))
  • Írd ki az első 10 számot és paritásukat.
  • Írd ki az első 12 szám faktoriálisát.

Üzemanyag

  • A program bemenetként kapja meg, hogy a felhasználó hány gallon üzemanyagot használna fel.
  • A program írja ki az alábbi információkat:
    • A felhasznált üzemanyag mennyisége literben
      • 1 gallon = 3.7854 l
    • Az üzemanyag gyártásához szükséges olaj mennyisége hordóban mérve.
      • Mindenképpen egész hordók vásárlására van szükség.
      • 1 hordó olajból 19.5 gallon üzemanyag készíthető.
    • A megfelelő CO2 terhelés kg-ban
      • 1 gallon üzemanyag esetén ez ~ 9 kg CO2
    • A hordókban vásárolt alapanyag olaj ára az aktuális árfolyamon 3 különböző pénznemben: EUR, USD, HUF.

Legnagyobb közös osztó

  • Határozd meg két szám legnagyobb közös osztóját

Fizika

  • A program bemenetként kapja meg, hogy az űrutazáshoz használt űrhajó sebessége hány %-a a fény sebességének (300 000 000 m/s).
Személyes eszközök