Your SlideShare is downloading. ×
0
Úvod do programování aneb Do nitra stroje
PŘEDNÁŠKA                       Karel Minařík
            4
1   Opakování




                Úvod do programování
VYBAVENÍ




1. Konzole pro přímé zadání kódu

2. Editor

3. Dokumentace (!)




                                   Úvod d...
ZÁKLADNÍ TYPY A OPERACE




1. Čísla

2. Texty (řetězce)

3. Pole

4. Aritmetické operace
5. Komentáře
6. Proměnné

7. Pod...
puts 1 + 1


!2

puts quot;1quot; + quot;1quot;


! quot;11quot;


číslovka       písmeno
           quot;



puts (1 + 1)...
Počítač nedělá to, co chceme, aby dělal.
Počítač dělá přesně to, co mu řekneme, aby dělal.




                           ...
puts 1 + 1

puts quot;1quot; + quot;1quot;

puts 2 + 2 * 5

puts (2 + 2) * 5

puts quot;Ahojquot; + quot;Sároquot;

puts q...
2   Operace s textem




                       Úvod do programování
Když se Řehoř Samsa jednou ráno probudil z nepokojných snů, shledal, že se v posteli
proměnil v jakýsi nestvůrný hmyz. Lež...
text = File.read 'kafka_promena.txt'




puts text                              # Vypise text


puts text.upcase          ...
text = File.read 'kafka_promena.txt'




puts text.length                         # Pocet vsech znaku v textu

puts text.d...
text = File.read 'kafka_promena.txt'




puts text.gsub('%ehoquot;', 'Franz')               # Zamen v textu 'Rehor' za 'Fr...
# Integer            # String              # Array
1+1                  quot;pokojquot;.upcase        [1, 2, 3].length
2*2...
DOMÁCÍ ÚKOL

text = File.read 'kafka_promena.txt'




Prostudujte si dokumentaci

Spočítejte, kolik normostran má Kafkova ...
3   Základní koncepty




                        Úvod do programování
puts quot;Ahojquot; + 2.to_s

