ricardo@fumec.br Prof. Ricardo Luiz de Freitas ricardo@fumec.br 2 Aulas 1 - Conceitos de Algoritmo 2 - Compiladores, Dados, Variveis, Comandos leia e escreva 3 - Comando de atribuio, Expresses Aritmticas 4 - Comando Condicional SE 5 - Comando Condicional CASO 6 - Comando de Repetio PARA 7 - Sries Matemticas 8 - Comando de Repetio REPITA 9 - Comando de Repetio ENQUANTO 10 Vetor 11 Matriz 12 Mapeamento ALGORITMO x PASCAL Prof. Ricardo Luiz de Freitas ricardo@fumec.br 3 Aula 1 Conceito de ALGORITMOS Estruturas bsicas de um Algoritmo Seqencial Condicional Repetio Exerccio
Prof. Ricardo Luiz de Freitas ricardo@fumec.br 4 Conceitos de Algoritmos Algoritmo a descrio de uma seqncia de passos que deve ser seguida para a realizao de uma tarefa; Algoritmo uma seqncia finita de instrues ou operaes cuja execuo, em tempo finito, resolve um problema computacional; Prof. Ricardo Luiz de Freitas ricardo@fumec.br 5 Exemplos de Algoritmos Como fazer um sanduche?
Passo 1 Pegar um po Passo 2 Cortar o po ao meio Passo 3 Pegar a maionese Passo 4 Passar a maionese no po Passo 5 Pegar o alface e o tomate Passo 6 Cortar o tomate Passo 7 Colocar alface e o tomate no po Passo 8 Pegar o hambrguer Passo 9 Fritar o hambrguer Passo 10 Colocar o hambrguer no po Prof. Ricardo Luiz de Freitas ricardo@fumec.br 6 Um rob conseguiria executar o algoritmo e fazer um sanduche? Prof. Ricardo Luiz de Freitas ricardo@fumec.br 7 Como fazer um sanduche (verso 2) Passo 1 Pegar um po Passo 2 Cortar o po ao meio em sentido longitudinal Passo 3.1 Abrir a geladeira Passo 3.2 Pegar o vidro de maionese na geladeira Passo 3.3 Fechar a porta da geladeira Passo 3.4 Girar a tampa do vidro de maionese em sentido horrio Passo 3.5 Tirar a tampa Passo 3.6 Pegar uma esptula no armrio Passo 3.7 Colocar a esptula dentro do vidro de maionese Passo 3.8 Pegar um pouco de maionese Passo 3.9 Tirar a esptula do vidro Passo 4 Passar a maionese no po ... Refinamento do passo 3 Pegar a maionese Prof. Ricardo Luiz de Freitas ricardo@fumec.br 8 Estruturas bsicas de um Algoritmo Estrutura Seqencial
Estrutura Condicional (ou seletiva)
Estrutura de Repetio Repeties definidas Repeties indefinidas Prof. Ricardo Luiz de Freitas ricardo@fumec.br 9 Estrutura Seqencial As aes so executadas uma aps a outra, na mesma ordem em que aparecem:
Trazer a cesta com batatas Pegar uma panela do armrio Descascar as batatas Jogar as cascas no lixo Lavar a cesta e a panela Guardar a cesta e a panela no armrio Prof. Ricardo Luiz de Freitas ricardo@fumec.br 10 Estrutura Condicional - SE A execuo ou no de uma ao depende se o resultado de uma condio verdadeiro ou falso
Trazer a cesta com batatas Pegar uma panela do armrio Se sua roupa clara ento Colocar o avental Descascar as batatas Jogar as cascas no lixo Lavar a cesta e a panela Guardar a cesta e a panela no armrio Condio Ao Prof. Ricardo Luiz de Freitas ricardo@fumec.br 11 Estrutura Condicional - SE O se..ento.. uma estrutura condicional ou seletiva, onde a ao (ou mais de uma) executada somente se o resultado da condio for verdadeiro:
Se sua roupa clara ento Colocar o avental Lavar as mos Pentear o cabelo Prof. Ricardo Luiz de Freitas ricardo@fumec.br 12 Estrutura Condicional - SE Podemos utilizar tambm se..ento..seno... para tornar a seleo de aes mais completa:
Se sua roupa clara ento Colocar o avental Lavar as mos Seno Colocar a toca Prof. Ricardo Luiz de Freitas ricardo@fumec.br 13 Estrutura de Repetio Trazer a cesta com batatas Pegar uma panela do armrio Se sua roupa clara ento Colocar o avental Lavar as mos Pegar uma batata na cesta Lavar a batata Descascar a batata ... ... Jogar as cascas no lixo Lavar a cesta e a panela Guardar a cesta e a panela no armrio
50 vezes Refinamento do passo Descascar as batatas Prof. Ricardo Luiz de Freitas ricardo@fumec.br 14 Estrutura de Repetio - DEFINIDA Trazer a cesta com batatas Pegar uma panela do armrio Se sua roupa clara ento Colocar o avental Lavar as mos Repetir 50 vezes Pegar uma batata na cesta Lavar a batata Descascar a batata Jogar as cascas no lixo Lavar a cesta e a panela Guardar a cesta e a panela no armrio
E se no soubermos quantas batatas tem no cesto? Prof. Ricardo Luiz de Freitas ricardo@fumec.br 15 Estrutura de Repetio - INDEFINIDA Trazer a cesta com batatas Pegar uma panela no armrio Se sua roupa clara ento Colocar o avental Lavar as mos Enquanto ainda tivermos batatas no cesto Pegar uma batata na cesta Lavar a batata Descascar a batata Jogar as cascas no lixo Lavar a cesta e a panela Guardar a cesta e a panela no armrio Prof. Ricardo Luiz de Freitas ricardo@fumec.br 16 A linguagem um elemento chave na construo de Algoritmos Schlieben sie Ihre augen. Fermez vos yeux. Cierre sus ojos. Close your eyes. Feche seus olhos. Prof. Ricardo Luiz de Freitas ricardo@fumec.br 17 Concluso Para a construo e execuo de algoritmos necessrio que tanto a pessoa que dar as ordens quanto a pessoa (ou mquina) que executar o algoritmo entendam a mesma linguagem e, dessa forma, consigam comunicar-se. Prof. Ricardo Luiz de Freitas ricardo@fumec.br 18 Exerccio (para entregar) Suponha que voc no possa vir a escola em um dia de entrega do trabalho final de curso. Faa um ALGORITMO que sirva para programar um rob que ser acionado na calada em frente a entrada da FUMEC. O rob dever ir at o laboratrio onde a aula est acontecendo, imprimir o trabalho, que est armazenado na rede, e entregar o mesmo ao professor, quando se auto desligar.
Instrues no prximo slide...
Prof. Ricardo Luiz de Freitas ricardo@fumec.br 19 Exerccio (para entregar) Fazer no Word; Valores mnimos para o algoritmo: 50 aes (1 verbo por ao), 2 estruturas condicionais e 2 estruturas de repetio; Valor: 1 ponto extra (se estiver dentro das regras); Forma de entrega: rea do Aluno ou SINEF na pgina da escola na internet (Apoio Didtico / Entrega de Trabalhos); Data mxima de entrega: FINAL DO DIA; Poder ser feito em dupla (somente um elemento da dupla entregar o exerccio); Colocar seu nome, e de seu colega (se for o caso), no incio do algoritmo; Exerccios sem nome, iguais e mal feitos sero zerados. Prof. Ricardo Luiz de Freitas ricardo@fumec.br 20 Aula 2 Compiladores Compilador VisuAlg Dados Identificadores Variveis Comando de entrada de dados LEIA Comando de sada de dados ESCREVA Exerccios Prof. Ricardo Luiz de Freitas ricardo@fumec.br 21 Compiladores So programas utilizados para se criar outros programas; Etapas: Edio: digitao e alterao do programa; Compilao: verificao de erros de sintaxe do programa; Execuo: rodar o programa, entrando com os dados e obtendo os resultados. Erros que podem aparecer: Sintaxe: identificado pelo compilador na etapa de compilao; Lgica: identificado pelo usurio na etapa de execuo. Exemplos: Visualg = Portugol PascalZIM = Pascal Delphi = Pascal Dreamworks = HTML Prof. Ricardo Luiz de Freitas ricardo@fumec.br 22 Compilador VisuAlg Prof. Ricardo Luiz de Freitas ricardo@fumec.br 23 Compilador VisuAlg Abrir (Ctrl-A): Abre um arquivo anteriormente gravado, substituindo o texto presente no editor. Se este tiver sido modificado, o VisuAlg pedir sua confirmao para salv-lo antes que seja sobreposto. Novo (Ctrl-N): Cria um novo "esqueleto" de algoritmo, substituindo o texto presente no editor. Se este tiver sido modificado, o VisuAlg pedir sua confirmao para salv-lo antes que seja sobreposto. Salvar (Ctrl-S): Grava imediatamente o texto presente no editor. Na primeira vez que um novo texto gravado, o VisuAlg pede seu nome e localizao. Imprimir: Imprime imediatamente na impressora padro o texto presente no editor. Copiar (Ctrl-C): Copia o texto selecionado para a rea de transferncia. Colar (Ctrl-V): Copia texto da rea de transferncia para o local em que est o cursor. Prof. Ricardo Luiz de Freitas ricardo@fumec.br 24 Compilador VisuAlg Executar (F9): Inicia (ou continua) a execuo automtica do algoritmo. Executar com timer (Shift-F9):: Insere um atraso (que pode ser especificado no intervalo ao lado) antes da execuo de cada linha. Tambm reala em fundo azul o comando que est sendo executado, da mesma forma que na execuo passo a passo. Passo (F8): Inicia (ou continua) a execuo linha por linha do algoritmo, dando ao usurio a oportunidade de acompanhar o fluxo de execuo e os valores das variveis. Parar (Ctrl-F2): Termina imediatamente a execuo do algoritmo. Evidentemente, este boto fica desabilitado quando o algoritmo no est sendo executado. Gerar valores aleatrios: Ativa a gerao de valores aleatrios que substituem a digitao de dados. Prof. Ricardo Luiz de Freitas ricardo@fumec.br 25 Estrutura bsica de um Algoritmo no VisuAlg algoritmo "semnome" // Funo : // Autor : // Data : 1/8/2011 // Seo de declaraes var
inicio // Seo de Comandos
fimalgoritmo Prof. Ricardo Luiz de Freitas ricardo@fumec.br 26 Exemplo algoritmo "CalcSomaMedia" var n1, n2, n3, soma : inteiro media : real Inicio escreva("Informe um nmero = ") leia(n1) escreva("Informe outro nmero = ") leia(n2) escreva("Informe mais um nmero = ") leia(n3) soma <- n1 + n2 + n3 media <- soma / 3 escreval("Mdia = ",media) fimalgoritmo Prof. Ricardo Luiz de Freitas ricardo@fumec.br 27 Dados O dado a prpria essncia de um algoritmo ou programa de computador.
Ele pode ser informado pelo usurio, gerado pelo programa, processado pelo computador, e impresso para o usurio como uma informao. Prof. Ricardo Luiz de Freitas ricardo@fumec.br 28 Tipos de dados Tipos de dados so maneiras pelas quais os dados so tratados
Constantes: so aqueles dados cujos valores no se alteram durante a execuo do algoritmo Variveis: so aqueles dados cujos valores podem ser alterados durante a execuo do algoritmo Prof. Ricardo Luiz de Freitas ricardo@fumec.br 29 Tipos de dados Classificao Simples Numricos Inteiro Real No Numricos Lgico Caractere Estruturados Arquivos Vetores Matrizes Prof. Ricardo Luiz de Freitas ricardo@fumec.br 30 Tipos de dados Numricos INTEIRO So os valores numricos inteiros (sem casas decimais) Podem ser valores positivos ou negativos Variando entre -999999999 e 999999999 Ex: 0, -2, 47, 58, 123220, -34235 REAL So os valores numricos que possuem casas decimais Podem ser valores positivos ou negativos Ex: 0.12, -45.17, 3.14159, 0.000001, 2 Prof. Ricardo Luiz de Freitas ricardo@fumec.br 31 Tipos de dados No Numricos LGICO Representadas por apenas 2 valores: Verdadeiro Falso CARACTERE Representadas por uma seqncia de caracteres (letras, nmeros ou caracteres especiais) Textos em geral Geralmente so delimitadas por aspas ( ) Ex: Rua, Computao, 20/10/1998, 1234 Prof. Ricardo Luiz de Freitas ricardo@fumec.br 32 Identificadores Todas as variveis ou constantes so identificadas por um nome que chamamos de IDENTIFICADOR
Exemplos: Salario Idade J Xpto NomeDaVariavel Prof. Ricardo Luiz de Freitas ricardo@fumec.br 33 Identificadores Regras para formao de identificadores S podem conter LETRAS e NMEROS Devem comear OBRIGATORIAMENTE com uma LETRA No podem conter ESPAOS ou caracteres especiais (@, ?, !, -, caracteres acentuados, etc.) Composto por no mximo 30 caracteres
Nomes vlidos: i, j, FRUTA, salario, a12, i23ER21, umnomequalquer Nomes invlidos: 1, 25, nome-fruta, 5JOSE, A$1, um nome qualquer, mdia Prof. Ricardo Luiz de Freitas ricardo@fumec.br 34 Identificadores O identificador deve passar ao programador (ou quem est lendo o programa/algoritmo) o tipo de dados que a varivel ou constante vai armazenar, ou seja, no devemos criar nomes que no tem nada a ver com o contedo da varivel ou constante:
Nomes inapropriados: i, j, a12, i23ER21, xyz, xibobo, ricardo
Nomes apropriados: idade, salario, nomefruta, contador, enderecocorrespondencia
Prof. Ricardo Luiz de Freitas ricardo@fumec.br 35 Algoritmo Exemplo (identificadores apropriados e inapropriados) algoritmo "X" var a, b, c : inteiro inicio leia(a) b <- 1 para c de 2 ate a faca b <- b * c fimpara escreval(b) fimalgoritmo Prof. Ricardo Luiz de Freitas ricardo@fumec.br 36 Algoritmo Exemplo (identificadores apropriados e inapropriados) algoritmo "CalculaFatorial" var Numero, Fatorial, Contador : inteiro inicio escreva("Informe um nmero: ") leia(Numero) Fatorial <- 1 para Contador de 2 ate Numero faca Fatorial <- Fatorial * Contador fimpara escreval("Fatorial = ",Fatorial) fimalgoritmo Prof. Ricardo Luiz de Freitas ricardo@fumec.br 37 Variveis (abreviao de dados variveis) O que uma Varivel?
Varivel uma posio na memria do computador reservada pelo algoritmo durante a sua execuo para armazenar dados a serem utilizados pelo prprio algoritmo Estes dados podem ter sido gerados pelo prprio algoritmo (comandos de repetio, comando de atribuio, etc.) ou inseridos pelo usurio quando da execuo de um comando de entrada/leitura de dados Prof. Ricardo Luiz de Freitas ricardo@fumec.br 38 Clusula VAR (declarao de variveis) var (declarao das variveis do algoritmo)
As variveis (ou dados) podem ser de vrios tipos: inteiro: define variveis numricas do tipo inteiro, ou seja, sem casas decimais. (Ex: 12, 1000, 5, 345) real: define variveis numricas do tipo real, ou seja, com casas decimais. (Ex: 1.45, 0.05, 500.4, 3.4) caractere: define variveis do tipo caractere, ou seja, cadeia de caracteres. (Ex: ABC, Ricardo, Agosto/2006). Prof. Ricardo Luiz de Freitas ricardo@fumec.br 39 Clusula VAR (declarao de variveis) Exemplo
algoritmo "PrimeiroAlgoritmo" var IDADE, NUMERO : inteiro ALTURA, PESO, SALARIO : real NOMEPAI, RUA, BAIRRO, DTNASC : caractere inicio ... fimalgoritmo
Prof. Ricardo Luiz de Freitas ricardo@fumec.br 40 Etapas de um algoritmo 1 etapa : entrada de dados (informados pelo usurio)
2 etapa : processamento (clculos)
3 etapa : sada de dados (exibio dos resultados) Processamento (clculos) Entrada de dados Sada de dados Prof. Ricardo Luiz de Freitas ricardo@fumec.br 41 Comando LEIA (comando de I/O entrada de dados) Comando utilizado para receber os valores digitados pelos usurio, atribuindo-os s variveis cujos nomes esto em <lista-de-variveis> ( respeitada a ordem especificada nesta lista).
leia(<lista-de-variveis>)
Exemplos leia(nome) leia(idade, peso, altura) Prof. Ricardo Luiz de Freitas ricardo@fumec.br 42 Comando LEIA (comando de I/O entrada de dados) O tipo de dado a ser digitado pelo usurio depende do tipo da varivel utilizada no comando, se a varivel for do tipo INTEIRO no podemos digitar um texto ou um valor numrico real, pois abortar a execuo do algoritmo.
O usurio digita o dado via teclado e aperta ENTER. O dado gravado na VARIAVEL e o cursor da tela pula para a primeira coluna da prxima linha. Prof. Ricardo Luiz de Freitas ricardo@fumec.br 43 Comando ESCREVA (comando de I/O sada de dados) Comando utilizado para se escrever (imprimir) informaes na tela ou em qualquer dispositivo de sada de dados (impressora, fax, modem, etc) pelo algoritmo.
escreva(...) A informao entre parnteses impressa e o cursor permanece na mesma linha. escreval(...) Idem, porm o cursor pula para a primeira coluna da prxima linha. Prof. Ricardo Luiz de Freitas ricardo@fumec.br 44 Comando ESCREVA (comando de I/O sada de dados) Temos as seguintes variaes para o comando:
escreva("Mensagem a ser impressa") O texto entre aspas impresso. escreva(variavel) O contedo na memria de VARIAVEL impresso. escreva("Mensagem 1 ",var1," Mensagem 2 ",var2) Os textos so impressos junto com os contedos das variveis var1 e var2, na mesma linha e um depois do outro totalmente colados uns aos outros.
ATENO: importante o uso de espaos dentro das aspas a fim de que os dados (textos e contedos de variveis) sejam impressos separados uns dos outros Prof. Ricardo Luiz de Freitas ricardo@fumec.br 45 Comando ESCREVA (comando de I/O sada de dados) Exemplos de uso do escreva/escreval:
var NOME : caractere IDADE : inteiro SALARIO, INSS : real
escreva("Nome: ",nome) impresso: Nome: Joselito Sem Noo escreval("Sua idade de ",idade) impresso: Sua idade de 39 escreval("Salrio de ",salario," INSS de ",inss) impresso: Salrio de 850.65 INSS de 87.40
escreval salto de uma linha em branco
Prof. Ricardo Luiz de Freitas ricardo@fumec.br 46 Exemplo 1 algoritmo "CalcSomaMedia" var n1, n2, soma : inteiro media : real inicio leia(n1) leia(n2) soma <- n1 + n2 media <- soma / 2 escreval(soma) escreval(media) fimalgoritmo Prof. Ricardo Luiz de Freitas ricardo@fumec.br 47 Exemplo 1
algoritmo "CalcSomaMedia" var n1, n2, soma : inteiro media : real Inicio escreva("Digite um nmero : ") leia(n1) escreva("Digite outro nmero : ") leia(n2) soma <- n1 + n2 media <- soma / 2 escreval("Soma = ",soma) escreval("Mdia = ",media) fimalgoritmo Entrada de Dados Clculos Sada de Dados Prof. Ricardo Luiz de Freitas ricardo@fumec.br 48 Exemplo 2 Faa um algoritmo que solicite ao usurio o seu nome completo e o nmero de filhos que ele tem, e depois imprima estas informaes. Prof. Ricardo Luiz de Freitas ricardo@fumec.br 49 Exemplo 2 (algoritmo resolvido) algoritmo "TerceiroAlgoritmo" var nome : caractere numfilhos : inteiro inicio escreva("Qual o seu nome? ") leia(nome) escreva("Quantos filhos voc tem? ") leia(numfilhos) escreval("Nome: ",nome) escreval("Nmero de filhos: ",numfilhos) fimalgoritmo Entrada de Dados Sada de Dados Prof. Ricardo Luiz de Freitas ricardo@fumec.br 50 Exemplo 3 Faa um algoritmo que solicite ao usurio o seu nome, seu endereo completo (logradouro, nmero, bairro, cidade, estado e CEP), seu peso (em Kg) e o nmero do sapato. Depois imprima uma etiqueta com estas informaes de acordo com o layout abaixo:
x---------------------nome------------------------x x---------logradouro----------x, x---numero---x Bairro x-----------------bairro-------------------x x-----------cidade---------------x x--estadox CEP x---cep---x
Peso (kg): x---peso---x Nmero do sapato: x--numero do sapato--x Prof. Ricardo Luiz de Freitas ricardo@fumec.br 51 Exemplo 3 Exemplo de sada de dados:
RICARDO LUIZ DE FREITAS RUA COBRE, 200 Bairro CRUZEIRO BELO HORIZONTE MG CEP 30150-101
Peso (kg): 86.5 Nmero do sapato: 40 Prof. Ricardo Luiz de Freitas ricardo@fumec.br 52 Exemplo 3 (algoritmo resolvido) algoritmo "Etiqueta" var nome, logradouro, bairro, cidade, uf, cep, numero: caractere sapato : inteiro peso : real inicio escreva("Informe o seu nome: ") leia(nome) escreva("Informe o logradouro: ") leia(logradouro) escreva("Informe o nmero: ") leia(numero) escreva("Informe o bairro: ") leia(bairro)
(continua...) Prof. Ricardo Luiz de Freitas ricardo@fumec.br 53 Exemplo 3 (algoritmo resolvido) (continuao...)
escreva("Informe a cidade: ") leia(cidade) escreva("Informe a UF: ") leia(uf) escreva("Informe o CEP: ") leia(cep) escreva("Informe o nmero do seu sapato: ") leia(sapato) escreva("Informe o seu peso em Kg: ") leia(peso)
(continua...) Prof. Ricardo Luiz de Freitas ricardo@fumec.br 54 Exemplo 3 (algoritmo resolvido) (continuao...)
limpatela escreval(nome) escreval(logradouro,", ",numero) escreval("Bairro ",bairro) escreval(cidade," - ",uf) escreval("CEP ",cep) escreval escreval("Peso (Kg): ",peso) escreval("Nmero do sapato: ",sapato) fimalgoritmo Prof. Ricardo Luiz de Freitas ricardo@fumec.br 55 Exerccio 1 Faa um algoritmo que solicite ao usurio o seu nome, seus documentos (CPF, identidade, ttulo de eleitor, carteira de motorista), seu salrio e o nome da empresa em que trabalha, e depois imprima a sua FICHA FUNCIONAL de acordo com o layout abaixo:
FICHA FUNCIONAL DE: x---------------------nome------------------------x
Documentos: CPF ............................................. x-----cpf-----x C.I. ............................................... x---identidade---x Titulo de eleitor ........................... x---ttulo de eleitor---x Carteira de motorista ................... x---carteira de motorista ---x
Empresa: x-----nome da empresa------x Salrio: R$ x-----salrio-----x
Prof. Ricardo Luiz de Freitas ricardo@fumec.br 56 Exerccio 1 Exemplo de sada de dados:
FICHA FUNCIONAL DE: RICARDO LUIZ DE FREITAS
Documentos: CPF ............................................. 415467889-03 C.I. ............................................... M5677823 Titulo de eleitor ........................... 458690688444 Carteira de motorista ................... 22349377
Empresa: FEA-FUMEC Salario: R$ 10500.45
Prof. Ricardo Luiz de Freitas ricardo@fumec.br 57 Exerccio 2 A Secretaria do Meio Ambiente mediu a quantidade de poluentes atmosfricos emitidos por uma empresa. Dependendo do valor obtido, a empresa foi multada conforme a tabela abaixo. Faa um algoritmo que monte esta tabela, solicitando as informaes variveis (xxx) para o usurio: Quantidade de Poluente Emitido x Valor da Multa At xxx (1) multa de R$ xxx (3)
Entre xxx (1) e xxx (2) multa de R$ xxx (4)
Acima de xxx (2) multa de R$ xxx (5) por poluente emitido Prof. Ricardo Luiz de Freitas ricardo@fumec.br 58 Exerccio 2 Exemplo de sada de dados: Quantidade de Poluente Emitido x Valor da Multa At 1500 multa de R$ 1000.55 Entre 1500 e 3000 multa de R$ 3550.34 Acima de 3000 multa de R$ 1200.21 por poluente emitido