Informatika pro moderní fyziky (2) základy Ruby, zpracování textu



Podobné dokumenty
Informatika pro moderní fyziky (1) základy automatizace; jednoduché zpracování a vizualizace dat

Informatika pro moderní fyziky (1) základy automatizace; jednoduché zpracování a vizualizace dat

Informatika pro moderní fyziky (5) vstupní a výstupní soubory pro výpočetní programy

Informatika pro moderní fyziky (7) Tvorba textových dokumentů

Informatika pro moderní fyziky (6) Chytré šablony a interaktivní dokumenty

Informatika pro moderní fyziky (11) web scraping; API; zadání zápočtových úloh

Vstupní a vstupní proudy v C++

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

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

VISUAL BASIC. Práce se soubory

Semestrální práce z předmětu m6f. 2 test dobré shody

Zdroj:

Stručný návod k programu Octave

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

PROGRAMOVÁNÍ V SHELLU

Cykly a pole

PB přednáška (26. října 2015)

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

more Program se zastaví vždy po vypsání jedné stránky textu. Ukončení Ctrl+C less Umožňuje pohybovat se v souboru dopředu i dozadu.

Počítačová simulace logistických procesů I. 11. přednáška Programování v SimTalk. ŠAVŠ, Fábry

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

Jazyk C práce se soubory. Jan Hnilica Počítačové modelování 16

X37SGS Signály a systémy

Klíčové pojmy: Cyklus, řídící proměnná, inicializace, test podmínky, přerušení cyklu, vnořování cyklů.

Martin Šín version 1.0, Duben Table of Contents

Implementace numerických metod v jazyce C a Python

Teoretická Informatika

Hodnocení soutěžních úloh

VYŠŠÍ ODBORNÁ ŠKOLA a STŘEDNÍ PRŮMYSLOVÁ ŠKOLA Mariánská 1100, Varnsdorf PROGRAMOVÁNÍ FUNKCE, REKURZE, CYKLY

Implementace LL(1) překladů

OOPR_05. Případové studie

Skriptování co se do minula nevešlo, práce s řetězci a řešení rovnic

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

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

Poslední aktualizace: 14. října 2011


9. přednáška - třídy, objekty

int => unsigned int => long => unsigned long => float => double => long double - tj. bude-li:

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

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

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

Jazyk VHDL zápis čísel, znaků a řetězců. Jazyk VHDL základní datové typy a operátory. Kurz A0B38FPGA Aplikace hradlových polí

Tabulkový procesor. Základní rysy

1. Problematika účetních výkazů a jejich aktualizace


10. Editor databází dotazy a relace

Informatika pro moderní fyziky (10) složitější interaktivní dokument, získávání informací z webu

Druhy souborů. textové. binární. nestrukturované txt strukturované - ini, xml, csv. veřejné bmp, jpg, wav proprietární docx, cdr, psd

Soutěž družstev Booklet

VŠFS B_UPg Úvod do programování: Sbírka příkladů na cvičení RNDr. Jan Lánský, Ph.D.

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

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

NetLogo Uživatelská příručka

Visual Basic for Application

10 Práce s řetězci - pokračování

NPRG030 Programování I, 2017/18 1 / :22:16

O datových typech a jejich kontrole

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

Tabulková data. budeme pracovat s CSV soubory položky oddělené středníkem, např.

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

Příklady k prvnímu testu - Matlab

Filtrace snímků ve frekvenční oblasti. Rychlá fourierova transformace

Informatika pro moderní fyziky (6) Vstupní soubory pro výpočetní programy Tvorba textových dokumentů

Informační systémy 2008/2009. Radim Farana. Obsah. Aktivní serverové stránky ASP. Active Server Pages. Activex Data Objects. LDAP database.

SQL - trigger, Databázové modelování

ČVUT FIT: BI-SKJ: Perl

cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování)

