C2110 Operační systém UNIX a základy programování

Podobné dokumenty
Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

C2110 Operační systém UNIX a základy programování

PROGRAMOVÁNÍ V SHELLU

Sekvenční a podmíněné provádění

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Úvod do Operačních Systémů

Střední odborná škola a Střední odborné učiliště, Hořovice

Proměnné a parametry. predn_08.odt :00:38 1

Inovace bakalářského studijního oboru Aplikovaná chemie

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

Úvod do Operačních Systémů

PSK3-9. Základy skriptování. Hlavička

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

Skripty - úvod. Linux - skripty 2

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

A7B38UOS Úvod do operačních systémů. 6. Cvičení. Příkazy sed a awk

Basic256 - úvod do programování Příklady. ing. petr polách

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

Operátory. Základy programování 1 Tomáš Kühr

X36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka

Algoritmizace a programování

NPRG030 Programování I, 2018/19 1 / :25:37

C2115 Praktický úvod do superpočítání

BASH. Kouzla s příkazovou řádkou. Petr Koloros

Operační systémy. Cvičení 4: Programování v C pod Unixem

Operační systémy. Cvičení 3: Programování v C pod Unixem

Střední odborná škola a Střední odborné učiliště, Hořovice

Úvod do programování. Lekce 1

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

Úvod do Unixu. man: příkaz pro zobrazení nápovědy k danému příkazu, programu (pokud je k dispozici), např. man cp. pwd: vypíše cestu k aktuální pozici

Úvod do Operačních Systémů

Nastroje na zpracovani textu:

Školní kolo soutěže Baltík 2009, kategorie C

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

C# konzole Podíl dvou čísel, podmínka IF

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Kurz LSL skriptování. Shiny Iceberg 2009

VISUAL BASIC. Práce se soubory

Stručný návod k programu Octave

5 Přehled operátorů, příkazy, přetypování

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

DUM 20 téma: Test dávky

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Numerické výpočty, komprese a archivace, návratový kód.

Přednáška 1. Úvod. Historie OS Unix. Architektura OS Unix. Interpret příkazů. SHELL. Zpracování příkazové řádky. Speciální znaky. Zkratky příkazů.

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Základy algoritmizace a programování

Paměť počítače. alg2 1

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Základy PERLu snadno a rychle

Větvení a cykly. Úvod do programování 1 Tomáš Kühr

- jak udělat konstantu long int: L long velka = 78L;

6 Příkazy řízení toku

Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr)

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod Vítejte v Ruby 15. O autorovi 9 Poděkování 9

Studium enzymatické reakce metodami výpočetní chemie

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

Rozšíření ksh vůči sh při práci s proměnnými

Základy algoritmizace a programování

Regulární výrazy. Filtry grep, sed a awk.

E+034 = ; = e E+034

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

Přednáška 4. Regulární výrazy. Filtry grep, sed a awk. Úvod do Operačních Systémů Přednáška 4

Zápis programu v jazyce C#

C2115 Praktický úvod do superpočítání

Domácí příprava k předmětu YD38UOS Úloha 10 práce s lokálními soubory pokračování

Násobení pomocí sčítání

Semestrální úloha č. 1 z předmětu Moderní programovací postupy Studenti:...

SW24x3 programovatelné relé

NPRG030 Programování I, 2016/17 1 / :58:13

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1

Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.

Úvod do Operačních Systémů

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Tabulkový procesor. Základní rysy

Úloha 3 editor a skripty. připojte se vzdáleně na dray6.feld.cvut.cz heslo získáte na adrese

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

Algoritmizace a programování

pi Ludolfovo číslo π = 3,14159 e Eulerovo číslo e = 2,71828 (lze spočítat jako exp(1)), např. je v Octave, v MATLABu tato konstanta e není

Unix je víceuživatelský a víceúlohový OS

První kapitola úvod do problematiky

Úvod do Operačních Systémů

Základní příkazy UNIXu (Linuxu)

Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na

Pole a Funkce. Úvod do programování 1 Tomáš Kühr


Cykly. Základy programování 1 Martin Kauer (Tomáš Kühr)

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

Lekce 9 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Programy na PODMÍNĚNÝ příkaz IF a CASE

LINUX přesměrování a roury

Programovací jazyk Pascal

Lekce 01 Úvod do algoritmizace

Přednáška 2. Systémy souborů OS UNIX. Nástroje pro práci se souborovým systémem. Úvod do Operačních Systémů Přednáška 2

Programování v jazyce JavaScript

Transkript:

C2110 Operační systém UNIX a základy programování 5. lekce Petr Kulhánek kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Masarykova univerzita, Kotlářská 2, CZ-61137 Brno C2110 Operační systém UNIX a základy programování - 1 -

