Monday, September 30, 2013

5. óra

Mini ZH

  • toll
  • fényképes igazolvány
  • saját tudás
Minden mást 0 ponttal jutalmazok.

Gyakorlás

Felezős számkitaláló játék, ezt a forrásfájlt kell befejezni. (Megoldás itt - az óra után elérhető)

Konstansok

#define ...

gcc -E forras.c > forras.i
gcc forras.i -o forras

Enum

enum nev { elem0, elem1, ... };
enum nev { elemA = 1, elemB = 4, elemC = 12, ... };

Tömbök

tipus nev[meret];
tipus nev[dim1][dim2];
tipus nev[meret] = {elem0, elem1, elem2, ..., elem(meret-1)};

Sztringek

  • Karakter tömbök: char str[20];
  • a tömb utolsó eleme: 0
  • inicializálás: char hw[13] = "Hello world!"
  • másolásra strcpy(cél, forrás), include-olni kell a string.h-t

Feladatok

Órai: 1, 2
Házi: 1, 2, 3

Monday, September 23, 2013

4. óra

Fontos tudnivalók...

Jövő héten kis ZH! Papíron, 15 perc áll rendelkezésre. Kell: toll (2 db, mert egy mindig elromlik), fényképes igazolvány (személyi, diák, útlevél, jogosítvány), saját tudás. Nem kell: telefon, számítógép, tablet, számológép, egyéb elektronika, más tudása, papíralapú segédanyag.
Mit kell tudni? Mindent amit eddig a Linux-ról tanultunk: könyvtárműveletek, abszolút és relatív útvonalak, fájlműveletek, jogosultságok, többfelhasználós parancsok, multitask (előtérben és háttérben futtatás), szövegfájlok kezelése, átirányítás, shell és környezeti változók, távoli erőforrások elérése.
Mit nézünk még át a mai órán (mert esetleg kimaradt) és nem árt tudni a ZH-ra? cat < forrás és cat forrás>> átirányítás, tail parancs -n kapcsolójának +-os paraméterezése.

Feltételes vezérlési szerkezetek

if (feltétel) utasítás; //ha a logikai feltétel teljesül, akkor végrehajtásra kerül az utasítás

if (feltétel) {
    utasítás1;
    utasítás2;
}  //ugyanaz mint az előző, csak több utasítást hajtunk végre egy blokkban