Kolekce ArrayList. Deklarace proměnných. Import. Vytvoření prázdné kolekce. napsal Pajclín

VY_32_INOVACE_08_2_04_PR

Software je ve světě IT vše, co není Hardware. Do softwaru patří aplikace, program, proces, algoritmus, ale i data (text, obrázky), operační systém

5 Rekurze a zásobník. Rekurzivní volání metody

Programovací jazyk Pascal

KALKULÁTORY EXP LOCAL SIN

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

Úvod do programování. Lekce 7

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

Tabulkové processory MS Excel (OpenOffice Calc)

CADKON/TZB verze

Příklady k druhému testu - Matlab

Identifikátory označují objekty v programu používané (proměnné, typy, podprogramy).

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

Motivace. Vstup a výstup. Minimální komunikace. Motivace. ÚDPJ - Vstup a výstup. Ing. Lumír Návrat katedra informatiky, A

NPRG030 Programování I, 2010/11

Práce se soubory opakování

Syntaktická analýza. Implementace LL(1) překladů. Šárka Vavrečková. Ústav informatiky, FPF SU Opava

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

10 Algoritmizace Příklad 2 Word 2007/ VBA

printf - formatovany vystup

HLOUBKOVÉ VRTY PRO VYUŽITÍ GEOTERMÁLNÍ ENERGIE BENEŠOV U SEMIL - POD MOŠNOU

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Interpret jazyka IFJ2011

Predispozice pro výuku IKT (2015/2016)

Programování. Psaní čistého kódu. Martin Urza

Přechod z Google Apps na Office 365 pro firmy

awk programovatelný filtr

Transkript:

Informatika pro moderní fyziky (2) základy Ruby, zpracování textu František HAVLŮJ e-mail: haf@ujv.cz ÚJV Řež oddělení Reaktorové fyziky a podpory palivového cyklu akademický rok 2015/2016 6. října 2015

1 2

Obsah 1 2

základní principy automatizace CSV soubory a Gnuplot příkazový řádek / terminál dávkové (BAT) soubory představení skriptovacích jazyků interpret Ruby a IRb letem světem Ruby

Obsah 1 2

OOP - volání metod Klasickým příkladem je například počet znaků v řetězci. procedurální jazyky strlen("retezec")

OOP - volání metod Klasickým příkladem je například počet znaků v řetězci. procedurální jazyky strlen("retezec") Můžeme místo toho nahlížet na řetězec jako na objekt:

OOP - volání metod Klasickým příkladem je například počet znaků v řetězci. procedurální jazyky strlen("retezec") Můžeme místo toho nahlížet na řetězec jako na objekt: objektově orientované jazyky "retezec".length

Hrátky s řetězci Délka řetězce "krabice".length "kocour".size

Hrátky s řetězci Délka řetězce "krabice".length "kocour".size Ořez mezer " hromada ".strip " koleso ".lstrip

Hrátky s řetězci Hledání "koleno na kole".include?("kole") "koleno na kole".count("kole")

Hrátky s řetězci Hledání "koleno na kole".include?("kole") "koleno na kole".count("kole") Nahrazení "volej kolej".sub("olej", "yber") "baba a deda".gsub("ba", "ta")

Dokumentace GIYF: Google is your friend ruby api string API dokumentace http://www.ruby-doc.org/core-1.9.3/string.html

Ztracen v poli Literál, přiřazení a = [] a << 1 a << "string" b = []

Ztracen v poli Literál, přiřazení a = [] a << 1 a << "string" b = [] Délka, řazení, vypletí, převracení [4, 2, 6].sort [2, 5, 3, 3, 4, 1, 2, 1].uniq.sort [4, 2, 6].reverse

Ztracen v poli Indexace a = [1,2,3] a[1] a[3]

Ztracen v poli Indexace a = [1,2,3] a[1] a[3] Do mínusu, odkud kam a = [1,2,3,4,5,6] a[-1] a[-2] a[0..3]

