Programozás 2 II.GUI -k (Grafikus felhasználói felületek) és parancsértelmezők utolsó ltoztatás 2008.04.12. utolsó változtatá
Alapok
A GUI olyan (2Ds) felhasználói felület, ami képekkel (ikonokkal), grafikus, vagy karakteres "ablakokkal" segíti a felhasználó és a gép közötti párbeszédet. A felhasználó sok feladatot a grafikus elemek manipulálásával gépelés nélkül is elvégezhet. Lehet
Általános célú (pl. Windows, XWindow) Speciális (pl. bankautómaták, érintőképernyő, stb)
Microsoft® Windows®
Egymást átfedő, mozgatható ablakok (valójában szinte minden ablak... pl. gombok,ikonok, stb de ezekre most nem gondolunk.)
Legördülő és felugró menűk az ablakok címsorában Alkalmazások közötti adatátvitel
a vágólapon keresztül áthúzással
Szoros OS integráció Tematizálható (háttérkép, ikonok, ablak dekoráció)
X-Window System
UNIX/Linux-os rendszerek GUI-ja (kivéve Mac OS X) hálózati protokol még egy gépen belül is a megjelenítést végző rész a szerver, a programok (amelyek más gépen is futhatnak, de a megjelenítésük a mi gépünkön történik) a kliensek. A kinézete az ablakkezelő programtól függ, tematizálható Egymást átfedő, mozgatható ablakok Menük az ablakok címsorában Legördülő és felugró menűk Több különböző integrált környezet (pl. KDE, Gnome, Enlightenment) van hozzá. Ezek biztosítják a programok közötti adatátviteleket, amelyek megegyeznek a Windows-éivel
Aqua (Mac OS-X)
Egymást átfedő, mozgatható ablakok Alkalmazástól függően változó menü a képernyő tetején (nem az ablakokon) Animációk Az ablak szerver (Quartz Compositor) kezeli a képernyőt és a felhasználói inputokat. (Quartz Extreme – az új grafikus kártyákra épít) Felbontásfüggetlen megjelenítés kivéve az alkalmazások által használt képeket.
Parancsértelmezők (shell-ek)
Karakteres felületek
(lehetnek önálló képernyők, vagy ablakok egy GUI-n)
Sok esetben kényelmesebbek a GUI-knál (Valamilyen szinten) Programozhatóak Programok debuggolására ideálisak Egyszerű szöveges inputot váró, karakteres kimenetű programok kapcsolhatóak össze bonyolultabb feladatok megoldására (UNIX
filozófia)
Windows shellek
command.com – kompatibilitás miatt, nem foglalkozunk külön vele
cmd.exe Vannak beépített parancsok (pl. dir,del,ren,echo,copy, for) és külső parancsok (pl. subst[.exe]) Környezeti változók beállítása parancssorból: név=tartalom Programozása batch fájlokkal (pl. valami.bat) Ha azt akarjuk, hogy egy batch fájl a Windows-ba belépéskor elinduljon (mint a régi autoexec.bat csinálta a korábbi Windows-okban) rakjuk be a start menübe.
BATch fájl parancsok http://technet.microsoft.com/en-us/library/bb490869.aspx
Parancs
Feladata
Példa
@
Alaphelyzetben a BAT fájl minden parancsot kiír a képernyőre amikor végrehajtja azt.. Ha nem akarjuk, hogy valamelyik sort kiírja írjunk @-ot a sor elejére. Ha a kiiratást az összes sorra le akarjuk tiltani használjuk az echo off parancsot!
@echo off
echo
Szöveg kiiratása. Ezt BAT fájlban az echo on/off paranccsal letilthatjuk, vagy engedélyezhetjük. Az első echo parancs mindenképp kiíródik, kivéve, ha @ van elötte.
Ha a BAT fájl tartalma:
echo on/off
echo Ez egy szö szöveg
ezt látjuk: echo Ez egy szö szöveg Ez egy szö szöveg
Ha viszont ez van a BAT-ban: @echo off echo Ez egy szö szöveg
akkor ezt látjuk: Ez egy szö szöveg
BATch fájl parancsok http://technet.microsoft.com/en-us/library/bb490869.aspx
call
egy másik BAT fájl meghívása. A másik fájl végrehajtása után visszatér és folytatja a hívó végrehajtását.
GOTO Cimke
ugrás cimkére
goto cimke
goto célpontja
:CIMKE
feltételes végrehajtás (a teljes if utasítást egy sorba kell írni)
if "%1" == "?" goto SUGO if "%1" == "F" goto OLVAS else Goto VEGE ... :SUGO ...
IF
IF feltétel parancs
A parancs lehet bármi, pl. goto is.
ERRORLEVEL
parancssori program visszatérési kódjának IF ERRORLEVEL == 1 GOTO E1 vagy kezelése IF NOT ERRORLEVEL 3 GOTO E3
BATch fájl parancsok http://technet.microsoft.com/en-us/library/bb490869.aspx
környezeti változó
%0,%1,%2,%3,%4,%5,%6,%7 ,%8,%9
beállítása után programjaink használhatják lekérdezés törlés
set REGI_FORMATUM= REGI_FORMATUM=1 if REGI_FORMATUM== 1 program REGI_FORMATUM==1
parancssori paraméterek
Ha a futtata.bat tartalma if "%1"=="x" program
set Path set Path=
ekkor így használhatjuk
futtat x shift
shift /n for ciklus
Max. 10 parancssori paramétert lehet használni Ha több van a shift-tel lehet azokat is használni. az (n+1)-ik paramétertől
Shift %1 –ből lesz %0 stb
Shift /2 %0,%1 marad, %3 ból lesz %2, %4 ből %3, stb
for {%változó|%%változó} in for %%f in (*.bak) do del %%f (halmaz) do parancs [ parancs_opciók] % - parancssorban, %% BAT fájlban
BATch fájl parancsok http://technet.microsoft.com/en-us/library/bb490869.aspx
pause
ideiglenesen megállítja a bat fájl futását amíg egy gombot nem nyomunk meg.
... echo Nyomj meg egy gombot! pause
rem
megjegyzések írása a fájlba
rem ez egy BAT fájl
setlocal
környezeti változók csak az adott BAT fájlban éljenek
setlocal set GYUMOLCS=ALMA
endlocal
újra globális változók legyenek endlocal
bash speciális karakterek #
megjegyzés
# ez megjegyzés
;
parancsok elválasztása
echo szia; echo itt;
;;
case elválasztó
case "$ változó" in abc) echo "\$változó = abc";; efg) echo "\$változó = efg";; esac
.
rejtett fájl, wd, szöveges parancs végrehajtása,grep-ben
"
részleges idézőjel: a speciális karaktereket továbbra is a shell értelmezi
"szöveg betüközzel"
'
teljes idézőjel:
'$alma @'
\
'escape' karakter
\t \a \b \$
bash speciális karakterek $
változó név
alma=3 echo $(alma) echo $alma
$
grep: sor vége
grep "[a-zA-Z]+$"
$
pozicionális paraméterek összes paraméter összes paraméter egymás után (tömb)
$1,$2,… $* $@
:
NOP - helykitöltő, vagy a logikai igaz érték
while : ; do; … ;done
!
negálás
if [$gyumolcs!=$alma]
(...)
egy al-shell-t nyit és abban hajtja végre a parancsokat
a=alma (a=korte; echo $a) echo $a fut ás eredménye: korte alma
{}
zárójel kifejtés (pl. az összes txt és htm kiterjesztésű fájl listája)
ls *.{txt,htm}
bash shell script Parancs
Feladata
Példa
#!
script fájl típusa(sha bang)
#!/usr/bin/bash #!/usr/bin/perl
név=érték
változók
LOG_DIR=/var/log cd $LOG_DIR
test ... […]
tesztelés. az igaz éréknek a 0, bármi más a hamis értéknek felel meg.
a fájl végrehajtható e: test –x fájl [-x fájl]
if …; then …; else…; fi
feltételes végrehajtás ( a példában a cmp parancs üzenetet írhat ki, de azt nem akarjuk látni, ezért a kimenetét átírányítjuk a /dev/null eszközre, azaz eldobjuk)
if cmp a b &> /dev/null then … else … fi if [ -x $fájl ] ;then ls $fájl;fi
vagy
if … then … else … fi
bash shell script for ... in for ... ( a $@-ot használja)
ciklus
for valt in *.txt;do ls –l $valt; done for valt; do ls –l $valt ; done
for mint a C-ben. Figyelem: dupla (()) és a ciklusban a LIMIT előtt nincs $!
ciklus
LIMIT=10 for ((a=1, b=1; a <= LIMIT ; a++, b++)) do echo -n "$a-$b " done
while feltétel ; do ... ; done
ciklus , addig fut, amíg a feltétel igaz
var0=0 LIMIT=10 while [ "$var0" -lt "$LIMIT" ] do echo -n "$var0 " # -n: nem csiná csinál soremelé soremelést. st. # ^ Space, var0=`expr $var0 + 1` done
bash shell script while, mint a C-ben
ciklus, addig fut, amíg a feltétel igaz
((a = 1)) # a=1 while (( a <= LIMIT )) # (( és nincs "$" do echo -n "$a " ((a += 1)) # let "a+=1" done
until
ciklus, addig fut, amíg a feltétel hamis
((a = 100)) # a=1 until (( a == 0 )) #amíg a nem egyenlő 0 do echo -n "$a " ((a -= 1)) done
break
ciklus félbeszakítás
continue
ciklus folytatás
bash shell script case
elágaztatás
case "$ változó" in abc) echo "\$változó = abc";; efg) echo "\$változó = efg";; esac