Buscar

2_Algoritmos

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

*
*
Yoshizo Togue
*
*
*
*
Formalização da ideia de um procedimento através de uma sequência de
comandos pré-estabelecidos.
Três tipos de pseudolinguagem:
 Algoritmo Fluxograma Chappin 
Início
Leia n1, n2
Media ← (n1+n2)/2
Se media≥ 6 Então
 Escreva “Aprovado”
Senão
 Escreva “Reprovado”
Fim-se
Fim
*
*
Método a ser usado para escrevermos os procedimentos.
O procedimento lógico consiste em executar comando a comando na
sequência que as mesmas aparecem.
Corpo do procedimento
Início
Declarações de variáveis
Sequência de comandos
Fim
*
*
Tipos básicos utilizados na construção de algoritmos.
Basicamente dividido em quatro tipos.
*
*
Valores fixos, também conhecidos como literais
A indicação dos diversos tipos de dados é normalmente a mesma.
Veja abaixo alguns exemplos:
Numérico: padrão (2, -34 , 218.00), científico (2.3E-3 , 0.322E+12)
Caracter: Entre aspas (“João” , “Rua B, Lote 21/101-C”)
Lógico: Entre pontos (.Verdade. , .Falso.)
*
*
Definição
Espaço na memória alocado (reservado) no computador
onde os valores serão armazenados.
Composição do nome
Elementos válidos para o nome de uma variável:
Letras do alfabeto: 
	a, b, c, d, e,f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z
Dígitos:
	0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Caracteres especiais (depende da métrica): 
	_ % ! $ # (mais comuns)
*
*
*
*
Declaração
Em programas de computador, variáveis são armazenadas em memória.
*
*
Declaração
Método de indicação do tipo do valor a ser armazenado na variável como
conteúdo
O tipo do valor a ser armazenado varia em cada linguagem. Veja alguns tipos
básicos nos exemplos abaixo.
Forma geral
Defina <listavar> <Tipo>
Ex: Defina nome caracter
 Defina n1, n2 real
 Defina idade inteiro
 Defina chave lógico
*
*
Variáveis que fazem referência a um conjunto de valores de mesmo tipo de
dados através de um índice para cada posição reservada.
Forma geral
Defina <listavar>(<índice1> [, <índice2>[, ... ] ] ) <Tipo>
Ex: Defina nome(10) caracter
 Defina nota1(10), matriz(4,7) real
 Defina idade(10) inteiro
 Defina chave(10) lógico
*
*
Atribuição
Uma das formas de popular (preencher, incluir conteúdo a) uma variável
Alguns valores são automaticamente convertidos como é o caso de valores
numéricos inteiros e numéricos reais
Forma geral
<variável>  <expressão> onde a expressão pode ser uma constante ou
				 uma expressão aritmética
Ex: nome  “Maria”
 nota1  7.5
 Idade  21
 chave  .Verdade.
 media  (n1 + n2) / 2
 nomecompleto  nome + sobrenome
*
*
Prioridade
Potência (**)
Multiplicação (*) ou divisão (/)
Soma (+) ou subtração (-)
Execução dos operadores de mesmo nível avaliando a expressão da esquerda para a direita.
Alterar prioridade com uso de parênteses.
 a+b/c+d a+b/(c+d)
 (a+b)/c+d (a+b)/(c+d)
*
*
Leitura: Usado para atribuir dados externos a área reservada na
memória (variável). Outra forma de atribuição de valores.
Forma geral
	Leia <listavar>
Ex: 	Leia nome
 	 	Leia nota1, nota2
 	Leia idade, cargo
Observação 
Valores de tipos diferentes podem ser lidos em um mesmo comando
*
*
Escrita: Usado para exibir dados existentes na área reservada da
memória (variável) e valores constantes.
Forma geral
	Escreva <listavar / listaconst>
Ex: 	Escreva “Alô mundo!”
		Escreva 1277
	 	Escreva “Nome: “, nome
	 	Escreva idade, cargo
Observações
Valores de tipos diferentes podem ser escritos em um mesmo comando
*
*
Exemplo de utilização dos comandos visto até agora.
Início
Defina nome caracter
Defina idade inteiro
Defina nota1, nota2, media real
Leia nome, idade, nota1, nota2
media  (nota1 + nota2) / 2
Escreva nome, idade, nota1, nota2, media
Fim
	Sublinhar todas as palavras reservadas (usadas para definir uma ação a ser executada no algoritmo).
*
*
Início
Defina nome caracter
Defina matricula inteiro
Defina salario real
Leia nome, matricula, salario
Escreva nome, matricula, salario
Fim
	
