+ All Categories
Home > Technology > Úvod do programování 4

Úvod do programování 4

Date post: 22-Apr-2015
Category:
Upload: karel-minarik
View: 4,877 times
Download: 3 times
Share this document with a friend
Description:
Práce s textem; Základní koncepty programování a Ruby; Jednoduchá kvantitativní analýza textu
41
Úvod do programování aneb Do nitra stroje Karel Minařík PŘEDNÁŠKA 4
Transcript
Page 1: Úvod do programování 4

Úvod do programování aneb Do nitra stroje

Karel Mina!íkP!EDNÁ"KA 4

Page 2: Úvod do programování 4

Úvod do programování

Opakování1

Page 3: Úvod do programování 4

Úvod do programování P!edná"ka 4

VYBAVENÍ

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

2. Editor

3. Dokumentace (!)

Page 4: Úvod do programování 4

Úvod do programování P!edná"ka 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

Page 5: Úvod do programování 4

Úvod do programování P!edná"ka 4

puts 1 + 1

! 2

puts "1" + "1"

! "11"

&íslovka " písmeno

puts (1 + 1).class

puts ("1" + "1").class

Datové typy

Page 6: Úvod do programování 4

Úvod do programování P!edná"ka 4

Po&íta& ned%lá to, co chceme, aby d%lal.

Po&íta& d%lá p#esn% to, co mu !ekneme, aby d%lal.

Page 7: Úvod do programování 4

Úvod do programování P!edná"ka 4

puts 1 + 1

puts "1" + "1"

puts 2 + 2 * 5

puts (2 + 2) * 5

puts "Ahoj" + "Sáro"

puts "Ahoj" + " " + "Sáro"

