Programozási alapismeretek

Specifikáció

A ZH utáni első órán vetített diák: Spefikáció
Nyomtatobarát verzió: Nyomtatható

3. beadandó

Írj shell scriptet, mely két tetszőleges egész számot (lehet negatív és 0 is!!) és a négy alapművelet (+,-,/,*) valamelyikét várja paraméterül. Helyes meghívás esetén - alapesetben - a script csak az eredményt írja az outputra, semmi mást!

	  $ hazi.sh 3 + 4
	  7
	  

A script kaphat kapcsolókat:

  • -h vagy --help: megjeleníti a súgót (minimum egy sor legyen)
  • -v vagy --verbose: Nem csak az eredményt írja ki, hanem magát az elvégzett műveletet is az alábbi példában látható módon:
    		$ hazi.sh 3 + 4 --verbose
    		3 + 4 = 7
    		
  • -e vagy --english: Ha egyjegyű az eredmény, akkor az eredmény mögé zárójelben szöveges formában angolul is írjuk ki az eredményt. Ha az eredmény nem egyjegyű, akkor a kapcsoló hatástalan. Pl:
    		$ hazi.sh 3 + 4 -e
    		7 (seven)
    		
    		$ hazi.sh 9 + 2 -e
    		11
    		
  • -m vagy --magyar: Ugyanaz, mint a -e vagy magyarul írjuk ki a szöveget egyjegyű eredmény esetén.
    Értelemszerűen a -h és a -e nem szerepelhet egyszerre!

Végezzük el az ellenőrzéseket!

  • Csak egész számokat fogadjunk el, de abból az összeset (negatív és 0 is lehet)!
  • Csak érvényes műveletet fogadjunk el (+,-,/,*) A * esetén vigyázzunk, hogy hazi.sh 3 \* 2 vagy ezzel egyenértékű módon (* levédve) kell meghívni a scriptet, de a scripten "belül" a megfelelő paraméter (ebben a példában a $2) értéke már csak a '*' karakter.
  • Ha a művelet osztás, akkor a második szám nem lehet 0!
  • A -m (--magyar) és a -e (--english) kapcsolók nem fordulhatnak elő egyszerre!
  • A -v (--verbose) viszont előfordulhat a többi kapcsolóval együtt is!
  • Ha megadták a -h (--help) kapcsolót, akkor el lehet tekinteni az ellenőrzésektől, csak a help-et írjuk ki
  • Az egyes hibákat jelezzük hibaüzenetekkel (stderror-ra írjuk őket) és használjunk 0-tól különböző státuszkimenetet (pl. exit 1)
    • Néhány példa a működésre:

      	  $ hazi.sh 3 + 5
      	  8
      	  
      	  $ hazi.sh -h 3 + 5
      	  Help szöveg
      	  
      	  $ hazi.sh -0 + 2 
      	  HIBA
      	  
      	  $ hazi.sh 2 5 \*
      	  10
      	  
      	  $ hazi.sh -v 3 - 4
      	  3 - 4 = -1
      	  
      	  $ hazi.sh 4 / 2 -e
      	  2 (two)
      	  
      	  $ hazi.sh -m 3 + 4
      	  7 (hét)
      	  
      	  $ hazi.sh -e 5 + 45
      	  50
      	  
      	  $ hazi.sh -m 2 + 1 -e
      	  HIBA
      	  
      	  $ hazi.sh -v -e 4 - 1
      	  4 - 1 = 3 (three)
      	  

      Segítség

      • Múlt órai példák és egyebek
      • Első lépésben csináljuk meg a paraméterek feldolgozását (for ciklus + case elágazás, ahogy órán csináltuk)
      • Azt, hogy az egyes kapcsolókat megadták-e vagy nem, tároljuk el változókban (parameterek4 példa)
      • Ne felejtsük el, hogy ha a case elágazás egyik ágába *-ot írunk, az metakarakter lesz, ha magát a '*' karaktert szeretnénk, használjuk a \* formát:
        		  case $i in
        		  \*) echo "csillagot kaptam!";;
        		  *) echo "Ez viszont mindenre illeszkedik";;
        		  esac
        		
      • Használjuk a | (vagy) jelet a case ágakban (parameterek4)
      • Esetleg kellhet: az echo esetében -n kapcsolóval tilthatjuk le, hogy a szöveg kiírása után sort emeljen:
        		$ echo "hello"; echo "hello"
        		hello
        		hello
        		
        		$ echo -n "hello"; echo "hello"
        		hellohello
        		

2. beadandó

A sed program segítségével oldjuk meg az alábbi feladatot:
Adott egy HTML állomány, alakítsuk át a következő feltételeknek megfelelően és az eredményt az XXX.html.min nevű fileba mentsük, ahol XXX az eredeti állomány neve:

  • Töröljük az összes <font ...> ... </font> taget! De a köztük lévő szöveget ne!
    Pl: <font color="#334455">Hello Világ!</font> -->   Hello Világ!
  • Az <img ...> tagek helyett [ ] közé írjuk be a kép szöveges leírását!
    Pl. <img src="kacsa.jpg" alt="Kis kacsa" ...> --> [Kis kacsa]
    (Feltehető, hogy minden képnél az alt attribútum meg van adva)
  • Az összes <b>...</b>taget cseréljük <strong>...</strong> tagre
  • Vigyázzunk, a / karakter a sed s programjában speciális jelnek számít, le kell védeni!! (\/)

