lógica de programação - clenissoncalaca.com · curso = “lógica de programação ... como...

23
Lógica de Programação Aula 2 – Conhecendo o Ruby Clenisson Calaça <[email protected]>

Upload: ngodan

Post on 23-Dec-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Lógica de ProgramaçãoAula 2 – Conhecendo o Ruby

Clenisson Calaça <[email protected]>

Page 2: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Mais Ruby● Variáveis

– Já sabemos como atribuir um valor a uma variável escrevendo o seu identificador seguido de = (igual a) e o seu valor

● curso = “Lógica de programação”● Local = “Conhecimento Digital”● duracao_em_horas = 45

● Tipos– String – cadeia de caracters. Ex.: “um texto qualquer”

– Fixnum – números inteiros. Ex.: 10

– Float – números fracionados. Ex.: 2.5

...

Page 3: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Tipos de variáveis● Como saber o tipo da minha variável?

– .class =>Experimente: curso = “Logica de programacao”

puts curso.class

● Tipagem– O Ruby infere o tipo da sua variável de acordo com o valor que

você atribui a ela!

● Em muitas linguagens, você precisa informar previamente qual tipo a variável aceita.

– O tipo da variável pode mudar N vezes ao longo da execução do mesmo progama

idade = 27 (Fixnum)

idade = “27” (String)

Page 4: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Tipos de variáveis● Tipagem forte e dinâmica!

– Forte: o Ruby● Os tipos são importantes

– numero1 = “1”– numero2 = “2”– soma = numero1 + numero2 # retornará a concatenação de strings “12”

– Dinâmica ● Uma mesma variável pode assumir vários tipos durante a

execução.– Numero = “23” # string– numero = 23 # fixnum

Page 5: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Expressões aritméticas● É possível realizar outras operações além da

soma...– Multiplicação: *

● puts 2*6

– Subtração: -● puts 10-5

– Divisão: /● puts 12 / 2

● Agrupando expressões:– puts (6*2 + 10/2) * (9*5 + 100/10)

MAIS EM:https://wmagician.wordpress.com/2008/01/27/ruby-numeros-e-math-basico/

Page 6: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Exercícios – Variáveis e operações aritméticas

1 – Crie um programa que receba o valor de b, a e c e imprima o valor de DELTA (da fórmula de Bháskara):

b² – 4.a.c

2 – Crie um programa que receba o número do mês atual e calcule quantos meses faltam para o ano terminar, informando ao usuário.

Ex.: ● Entrada (teclado): 1● Saída: Meses para o fim do ano: 11

Page 7: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Relações● São comparações entre valores do mesmo tipo. Possuem

operadores e operandos:

– == (igual à)

– != (diferente de)

– > (maior que)

– < (menor que)

– >= (maior ou igual à)

– <= (menor ou igal à)

● Ruby retornará o resultado da comparação: true (verdadeira) ou false (falsa)

– 2 == 2 (“dois é igual à dois”) true

– 5 > 7 (“cinco é maior que sete”) false

Page 8: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Expressões lógicas / booleanas

● São expressões (conjunto de comparações) que ao serem submetidas a operadores lógicos retornam um valor:

– true (verdadeira)

– false (falsa)

● Operadores lógicos no ruby

– && e and significam “e” (conjunção)● 2 > 1 && 10 == 10 (dois é maior que um E 10 é igual à

10) verdadeiro– || e or significam “ou” (disjunção)

● 2 < 1 || 10 == 10 (dois é menor que um OU 10 é igual à 10) verdadeiro

– ! significa “não” (negação)● !(2 < 1) (dois não é menor que um) verdadeiro

Page 9: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Estruturas de seleção● Consiste em estruturas que “testam” uma determinada

condição para executar uma ação (ou um conjunto de ações).

– Exemplo: ALGORITMO do “se”● “SE o número é divisível por 2, é par. SE NÃO, é

ímpar”.● Em Ruby:

– If, elsif, else (“se”, “senão se”, “senão”)

– unless (“a menos que”)

– case (“quando for igual a”)

Page 10: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Estruturas de seleção – if, elsif, else

● “SE” (if). Testa se uma expressão lógica é verdadeira.

– “SE idade for maior que ou igual a 18” => if idade >= 18

● “SENÃO SE” (elsif). Testa se outra expressão lógica é verdadeira, caso a anterior não seja

– “SENÃO SE idade for menor que 18 e maior ou igual a 14” => elsif idade < 18 && idade >= 14

(Neste ponto, já foi identificado que x > 5 é false)● “SENÃO” (else). Caso nenhuma das condições anteriores

seja satisfeita (ou seja, nenhuma retorne true, nenhuma seja verdadeira...)

– “SENÃO” => else

● end (encerra a estrutura)

Page 11: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Estruturas de seleção – if, elsif, else

puts "FESTINHA!!! Para ter acesso, digite sua idade:"idade = gets.to_iif idade >=18puts "LIBERADO"

elsif idade < 18 && idade >= 14puts "LIBERADO COM OS PAIS"

elseputs "BARRADO"

end

Page 12: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Estruturas de seleção – if, elsif, else