puts "Ahoj" + 2 (!íslo není "et#zec)

# puts "Ahoj" + 2 (Tento p"íkaz Ruby p"esko!í a nebude je provád#t)

puts "Nebudu ve $kole zlobit\n" * 10

Aritmetické operace

Page 8: Úvod do programování 4

Úvod do programování

Operace s textem2

Page 9: Úvod do programování 4

Úvod do programování P!edná"ka 4

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í.

Page 10: Úvod do programování 4

Úvod do programování P!edná"ka 4

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.

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? "otec" # Obsahuje text urcity vyraz?

puts text.include? "fenomenologie"

Práce s textem

Page 11: Úvod do programování 4

Úvod do programování P!edná"ka 4

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.

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("\n").length # Pocet radek

puts text.split(". ").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

puts text.split(' ').uniq.length # Pocet jedinecnych slov

puts text.split(' ').uniq.sort # Seznam jedinecnych slov usporadany

podle abecedy

Page 12: Úvod do programování 4

Úvod do programování P!edná"ka 4

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.

text = File.read 'kafka_promena.txt'

puts text.gsub('%eho"', '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')

Page 13: Úvod do programování 4

Úvod do programování P!edná"ka 4

# Integer

1+1

2*2

9/3

5.times

5.upto 10

# String

"pokoj".upcase

"pokoj".include?

"pokoj".length

"pokoj".delete

"pokoj".split

# Array

[1, 2, 3].length

[1, 2, 3].last

[1, 2, 3].first

[1, 2, 3].sort

[1, 2, 3].uniq

[1, 2, 3].each

www.ruby-doc.org/docs/ProgrammingRuby

Page 14: Úvod do programování 4

Úvod do programování P!edná"ka 4

DOMÁCÍ ÚKOL

text = File.read 'kafka_promena.txt'

Prostudujte si dokumentaci

Spo&ítejte, kolik normostran má Kafkova Prom#na

Page 15: Úvod do programování 4

Úvod do programování

Základní koncepty3

Page 16: Úvod do programování 4

Úvod do programování P!edná"ka 4

puts "Ahoj" + 2.to_s

puts "2 (áby".to_i + 2

P!etypování

Page 17: Úvod do programování 4

Úvod do programování P!edná"ka 4

puts "Nebudu ve $kole zlobit\n" * 10

puts "Ahoj" + " " + "Sáro"

Polymorfie (na p!íklad# operátor$)

Page 18: Úvod do programování 4

Úvod do programování P!edná"ka 4

a = 1

b = 2

c = a + b

puts c

name = "Duchcov"

puts "Vítá vás m#sto #{name}"

Prom#nnépromenne.rb

Page 19: Úvod do programování 4

Úvod do programování P!edná"ka 4

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

def dve jedna = 2 # Lokalni promenna uvnitr funkce $JEDNA = 2end

puts jedna# => 1puts $JEDNA# => 1

dve

puts jedna# => 1puts $JEDNA# => 2

Prom#nné a rozsah platnosti (scope)Prom%nné lokální, globální, t#íd, instancípromenne.rb

Page 20: Úvod do programování 4

Úvod do programování P!edná"ka 4

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

Page 21: Úvod do programování 4

Úvod do programování P!edná"ka 4

Slo%ené datové typy

0°C

4°C

8°C

11°C

15°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

Page 22: Úvod do programování 4

Úvod do programování P!edná"ka 4

book = Hash.new( :jmeno => "Franz", :prijmeni => "Kafka", :nazev => 'Prom#na' )

book1 = { :jmeno => "Franz", :prijmeni => "Kafka", :nazev => 'Prom#na' }

book2 = { :jmeno => "Fernando", :prijmeni => "Pessoa", :nazev => 'Kniha neklidu' }

books = [book1, book2]

require 'pp'

pp books[0]

puts books[0][:nazev]

Slo%ené datové typy

Page 23: Úvod do programování 4

Úvod do programování P!edná"ka 4

Slo%ené datové typy

Page 24: Úvod do programování 4

Úvod do programování P!edná"ka 4

Slo%ené datové typy

police[3][10][:nazev]

Page 25: Úvod do programování 4

Ú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!etypování II

Page 26: Úvod do programování 4

Úvod do programování P!edná"ka 4

2.to_s

"2 (áby".to_i

1.+(2)

File.open

Time.now

def pozdrav

puts "Ahoj!"

endpozdrav

def pozdrav(jmeno) # Argument/parametr funkce

puts "Vítaj, #{jmeno}!"

end

pozdrav('Honza')

Metody a funkcemetody.rb

Page 27: Úvod do programování 4

Úvod do programování P!edná"ka 4

temperature = 25# temperature = '20° C'

if temperature.to_i < 0 then

puts "Vezmi si bundu, $álu a !epici!"else

puts "Vezmi si bundu!"

end

Podmínkypodminky.rb

Page 28: Úvod do programování 4

Úvod do programování P!edná"ka 4

temperature = 25# temperature = '20° C'

if temperature.to_i < 0

puts "Vezmi si bundu, $álu a !epici!"elsif temperature.to_i > 0 && temperature.to_i < 20

puts "Vezmi si bundu!"

else

puts "Vezmi si tri!ko!"end

Podmínkypodminky.rb

Page 29: Úvod do programování 4

Úvod do programování P!edná"ka 4

temperature = 25# temperature = '20° C'

case temperature.to_i

when -999..0

puts "Vezmi si bundu, $álu a !epici!" when 0..20

puts "Vezmi si bundu!"

else

puts "Vezmi si tri!ko!"end

Podmínkypodminky.rb

Page 30: Úvod do programování 4

Úvod do programování P!edná"ka 4

input = gets.chomp

case input

when "kafka"

puts File.open('kafka.txt')

when "exit", "quit"

exit

when /.*posr.*/

puts "Ale no tak..."

when Fixnum

puts "S !ísly tento program nepracuje!" else

puts "Nerozumím p"íkazu: #{input}"end

Podmínkypodminky.rb

Page 31: Úvod do programování 4

Úvod do programování P!edná"ka 4

temperature = 25# temperature = '20° C'

puts "Vezmi si plavky!" if temperature.to_i > 30

puts "P"ístup zamítnut!" unless user.is_admin?

Podmínky jako modifikátorypodminky.rb

Page 32: Úvod do programování 4

Úvod do programování P!edná"ka 4

Logické (booleovské) operátory

Page 33: Úvod do programování 4

Úvod do programování P!edná"ka 4

1.upto 10 do |number|

print number.to_s + '...'

endputs "\n"

x = 1

until x > 100

print x

x += 1

endputs "\n"

["jedna", "dve", "tri"].each do |slovo| puts "* " + slovo

end

Smy&ky a iterátorysmycky.rb

Page 34: Úvod do programování 4

Úvod do programování P!edná"ka 4

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 "Nemohu se p"ipojit na server #{server}" # ...na!teme data ulo(ená na disku... # data = ...

end

puts data.to_s.scan(

/<div class="art opener"><h3><a href=".+">(.*)<\/a><\/h3>/).to_s

) if data

O"et!ení v'jimek (exceptions)vyjimky.rb

Page 35: Úvod do programování 4

Úvod do programování P!edná"ka 4

input = gets.chomp

puts "Prosím? Tady je $patn# sly$et, vy "íkáte '#{input}'?"

puts "Zadejte cenu bez DPH:"

input = gets

puts input.to_i + 0.19 * input.to_i

temperature = 20 " temperature = '20 ºC'

Vstupvstup.rb

Page 36: Úvod do programování 4

Úvod do programování P!edná"ka 4

SQL Injection

name = 'bob'

query = "SELECT * FROM customers WHERE username = '#{name}'";

# SELECT * FROM customers WHERE username = 'bob'

name = "' OR 1'"

query = "SELECT * FROM customers WHERE username = '#{name}'";

# SELECT * FROM customers WHERE username = '' OR 1''

Vstup a jeho o"et!enívstup.rb

O"et!ování v"ech vstup$ „zven&í“(typick' p!ípad je práv# SQL Injection)

Page 37: Úvod do programování 4

Úvod do programování P!edná"ka 4

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í

Page 38: Úvod do programování 4

Úvod do programování P!edná"ka 4

text = File.read 'kafka_promena.txt'

Page 39: Úvod do programování 4

Úvod do programování P!edná"ka 4

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.

text = File.read 'kafka_promena.txt'

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

words = text.tr('-,();\'"', '').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

word_counts[word] = {:word => word, :count => count}end

nejpouzivanejsi = word_counts.sort.first # "Nejvetsi = prvni"

puts "Za!ínáme s " + nejpouzivanejsi[1][:word].to_s + "."

word_counts.sort.each do |word|

nejpouzivanejsi = word if word[1][:count] > nejpouzivanejsi[1][:count] end

puts "Nejpou(ívan#j$í slovo je „" + nejpouzivanejsi[1][:word] + "“ s " + nejpouzivanejsi[1][:count].to_s + " v&skyty."

Page 40: Úvod do programování 4

Úvod do programování P!edná"ka 4

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.

text = File.read 'kafka_promena.txt'

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

puts "Seznam nejpou(ívan#j$ích slov v Kafkov# ‚Prom#n#‘:"

most_frequent_words = word_counts.values.collect { |word| [word[:count], word

[:word]] }

most_frequent_words.sort.reverse.each_with_index do |word, i|

puts "#{i+1}. #{word[1]}\t\t\t(#{word[0]} v&skyt*)"end

Page 41: Úvod do programování 4

D%kuji!!


Recommended