puts quot;2 (ábyquot;.to_i + 2




Přetypování


                         Úvod do programová...
puts quot;Nebudu ve $kole zlobitnquot; * 10

puts quot;Ahojquot; + quot; quot; + quot;Sároquot;




Polymorfie (na příklad...
a=1
b=2
c=a+b
puts c



name = quot;Duchcovquot;
puts quot;Vítá vás m#sto #{name}quot;




Proměnné
promenne.rb




      ...
jedna = 1            # Lokalni promenna
$JEDNA = 1           # Globalni promenna

def dve
  jedna = 2          # Lokalni p...
a = Array.new

a = Array[ 1, 2, 3]

a = [ 1, 2, 3 ]

a = [ 'jedna', 'dve', 'tri' ]

a = %w{jedna dve tri}

a[0]
#=> 'jedna...
15°C




        11°C




        8°C




        4°C




        0°C
               8:00 9:00 10:00 11:00 12:00 13:00 14:...
book    = Hash.new( :jmeno => quot;Franzquot;, :prijmeni => quot;Kafkaquot;, :nazev => 'Prom#na' )

book1 = { :jmeno => qu...
Složené datové typy


                      Úvod do programování Přednáška 4
police[3][10][:nazev]


Složené datové typy


                                   Úvod do programování Přednáška 4
puts [1, 2, 3] + [4, 5]

puts [1, 2, 3].to_s

puts [1, 2, 3].to_s * 2

puts [1, 2, 3].to_s.to_i * 2




Polymorfie a přety...
2.to_s
quot;2 (ábyquot;.to_i

1.+(2)

File.open
Time.now

def pozdrav
  puts quot;Ahoj!quot;
end
pozdrav

def pozdrav(jmen...
temperature = 25
# temperature = '20° C'




if temperature.to_i < 0 then
  puts quot;Vezmi si bundu, $álu a !epici!quot;
...
temperature = 25
# temperature = '20° C'




if temperature.to_i < 0
  puts quot;Vezmi si bundu, $álu a !epici!quot;
elsif...
temperature = 25
# temperature = '20° C'




case temperature.to_i
  when -999..0
    puts quot;Vezmi si bundu, $álu a !ep...
input = gets.chomp

case input
  when quot;kafkaquot;
    puts File.open('kafka.txt')
  when quot;exitquot;, quot;quitquot...
temperature = 25
# temperature = '20° C'




puts quot;Vezmi si plavky!quot; if temperature.to_i > 30

puts quot;Pquot;íst...
Logické (booleovské) operátory


                                 Úvod do programování Přednáška 4
1.upto 10 do |number|
  print number.to_s + '...'
end
puts quot;nquot;


x=1
until x > 100
  print x
  x += 1
end
puts quo...
require 'net/http'

server = 'www.lidovky.cz'   # vs. www.neexistuje.cz nebo vytazeny sitovy kabel...


begin
  response, ...
input = gets.chomp
puts quot;Prosím? Tady je $patn# sly$et, vy quot;íkáte '#{input}'?quot;



puts quot;Zadejte cenu bez D...
SQL Injection

name = 'bob'
query = quot;SELECT * FROM customers WHERE username = '#{name}'quot;;
# SELECT * FROM customer...
Prostý text?      puts text.split(' ').uniq.sort


XML?              <words>
                    <word>a</word>
          ...
text = File.read 'kafka_promena.txt'




                               Úvod do programování Přednáška 4
text = File.read 'kafka_promena.txt'

# ---> A ted neco trochu jineho... Najdeme nejpouzivanejsi slovo :)


words   = text...
text = File.read 'kafka_promena.txt'

# --->)... a co seznam slov podle frekvence pouziti?

puts quot;Seznam nejpou(ívan#j...
Děkuji!
 !
Upcoming SlideShare
Loading in...5
×

Úvod do programování 4

3,861

Published on

Práce s textem; Základní koncepty programování a Ruby; Jednoduchá kvantitativní analýza textu

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
3,861
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
48
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Úvod do programování 4"

  1. 1. Úvod do programování aneb Do nitra stroje PŘEDNÁŠKA Karel Minařík 4
  2. 2. 1 Opakování Úvod do programování
  3. 3. VYBAVENÍ 1. Konzole pro přímé zadání kódu 2. Editor 3. Dokumentace (!) Úvod do programování Přednáška 4
  4. 4. ZÁKLADNÍ TYPY A OPERACE 1. Čísla 2. Texty (řetězce) 3. Pole 4. Aritmetické operace 5. Komentáře 6. Proměnné 7. Podmínky 8. Smyčky Úvod do programování Přednáška 4
  5. 5. puts 1 + 1 !2 puts quot;1quot; + quot;1quot; ! quot;11quot; číslovka písmeno quot; puts (1 + 1).class puts (quot;1quot; + quot;1quot;).class Datové typy Úvod do programování Přednáška 4
  6. 6. Počítač nedělá to, co chceme, aby dělal. Počítač dělá přesně to, co mu řekneme, aby dělal. Úvod do programování Přednáška 4
  7. 7. puts 1 + 1 puts quot;1quot; + quot;1quot; puts 2 + 2 * 5 puts (2 + 2) * 5 puts quot;Ahojquot; + quot;Sároquot; puts quot;Ahojquot; + quot; quot; + quot;Sároquot; puts quot;Ahojquot; + 2 (!íslo není quot;et#zec) # puts quot;Ahojquot; + 2 (Tento pquot;íkaz Ruby pquot;esko!í a nebude je provád#t) puts quot;Nebudu ve $kole zlobitnquot; * 10 Aritmetické operace Úvod do programování Přednáška 4
  8. 8. 2 Operace s textem Úvod do programování
  9. 9. Když se Řehoř Samsa jednou ráno probudil z nepokojných snů, shledal, že se v posteli proměnil v jakýsi nestvůrný hmyz. Ležel na hřbetě tvrdém jak pancíř, a když trochu nadzvedl hlavu, uviděl své vyklenuté, hnědé břicho rozdělené obloukovitými výztuhami, na jehož vrcholu se sotva ještě držela přikrývka a tak tak že úplně nesklouzla dolů. Jeho četné, vzhledem k ostatnímu objemu žalostně tenké nohy se mu bezmocně komíhaly před očima. Co se to se mnou stalo? pomyslel si. Nebyl to sen. Jeho pokoj, správný, jen trochu příliš malý lidský pokoj, spočíval klidně mezi čtyřmi dobře známými stěnami, Nad stolem, na němž byla rozložena vybalená kolekce vzorků soukenného zboží - Samsa byl obchodní cestující -, visel obrázek, který si nedávno vystřihl z jednoho ilustrovaného časopisu a zasadil do pěkného pozlaceného rámu. Představoval dámu, opatřenou kožešinovou čapkou a kožešinovým boa, jak vzpřímeně sedí a nastavuje divákovi těžký kožešinový rukávník, v němž se jí ztrácí celé předloktí. Úvod do programování Přednáška 4
  10. 10. text = File.read 'kafka_promena.txt' puts text # Vypise text puts text.upcase # Vypise text kapitalkami puts text.reverse # Vypise text pozpatku puts text.include? quot;otecquot; # Obsahuje text urcity vyraz? puts text.include? quot;fenomenologiequot; Když se Řehoř Samsa nepokojných snů, shle proměnil v jakýsi nestv Práce s textem Úvod do programování Přednáška 4
  11. 11. text = File.read 'kafka_promena.txt' puts text.length # Pocet vsech znaku v textu puts text.delete(' ').length # Pocet znaku bez mezer puts text.split(quot;nquot;).length # Pocet radek puts text.split(quot;. quot;).length # Pocet vet puts text.split(/. |? |! /).length # Presnejsi pocet vet Regularni vyrazy berou v uvahu vety koncici otaznikem, vykricnikem puts text.split(' ').length # Pocet slov Když se Řehoř Samsa puts text.split(' ').uniq.length # Pocet jedinecnych slov nepokojných snů, shle puts text.split(' ').uniq.sort # Seznam jedinecnych slov usporadany podle abecedy proměnil v jakýsi nestv Úvod do programování Přednáška 4
  12. 12. text = File.read 'kafka_promena.txt' puts text.gsub('%ehoquot;', 'Franz') # Zamen v textu 'Rehor' za 'Franz' puts text.gsub('e', 'a') # Nahradi 'e' za 'a' puts text.gsub('e', 'a').gsub('í','á'0.gsub('ou', 'ó').gsub('&', 'é').gsub('#', ''a').gsub('u', 'o') Když se Řehoř Samsa nepokojných snů, shle proměnil v jakýsi nestv Úvod do programování Přednáška 4
  13. 13. # Integer # String # Array 1+1 quot;pokojquot;.upcase [1, 2, 3].length 2*2 quot;pokojquot;.include? [1, 2, 3].last 9/3 quot;pokojquot;.length [1, 2, 3].first 5.times quot;pokojquot;.delete [1, 2, 3].sort 5.upto 10 quot;pokojquot;.split [1, 2, 3].uniq [1, 2, 3].each www.ruby-doc.org/docs/ProgrammingRuby Úvod do programování Přednáška 4
  14. 14. DOMÁCÍ ÚKOL text = File.read 'kafka_promena.txt' Prostudujte si dokumentaci Spočítejte, kolik normostran má Kafkova Proměna Úvod do programování Přednáška 4
  15. 15. 3 Základní koncepty Úvod do programování
  16. 16. puts quot;Ahojquot; + 2.to_s puts quot;2 (ábyquot;.to_i + 2 Přetypování Úvod do programování Přednáška 4
  17. 17. puts quot;Nebudu ve $kole zlobitnquot; * 10 puts quot;Ahojquot; + quot; quot; + quot;Sároquot; Polymorfie (na příkladě operátorů) Úvod do programování Přednáška 4
  18. 18. a=1 b=2 c=a+b puts c name = quot;Duchcovquot; puts quot;Vítá vás m#sto #{name}quot; Proměnné promenne.rb Úvod do programování Přednáška 4
  19. 19. jedna = 1 # Lokalni promenna $JEDNA = 1 # Globalni promenna def dve jedna = 2 # Lokalni promenna uvnitr funkce $JEDNA = 2 end puts jedna # => 1 puts $JEDNA # => 1 dve puts jedna # => 1 puts $JEDNA # => 2 Proměnné a rozsah platnosti (scope) Proměnné lokální, globální, tříd, instancí promenne.rb Úvod do programování Přednáška 4
  20. 20. a = Array.new a = Array[ 1, 2, 3] a = [ 1, 2, 3 ] a = [ 'jedna', 'dve', 'tri' ] a = %w{jedna dve tri} a[0] #=> 'jedna' Složené datové typy Úvod do programování Přednáška 4
  21. 21. 15°C 11°C 8°C 4°C 0°C 8:00 9:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 21:00 22:00 23:00 24:00 1:00 2:00 3:00 4:00 5:00 6:00 7:00 Složené datové typy Úvod do programování Přednáška 4
  22. 22. book = Hash.new( :jmeno => quot;Franzquot;, :prijmeni => quot;Kafkaquot;, :nazev => 'Prom#na' ) book1 = { :jmeno => quot;Franzquot;, :prijmeni => quot;Kafkaquot;, :nazev => 'Prom#na' } book2 = { :jmeno => quot;Fernandoquot;, :prijmeni => quot;Pessoaquot;, :nazev => 'Kniha neklidu' } books = [book1, book2] require 'pp' pp books[0] puts books[0][:nazev] Složené datové typy Úvod do programování Přednáška 4
  23. 23. Složené datové typy Úvod do programování Přednáška 4
  24. 24. police[3][10][:nazev] Složené datové typy Úvod do programování Přednáška 4
  25. 25. puts [1, 2, 3] + [4, 5] puts [1, 2, 3].to_s puts [1, 2, 3].to_s * 2 puts [1, 2, 3].to_s.to_i * 2 Polymorfie a přetypování II Úvod do programování Přednáška 4
  26. 26. 2.to_s quot;2 (ábyquot;.to_i 1.+(2) File.open Time.now def pozdrav puts quot;Ahoj!quot; end pozdrav def pozdrav(jmeno) # Argument/parametr funkce puts quot;Vítaj, #{jmeno}!quot; end pozdrav('Honza') Metody a funkce metody.rb Úvod do programování Přednáška 4
  27. 27. temperature = 25 # temperature = '20° C' if temperature.to_i < 0 then puts quot;Vezmi si bundu, $álu a !epici!quot; else puts quot;Vezmi si bundu!quot; end Podmínky podminky.rb Úvod do programování Přednáška 4
  28. 28. temperature = 25 # temperature = '20° C' if temperature.to_i < 0 puts quot;Vezmi si bundu, $álu a !epici!quot; elsif temperature.to_i > 0 && temperature.to_i < 20 puts quot;Vezmi si bundu!quot; else puts quot;Vezmi si tri!ko!quot; end Podmínky podminky.rb Úvod do programování Přednáška 4
  29. 29. temperature = 25 # temperature = '20° C' case temperature.to_i when -999..0 puts quot;Vezmi si bundu, $álu a !epici!quot; when 0..20 puts quot;Vezmi si bundu!quot; else puts quot;Vezmi si tri!ko!quot; end Podmínky podminky.rb Úvod do programování Přednáška 4
  30. 30. input = gets.chomp case input when quot;kafkaquot; puts File.open('kafka.txt') when quot;exitquot;, quot;quitquot; exit when /.*posr.*/ puts quot;Ale no tak...quot; when Fixnum puts quot;S !ísly tento program nepracuje!quot; else puts quot;Nerozumím pquot;íkazu: #{input}quot; end Podmínky podminky.rb Úvod do programování Přednáška 4
  31. 31. temperature = 25 # temperature = '20° C' puts quot;Vezmi si plavky!quot; if temperature.to_i > 30 puts quot;Pquot;ístup zamítnut!quot; unless user.is_admin? Podmínky jako modifikátory podminky.rb Úvod do programování Přednáška 4
  32. 32. Logické (booleovské) operátory Úvod do programování Přednáška 4
  33. 33. 1.upto 10 do |number| print number.to_s + '...' end puts quot;nquot; x=1 until x > 100 print x x += 1 end puts quot;nquot; [quot;jednaquot;, quot;dvequot;, quot;triquot;].each do |slovo| puts quot;* quot; + slovo end Smyčky a iterátory smycky.rb Úvod do programování Přednáška 4
  34. 34. require 'net/http' server = 'www.lidovky.cz' # vs. www.neexistuje.cz nebo vytazeny sitovy kabel... begin response, data = Net::HTTP.new(server).get('/') rescue Exception puts quot;Nemohu se pquot;ipojit na server #{server}quot; # ...na!teme data ulo(ená na disku... # data = ... end puts data.to_s.scan( /<div class=quot;art openerquot;><h3><a href=quot;.+quot;>(.*)</a></h3>/).to_s ) if data Ošetření výjimek (exceptions) vyjimky.rb Úvod do programování Přednáška 4
  35. 35. input = gets.chomp puts quot;Prosím? Tady je $patn# sly$et, vy quot;íkáte '#{input}'?quot; puts quot;Zadejte cenu bez DPH:quot; input = gets puts input.to_i + 0.19 * input.to_i temperature = 20 temperature = '20 ºC' quot; Vstup vstup.rb Úvod do programování Přednáška 4
  36. 36. SQL Injection name = 'bob' query = quot;SELECT * FROM customers WHERE username = '#{name}'quot;; # SELECT * FROM customers WHERE username = 'bob' name = quot;' OR 1'quot; query = quot;SELECT * FROM customers WHERE username = '#{name}'quot;; # SELECT * FROM customers WHERE username = '' OR 1'' Ošetřování všech vstupů „zvenčí“ (typický případ je právě SQL Injection) Vstup a jeho ošetření vstup.rb Úvod do programování Přednáška 4
  37. 37. Prostý text? puts text.split(' ').uniq.sort XML? <words> <word>a</word> <word>aby</word> … PDF? Obrázek — graf? Výstup a jeho formátování Úvod do programování Přednáška 4
  38. 38. text = File.read 'kafka_promena.txt' Úvod do programování Přednáška 4
  39. 39. text = File.read 'kafka_promena.txt' # ---> A ted neco trochu jineho... Najdeme nejpouzivanejsi slovo :) words = text.tr('-,();'quot;', '').split(' ') current_word = words.sort.first word_counts = {} word_counts[current_word] = {} count = 0 words.sort.each do |word| if current_word == word count += 1 else count = 1 current_word = word end Když se Řehoř Samsa word_counts[word] = {:word => word, :count => count} end nejpouzivanejsi = word_counts.sort.first # quot;Nejvetsi = prvniquot; nepokojných snů, shle puts quot;Za!ínáme s quot; + nejpouzivanejsi[1][:word].to_s + quot;.quot; proměnil v jakýsi nestv word_counts.sort.each do |word| nejpouzivanejsi = word if word[1][:count] > nejpouzivanejsi[1][:count] end puts quot;Nejpou(ívan#j$í slovo je „quot; + nejpouzivanejsi[1][:word] + quot;“ s quot; + nejpouzivanejsi[1][:count].to_s + quot; v&skyty.quot; Úvod do programování Přednáška 4
  40. 40. text = File.read 'kafka_promena.txt' # --->)... a co seznam slov podle frekvence pouziti? puts quot;Seznam nejpou(ívan#j$ích slov v Kafkov# ‚Prom#n#‘:quot; most_frequent_words = word_counts.values.collect { |word| [word[:count], word [:word]] } most_frequent_words.sort.reverse.each_with_index do |word, i| puts quot;#{i+1}. #{word[1]}ttt(#{word[0]} v&skyt*)quot; end Když se Řehoř Samsa nepokojných snů, shle proměnil v jakýsi nestv Úvod do programování Přednáška 4
  41. 41. Děkuji! !
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×