Teszt állomány: proba.html Ennek a forrásán fogom tesztelni!(Ugyanis ebben minden esetre találtok példát!)
Böngészőkben általába Nézet menü, Oldal forrása menüpont segítségével érhető el a HTML oldal forrása.

Gyakorló feladat

Azoknak kötelező, akik nem adtak be első beadandót!

Az aktuális könyvtárba és annak minden alkönyvtárában számoljuk meg, hogy az egyes jogosultságú állományokból mennyi található. Csak azokat vegyük figyelembe, amelyek nevében az utolsó karakter megegyezik a parancsot kiadó felhasználó nevének első karakterével ($USER alapján) és hagyományos (reguláris) állományok.

Egy lehetséges eredmény:
80 rw-r--r--
2 rwxr-xr-x

Segítség:

  • Az ls parancsnak van olyan kapcsolója, mely rekurzívan kilistázza az alkönyvtárak tartalmát is (Próbáljuk ki, nézzük meg milyen kimenetet ad)
  • A fájlok típusát az ls -l soruk első karaktérből tudjuk megállapítani
  • A jogosultságok az ls -l 2-10 karakterein találhatóak
  • Amig megcsináljuk az utolsó betűre való szűrést, érdemes megfordítani a sorokat, hiszen így nem a sor utolsó karakterére kell szűrnünk, hanem az elsőre, ami sokkal könnyebb. Természetesen ezután fordítsuk vissza a sort.
    echo "abcde" | rev
    Eredmény: edcba
    echo "abcde" | rev | rev
    Eredmény: abcde
    Ha több sorból álló inputot kap a rev, minden sort külön-külön megfordít.
    
      cat alma.txt
      alma
      eper
      dio
      
      cat alma.txt | rev
      amla
      repe
      oid
      
  • Miután megcsináltuk a szűrést a fájl nevére, már csak a jogosultságok kellenek

1. Beadandó

Ebben a hónapban ("az utóbbi időben") melyik napon ki hányszor volt bejelentkezve a pandorára, azon felhasználók közül akik usernevének kezdőbetűje megegyezik a parancsot futtató felhasználó usernevének kezdőbetűjével ($USER alapján)
Azokat a felhasználókat ne vegyük figyelembe, akik még mindig be vannak jelentkezve.
A végső eredmény usernév alapján legyen rendezve.
Az eredményt tegyük a etrkod_last.txt nevű állományba.
(Természetesen az "etrkod" helyén a saját ETR kódotok legyen.)

A várt eredmény (részlet) az én esetemben ("s" betűvel kezdődő usernevek):


  4 sabrina  Oct  1
  2 sabrina  Oct  2
  2 salacor  Oct  2
  1 sanangel Oct  3
  1 santaj   Oct  2
  1 sanyi3k  Oct  1
  1 sarpaat  Oct  2
 14 satam    Oct  3
  2 satam    Oct  4
 10 sax156sw Oct  1
 12 sax156sw Oct  2
	 

Segítség:

  • Ne felejtsük el, hogy a last parancs kimenetének utolsó két sora "szemét", ezeket ne dolgozzuk fel (head parancs)
  • A pandorán a usernevek max. 8 karakter hosszúak, szóközt nem tartalmaznak.
  • A last parancs kimenetében az oszlopok fix szélesek, az oszlopok között minimum egy szóköz van:
    • 1-8: usernév
    • 10-20: használt terminál
    • 22-37: melyik gépről jelentkezett be
    • 39-41: melyik nap (hétfő, kedd, ...) (nem ez érdekel most minket)
    • 44-49: dátum (hónap és nap)
    • 50- : mettől meddig volt bejelentkezve, itt van az is jelezve, ha még mindig be van jelentkezve: "still logged in"
    Kézi számolással határoztam meg, szóval lehet elszámoltam :)

HTML előadás

Pontos információk a HTML előadásról:

Előadó: Magyar Attila
Időpont: 2007. október 11. 14:00-16:00
Hely: 1-819 Riesz Frigyes terem

A félév elején (pontos időpont később), lesz egy 2 órás fakultatív előadás, melynek célja, hogy a weboldalkészítés alapjaival megismertesse a hallgatókat. Az érintett témák: HTML, XHTML, CSS

Információk

  • Előfeltétel:nincs
  • Kurzuskód: IP-cPA1G/6
  • Kredit: 2
  • Óraszám: 2
  • Időpont: Csütörtök, 08:00-11:00
  • Terem: 0-825 Farkas Gyula terem (Déli ép.)

Követelmények


Gyakorlat

Első félév

  • Önálló weboldal elkészítése és elhelyezése a pandorán
  • Óra eleji +/- dolgozatokból legalább 0 pont elérése
  • FRISS Géptermi ZH megírása legalább 2-esre
  • Papíros ZH megírása legalább 2-esre

Második félév

Nem aktuális

Előadás

  • Írásbeli vizsga az előadások és gyakorlatok anyagából

Értékelés

A félévi érdemjegy a 2 jegynek (géptermi zh, papíros zh) az átlaga.
A két ZH jegy javítására lesz lehetőség a félév végén, akinek bármelyik jegye elégtelen, és szeretne gyakorlat jegyet, kötelező pótolni az adott jegyet (jegyeket). Ha a +/- dolgozatokból nem sikerül elérni legalább 0 pontot vagy nem készül el a weboldalad, nem kaphatsz gyakjegyet!
GyakUV nincs!