z řetězů Řetězec, pole znaků "kopr"[2] "mikroskop"[0..4]

z řetězů Řetězec, pole znaků "kopr"[2] "mikroskop"[0..4] Leccos funguje! "abcd".reverse [1,2,3].size Sekáček na maso "a b c d".split "a b,c d".split(",")

Operátor a operatér Malé bezvýznamné plus "alfa" + "beta" [1, 2] + [3, 4]

Operátor a operatér Malé bezvýznamné plus "alfa" + "beta" [1, 2] + [3, 4] Násobilka "kolo" * 5 [1, 2, 3] * 3 ["a", "b", "c"] * ","

Převádět přes ulici "123".to_i 1250.to_s "0.6".to_f

Převádět přes ulici "123".to_i 1250.to_s "0.6".to_f

Vocad pocad (1..4) (0...10) (1..5).to_a

Vocad pocad (1..4) (0...10) (1..5).to_a Symbolika "letadlo" :letadlo

Boolean nebolí Jednoduchá porovnání 2 + 2 < 5 "alfa"!= "beta" (x == y) and (y == z) (pozor na = versus ==)

Boolean nebolí Jednoduchá porovnání 2 + 2 < 5 "alfa"!= "beta" (x == y) and (y == z) (pozor na = versus ==) Chytré metody [1, 2, 3].include?(3) "abc".include?("bc")

Úlohy Konverze II vyzkoumejte, jak se chová to_f a to_i pro řetězce, které nejsou tak úplně číslo

Úlohy Konverze II vyzkoumejte, jak se chová to_f a to_i pro řetězce, které nejsou tak úplně číslo Palindrom z libovolného řetězce vyrobte palindrom (osel oselleso) z libovolného řetězce vyrobte palindrom s lichým počtem znaků (osel oseleso)

Úlohy Palindrom / řešení s = "osel" puts s + s.reverse puts s[0..-2] + s.reverse

Výpis z účtu Tiskem print "jedna" puts "dve"

Výpis z účtu Tiskem print "jedna" puts "dve" Inspektor Clouseau puts "2 + 2 = #{2+2}" puts [1,2,3].inspect

Cyklistika Jednoduchý rozsah (1..5).each do puts "Cislo" end

Cyklistika Jednoduchý rozsah (1..5).each do puts "Cislo" end S polem a proměnnou [1, 2, 3].each do i puts "Cislo #{i}" end

Úlohy vypište prvních deset druhých mocnin (1 * 1 = 1, 2 * 2 = 4 atd.) vypište malou násobilku vypište prvních N členů Fibonacciho posloupnosti (1, 1, 2, 3, 5, 8...) metodou Erathostenova síta nalezněte prvočísla menší než N

Úlohy Mocniny / řešení (1..10).each do x print x print " * " print x print " = " puts x*x end

Úlohy Mocniny / řešení (1..10).each do x print x print " * " print x print " = " puts x*x end Mocniny / lepší řešení (1..10).each do x puts "#{x} * #{x} = #{x*x}" end

Úlohy Násobilka / řešení (1..10).each do a (1..10).each do b puts "#{b} * #{a} = #{a*b}" end end

Úlohy Násobilka / řešení (1..10).each do a (1..10).each do b puts "#{b} * #{a} = #{a*b}" end end Násobilka / jiné řešení (1..10).each do a (1..10).each do b puts "%2d * %2d = %3d" % [b, a, a * b] end end

Úlohy Fibonacci / řešení a, b = 1, 1 20.times do c = a + b puts a a = b b = c end

Úlohy Erathostenes / řešení n = 100 ary = (2..n).to_a ary.each do x y = x while y <= n y += x ary.delete(y) end end puts ary.inspect

Česko čte dětem Šikovný iterátor IO.foreach("data.txt") do line... end

Česko čte dětem Šikovný iterátor IO.foreach("data.txt") do line... end V kuse string = IO.read("data.txt")

