Algoritmos
Prof. Antonio Tadeu Pellison tadeu@pellison.online
ALGORITMO
• Um Algoritmo é uma seqüência de instruções ordenadas de forma lógica para a resolução de uma determinada tarefa ou problema.
ALGORITMO NÃO COMPUTACIONAL
• Abaixo é apresentado um Algoritmo não computacional cujo objetivo é usar um telefone público.
Início
Tirar o fone do gancho; Ouvir o sinal de linha; Introduzir o cartão;
Teclar o número desejado; Se der o sinal de chamar
Conversar; Desligar; Retirar o cartão; Senão Repetir; Fim.
ALGORITMO NÃO COMPUTACIONAL
EXEMPLO 1:
• Desenvolver um algoritmo não computacional de uma troca de pneu furado de um carro.
Inicio
Sinalizar o veículo;
Afrouxar ligeiramente as porcas ; Suspender o carro;
Retirar as porcas e o pneu; Colocar o pneu reserva; Apertar as porcas;
Abaixar o carro;
Dar o aperto final nas porcas; Fim.
Construindo um Algoritmo (Problema das Torres de Hanói):
• Regra: Mover os discos de uma haste para outra sem que o disco maior fique sobre o disco menor. Mover todos os discos da haste da torre A para a torre C.
Início
Mover o disco 1 para a haste C ; Mover o disco 2 para a haste B ; Mover o disco 1 para a haste B ; Mover o disco 3 para a haste C ; Mover o disco 1 para a haste A ; Mover o disco 2 para a haste C ; Mover o disco 1 para a haste C ; Fim.
Algoritmos para propósitos genéricos
• Descreva uma sequência de passos para as
seguintes atividades. Procure fazer uma versão bem simplificada (poucos passos).
1. tomar banho 2. atravessar a rua 3. fritar um ovo
Tomar Banho
Inicio
Entrar no banheiro; Tirar a roupa;
Abrir a torneira do chuveiro; Enquanto a água estiver fria
Inicio Esperar; Fim; Entrar na água; Lavar-se; Sair da água; Fechar a torneira; Enxugar-se; Vestir-se; Fim.
Atravessar a rua
Inicio
Caminhar até a faixa de pedestre; Olhar para ambos os lados;
Enquanto estiver vindo carro Inicio
Esperar;
Olhar para ambos os lados; Fim;
Atravessar a rua; Fim.
Fritar um ovo
Inicio
Pegar óleo, frigideira e ovo;
Colocar a frigideira na boca do fogão; Colocar o óleo na frigideira;
Acender a chama do fogão; Enquanto o óleo estiver frio
Inicio
Esperar; Fim;
Quebrar o ovo;
Colocar o ovo na frigideira;
Enquanto o ovo não estiver frito Inicio
Jogar óleo em cima do ovo com uma colher; Fim;
Temperar o ovo com sal; Retirar ovo da frigideira; Apagar a chama do fogão; Fim.
Início
Posicionar a escada debaixo da lâmpada queimada; Enquanto não alcançar a lâmpada
Inicio
Subir um degrau da escada; Fim;
Enquanto a lâmpada não soltar Inicio
Girar a lâmpada no sentido anti-horário; Fim;
Remover a lâmpada queimada;
Se tiver lâmpada da mesma potência Inicio
Selecionar a lâmpada;
Posicionar a nova lâmpada no soquete Enquanto a lâmpada não prender
Inicio
Girar a lâmpada no sentido horário; Fim; Descer da escada; Fim; Senão Inicio Desce da escada; Fim; Fim.
PROGRAMA
• Um programa é um Algoritmo escrito em uma linguagem computacional.
LINGUAGENS DE PROGRAMAÇÃO
• São Softwares que permitem o desenvolvimento de programas. Possuem um poder de criação ilimitado, desde jogos, editores de texto, sistemas empresariais até sistemas operacionais.
• Existem várias linguagens de programação, cada uma com suas características próprias.
• Exemplos: – Pascal – Clipper – C – Visual Basic – Java – Flash – Delphi e etc.
ALGORITMOS EM “PORTUGOL”
• Durante nosso curso iremos aprender a desenvolver nossos Algoritmos em uma
pseudo-linguagem conhecida como “Portugol” ou Português Estruturado.
• “Portugol” é derivado da aglutinação de Português + Algol. Algol é o nome de uma
linguagem de programação estruturada usada no final da década de 50.
OPERADORES ARITMÉTICOS
+ Adição
- Subtração
* Multiplicação / Divisão
OPERADORES RELACIONAIS
> Maior que < Menor que >= Maior ou Igual <= Menor ou Igual = Igual <> DiferenteLINEARIZAÇÃO DE EXPRESSÕES
• Para a construção de Algoritmos todas as expressões aritméticas devem ser
linearizadas, ou seja, colocadas em linhas. • É importante também ressalvar o uso dos
operadores correspondentes da aritmética tradicional para a computacional.
MODULARIZAÇÃO DE EXPRESSÕES
• A modularização é a divisão da expressão em partes, proporcionando maior compreensão e definindo
prioridades para resolução da mesma.
• Como pode ser observado no exemplo anterior, em expressões computacionais usamos somente
parênteses “( )” para modularização.
• Na informática podemos ter parênteses dentro de parênteses.
• Exemplos de prioridades: (2+2)/2=2
OPERADORES ESPECIAIS (MOD e DIV)
• MOD Retorna o resto da divisão entre 2 números inteiros.
• DIV Retorna o valor inteiro que resulta da divisão entre 2 números inteiros.
FUNÇÕES
• Uma função é um instrumento
(Sub-algoritmo) que tem como objetivo retornar um valor ou uma informação.
• A chamada de uma função é feita através da citação do seu nome seguido opcionalmente de seu argumento inicial entre parênteses. • As funções podem ser predefinidas pela
linguagem ou criadas pelo programador de acordo com o seu interesse.
BIBLIOTECAS DE FUNÇÕES
• Armazenam um conjunto de funções que podem ser usadas pelos programas.
FUNÇÕES PRÉ-DEFINIDAS
- ABS( ) VALOR ABSOLUTO - SQRT( ) RAIZ QUADRADA
- SQR( ) ELEVA AO QUADRADO - TRUNC( ) VALOR TRUNCADO
- ROUND( ) VALOR ARREDONDADO - LOG( ) LOGARITMO
- SIN( ) SENO
- COS( ) COSSENO - TAN( ) TANGENTE
OPERADORES LÓGICOS
• Atuam sobre expressões retornando sempre valores lógicos como Falso ou Verdadeiro.
– E - RETORNA VERDADEIRO SE AMBAS AS PARTES FOREM VERDADEIRAS.
– OU - BASTA QUE UMA PARTE SEJA VERDADEIRA PARA RETORNAR VERDADEIRO.
– NÃO - INVERTE O ESTADO, DE VERDADEIRO PASSA PARA FALSO E VICE-VERSA.
EXPRESSÕES LÓGICAS
• As expressões compostas de relações sempre retornam um valor lógico.
• Exemplos:
– 2+5>4 Verdadeiro – 3<>3 Falso
• De acordo com a necessidade, as expressões podem ser unidas pelos operadores lógicos.
• Exemplos:
– 2+5>4 E 3<>3 Falso
– 2+5>4 OU 3<>3 Verdadeiro – NÃO(3<>3) Verdadeiro
VARIÁVEIS
• Variáveis são endereços de memória destinados a armazenar informações temporariamente.
• Todo Algoritmo ou programa deve possuir variável!
VARIÁVEIS DE ENTRADA E SAÍDA
• Variáveis de Entrada armazenam informações fornecidas por um meio externo,
normalmente usuários ou discos.
• Variáveis de Saída armazenam dados processados como resultados.
IDENTIFICADORES
• São os nomes dados a variáveis, constantes e programas. • Regras Para construção de Identificadores:
– Não podem ter nomes de palavras reservadas (comandos da linguagem);
– Devem possuir como 1º caractere uma letra ou Underscore ( _ ); – Ter como demais caracteres letras, números ou Underscore;
– Ter no máximo 127 caracteres; – Não possuir espaços em branco;
– Não utilizar caracteres especiais (*, &, #, @,....)
Assinale com X os nomes válidos:
(X) Endereço ( ) 21brasil ( ) brasil 2014 (X) NOME_FILHO ( ) NOME.FILHO ( ) NOME FILHO (X) NOME7FILHOAssinale com X os nomes válidos:
( ) End*A-6 ( ) 2_brasil (X) brasil2014 ( ) NOME$FILHO ( ) “NOMEFILHO” ( ) #cidadE (X) NoMeUsArIoAssinale com X os nomes válidos:
( ) Windows 10 (X) Rio_2016 ( ) _Botucatu SP ( ) linha 9 - leste ( ) “telefone 99689955” ( ) @_idade (X) Rodovia_SP_370IDENTIFICADORES
• Exemplos: NOME TELEFONE IDADE_FILHO NOTA1 SALARIO PITIPOS PRIMITIVOS DE DADOS
• INTEIROADMITE SOMENTE NÚMEROS INTEIROS. GERALMENTE É UTILIZADO PARA REPRESENTAR UMA CONTAGEM (QUANTIDADE)
• REALADMITE NÚMEROS REAIS (COM OU SEM CASAS DECIMAIS). GERALMENTE É UTILIZADO PARA REPRESENTAR UMA MEDIÇÃO.
• CARACTEREADMITE CARACTERES
ALFANUMÉRICOS. OS NÚMEROS QUANDO
DECLARADOS COMO CARACTERES TORNAM SE REPRESENTATIVOS E PERDEM A ATRIBUIÇÃO DE VALOR.
• LÓGICOADMITE SOMENTE VALORES LÓGICOS(VERDADEIRO/FALSO).
INTEIRO
Toda e qualquer informação numérica que pertença ao conjunto dos números inteiros (negativa, nula ou positiva).
Exemplos: 39, 0, -56 entre outros.
a) Ele tem 15 irmãos.
b) A temperatura desta noite será de -2 graus.
REAL
Toda e qualquer informação numérica que pertença ao conjunto dos números reais (negativa, nula ou positiva, inteiro ou fracionário).
Exemplos:- 4, 3, 0, 35, 1,23
a) Ela tem 1,73 metro de altura.
CARACTERE
São caracterizadas como tipos caracteres, as seqüências contendo letras, números e símbolos especiais. Uma seqüência de caracteres deve ser indicada entre aspas (“”). Este tipo de dado é também conhecido como alfanumérico, string, literal ou texto.
Exemplos: “Rua Alfa, 52 Apto 1”, “Fone: 574-9988”, “04387-456”, “ “, “7”.
LÓGICO
São caracterizados como tipos lógicos, os dados com valores verdadeiro e falso, sendo que este tipo de dado poderá representar apenas um dos dois valores. Ele é chamado por alguns de tipo boleano, devido à contribuição do filósofo e
matemático inglês George Boole na área da lógica matemática.
COMANDOS DE I/O (INPUT/OUTPUT)
• LER() Comando de entrada que permite a leitura de Variáveis de Entrada.
• ESCREVER() Comando de saída que exibe uma informação na tela do monitor.
• IMPRIMIR() Comando de saída que envia uma informação para a impressora.
SINAL DE ATRIBUIÇÃO
• Uma Variável nunca é eternamente igual a um valor, seu conteúdo pode ser alterado a
qualquer momento. Portanto para atribuir valores a variáveis devemos usar o sinal de “=”.
• Exemplos: A = 2; B = 3;
CORPO GERAL DE UM ALGORITMO
ALGORITMO <<identificador>>; CONST <<identificador>> = <<dado>>; VAR <<identificador>> : <<tipo>>; INICIOCOMANDOS DE ENTRADA,PROCESSAMENTO E SAÍDA <<comando1>>;
<<comandoN>>; FIM.
ESTRUTURAS SEQÜÊNCIAIS
• Como pode ser analisado no tópico anterior, todo programa possui uma estrutura
; PONTO E VÍRGULA ;
• O sinal de ponto e vírgula “;” indica a
existência de um próximo comando (passa para o próximo).
PRIMEIRO ALGORITMO
• Criar um Algoritmo para ler o nome e as 4 notas bimestrais de um aluno. Em seguida o Algoritmo calcula e escreve a média obtida.
ALGORITMO media_final; VAR
NOTA1, NOTA2, NOTA3, NOTA4, MEDIA: REAL; NOME : CARACTERE [35];
INICIO
ESCREVER(“Digite nome do aluno: ”); LER (NOME);
ESCREVER(“Digite as quatro notas: ”); LER (NOTA1, NOTA2, NOTA3, NOTA4);
MEDIA = (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4; ESCREVER(“Nome –”, NOME);
ESCREVER(“Media –”,MEDIA); FIM.
“ASPAS”
• Quando queremos exibir uma mensagem para a tela ou impressora ela deve estar contida
entre aspas, caso contrário, o computador irá identificar a mensagem como Variável
Indefinida. • Exemplo:
Questões
1) Qual a finalidade do comando de atribuição? O comando de atribuição é o comando utilizado para guardar um determinado valor em uma
variável. Ex:
TOTAL = 0;
SOMA = SOMA +1;
Questões
2) Suponha a seguinte sequência de atribuições e determine o valor final da variável W:
a) Y = 10; Z = Y + 4; W = Y; W = Z * 2; W=Y; W = _____ b) W=0; Y = 5; Z = Y – 2; W = Y + Z; W = _____ 10 8
Questões
c) Y = 5; Z = Y + 4; W = Z - 2; W = Y + 4; W= W * 2 ; W = _____ d) W=10; Y = W+5; Z = Y + 2; W = W + Z; W = _____ 18 27Questões
e) Y = 15; X = Y + 4; X = X * 2; W = X - 2; W = X + W; W= W * 2 ; W = _____ d) W=10; Y = W+10; Y = Y + 2; W = W +Y; W = _____ 148 32Questões
3) De acordo com o algoritmo a seguir, os valores finais das variáveis N1, N2 e N3,
respectivamente, serão: ALGORITMO valores; VAR N1, N2, N3 : INTEIRO; INICIO N1 = 1; N2 = 2 + 2 * N1; N1 = N2 +1; N3 = N2 + 2; FIM. N1 = 5 N2 = 4 N3 = 6
E1) Escreva um algoritmo que leia um
número inteiro pelo teclado e exiba o
seu sucessor.
ALGORITMO sucessor; VAR N, SUCN: INTEIRO; INICIO ESCREVER(“Digite um número”); LER(N); SUCN = N + 1;
ESCREVER(“Sucessor do número digitado =“, SUCN); FIM.
E2) Escreva um algoritmo que calcule a
área de um quadrado de lado L.
ALGORITMO areadeumquadrado; VAR
area, L : REAL; INICIO
ESCREVER(“Digite o lado do quadrado”); LER(L);
area = SQR(L);
ESCREVER(“Área calculada = ”, area); FIM.
E3) Criar um algoritmo para calcular a
média de duas variáveis A e B. Mostre
na tela o resultado obtido.
ALGORITMO mediafinal; VAR
A, B, media: REAL; INICIO
ESCREVER(“Digite valor de A”); LER(A);
ESCREVER(“Digite valor de B”); LER(B);
media = (A + B)/2;
ESCREVER(“Média de A+B =”,media); FIM.
E4) Ler dois valores para as variáveis A
e B, efetuar a troca dos valores de
forma que a variável A passe a possuir
o valor da variável B e que a variável B
passe a possuir o valor da variável A.
Apresentar os valores trocados.
ALGORITMO trocadevariaveis; VAR
A, B, C : REAL; INICIO
ESCREVER(“Digite o valor de A”); LER(A); ESCREVER(“Digite o valor de B”); LER(B); C = A; A = B; B = C;
ESCREVER(“Novo valor de A=”,A); ESCREVER(“Novo valor de B=”,B); FIM.
E5) Qual o significado de uma
atribuição? Supondo A=3 e B=4, quais
seriam os valores finais de A, B, e C na
seguinte atribuição:
O comando de atribuição é o comando
para guardar um determinado valor
em uma variável.
C = 4 + A * B
C = 4 + 3 * 4
C = 4 + 12
C = 16
{LINHAS DE COMENTÁRIO}
• Podemos inserir em um Algoritmo
comentários para aumentar a compreensão do mesmo, para isso basta que o texto fique entre Chaves “{}”.
• Exemplo:
SEGUNDO ALGORITMO
• Criar um Algoritmo para ler o raio de uma circunferência e calcular sua área.
SEGUNDO ALGORITMO
ALGORITMO area_circunferencia; CONST
PI = 3.1416; VAR
raio, AREA : REAL; INICIO
ESCREVER(“Digite o valor do raio”); LER (raio); {Entrada}
AREA = PI * SQR(raio); {Processamento} ESCREVER (“AREA =”, AREA); {Saída}
E6) A ordem das atribuições são
importantes? A=B e C=A tem o mesmo
efeito de C = A e A=B?
Sim. Supondo: A=3 e B=4 Primeira situação: A= B C= A A= 4 C= 4 Segunda Situação: C= A A= B C= 3 A= 4
E7) Aponte os erros no algoritmo
abaixo:
ALGORITMO %ntriplo; VAR
NUM, TRIPLO: INTEIRO; INICIO ESCREVER(“Digite um número”); LER(NUM); TRPLO = NUM . 3; ESCREVER(“Triplo = ” TRIPLO); FIM.
ALGORITMO %ntriplo; VAR
NUM, TRIPLO: INTEIRO; INICIO ESCREVER(“Digite um número”); LER(NUM); TRPLO = NUM . 3; ESCREVER(“Triplo = ” TRIPLO); FIM. Caractere especial Variável errada Operador errado Falta virgula
EXERCÍCIOS
1) Tendo as variáveis SALARIO, IR e SALLIQ, e
considerando os valores abaixo. Informe se as expressões são verdadeiras ou falsas.
SALARIO IR SALLIQ EXPRESSÃO V ou f
100,00 0,00 100,00 SALLIQ>=100,00 VERDADEIRO 200,00 10,00 190,00 SALLIQ<190,00 FALSO
2) Sabendo que A=3, B=7 e C=4, informe se as expressões abaixo são verdadeiras ou falsas.
a) (A+C) > B (F) b) B >= (A + 2) (V) c) C = (B –A) (V) d) (B + A) <= C (F) e) (C+A) > B (F)
3) Sabendo que A=5, B=4 e C=3 e D=6, informe se as expressões abaixo são verdadeiras ou falsas.
a) (A > C) E (C <= D) (V) b) (A+B) > 10 OU (A+B) = (C+D) (V) c) (A>=C) E (D >= C) (V)
4) Dado um número inteiro obter o último algarismo desse número.
ALGORITMO ultimoalgarismo; VAR
A, x: INTEIRO; INICIO
ESCREVER(“Digite o valor de A”); LER(A);
x = (A MOD 10);
ESCREVER(“Último algarismo= ”,x); FIM.
5) Criar um algoritmo para executar a seguinte expressão matemática:
ALGORITMO resultadoformula; VAR
A, B, x : REAL; INICIO
ESCREVER(“Digite o valor de A”); LER(A); ESCREVER(“Digite o valor de B”); LER(B); x = (A + B) * 2; ESCREVER(“Resultado X =”,x); FIM.
6) Criar um algoritmo para calcular a área de um triângulo.
2
* h
b
A =
ALGORITMO areadotriangulo; VAR A, b, h : REAL; INICIO ESCREVER(“Digite a altura:”); LER(h); ESCREVER(“Digite a base:”); LER(b); A = (b * h) / 2;
ESCREVER(“Área calculada =“,A); FIM.
7) Escreva um algoritmo para cálculo do quadrado de um número.
ALGORITMO quadradodeumnumero; VAR
A, x : REAL; INICIO
ESCREVER(“Digite o valor de A”); LER(A);
x = (A * A);
ESCREVER(“Resultado =”,x); FIM.
8) Dado um número inteiro, fornecer como
saída o próprio número, o dobro, o triplo e o quadrado desse número.
ALGORITMO numero; VAR
A, d, t, q : INTEIRO; INICIO
ESCREVER(“Digite o valor de A”); LER(A); d = 2 * A; t = 3 * A; q = A * A; ESCREVER(“Número =”,A); ESCREVER(“Número dobro=”,d); ESCREVER(“Número triplo=”,t); ESCREVER(“Número quadrado=”,q); FIM.
1. Dadas as declarações abaixo, assinale C para as corretas e E para as erradas. Corrija as erradas.
a. ( ) Ao declarar uma variável , deve-se sempre começar com um número.
b. ( ) Os tipos de dados primitivos são: Inteiro, Real, Char e Lógico.
c. ( ) Um algoritmo deve obrigatoriamente começar com INICIO e terminar
com FIM.
d. ( ) O valor definido em uma constante não pode ser alterado durante o algoritmo.
e. ( ) C + 1 = 10;
2. Escreva exatamente o que o algoritmo abaixo exibirá para o usuário INICIO INTEIRO NUMERO; NUMERO =10; NUMERO = NUMERO +10;
NUMERO = NUMERO * NUMERO; NUMERO = (NUMEROMOD13);
ESCREVER(“Resultado calculado; “,NUMERO,” reais”); FIM
3. Elabore os algoritmos propostos abaixo utilizando portugol:
a. Ler dois números e calcular a soma entre eles; b. Ler três números e calcular a média entre eles;
c. Sabendo-se que um táxi cobra 4 reais a bandeirada e 1 real por cada quilometro rodado. Ler o número de quilômetros rodados pelo passageiro, calcular e
Ler dois números e calcular a soma entre eles.
ALGORITMO somadois; VAR
A, B, soma: REAL; INICIO
ESCREVER(“Digite valor de A”); LER(A);
ESCREVER(“Digite valor de B”); LER(B);
soma = A + B;
ESCREVER(“Soma de A+B =”,soma); FIM.
Ler três números e calcular a média entre eles.
ALGORITMO mediatres; VAR
A, B, C, media : REAL; INICIO
ESCREVER(“Digite o valor de A”); LER(A); ESCREVER(“Digite o valor de B”); LER(B); ESCREVER(“Digite o valor de C”); LER(C); media = (A + B+C)/3;
ESCREVER(“Resultado media =”,media); FIM.
Sabendo-se que um táxi cobra 4 reais a bandeirada e 1 real por cada quilometro rodado. Ler o número de quilômetros rodados pelo passageiro, calcular e escrever o preço a ser pago.
ALGORITMO valorpgtaxi; VAR
Kmrodado, valorpg : REAL; INICIO
ESCREVER(“Digite o km rodado”); LER(Kmrodado);
valorpg = Kmrodado*1+4;
ESCREVER(“Valor a ser pago = ”,valorpg); FIM.