Lógica de Programação Aula 2 Conhecendo o Ruby Clenisson Calaça <clenisson.calaca@gmail.com>
Variáveis Mais Ruby Já sabemos como atribuir um valor a uma variável escrevendo o seu identificador seguido de = (igual a) e o seu valor Tipos curso = Lógica de programação Local = Conhecimento Digital duracao_em_horas = 45 String cadeia de caracters. Ex.: um texto qualquer Fixnum números inteiros. Ex.: 10 Float números fracionados. Ex.: 2.5...
Tipos de variáveis Como saber o tipo da minha variável?.class =>Experimente: Tipagem curso = Logica de programacao puts curso.class 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)
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
Expressões aritméticas É possível realizar outras operações além da soma... Multiplicação: * puts 2*6 Subtração: - puts 10-5 MAIS EM: https://wmagician.wordpress.com/2008/01/27/ruby -numeros-e-math-basico/ Divisão: / puts 12 / 2 Agrupando expressões: puts (6*2 + 10/2) * (9*5 + 100/10)
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
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
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
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 Em Ruby: SE o número é divisível por 2, é par. SE NÃO, é ímpar. If, elsif, else ( se, senão se, senão ) unless ( a menos que ) case ( quando for igual a )
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)
Estruturas de seleção if, elsif, else puts "FESTINHA!!! Para ter acesso, digite sua idade:" idade = gets.to_i if idade >=18 puts "LIBERADO" elsif idade < 18 && idade >= 14 puts "LIBERADO COM OS PAIS" else puts "BARRADO" end
Estruturas de seleção if, elsif, else Alternativamente.. puts "FESTINHA!!! Para ter acesso, digite sua idade:" idade = gets.to_i puts "LIBERADO" if idade >=18 puts "LIBERADO COM OS PAIS" if idade < 18 && idade >= 14 puts "BARRADO" if idade < 14
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.chomp unless adversario == "Alemanha" puts "Brasil ganha!" else puts "Brasil toma 7x1" end puts "Brasil joga com quem?" adversario = gets.chomp puts "Brasil ganha!" unless adversario == "Alemanha"
Estruturas de seleção case Testa várias condições em uma mesma estrutura Sintaxe: case expressao when valor1... when valor2... when valor3... else... end
Estruturas de seleção case puts "Capitais do Nordeste. Digite a sigla do estado:" estado = gets.chomp case estado when "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
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.
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 Em Ruby: ENQUANTO a senha estiver incorreta, solicite que seja digitada. while ( enquanto ) until ( a menos que ) for ( para )
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.chomp while senha!= "123456" puts "Senha incorreta. Digite a senha:" senha = gets.chomp end puts "Parabéns, você sabe a senha!!!!"
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 begin puts "Digite a senha:" senha = gets.chomp end while senha!= "123456" puts "Parabéns, você sabe a senha!!!!"
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.chomp until senha == "123456" puts "Senha incorreta. Digite a senha:" senha = gets.chomp end puts "Parabéns, você sabe a senha!!!!"
Estruturas de repetição until Utilizando blocos: begin puts "Digite a senha:" senha = gets.chomp end until senha == "123456" puts "Parabéns, você sabe a senha!!!!"
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..5 if numero % 2 == 0 puts "#{numero} é par!" else puts "#{numero} é ímpar!" end end
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 = 0 10x1 = 10 10x2 = 20...