V podmínce If nebo Unless if "velikost".include?("kost") puts "s kosti" end unless 7 > 8 puts "poporadku" end

V podmínce If nebo Unless if "velikost".include?("kost") puts "s kosti" end unless 7 > 8 puts "poporadku" end Přirozený jazyk puts "je tam!" if "podvodnik".include? "vodnik" puts "pocty" unless 2 + 2 == 5 a = [1] a << a.last * 2 while a.size < 10

Úlohy V souboru data/text_1.txt: spočítejte všechny řádky spočítejte všechny řádky s výskytem slova kapr spočítejte počet výskytů slova kapr (po řádcích i v kuse)

Úlohy Kapři / řešení n, n_kapr, nn_kapr = 0, 0, 0 IO.foreach("../data/text_1.txt") do line n += 1 n_kapr += 1 if line.include?("kapr") nn_kapr += line.count("kapr") end nn_kapr_bis = IO.read("../data/text_1.txt").count("kapr") puts "Celkem radku: #{n}" puts "Radku s kaprem: #{n_kapr}" puts "Celkem kapru: #{nn_kapr}" puts " nebo: #{nn_kapr_bis}"

Zápis do katastru Soubor se otevře a pak už to známe f = File.open("text.txt", w ) f.puts "Nazdar!" f.close

Zápis do katastru Soubor se otevře a pak už to známe f = File.open("text.txt", w ) f.puts "Nazdar!" f.close The Ruby way File.open("text.txt", w ) do f f.puts "Nazdar!" end

Úlohy Z dat v souboru data/data_two_1.csv: vyberte pouze druhý sloupec sečtěte oba sloupce do jednoho vypočtěte součet obou sloupců vypočtěte průměr a RMS druhého sloupce S hvězdičkou: použijte soubory *multi* proved te pro všechny čtyři CSV soubory

Úlohy CSV(1) / řešení File.open("druhy_sloupec.csv", w ) do f IO.foreach("../data/data_two_1.csv") do line f.puts line.strip.split[1] end end

Úlohy CSV(2) / řešení File.open("sectene_sloupce.csv", w ) do f IO.foreach("../data/data_two_1.csv") do line data = line.strip.split f.puts data[0].to_f + data[1].to_f end end

Úlohy CSV(3) / řešení x0 = 0 x1 = 0 n = 0 IO.foreach("../data/data_two_1.csv") do line data = line.strip.split x0 += data[0].to_f x1 += data[1].to_f n += 1 end puts "Prvni sloupec: soucet #{x0}" puts "Druhy sloupec: soucet #{x1}"

Úlohy CSV(4) / řešení... a0 = x0 / n a1 = x1 / n rms0 = 0 rms1 = 1 IO.foreach("../data/data_two_1.csv") do line data = line.strip.split rms0 += (data[0].to_f - a0) ** 2 rms1 += (data[1].to_f - a1) ** 2 n += 1 end rms0 = (rms0 / n) ** 0.5 rms1 = (rms1 / n) ** 0.5 puts "Prvni sloupec: RMS #{rms0}" puts "Druhy sloupec: RMS #{rms1}"

Zadání # 2 Adresář plný CSV souborů (stovky souborů) obsahuje data, která jsou záznamy signálů s lineární závislostí. V pěti z nich jsou ale poruchy - data ležící zcela mimo přímku. Kde?

Příklad - dobrý signál

Příklad - špatný signál

Řešení stačí vykreslit grafy pro všechny Dir pro najití souborů připravit a spustit gnuplot

Znovu a lépe pořád je to ještě spousta práce; navíc co když bude souborů tisíckrát víc? nabízí se několik řešení, od těžkopádných a robustních (LLS) přes chytré (selská regrese) až po jednoduché (detekce delta-y) hurá do toho, už je to jenom práce a skvělé cvičení

A to je vše, přátelé!