Exercício: Montar um algoritmo para ler o nome, matrícula e salário de um funcionário da empresa Acme e escrevê-los.
*
*
Exercício: Montar um algoritmo para ler o código, preço de custo de
um produto, calcular um lucro de 10% e escrevê-los.
	Início
	Defina codigo inteiro
	Defina precocusto, lucro real
	Leia codigo, precocusto
	lucro  precocusto * 0.1
	Escreva codigo, precocusto, lucro
	Fim
	
*
*
Condicional: Comando de decisão para desvio de fluxo dentro do procedimento.
	Três tipos: 1 ramo, 2 ramos, n ramos
	Forma Geral (condicional de1 ramo)
	Se <condição> Então
	[Sequência de comandos
Fim-se
*
*
Forma Geral (Condicional de 2 ramos)
	Se <condição> Então
	[Sequência de comandos1
Senão
	[Sequência de comandos2
Fim-se
*
*
Operador lógico
Sinais usados para manipulação de dados: **, *, /, +, -
Sinais usados para comparação de dados: <, >, ≤, ≥, , ≠
Exemplos: valor<0, (n1+n2)/2≤6, num1>num2, nome ≠”EVA”
Conector lógico
Palavras usadas para comparação (em ordem de prioridade):
		.NÃO., .E., .OU.
Exemplos: a<0 .e. f=b+1, .não.(f>0.ou. a<b) .e. c≠a/3
Avaliação da expressão sempre da esquerda para a direita.
Altere a prioridade usando parênteses.
*
*
Falaremos agora um pouco sobre os três conectores lógicos básicos:
Conector OU: Basta que uma das sentenças seja verdadeira e toda a
condição será verdadeira.
Exemplo:
*
*
Conector E: Basta que uma das sentenças seja falsa e toda a condição
será falsa.
Exemplo:
*
*
Conector NÃO: A condição será falsa se a sentença por verdadeira e
vice-versa.
Exemplo:
*
*
Supondo a  1, b  2, c  3, d  0, resolva as seguintes expressões lógicas:
01) a < 1		02) a = 1		03) a ≤ 1
04) a + b ≤ c + d / a	05) a . d + 3 > c – 1	06) a ≤ 0 .ou. b ≠ 2
07) a ≤ (b + d) / 2 .ou. b ≠ 2	08) b < c + d .ou. a ≤ (b + d) / 2
09) b ≠ 2 .ou. b < c + d		10) a ≤ 0 .e. b ≠ 2
*
*
Supondo a  1, b  2, c  3, d  0, resolva as seguintes expressões lógicas:
11) a ≤ (b + d) / 2 .e. b ≠ 2	12) b < c + d .e. a ≤ (b + d) / 2
13) b ≠ 2 .e. b < c + d		14) a ≤ (b + d) / 2 .ou. b ≠ 2 .e. b < c + d
15) b ≤ 2 .e. b < c + d .ou. a ≤ 0	16) b ≠ 2 .e. b < c + d .ou. a ≤ (b + d) / 2
17) a ≤ (b + d) / 2 .ou. b < c + d .e. a ≤ (b + d) / 2
*
*
Supondo a  1, b  2, c  3, d  0, resolva as seguintes expressões lógicas:
18) b ≤ 2 .e. (b < c + d .ou. a ≤ (b + d) / 2)
19) b ≤ 2 .e. (b < c + d .ou. a ≤ 0)	20) b ≤ 2 .e. .não.(b < c + d .ou. a ≤ 0)
21) .não. b ≤ 2 .e. (b < c + d .ou. a ≤ 0)
22) .não. b ≤ 2 .e. .não.(b < c + d .ou. a ≤ 0)
*
*
Supondo a  1, b  2, c  3, d  0, resolva as seguintes expressões lógicas:
23) .não. (b ≤ 2 .e. .não.(b < c + d .ou. a ≤ 0))
24) .não. (b ≤ 2 .e. .não.b < c + d .ou. a ≤ 0)
25) .não. (.não. b ≤ 2 .e. b < c + d .ou. a ≤ 0)
26) .não. (b ≤ 2 .e. .não. b < c + d .ou. a ≤ 0)
*
*
Supondo a  1, b  2, c  3, d  0, resolva as seguintes expressões lógicas:
27) .não. (b ≤ 2 .e. b < c + d .ou. .não. a ≤ 0)
28) b ≤ 2 .e. b < c + d .ou. .não. a ≤ 0
29) b ≤ 2 .e. .não. b < c + d .ou. a ≤ 0
30) b ≤ 2 .e. .não.(b < c + d .ou. .não. a ≤ 0)
*
*
Exemplo de utilização do comando condicional (1 ramo).
	Início
	Defina media real
	Leia media
	Escreva media
	Se media < 0 .ou. Media > 10 Então
	Escreva “Média inválida”
