C2110 Operační systém UNIX základy programování 12. lekce / modul 2 PS/2021 Prezenční forma výuky: Rev2 Petr Kulhánek kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta Masarykova univerzita, Kamenice 5, CZ-62500 Brno )perační systém UNIX a základy programování 12. lekce / modul 2 Obsah > AWK • Cykly • Pole Dperační systém UNIX a základy programování 12. lekce / modul 2 -2- Cykly for(inicializace; podminka; zmena) { prikazl; } Příklad: for(I=l;I <= 10;I++){ sum = sum + $I; } Rozdíly vůči jazyku BASH U4 for ( (inicializace/podminka;zmena)) ; do prikazl done «_ Dperační systém UNIX a základy programování 12. lekce / modul 2 Cvičení 1 1. Napište skript, který sečte hodnoty všech čísel uvedených v souboru matice.txt. 2. Napište skript, který vytiskne počet slov, které obsahuje soubor rst.out. Výsledek ověřte pomocí příkazu wc. Data jsou v adresáři: /home/kulhanek/Documents/C2110/Lessonl2 Dperační systém UNIX a základy programování 12. lekce / modul 2 Pole AWK používá asociativní pole. Pole má název, k prvkům pole se přistupuje pomocí klíče. Klíč může mít libovolnou hodnotu a typ. Klíčem může být hodnota proměnné. Přiřazeni hodnoty: moje pole[klic] = hodnota; Ziskáni hodnoty: hodnota = moje pole[klic]; Jako klíče se nedoporučuje používat reálná čísla! Proměnná: A H proměnná obsahuje pouze jednu hodnotu A=5; print A; Asociativní pole: P g pole může obsahovat více hodnot, pro každý klíč však pouze jednu. P[9]=5; P["a"]=10; print P[9], P["a"]; Dperační systém UNIX a základy programování 12. lekce / modul 2 Pole - příklady Příklady: i = 5; moje_pole[i] = 15; print moje_pole[i]; a = "slovo"; moje_pole[a] = "hodnota"; print moje pole["slovo"], moje pole[5]; Praktické použiti: BEGIN { počet = 0; data[pocet++] = $1; script vypíše počet hodnot ve slouci 1 a poté jejich hodnoty END print počet; for(i=0; i < počet; i++){ print data[i]; Dperační systém UNIX a základy programování 12. lekce / modul 2 -6- Cvičení 2 1. Soubor structurel.dat obsahuje na každém řádku jméno prvku a polohu atomu. Napište skript, který soubor převede do formátu xyz a uloží pod názvem structurel.xyz. Zkonvertovanou strukturu zobrazte v programu VMD. 2. Hromadnost řešení ověřte konverzí souboru structure2.dat. Data jsou v adresáři: /home/kulhanek/Documents/C2110/Lessonl2 Dperační systém UNIX a základy programování 12. lekce / modul 2 Samostudium Dperační systém UNIX a základy programování 12. lekce / modul 2 Pole, Procházení seznamu klíčů: for( proměnna in pole) { print pole[proměnna]; } Mazání záznamu s klíčem: Vykoná tělo cyklu pro každý klíč, který byl použit pro uložení hodnoty do pole. Hodnota klíče je uložena do proměnné. POZOR: pořadí klíčů není určeno a nemusí tedy odpovídat pořadí zakládání prvků do pole delete polefklic]; Dperační systém UNIX a základy programování 12. lekce / modul 2