Skriptování v jazyce bash spouštění příkazů návratová hodnota cyklus pomocí while, příkaz test, aritmetické operace cyklus pomocí for cyklus pomocí for in podmínky příkazy expr, read, printf přesměrování a roury speciální proměnné předávaní argumentů C2110 Operační systém UNIX a základy programování - 2 -

Spouštění příkazů Končící proces může rodičovskému procesu sdělit informaci o svém průběhu pomocí návratové hodnoty. Návratová hodnota je celé číslo nabývající hodnot 0-255. Proces: pid, ppid rodičovský proces Proměnné dceřiný proces Proces: pid, ppid Proměnné návratová hodnota Návratová hodnota: 0 = vše proběhlo úspešně > 0 = došlo k chybě, vrácená hodnota pak zpravidla identifikuje chybu C2110 Operační systém UNIX a základy programování - 3 -

Návratová hodnota Návratovou hodnotu posledně provedeného příkazu lze zjistit pomocí proměnné?. $ mkdir test $ echo $? 0 $ mkdir test mkdir: cannot create directory `test1': File exists $ echo $? 1 C2110 Operační systém UNIX a základy programování - 4 -

Cyklus pomocí while Syntaxe: while prikaz1 do Příkaz prikaz1 a všechny příkazy v bloku do/ (, ) se vykonávají ve smyčce, dokud (while) příkaz1 končí návratovou hodnotou 0. Kompaktní zápis: while prikaz1; do C2110 Operační systém UNIX a základy programování - 5 -

Cyklus pomocí while inicializace_pocitadla while test_pocitadla; do zvyseni_hodnoty_pocitadla I=1 while test $I le 10; do I=$(($I+1)) Vykoná desetkrát. C2110 Operační systém UNIX a základy programování - 6 -

Příkaz test Příkaz test slouží k porovnávání hodnot a testovaní typů souborů a adresářů. Porovnávání celých čísel: test cislo1 operand cislo2 Operand: eq ne lt le gt ge rovná se nerovná se menší než nenší než nebo rovno větší než větší než nebo rovno V případě, že je podmínka splněna, je návratová hodnota 0. Další informace: man bash, man test C2110 Operační systém UNIX a základy programování - 7 -

Aritmetické operace Aritmetické operace s celými čísly lze vykonat v bloku (( )). Možné zápisy: I=$(( $I + 1 )) I=$(( I + 1 )) (( I = I + 1 )) (( I++ )) Zvýšení hodnoty proměnné I o jedna. Operátory: + sčítání odčítání * násobení / dělení % zbytek po dělení ++ inkrementace (zvýšení hodnoty o 1) dekrementace (snížení hodnoty o 1) Další informace: man bash C2110 Operační systém UNIX a základy programování - 8 -

Cyklus pomocí for Syntaxe: for((inicializace;test;zmena)) do inicializace while test; do zmena Kompaktní zápis: for((inicializace;test;zmena)); do Příklad: for((i=1;i <= 10;I++)); do echo $I C2110 Operační systém UNIX a základy programování - 9 -

Cyklus pomocí for in Syntaxe: for VAR in LIST do $VAR Příkazy v bloku do/ (, ) se vykonají pro každý prvek v seznamu LIST. V daném běhu cyklu obsahuje proměnná VAR aktuální hodnotu prvku. Kompaktní zápis: for VAR in LIST; do $VAR Příklad: for A in a b c; do echo $A C2110 Operační systém UNIX a základy programování - 10 -

Podmínky Syntaxe: if prikaz1 then fi Kompaktní zápis: if prikaz1; then fi if prikaz1 then else prikaz3 fi if prikaz1; then else prikaz3 fi Pokud prikaz1 skončí s návratovou hodnotou 0, vykoná se. V opačném případě se vykoná prikaz3. C2110 Operační systém UNIX a základy programování - 11 -

Příkaz expr Příkaz expr vyhodnocuje matematické výrazy, výsledky se tisknou do standarního výstupu. Příklady: $ expr 1 + 2 3 $ expr 2 \* 3 6 I=1 while test $I le 10; do I=`expr $I + 1` `prikaz` spustí prikaz a text, který jde do standarního výstupu se umístí do místa uvozovek Další informace: man expr C2110 Operační systém UNIX a základy programování - 12 -

Příkaz printf Příkaz printf slouží k vypisování formátovaných textů. Syntaxe: printf [format] [hodnota1] [hodnota2] Cislo %5d má hodnotu %03d do tohoto místa vlož hodnotu1 v daném formátu Další informace: man bash, man printf C2110 Operační systém UNIX a základy programování - 13 -

Příkaz printf Formát: %[priznak][delka][.presnost]typ Příznak: Typ: - zarovnat doleva 0 prázdné místo zaplnit nulami + vždy uvést znaménko d s f celé číslo řetezec (text) reálné číslo celková délka pole počet míst za desetinou tečkou (reálná čísla) Speciální znaky: \n - konec řádku \r - vrať se na začátek řádku %% - znak % Další informace: man bash, man printf C2110 Operační systém UNIX a základy programování - 14 -

Příkaz read Příkaz read slouží k čtení textu ze standardního vstupu a jeho uložení do proměnných. Příkaz načte vždy celý řádek. Syntaxe: read A read A B # celý řádek se uloží do proměnné A # první slovo se uloží do proměnné A # zbytek řádku do proměnné B Příklad: echo Zadej dve cisla oddelena mezerou: read A B echo Soucet je : $(($A + $B)) Pozor: nepoužívejte přikaz read ve spojení s rourami echo text read A echo $A Nebude obsahovat hodnotu text. Další informace: man bash C2110 Operační systém UNIX a základy programování - 15 -

Přesměrování a roury Čtení souboru po řádcích: cat soubor.txt while read A; do while read A; do < soubor.txt roura Přesměrování do souboru: přesměrování for((i=1;i <= 10;I++)); do echo $I > soubor.txt Výstup všech příkazů v cyklu je přesměrován do soubor.txt. C2110 Operační systém UNIX a základy programování - 16 -

Speciální proměnné Proměnné:? návratová hodnota posledního příkazu $ číslo procesu (PID) # počet argumentů 0 název spuštěného skritpu 1 9 hodnoty argumentů 1 až 9 * všechny argumenty C2110 Operační systém UNIX a základy programování - 17 -

Argumenty skriptu $./muj_skript 10 druha 11 $0./muj_skript $# 3 $1 10 $2 druha $3 11 $* 10 druha 11 Pokud potřebuji předat více jak devět argumentů, je nutné použít příkaz shift. Příkaz odstraní první argument ze seznamu argumentů. NA=$# for((i=1;i <= NA;I++)); do echo $1 shift C2110 Operační systém UNIX a základy programování - 18 -

Cvičení C2110 Operační systém UNIX a základy programování - 19 -

Cvičení I A) Vypište deset písmen A vedle sebe na jeden řádek. B) Vypište deset písmen A, každé na jeden řádek. C) Upravte řešení A tak, že počet písmen zadá uživatel z klávesnice po spuštění skriptu. D) Upravte řešení A tak, že se počet písmen zadá jako první argument skriptu. C2110 Operační systém UNIX a základy programování - 20 -

Cvičení II A) Vykreslete plný obdélník z písmen X. Rozměry obdélníku zadá uživatel pomocí argumentů skriptu. B) Upravte řešení A tak, že vykreslíte pouze obrys obdélníku. C2110 Operační systém UNIX a základy programování - 21 -

Cvičení III A) Vykreslete kružnici nebo kruh z písmen X. Poloměr a to zda se má vykreslit kružnice či kruh zadá uživatel z klávesnice po spuštění skriptu. C2110 Operační systém UNIX a základy programování - 22 -

Cvičení IV A) Napište skript implementující jednoduchou interaktivní kalkulačku. Skript se bude ptát na dvě čísla a operaci, která se s nimi má provést. Po zadání dat skript znázorní výsledek a zeptá se uživatele, zda-li chce pokračovat nebo skript ukončit. C2110 Operační systém UNIX a základy programování - 23 -

Cvičení V Vysvětlete rozdílné chování následujících skriptů. Soubor data.txt obsahuje pět řádků. #!/bin/bash I=0 cat data.txt while read A; do I=$(($I+1)) echo $I vypíše číslo 0 #!/bin/bash I=0 while read A; do I=$(($I+1)) < data.txt echo $I vypíše číslo 5 C2110 Operační systém UNIX a základy programování - 24 -

Cvičení VI A) Soubor rst.out (wolfn:/home/kulhanek/data/rst.out) obsahuje výsledky z molekulové dynamiky. Úkolem je ze souboru vyextrahovat závislost teploty simulovaného systému na čase. NSTEP = 2000 TIME(PS) = 2.000 TEMP(K) = 292.99 PRESS = 0.0 čas teplota Průběh teploty znázorněte v programu gnuplot. POZOR: skript nesmí obsahovat příkazy grep, awk a ani jejich varianty C2110 Operační systém UNIX a základy programování - 25 -

Cvičení VII A) Napište skript(y), který vytvoří sérii obrázků zobrazující vlnění (funkce sin, nebo cos v 2D nebo 3D, dle vašeho uvážení). Z obrázků sestavte video pomocí příkazu mencoder (http://personal.cscs.ch/~mvalle/mencoder/mencoder.html). Video přehrajte pomocí příkazu mplayer. C2110 Operační systém UNIX a základy programování - 26 -