Fim-se
	Fim
*
*
Exemplo de utilização do comando condicional (2 ramos).
	Início
	Defina valor real
	Leia valor
	Escreva valor
	Se valor < 0 Então
Escreva “valor negativo”
Senão
	Escreva “valor não negativo”
Fim-se
	Fim
*
*
Mas um procedimento pode ser feito de várias formas diferentes.
Veja uma outra versão do algoritmo anterior testando todas as
possibilidades de valor (negativo, nulo, e positivo):
Início
	Defina valor real
	Leia valor
	Escreva valor
	Se valor < 0 Então
	Escreva “valor negativo”
Fim-se
Se valor > 0 Então
	Escreva “valor positivo”
Fim-se
Se valor = 0 Então
	Escreva “valor nulo”
Fim-se
	Fim
*
*
Exemplo de utilização do comando condicional com encadeamento.
	Início
	Defina valor real
	Leia valor
	Escreva valor
	Se valor < 0 Então
	Escreva “valor negativo”
Senão
	Se valor > 0 Então
		Escreva “valor positivo”
	Senão
		Escreva “valor nulo”
	Fim-se
Fim-se
	Fim
*
*
Veja o fluxo do condicional do exemplo anterior
*
*
Desde que mantido as características corretas.
Por exemplo vejamos uma versão ERRADA do algoritmo anterior:
	Início
	Defina valor real
	Leia valor
	Escreva valor
	Se valor < 0 Então
	Escreva “valor negativo”
Fim-se
Se valor > 0 Então
	Escreva “valor positivo”
Senão
	Escreva “valor nulo”
Fim-se
	Fim
*
*
Exercício: Montar um algoritmo para ler o nome e 2 notas de 1 aluno e
calcular a média aritmética e a situação (abaixo de 5 reprovado, caso 
contrário aprovado). Escreva os valores lidos e calculados. 
		Início
		Defina nome, situacao caracter
		Defina nota1, nota2, media real
		Leia nome, nota1, nota2
		media  (nota1 + nota2) / 2
		Se media < 5 Então
		 situacao  “Reprovado”
		Senão
		 situacao  “Aprovado”
		Fim-se
		Escreva nome, nota1, nota2, media, situacao
		Fim
	
*
*
Agora criaremos um algoritmo para ler 5 valores reais e escrevê-los apenas
com os comandos visto até o momento:
Início
Defina valor real
Leia valor
Escreva valor
Leia valor
Escreva valor
Leia valor
Escreva valor
Leia valor
Escreva valor
Leia valor
Escreva valor
Fim
Início
Defina v1, v2, v3, v4, v5 real
Leia v1, v2, v3, v4, v5
Escreva v1, v2, v3, v4, v5
Fim
 Ou
Início
Defina cont inteiro
Defina valor real
cont  1
Se cont ≤ 5 Então
 Leia valor
 Escreva valor
 cont  cont + 1
 vá para 4
 Fim-se
6. Fim
*
*
Repetição incondicional: Comando de decisão para
desvio de fluxo dentro do procedimento com repetição controlada dos
comandos existentes dentro dele com quantidade.
Forma Geral	
	Para <var> de <val1> até <val2> passo <val3> Faça
	[Sequência de comandos
Fim-para
*
*
Repetição incondicional
O algoritmo anterior pode ser substituído pelo algoritmo abaixo:
*
*
Repetição condicional: Comando de repetição dos
comandos existentes dentro dele até que a condição seja satisfeita.
Dois tipos: com teste no início, com teste no final
Forma Geral (com teste no início)
	Enquanto <condição> Faça
	[Sequência de comandos
Fim-enquanto
*
*
Podemos ainda, usando o comando de repetição condicional, 
reescrever o código anterior:
	Início
	Defina cont inteiro
	Defina valor real
	cont  1
	Enquanto cont ≤ 5 Faça
	 Leia valor
	 Escreva valor
	 cont  cont + 1
	Fim-Enquanto
	Fim
*
*
O comando de repetição condicional pode então ser utilizado sempre
que houver uma repetição incondicional. A vantagem de se utilizar
comando de repetição incondicional é de escrever menos.
*
*
Mas existem ocasiões que apenas o comando de repetição condicional
pode ser usado. 
Normalmente quando não existe um controle interno, e sim um
controle externo, ou seja, se um valor lido.
Veja o exemplo abaixo:
		Início
		Defina nome caracter
		Leia nome
		Enquanto nome ≠ “fim” Faça
		 Escreva nome
		 Leia nome
		Fim-Enquanto
		Fim
*
*
No entato, se a condição sempre for satisfeita, o comando entra em
Loop.
Veja o fluxograma ao lado:
Se o nome for lido apenas no
momento anterior à entrada do
comando de repetição, o nome
será escrito indefinidamente pois
não existe outra leitura dentro
do comando que altere o valor
que se encontra na memória. 
*
*
Exercício: Monte um algoritmo para ler e escrever o nome de pessoas
até que o nome lido seja “acabou”. Escreva no final quantos nomes
foram escritos.
			Início
			Defina nome caracter
			Defina cont inteiro
			 cont  0
			Leia nome
			Enquanto nome ≠ “acabou” Faça
	 	 Escreva nome
 		 Leia nome
		 cont  cont + 1
			Fim-Enquanto
			Escreva cont
			Fim
Solução dos exercícios com os seguintes valores: a  1, b  2, c  3, d  0
01) a < 1		02) a = 1		03) a ≤ 1 (suponha a< 1 . ou. a = 1)
	.F.		 .V.		 .V. .F. .V.
							 .V.
