Pseudo-código: sintaxe
Motivação Resolver problemas muitas vezes requer: Uso de ferramentas lógicas Uso de pensamento lógico Padronização
Exemplo Ganhando 1 milhão de Reais Há 3 portas para se escolher uma Atrás de cada porta há um “prêmio” Os prêmios são: $$$, caneta, batata Em cada porta há uma frase escrita Sabe-se que a frase da porta do $$$ é verdade e a porta da batata mentira
Exemplo A B C Caneta Batata na Caneta aqui porta C na porta A Onde está o dinheiro?
Exemplo 2 Suponha que 5 rãs posicionadas em 6 casas da seguinte maneira Descreva os passos para que elas atinjam a seguinte configuração r1 r2 r3 r4 r5 r5 r4 r3 r2 r1
Exemplo 2 Uma rã pode pular para uma casa vizinha se ela estiver vazia Uma rã pode pular a rã vizinha (apenas uma) se a casa estiver vazia
Algoritmos Como transformar o raciocínio lógico em algoritmos? Não há algoritmos para construir algoritmos Um algoritmo depende muito de seu criador
Algoritmos - Características Finitude – um algoritmo deve ter um número finito de passos Definição – cada passo do algoritmo deve ser corretamente definida e não possuir ambiguidades
Algoritmo - Características Entrada – um algoritmo deve ter zero ou mais entradas Saída – um algoritmo deve ter uma ou mais saídas Efetividade – um algoritmo deve ter operações suficientemente básicas de modo que possa ser executado com precisão por um humano, usando papel e lápis, em um tempo finito
Algoritmos Todos sabemos fazer algoritmos Conseguimos sair de casa, ir para o trabalho e voltar para casa Para fazer isto tudo é necessário uma série de entradas como: horário de acordar, horário para entrar no trabalho, etc
Escreva um algoritmo para descrever como você faz para ir da sua casa para a faculdade
Algoritmos - sintaxe Algoritmo nome (<entradas>) Inicio /*corpo*/ fim
O nome de um algoritmo é um identificador válido Devem começar com caracteres (a-z,A-Z) e podem ser seguidos de um ou mais caracteres ou dígitos(a-z,A-Z,0-9,_) O nome deve ser significativo, mostrando qual a função do algoritmo
Na matemática é comum chamar algoritmos e funções por letras – função f Isto é mal visto pela computação pois dificulta o entendimento do código
Comandos básicos Imprimir Usado para imprimir no dispositivo de saída Irá imprimir tudo aquilo estiver depois do comando até o fim da linha
Assim o comando Imprimir “teste de impressão” Irá imprimir no dispositivo de saída a expressão teste de impressão
Algoritmo imprimirTeste () Inicio imprimir “teste de impressão” fim
Exemplo: escreva um algoritmo que imprima o seu nome
Variáveis Regiões de memória que são tratadas segundo regras de um tipo específico Podem armazenar dados, ser usadas como operandos em operações Sintaxe: tipo nome
Variáveis - exemplo Inteiro idade Real salário Texto nome Lógico bomPagador
Variáveis-inicialização Atribui a região de memória designada pela variável um valor inicial É importante pois nem todas as linguagens tem mecanismo automático de inicialização
Variáveis-inicialização Algoritmo imprimeNúmero() Inicio Inteiro num=5 imprimir num imprimir 5 fim
Variáveis - Operadores gerais Atribuição: = Comparação positiva: == Comparação negativa: !=
Variáveis-inicialização Algoritmo imprimeNúmero() Inicio Inteiro num=5 /* inicializando variável */ imprimir num num = 6 /* alterando valor*/ fim
Variáveis – Operadores numéricos Adição: + Subtração: - Multiplicação: * Divisão inteira: / Resto de divisão: % Sinalização: + e – (operadores unários)
Variáveis-inicialização Algoritmo imprimeNúmero() Inicio Inteiro num1=5 Inteiro num2=6 Inteiro num3=num1+num2 imprimir num3 fim
Operadores numérico - Precedência As operações são analisadas da esquerda para a direita seguindo a seguinte precedência: 1- Sinalização: + e – (operadores unários) 2 – Multiplicação, Divisão inteira e Resto de divisão 3 – Adição e Subtração
Avalie as seguintes expressões 1 + 2 * -1 1*2 / 3 1+4 * 5 – 2 1%2 -1
Avalie as seguintes expressões 1 + 2 * -1 -> -1 1*2 / 3 -> 0 1+4 * 5 – 2 -> 19 1%2 -1 -> 0
Operador Parêntesis () Operador de mudança de precedência (2+1)*8 Indica que a soma deve ser realizada antes da multiplicação Composição de parêntesis ((2+1)/10)*3
Operador de texto Concatenação: + Agrega o texto contido no segundo operando no final do primeiro
Algoritmo imprimeTexto() Inicio Texto tex1=“minas” Texto tex2=“gerais” Texto tex3=tex1+tex2 imprimir tex3 Fim
Algoritmo imprimeTexto() Inicio Texto tex1=“minas” Texto tex2=“gerais” Texto tex3=tex1+tex2 imprimir tex3 Fim Saída -> minasgerais
Exercício Escreva um algoritmo que declare cada parte do seu nome como uma variável do tipo texto O algoritmo deve imprimir os nomes na ordem correta O algoritmo deve imprimir o nome como se faz na lingua inglesa (Souza, Maurício de)
Operadores relacionais Retornam falso ou verdadeiro dependendo dos operadores >, >= - retornam verdadeiro se o primeiro operador for maior(ou igual) ao segundo <, <= - retornam verdadeiro se o primeiro operador for menor(ou igual) ao segundo
Algoritmo imprimeLógico() Inicio Inteiro int1=3 Inteiro int2=5 Lógico log = int1> int2 imprimir log Fim
Operadores relacionais == - retorna verdadeiro se o primeiro operador for igual ao segundo != - retornam verdadeiro se o primeiro operador for diferente do segundo
Algoritmo imprimeLógico() Inicio Inteiro int1=3 Inteiro int2=5 Lógico log = int1== int2 imprimir log Fim
Exercício Faça um algoritmo que declare o número de letras do seu primeiro e último nome como números inteiros O algoritmo deve imprimir se o número de caracteres do seu primeiro nome é igual ao número de caracteres do segundo
Exercício Faça um algoritmo que declare o número de letras do seu primeiro e último nome como números inteiros O algoritmo deve imprimir se o número de caracteres do seu primeiro nome é impar
Entrada de dados Há necessidade de troca de informações entre o usuário e o programa Esta troca de informações se efetua através de entrada e saída de dados
Ler Usado para ler informações a serem passadas pelo usuário Atribui à variável após o comando o valor informado pelo usuário
Assim, Ler x Irá atribuir à variável x o valor passado pelo usuário
Exemplo Algoritmo entradaTeste() Inicio Inteiro int1=0 imprimir “digite um número inteiro” Ler int1 imprimir int1 Fim
Exercício Faça um algoritmo que leia as notas de 10 alunos de uma turma O algoritmo deve calcular a média desta turma e imprimi-la
Exercício Faça um algoritmo que leia o primeiro e o último nome do usuário O algoritmo deve imprimir o nome na forma normal e como é escrito na língua inglesa
Exercício Faça um algoritmo que leia 2 números reais e imprima o resultado das quatro operações básicas da aritmética utilizando estes dois números como operandos
Operadores lógicos E: & Ou: | Negação: !
Tabela Verdade & Operando 1 2 Resultado Verdadeiro Falso
Tabela Verdade | Operando 1 2 Resultado Verdadeiro Falso
Tabela Verdade ! Operando 1 Resultado Verdadeiro Falso