if (feltétel) {
    utasítás1;
else {
    utasítás2;
}  //ha teljesül a feltétel, akkor az első utasítást hatjuk végre, ha nem akkor a másodikat

if (feltétel1) {
    utasítás1;
} else if (feltétel2)
    utasítás2;
else {
    utasítás3;
}  //ha az első feltétel teljesül, akkor az első utasítást hajtjuk végre, ha a második teljesül, akkor a másodikat, minden más esetben pedig a harmadikat

változó = (feltétel ? érték1 : érték2)  //ha a feltétel teljesül, akkor a változó értéke az első érték lesz, ha nem akkor pedig a második

switch (diszkrét változó) {  //diszkrét: int, char
    case érték1:
        utasítás1;
        break;
    case érték2:
        utasítás2
        break;
    default:
        utasítás3;
        break;
}  //a változó értéke szerint az első vagy a második vagy valamelyik további ágat hajtjuk végre. Ha egyik sem, akkor a default ág kerül végrehajtásra. Break utasítás szerepe...

Ciklikus vezérlési szerkezetek

while (feltétel) {
    utasítás1;
    utasítás2;
}  //amíg a feltétel igaz, addig futtatja az utasításokat - elöltesztelős: ellenőriz, majd futtat

do {
    utasítás1;
    utasítás2;
} while (feltétel);  //amíg a feltétel igaz, addig futtatja az utasításokat - hátultesztelős: futtat, majd ellenőriz

for (kezdeti utasítás1, utasítás2; feltétel; utasítás3, utasítás4) {
    utasítások;
}  //végrehajtja a kezdeti utasítás(oka)t, majd ellenőrzi a feltételt: ha igaz, akkor futtatja a blokkban található utasításokat, majd a 3.-4. utasítást és újból ellenőrzi a feltételt...

break és continue utasítások

Feladatok

Órái: 123
Házi: 12345

Monday, September 16, 2013

3. óra

C alapok

  • main függvény
  • fordítás
  • Hello World!
  • warnings
  • visszatérési érték, több program futtatása

Deklaráció

  • típusok: int, char, float
  • deklaráció sorrend
  • blokkok, érvényesség/láthatóság

Alap I/O

  • printf: %c, %d, %f, %s
  • scanf, & operátor

Globális és lokális változók

  • globális vs lokális, láthatóság

Függvény alapok

  • egyszerű függvények
  • egyparaméteres függvények
  • többparaméteres függvények

Feladatok (órai vagy házi)

  • alap feladatok: ITT
  • függvényekkel kapcsolatos feladatok: ITT
  • a tananyaghoz kapcsolódó példák: ITT

Monday, September 9, 2013

2. óra

Gyakorlás


Átirányítás, csővezeték, környezet

/dev/null
NULL eszköz, mindent elnyel

>
A parancs/program kimenetének átirányítása fájlba. Felülírja a korábbi tartalmat! (>> hozzáfűzi)

<
A parancs/program bemenetére ír egy fájlból

|
Egyik program kimenetét a másik program bemenetére irányítja

&&
Logikai ÉS, csak akkor indítja a következő parancsot, ha az előző(k) sikeresen lefutott(ak)

||
Logikai VAGY, a felsorolt parancsok közül egynek sikeresen le kell futnia

;
Több parancs felsorolása egy sorban

[]
A [ és ] jelek között felsorolt karakterek. Pl. [Aa] jelentése kis és nagy A betűk.

$PWD
pwd

$HOME
~

$PS1
A prompt kinézete

$PATH
Keresési útvonal, itt keresi a shell a futtatandó programokat

''
Idézőjel, semmit sem helyettesít be.

""
Néhány behelyettesítés működik, pl. "$HOME" -> /home/hxxxxxx

Felhasználók, multitask

yes
Folyamatosan y karaktert ír a kimenetre

tr y n
A bemenetben található y karaktert n karakterre cseréli

ps -e -f -u
Listázza a folyamatokat (processzeket - futó vagy várakozó programok)
-e: az összes processzt listázza
-f: teljes listázás (-l még több információt ad)
-u: a paraméterként megadott felhasználó fájljait használó processzeket listázza

jobs
Job-ok (egymástól függő processzek) listázása

bg # %#
A # számú processz vagy a # számú job háttérbe küldése

fg # %#
A # számú processz vagy a # számú job előtérbe hozása

kill -s -9 #
Leállítja az adott processzt.
-s STOP: STOP kóddal leállítás
-9: azonnali leállítás
Ha nincs -s vagy -# definiálva, akkor TERM kóddal állítja le (normál terminálás)

&
Háttérben indítás

^C
Előtérben futó processz befejezése

^Z
Előtérben futó processz felfüggesztése (folytatás fg-vel vagy bg-vel)

finger
Ki van bejelentkezve a gépen

who
Mint a finger, csak kevesebb adatot szolgáltat

w
Mint a who, csak megmondja, hogy ki mit futtat az adott pillanatban

Hálózat

scp user@host:path
Másolás távoli gépről/gépre

ssh -X user@host
Távoli gépre bejelentkezés (konzolos vagy X11)

sftp user@host
{ls, lls, cd, lcd, pwd, lpwd, mkdir, lmkdir, put, get, exit}
Fájlátvitel távoli és lokális gép között

exit
Kilépés

wget
Fájl letöltése az Internetről

Feladatok

Monday, September 2, 2013

1. óra

Bevezető, követelmények

A gyakorlat látogatása kötelező (az előadás látogatása pedig erősen ajánlott), igazolatlan hiányzás esetén a gyakorlat nem teljesített. Igazolt hiányzás esetén az igazolást - amelyből csakis orvosi igazolást fogadunk el - a hiányzás utáni első órán be kell mutatni.
Mindenki arra a gyakorlatra járjon be, amelyet az ETR-ben felvett.

A gyakorlatok heti rendszereséggel kerülnek megtartásra, egy gyakorlat hossza 3x45 perc (közben 1x10 perc vagy 2x5 szünettel, megbeszélés szerint). A gyakorlatok heti bontása:
  1. 2013. szeptember 3. - Követelmények, regisztráció, Linux alapok
  2. 2013. szeptember 10. - Linux szövegkezelés, környezet, multitasking, multiuser, átirányítás, csővezeték, hálózatkezelés
  3. 2013. szeptember 17. - C alapok, 'Hello world', fordítás, futtatás, típusok, változók, alap I/O, függvények
  4. 2013. szeptember 24. - vezérlési szerkezetek
  5. 2013. szeptember 31. - 1. mini ZH; konstansok, tömbök, sztringek
  6. 2013. október 8. - elemi típusok bővebben, haladó I/O, fájl I/O
  7. 2013. október 15. - 1. nagy ZH
  8. 2013. október 22. - union és struct, pointerek, tárolási osztályok
  9. 2013. október 29. - haladó deklaráció, dinamikus programozási feladatok
  10. 2013. november 5. - 2. mini ZH; C parancssor, haladó feladatok
  11. 2013. november 12. - gyakorlás, pótlás
  12. 2013. november 19. - kötelező program
  13. 2013. november 26. - 2. nagy ZH
  14. 2013. december 3. - javítás

Számonkérés

A félév folyamán 2 kis ZH, 2 nagy ZH és egy kötelező program megírására kerül sor.
A kis ZH-k 10-20 percig tartanak, papíron kell válaszolni kb 10 kérdésre. Egy kis ZH-val maximum 10 pont szerezhető.
A nagy ZH-kat egész órán lehet írni (135 perc), számítógép előtt, programozási feladatot kell megoldani. Egy nagy ZH maximális pontszáma 20.
A kötelező program egy előre kiadott listából véletlenszerűen kiválasztott feladat megoldása számítógép előtt. Ezt is egész órán írjuk (135 percig), maximum 20 pont szerezhető vele.
Továbbá az órai aktivitásra (házi feladat bemutatása, aktivitás, stb.) plusz pont szerezhető - maximum 10. Minusz pont is szerezhető indokolt esetben.

A gyakorlat teljesítése három részből áll:
  1. első kis ZH és első nagy ZH: minimum 10 pontot el kell érni ebből a részből
  2. második kis ZH és második nagy ZH: minimum 10 pont
  3. kötelező program: nincs minimum pont
A három részből összesen minimum 30 pontot kell megszerezni a gyakorlat sikeres teljesítéséhez. Ebbe a minimumba beleszámítanak a plusz (és a minusz) pontok is - a két 10 pontos minimumba viszont nem!

A gyakorlaton maximum 80 pont szerezhető, ez alapján a pontozás a következő:
  • 0 - 29 pont: elégtelen (1)
  • 30 - 44 pont: elégséges (2)
  • 45 - 59 pont: közepes (3)
  • 60 - 69 pont: jó (4)
  • 70 - 80 pont: jeles (5)

Információk

Regisztráció

  1. STUD regisztráció itt: https://www.stud.u-szeged.hu/web/studreg-1.php
  2. STUD jelszóváltoztatás: https://www.stud.u-szeged.hu/web/passwd-1.php
  3. INF jelszóváltoztatás: http://www.inf.u-szeged.hu/jelszo/

Ezek után be kell lépni a STUD-os levelezőrendszerbe (https://www.stud.u-szeged.hu/horde/login.php) és küldeni egy levelet a koszoaron+progalap@gmail.com címre. A tárgy legyen a gyakorlat neve (IB103G-10 vagy IB103G-11), az üzenetben pedig szerepeljen az EHA kód és a h-s azonosító (pl. KOAQACT.SZE és h865300).

Linux alapok

pwd
Aktuális könyvtár lekérdezése

cd
Könyvtárváltás

ls -a -d -l -R -r
Könyvtár tartalmának listázása
-a: rejtett fájlokat is megjeleníti
-d: a könyvtárbejegyzés megjelenítése (célszerű a -l kapcsolóval együtt használni)
-l: részletes lista
-R: rekurzív listázás
-r: fordított sorrend

mkdir -p -m
Könyvtár létrehozása
-p: a teljes megadott útvonalat megpróbálja létrehozni
-m: jogosultságok beállítása

rmdir -p
Könyvtár törlése
-p: a teljes megadott útvonalat megpróbálja törölni

mv -b -f -i -u
Fájl vagy könyvtár áthelyezése/átnevezése
-b: mentés készítése a felülírandó fájlokról
-f: felülírás előtt nem kérdez vissza
-i: kétes esetben megerősítést vár
-u: csak a régebbi fájlokat írja felül

cp -b -f -i -l -r -R -s -u
Fájl (vagy könyvtár) másolása
-b: mint mv-nél
-f: mint mv-nél
-i: mint mv-nél
-l: link készítése másolás helyett
-r: rekurzív másolás (könyvtár esetén)
-R: rekurzív másolás (könyvtár esetén)
-s: szimbolikus link készítése másolás helyett
-u: mint mv-nél

rm -f -i -r -R
Fájl (vagy könyvtár) törlése
-f: kétes esetben nem kérdez vissza
-i: kétes esetben visszakérdez
-r: rekurzív törlés (könyvtár esetén)
-R: rekurzív törlés (könyvtár esetén)

ln -s
Fájl (vagy könyvtár) linkelése
-s: szimbolikus link készítése

du -a -h -m -s
Fájlok méretének összeszámolása
-a: minden fájlnak írja ki a méretét (különben csak a könyvtárakét)
-h: human-readable kiírás
-m: kilobájtok helyett megabájtok
-s: csak a végösszeget írja ki

chmod ### augo+-=rwx -R -c
Jogosultságok beállítása
777, 755, 700, 666, 644, 600, 400
a+w, u+x, o-r, g=rw
-R: rekurzívan
-c: jelentse ha történt változás

*
Akárhány tetszőleges karakter helyettesítése

?
Tetszőleges karakter helyettesítése

.
Aktuális könyvtár

..
Egy szinttel feljebb lévő könyvtár

~
home könyvtár (relatív)

/home/hxxxxxx
home könyvtár (abszolút)

Szövegfájlok

echo
Szöveg kiírása

cat
Fájl teljes tartalmának kiírása

more
Fájl teljes tartalmának oldalankénti kiírása

head -n #
A fájl első # sorának kiírása

tail -n +# -f
A fájl utolsó # sorának kiírása
-f: a (változó tartalmú) fájl utolsó sorainak folyamatos kiírása

grep -A -B -C -e -r -R
A fájl mintára illeszkedő sorainak kiírása
-A: a találat utáni x db sort is kiírja
-B: a találat előtti x db sort is kiírja
-C: a találat előtti x/2 és utáni x/2 sort is kiírja
-e: reguláris kifejezés használata (általában alapból bekapcsolt)
-r: rekurzív (minden fájlban keres az adott könyvtárban)
-R: rekurzív

wc -c -l -m -w
A fájlban található bájtok/sorok/szavak számának kiírása
-c: a fájl méretét írja ki
-l: a sorok számát írja ki
-m: a karakterek számát írja ki
-w: a szavak számát írja ki

^D
CTRL+D - EOF (End-Of-File - fájl vége) karakter beszúrása. Vigyázat, a shell-re is érvényes! (bezárja)

Feladatok