04) a + b ≤ c + d / a	05) a . d + 3 > c – 1	06) a ≤ 0 .ou. b ≠ 2
 3 ≤ 3	 3 > 2	 .F. .F.
 .V.		 .V. 	 .F.
07) a ≤ (b + d) / 2 .ou. b ≠ 2	08) b < c + d .ou. a ≤ (b + d) / 2
 1 ≤ 1 .ou. 2 ≠ 2	 2 < 3 .ou. 1 ≤ 1
 .V. .ou. .F.		 .V. .ou. .V.
 .V.			 .V.
09) b ≠ 2 .ou. b < c + d		10) a ≤ 0 .e. b ≠ 2
 2 ≠ 2 .ou. 2 < 3		 1 ≤ 0 .e. 2 ≠ 2
 .F. .ou. .V.		 .F. .e. .F.
 .V.			 .F.
*
Solução dos exercícios com os seguintes valores: a  1, b  2, c  3, d  0
11) a ≤ (b + d) / 2 .e. b ≠ 2	12) b < c + d .e. a ≤ (b + d) / 2
 1 ≤ 1 .e. 2 ≠ 2		 2 < 3 .e. 1 ≤ 1
 .V. .e. .F.		 .V. .e. .V.
 .F.			 .V.
13) b ≠ 2 .e. b < c + d		14) a ≤ (b + d) / 2 .ou. b ≠ 2 .e. b < c + d
 2 ≠ 2 .e. 2 < 3		 1 ≤ 1 .ou. 2 ≠ 2 .e. 2 < 3
 .F. .e. .V.		 .V. .ou. .V. .e. .V.
 .F. .V. .ou. .V.
 .V.
15) b ≤ 2 .e. b < c + d .ou. a ≤ 0	16) b ≠ 2 .e. b < c + d .ou. a ≤ (b + d) / 2
 2 ≤ 2 .e. 2 < 3 .ou. 1 ≤ 0	 2 ≠ 2 .e. 2 < 3 .ou. 1 ≤ 1
 .V. .e. .V. .ou. .F.	 .F. .e. .V. .ou. .V.
 .V. .ou. .F.	 .F. .ou. .V.
 .V.	 .V.
17) a ≤ (b + d) / 2 .ou. b < c + d .e. a ≤ (b + d) / 2
 2 ≤ 1 .ou. 2 < 3 .e. 1 ≤ 1
 .F. .ou. .V. .e. .V.
 .F. .ou. .V.
 .F.
*
Solução dos exercícios com os seguintes valores: a  1, b  2, c  3, d  0
18) b ≤ 2 .e. (b < c + d .ou. a ≤ (b + d) / 2)	19) b ≤ 2 .e. (b < c + d .ou. a ≤ 0)
 2 ≤ 2 .e. (2 < 3 .ou. 1 ≤ 1) 		 2 ≤ 2 .e. (2 < 3 .ou. 1 ≤ 0)
 .V. .e. ( .V. .ou. .V.)		 .V. .e. (.V. .ou. .F.)
 .V. .e. .V.		 .V. .e. .V.	
 .V.			 	.V.
 
