Lógica de Programação
Recapitulando
Recapitulando...
●
O que vimos até agora?
– Algoritmos
– Variáveis
– Operadores
– Expressões
– Estruturas de seleção e repetição
– Coleções (arrays / hashes)
– Funções / métodos
– Classes
Recapitulando...
●
Lógica de Programação
– Técnica para escrever algoritmos.
● Um software (programa de computador) é um algoritmo,
escrito por um programador utilizando uma linguagem de
programação através da qual os comandos escritos pelo
programador serão “entendidos” pelo computador, que os executará na ordem definida..
● Qualquer linguagem de programação pode executar um
algoritmo! Ou seja, saber programar não é saber uma
linguagem, mas sim saber criar algoritmos. Linguagens
possuem manuais e documentações que facilitam o aprendizado...
● Ex.: Programar em Java -> “Como fazer um hello world em
Recapitulando...
●
Algoritmo
– Sequência finita de instruções que objetivam a
solução de um determinado problema / execução de uma açao (“Receita de bolo”)
● Bata 2 ovos no liquidificador ● Misture com o leite
● Leve ao forno por 30 minutos … – “Somar dois números”
● Leia número A ● Leia número B ● Faça C = A + B ● Escreva C
Recapitulando...
●
Ruby
– Linguagem de fácil aprendizado por ter sua sintaxe
simples. Popular no mercado principalmente pelo seu uso no framework Ruby on Rails, presente de forma massiva na web
– Executando um programa em ruby
● Testes rápidos: Abra o terminal (Windows: Prompt de
comando), digite irb e pressione Enter.
● Online: http://repl.it (várias linguagens de programação
para testar)
● Scripts salvos: salve o arquivo com a extensão .rb
– No seu terminal, vá até a pasta onde salvou o arquivo e digite:
● ruby arquivo.rb
Recapitulando...
●
Variáveis
– São espaços reservados na memória do computador que executa
o algoritmo, que servem para guardar valores. Possuem
identificador (nome), tipo (quais valores suporta -> números, letras, etc.) e valor. Durante a execução do algoritmo, cada vez
em que o identificador da variável for encontrado, será lido o seu valor.
– Regras para nomes de variáveis: podem conter letras, números e
_. Não podem iniciar com números!
nome = “Maria”
idade = 25
peso = 50.4
cidade = “Maceió”
Idenificador da variável
Valor do tipo string (cadeia de caracteres)
Valor do tipo número (inteiro)
Recapitulando...
●
Constantes
– São variáveis cujo valor não deve ser modificado ao longo do
programa. São indicadas pelo seu identificador composto por letras maiúsculas.
● EX.: IDADE_MINIMA = 18
– Se durante o algoritmo o valor de IDADE_MINIMA for
Recapitulando...
●
Operadores Relacionais
– São (conjuntos de) caracteres cuja função é executar uma
comparação de relação entre dois operandos, retornando o resultado da comparação (verdadeiro / falso).
== (igual à) != (diferente de) > (maior que) < (menor que) >= (maior ou igual à) <= (menor ou igal à) Ex.: 2 == 2 (verdadeiro)
“Curso” != “Curso” (falso) 10 > 3 (verdadeiro)
10 < 3 (falso)
10 >= 3 (verdadeiro) 3 <= 10 (verdadeiro)
Recapitulando...
●
Expressões booleanas
– São conjuntos de operações submetidas a operadores lógicos
(e, ou, não) que retornam sempre um valor (verdadeiro / falso)
Operadores lógicos (Ruby):
&& e and signficam “e” (conjunção) || e or significam “ou” (disjunção)
! significa “não” (negação)
Exemplos:
2 > 1 && 10 == 10 verdadeiro
2 < 1 || 10 == 10 verdadeiro
Recapitulando...
●
Tabela verdade
– São tabelas que auxiliam a interpretação de uma expressão
Recapitulando...
●
Estruturas de seleção
– Consiste em estruturas que “testam” uma determinada condição
para executar uma ação (ou um conjunto de ações).
– Ruby:
● If, elsif, else (“se”, “senão se”, “senão”) ● unless (“a menos que”)
Recapitulando...
●
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"
Recapitulando...
●
unless
puts "Brasil joga com quem?" adversario = gets.chomp
unless adversario == "Alemanha"
puts "Brasil ganha!"
else
puts "Brasil toma 7x1"
Recapitulando...
●
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!"
Recapitulando...
●
Estruturas de repetição
● Consiste em estruturas que obedecem uma determinada
condição para executar uma mesma instrução N vezes. – Exemplo: ALGORITMO do “enquanto”
● “ENQUANTO a senha estiver incorreta, solicite que
seja digitada”.
● Em Ruby:
– while (“enquanto”)
– until (“a menos que”)
Recapitulando...
●
Estruturas de repetição - while
puts "Digite a senha:"senha = gets.chomp
while senha != "123456"
puts "Senha incorreta. Digite a senha:" senha = gets.chomp
end
Recapitulando...
●
Estruturas de repetição - until
puts "Digite a senha:"senha = gets.chomp
until senha == "123456"
puts "Senha incorreta. Digite a senha:"
senha = gets.chomp
end
Recapitulando...
●
Estruturas de repetição - for
for numero in 1..5
if numero % 2 == 0
puts "#{numero} é par!" else
puts "#{numero} é ímpar!" end
Recapitulando...
●
Arrays
– Coleções de elementos agrupados em uma mesma
variável, com seus valores separados por índices
numéricos, onde:
● Primeiro índice: 0
● Segundo índice: n – 1 (n = total de elementos do array)
# Array de nomes com 5 elementos. n = 5
nomes = ["João", "José", "Maria", "Joaquina", "Austragísio"] puts nomes[0] # Primeiro índice: 0. João
puts nomes[1] # José
puts nomes[2] # Maria
puts nomes[3] # Joaquina
Recapitulando...
●
Operando sobre arrays
● Iniciando um array vazio
● Total de elementos no array
● Adicionando elementos durante execução
● Acessando o primeiro e o último elemento
● Acessando o elemento na posição n
● https://ruby-doc.org/core-2.2.0/Array.html array = Array.new array = [] array.length array << "elemento" array << 199 array.first array.last array[n] array.at(n)
Recapitulando...
●
Iterando sobre arrays
●
Como fazemos para percorrer um array?
– Liste todos os elementos do array nomes:
●
Estrutura for
●
Estrutura each
nomes = ["João", "José", "Maria", "Joaquim", "Austragísio"]
for nome in nomes
puts nome
end
for i in 0 .. nomes.length-1
puts nomes[i]
end
nomes.each do |nome| puts nome
end
nomes.each_with_index do |nome, indice| puts nomes[indice]
Recapitulando...
●
Hashes
– Coleções de elementos que, como o array, se
organizam em índices e valores...
– Mas os índices não precisam ser sempre
numéricos!
Recapitulando...
●
Hashes
●
Criando um hash:
●
Adicionando e acessando elementos
●
Chaves como símbolos
●
Todos os valores de um Hash (método values)
●
https://ruby-doc.org/core-2.2.0/Hash.html
hash = Hash.new
hash = {} # chaves no lugar de colchetes
hash[“chave”] = “valor”
puts hash[“chave”] # Imprimirá “valor”
hash[:chave] = "valor"
puts hash[:chave] hash = {chave: "valor"}puts hash[:chave] hash = {:chave => "valor"}puts hash[:chave]
hash = {nome: “José”, idade: 25, cidade: “Maceió”} puts hash.values
Recapitulando...
●
Hashes - exemplo
carros = {ford: ["Fiesta", "Focus"], fiat: ["Uno", "Palio"],
chevrolet: ["Corsa", "Celta"], volswagen: "Gol"
}
puts carros[:ford] # Fiesta
Recapitulando...
●
Funções
– Blocos de códigos que podem ser reutilizados,
atraves de sua chamada, em qualquer ponto do programa.
ola_mundo # Imprimirá "Olá, mundo!"
def ola_mundo
puts "Olá, mundo!" end
● Estrutura de uma função:
– def é a palavra reservada do Ruby que é utilizada para dizer que
você está definindo uma função.
– ola_mundo é o identificador da sua função. Uma vez definido
com esse identificador, seu bloco de códigos será executado sempre que o identificador for encontrado.
Recapitulando...
●
Funções - parâmetros
– São variáveis que passamos para as nossas
funções, de forma que os códigos contidos nelas
possam trabalhar de acordo com os valores que atribuímos às mesmas.
def numero_ao_quadrado(numero)
numero * numero end
puts numero_ao_quadrado(4) # 16
def ola_fulano(nome)
"Ola #{nome}" end
Recapitulando...
●
Classes
– São tipos criados pelo programador para
representar entidades do mundo real em seu
programa. Uma classe possui objetos, que por sua vez possuem todos os métodos e atributos
definidos pela classe.
– Exemplo:
● Toda pessoa come e dorme (métodos –
comportamento!). Tem nome, peso e altura (atributos – características!).
– Eduardo, José, Mariana, Patrícia e Paula são objetos da classe
(tipo) Pessoa.
● Todo carro acelera e freia. Possui cor e modelo.
Recapitulando...
●
Classes
class Pessoaattr_accessor :nome, :peso, :altura def comer
puts "#{nome} comeu!" end
def dormir
puts "#{nome} dormiu!" end end joao = Pessoa.new joao.nome = "João" joao.comer joao.dormir ●
Classes
class Pessoaattr_accessor :nome, :peso, :altura def comer
puts "#{nome} comeu!" end
def dormir
puts "#{nome} dormiu!" end end joao = Pessoa.new joao.nome = "João" joao.comer joao.dormir
Recapitulando...
●
Trabalhando com arquivos externos
– É possível que possamos definir nossas classes e funções em arquivos
externos, para que possamos reutilizá-los (esta é a ideia!).
class Pessoa
attr_accessor :nome, :peso, :altura def comer
puts "#{nome} comeu!" end
def dormir
puts "#{nome} dormiu!" end
end
pessoa.rb
class Carro
attr_accessor :cor, :modelo def acelerar
puts "#{modelo} acelerou!" end
def freiar
puts "#{modelo} feriou!" end end carro.rb require_relative 'pessoa' require_relative 'carro' joao = Pessoa.new corsa = Carro.new joao.nome = "João" joao.comer corsa.modelo = "Corsa" corsa.acelerar programa.rb
Recapitulando...
●
GUI
– Conjunto de componentes que possibilitam que um
usuário interaja com um programa de computador por meio de recursos visuais
Recapitulando...
●
GUI
– Cada elemento em uma GUI pode ter uma ação
associada a ele no código
● Ex.: ao clicar no botão “OK”, mostre uma mensagem ao
usuário
– Funcionalidade “equivalente ao puts”
– Ferramenta de GUI para Ruby