● Alternativamente..

puts "FESTINHA!!! Para ter acesso, digite sua idade:"idade = gets.to_iputs "LIBERADO" if idade >=18puts "LIBERADO COM OS PAIS" if idade < 18 && idade >= 14puts "BARRADO" if idade < 14

Page 13: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Estruturas de seleção – unless

● “UNLESS” (“a menos que”). Testa se uma expressão lógica é verdadeira e, se ela não for, executa as instruções dentro do bloco.

– “A MENOS QUE seja Alemanha, o Brasil ganha. SENÃO, o Brasil toma 7x1!”

puts "Brasil joga com quem?"adversario = gets.chompunless adversario == "Alemanha"

puts "Brasil ganha!"else

puts "Brasil toma 7x1"end

puts "Brasil joga com quem?"adversario = gets.chompputs "Brasil ganha!" unless adversario == "Alemanha"

Page 14: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Estruturas de seleção – case

● Testa várias condições em uma mesma estrutura

● Sintaxe:

case expressaowhen valor1

...when valor2

...when valor3...else

...end

Page 15: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Estruturas de seleção – case

puts "Capitais do Nordeste. Digite a sigla do estado:"estado = gets.chompcase estadowhen "AL"

puts "Maceio"when "PE"

puts "Recife"when "SE"

puts "Aracaju"when "BA"

puts "Salvador"else

puts "Você nao digitou uma sigla de um estado do Nordeste, ou nós não temos esse estado cadastrado ainda!"end

Page 16: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Exercícios – Estruturas de seleção

1 – Idosos com 60 anos ou mais possuem gratuidade ao andar de ônibus. Crie um programa que receba (no teclado) a idade do usuário e diga se o mesmo possui ou não direito à gratuidade.

2 – Crie um programa que receba a sigla e imprima a capital dos estados do Sul do Brasil. Se o estado não for do sul, deve exibir uma mensagem informando ao usuário. Para referência:– RS – Porto Alegre; SC – Florianópolis; PR – Curitiba.

Page 17: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Estruturas de repetição● Consiste em estruturas que obedecem uma determinada

condição para executar uma mesma instrução N vezes, até que uma condição de parada seja satisfeita (verdadeira / true) – do contrário, teremos um loop infinito: o código da estrutura será executado “eternamente” até ser interrompido de alguma maneira brusca.

– Exemplo: ALGORITMO do “enquanto”● “ENQUANTO a senha estiver incorreta, solicite que

seja digitada”.● Em Ruby:

– while (“enquanto”)

– until (“a menos que”)

– for (“para”)

Page 18: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Estruturas de repetição – while

● “ENQUANTO” (while). Executa a instrução contida no bloco enquanto a expressão lógica for verdadeira.

– “ENQUANTO senha for diferente de 123456” => while senha != “123456”

end (encerra a estrutura)

● O restante do algoritmo será executado somente após a execução da estrutura.

puts "Digite a senha:"senha = gets.chompwhile senha != "123456"

puts "Senha incorreta. Digite a senha:"senha = gets.chomp

endputs "Parabéns, você sabe a senha!!!!"

Page 19: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Estruturas de repetição – while

● #dica: O mesmo programa anterior pode ser reescrito com “menos repetições”...

puts “Digite a senha:”

senha = gets.chomp● … utilizando blocos – begin e end

beginputs "Digite a senha:"senha = gets.chomp

end while senha != "123456"puts "Parabéns, você sabe a senha!!!!"

Page 20: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Estruturas de repetição – until

● “ATÉ QUE” (until). Executa a instrução contida no bloco enquanto a expressão lógica for falsa.

– “ATÉ QUE senha seja igual à 123456” => until senha == “123456”

– Comportamento semelhante ao unless nas estruturas de seleção...

puts "Digite a senha:"senha = gets.chompuntil senha == "123456"

puts "Senha incorreta. Digite a senha:"senha = gets.chomp

endputs "Parabéns, você sabe a senha!!!!"

Page 21: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Estruturas de repetição – until

● Utilizando blocos:

beginputs "Digite a senha:"senha = gets.chomp

end until senha == "123456"puts "Parabéns, você sabe a senha!!!!"

Page 22: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Estruturas de repetição – for

● “PARA” (for). Executa a instrução contida no bloco para um determinado intervalo/grupo de valores.

– “PARA todo numero de 1 à 5” => for numero in 1..5

end (encerra a estrutura)

for numero in 1..5if numero % 2 == 0

puts "#{numero} é par!"else

puts "#{numero} é ímpar!"end

end

Page 23: Lógica de Programação - clenissoncalaca.com · curso = “Lógica de programação ... Como saber o tipo da minha variável? –.class =>Experimente: curso = “Logica de programacao”

Exercícios – Estruturas de repetição

1 – Utilizando while ou until, crie um programa cuja execução só se encerre quando for digitado um número par e maior que 100

2 – Utilizando o for, crie um programa que exiba a tabuada de um número digitado pelo usuário

● Entrada (teclado): 10● Saída: 10x0 = 010x1 = 1010x2 = 20...