20) b ≤ 2 .e. .não.(b < c + d .ou. a ≤ 0)	21) .não. b ≤ 2 .e. (b < c + d .ou. a ≤ 0)
 2 ≤ 2 .e. .não.(2 < 3 .ou. 1 ≤ 0) 	 .não. 2 ≤ 2 .e. (2 < 3 .ou. 1 ≤ 0)
 .V. .e. .não.(.V. .ou. .F.)		 .não. 2 ≤ 2 .e. (2 < 3 .ou. 1 ≤ 0)
 .V. .e. .não.(.V.)			 .não. .V. .e. ( .V. .ou. .F.)
 .V. .e. .F.			 .não. .V. .e. .V.
	.F.			 .F. .e. .V.
					 .F.
22) .não. b ≤ 2 .e. .não.(b < c + d .ou. a ≤ 0)
 .não. 2 ≤ 2 .e. .não.(2 < 3 .ou. 1 ≤ 0)
 .não. .V. .e. .não.(.V. .ou. .F.)
 .não. .V. .e. .não. (.V.)
.F. .e. .F.
 .F.
*
Solução dos exercícios com os seguintes valores: a  1, b  2, c  3, d  0
23) .não. (b ≤ 2 .e. .não.(b < c + d .ou. a ≤ 0))		24) .não. (b ≤ 2 .e. .não.b < c + d .ou. a ≤ 0)
 .não. (2 ≤ 2 .e. .não.(2 < 3 .ou. 1 ≤ 0))		 .não. (2 ≤ 2 .e. .não. 2 < 3 .ou. 1 ≤ 0)
 .não. ( .V. .e. .não.( .V. .ou. .F.))		 .não. ( .V. .e. .não. .V. .ou. .F.)
 .não. ( .V. .e. .não.( .V. ))			 .não. ( .V. .e. .F. .ou. .F.)
 .não. ( .V. .e. .F.)				 .não. ( .F. .ou. .F.)
 .não. ( .F. )				 .não. ( .F. ) 
 .V.						 .V.
25) .não. (.não. b ≤ 2 .e. b < c + d .ou. a ≤ 0)		26) .não. (b ≤ 2 .e. .não. b < c + d .ou. a ≤ 0)
 .não. (.não. 2 ≤ 2 .e. 2 < 3 .ou. 1 ≤ 0)		 .não. (2 ≤ 2 .e. .não. 2 < 3 .ou. 1 ≤ 0)
 .não. (.não. .V. .e. .V. .ou. .F.)		 	 .não. (.V. .e. .não. .V. .ou. .F.)
 .não. ( .F. .e. .V.)		 	 .não. (.V. .e. .F. .ou. .F.)
 .não. ( .F.)		 	 	 .não. ( .F.)
 .V.		 	 	 .V.
*
Solução dos exercícios com os seguintes valores: a  1, b  2, c  3, d  0
27) .não. (b ≤ 2 .e. b < c + d .ou. .não. a ≤ 0)		28) b ≤ 2 .e. b < c + d .ou. .não. a ≤ 0
 .não. (2 ≤ 2 .e. 2 < 3 .ou. .não. 1 ≤ 0)		 2 ≤ 2 .e. 2 < 3 .ou. .não. 1 ≤ 0
 .não. (.V. .e. .V. .ou. .não. .F.)		 .V. .e. .V. .ou. .não. .F.
 .não. ( .V. .ou. .V.)		 	 .V. .ou. .V.
 .não. ( .V.)		 	 .V. .ou. .V.
 .F.					 .V.
29) b ≤ 2 .e. .não. b < c + d .ou. a ≤ 0			30) b ≤ 2 .e. .não.(b < c + d .ou. .não. a ≤ 0)
 2 ≤ 2 .e. .não. 2 < 3 .ou. 1 ≤ 0			 2 ≤ 2 .e. .não.(2 < 3 .ou. .não. 1 ≤ 0)
 .V. .e. .não. .F. .ou. .F.			 .V. .e. .não.(.F. .ou. .não. .V.)
 .V. .e. .V. .ou. .F.			 .V. .e. .não.(.F. .ou. .F.)
 .V. .ou. .F.			 .V. .e. .não.( .V. )
 .F.				 .V. .e. .F.
					 .F.
*
Note que:
Se o valor for igual a zero, ao chegar no primeiro condicional, a sentença é falsa. Chegando ao segundo condicional, a sentença também será falsa. Logo a mensagem “valor nulo” será escrito.
Se o valor for maior que zero, ao chegar no primeiro condicional, a sentença é falsa. Chegando ao segundo condicional, a sentença será verdadeira. Logo a mensagem “valor positivo” será escrito.
Se o valor for menor que zero, ao chegar no primeiro condicional, a sentença é verdadeira e a mensagem “valor negativo” será escrito.Chegando ao segundo condicional, a sentença também será verdadeira. Logo a mensagem “valor nulo” também será escrito.
*

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais