Buscar

Algoritmos_Computacionais_04

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

*
Algoritmos Computacionais
Lógica de Programação
Prof: Alexandre Silva
asilva5@area1.edu.br
*
Conceitos básicos
Simboliza ações formais na programação de computadores, objetivando racionalidade e desenvolvimento de técnicas que cooperem para a produção de soluções logicamente válidas e coerentes, que resolvam com qualidade os problemas que se deseja programar 
Raciocínio Lógico aplicado aos computadores
*
Algoritmo
É uma seqüência finita de ações, ordenadas de forma lógica, que devem ser executadas para que se possa resolver uma determinada tarefa
Uma ação é um evento que ocorre num período de tempo finito, estabelecendo um efeito intencionado e bem definido. 
Exemplos: Pegar uma caneta na gaveta, Dirigir Carro, Trocar Pneu, Tomar Banho, etc…
Na construção de um algoritmo deve-se abstrair uma série de detalhes	computacionais que podem ser resolvidos mais tarde
*
Programa
Quando a forma de se expressar essas ações obedecem às regras de alguma linguagem de programação, passamos a chamá-lo de programa 
Algoritmo é o usado para passar instruções ao computador, utilizando uma linguagem de programação
Uma vez concebida uma solução algorítmica de um problema, esta pode ser traduzida para qualquer linguagem de programação
*
Os computadores, infelizmente só fazem aquilo que mandamos e não necessariamente o que desejamos que eles façam!
Computador não tem senso próprio => deve receber instruções explícitas
Não deve haver ambigüidade nas instruções do programa
Ex. “calcule as médias das notas neste teste e informe quantos ficaram acima da média da faculdade”
Onde estão as notas, quantas são, qual a média 		da faculdade, os ausentes devem ser 		incluídos???
*
Qualidades num algortimo
1- O algoritmo deve ter um início 
2- Cada passo do algoritmo deve ser uma instrução que possa ser realizada 
3- A ordem dos passos deve ser precisamente determinada 
4- O algoritmo deve ter um fim
*
Fases na construção
Identificação do Problema;
Definir cada passo precisamente; 
Deve existir zero ou mais entradas tomadas de conjuntos bem definidos;
Deve existir uma ou mais saídas;
Deve existir uma condição de fim sempre atingida para quaisquer entradas e num tempo finito;
Teste do Algoritmo.
*
Dicas!
Algoritmos não se aprendem:
Copiando algoritmos
Estudando algoritmos
Algoritmos só se aprendem:
Construindo algoritmos
Testando algoritmos
Através de MUITOS exercícios
Organizando as idéias antes de começar
Entendendo as entradas, os objetivos e as saídas desejadas
*
Representações
Existem diversas formas de representação de algoritmos, você deve escolher a que lhe é mais clara. Dentre as mais conhecidas:
Descrição Narrativa
Fluxograma Convencional
Diagrama de Chapin
Pseudocódigo (ou Português Estruturado)
*
Narrativa
Os algoritmos são expressos diretamente em linguagem natural. Muitas vezes dá oportunidade a más interpretações, ambigüidades e imprecisões. Exemplos:
*
Algoritmo Fritar Ovo
1 -- pegar frigideira , ovo , oleo e sal
2 -- colocar oleo na frigideira
3 -- acender fogo
4 -- colocar a frigideira no fogo
5 -- esperar o oleo esquentar
6 -- colocar o ovo
7 -- retirar quando pronto
Algoritmo Lavar Cabelo
1 -- Molhe o cabelo 
2 -- Repita duas vezes 
Coloque xampu no cabelo 
3 -- Massageie até fazer espuma 
4 -- Enxague
*
Convencional
É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam ações (instruções, comandos) distintas.
Início e final 
do fluxograma
Operações de atribuição
e chamada ou retorno de
subalgoritmo
Entrada de
Dados
Saída de 
Dados
Decisão
*
Algoritmo para cálculo da média aritmética a partir de 2 notas de um aluno e, se a média for maior que 7, mostra que o aluno está aprovado, caso contrário, mostra que a situação do aluno está sendo analisada. 
Início
N1, N2
Média =
(N1+N2)/2
Média
>=7 
“Aprovado”
 “Em Análise”
Fim
S
N
*
Chapin
Criado por Ned Chapin a partir de trabalhos de Nassi-Shneiderman, os quais resolveram substituir o fluxograma tradicional por um diagrama que apresenta uma visão hierárquica e estruturada da lógica do programa.
Início
Leia N1, N2
Média = (N1+N2)/2
Média >=7 
Sim
Não
Fim
Escreva
“Aprovado”
Escreva
“Em Analise”
*
Pseudo-código
É rico em detalhes e, por assemelhar-se bastante à forma em que os programas são escritos. Será a forma adotada nesta disciplina.
algoritmo: media_aluno
inicio
 N1 = leia(‘Digite a primeira nota: ‘); 
 N2 = leia(‘Digite a segunda nota: ‘);
 Media = ( N1+N2 )/2;
 se (Media >= 7)
 imprima (‘Aprovado’);
 senao
 imprima (‘Em Análise’);
 fim-se
fim
*
Etapas
Estrutura do Algoritmo 
Comandos de entrada e saída
Variáveis
Operadores Aritméticos
Atribuição 
*
algoritmo: media_aluno
inicio
 N1 = leia(‘Digite a primeira nota: ‘);
 N2 = leia(‘Digite a segunda nota: ‘);
 Media = ( N1+N2 )/2;
 se (Media >= 7)
 imprima (‘Aprovado’);
 senao
 imprima (‘Em Análise’);
 fim-se
fim
Nome do algoritmo
Corpo
*
Comandos
algoritmo: media_aluno
inicio
 N1 = leia(‘Digite a primeira nota: ‘);
 N2 = leia(‘Digite a segunda nota: ‘);
 Media = ( N1+N2 )/2;
 se (Media >= 7)
 imprima (‘Aprovado’);
 senao
 imprima (‘Em Análise’);
 fim-se
fim
*
entrada de dados
Dados que o usuário deverá digitar para que o processamento possa ser realizado
Os dados são inseridos no programa através das variáveis (veremos mais adiante)
saída de dados
Dados resultantes do processamento que deverão ser mostrados ao usuário
Textos devem ser mostrados com aspas
*
Entrada:
var = input (‘Mensagem ao usuário’);
var = input(‘Mensagem ao usuário’, ‘s’);
Exemplos:
x = input(‘Informe sua idade: ’);
nm = input(‘Informe seu nome: ’, ‘s’);
*
Saída:
Observação: para SCILAB usa-se o “printf” e para MATLAB, o “fprintf”.
printf(‘Mensagem de texto’);
printf (‘Mensagem de texto %?’, var);
? => significa o tipo da variável:
d -> inteiro	f -> real	s -> string
Para cada variável impressa, existe um “%?”
*
printf (‘Mensagem de texto %? %?’, var1, var2);
printf (‘Mensagem %? outra msn %?’, var, var1);
Exemplos:
printf(‘Seu nome é %s’,var);
printf(‘Seu nome é %s e sua idade %f’,var,var2);
*
Comando Leia
Variável = leia(‘Texto a ser mostrado’);
Ex: N1 = leia(‘Digite a primeira nota: ‘);
*
Comando imprima
imprima(‘Texto a ser mostrado’);
imprima(‘Texto a ser mostrado’, variavel);
imprima(‘Texto a ser mostrado’, variavel, ‘novo texto’);
Ex: imprima (‘Aprovado’);
		 imprima (‘Aprovado com media: ’, Media);
		 imprima (‘Aprovado com ’, Media, ‘ de média’);
*
Exercício
Escreva um algoritmo em português estruturado que mostre Bom Dia na tela
Exercício: Escreva um algoritmo em português estruturado que leia um nome de usuário e sua respectiva idade e mostre tanto o nome quanto a idade lidos na tela.
*
Variáveis
algoritmo: media_aluno
inicio
 N1 = leia(‘Digite a primeira nota: ‘);
 N2 = leia(‘Digite a segunda nota: ‘);
 Media = ( N1+N2 )/2;
 se (Media >= 7)
 imprima (‘Aprovado’);
 senao
 imprima (‘Em Análise’);
 fim-se
fim
*
São espaços de memória, que podem assumir diferentes valores dentro do mesmo algoritmo 
Embora uma variável possa assumir diferentes valores, ela só pode armazenar um valor a cada instante
A cada variável está associado um nome (identificador); um tipo que define a natureza da informação que ela pode armazenar; e um conteúdo
*
São nomes simbólicos para objetos referenciados nos algoritmos. É o que dá o nome a variável, a uma rotina
São compostos por letras e dígitos numéricos, sendo que o primeiro caracter deve ser uma letra, e não devem existir espaços em branco 
Identificadores válidos: k, X, y, tamanho, tam, tam12, fim_dados 
Identificadores não válidos: 2k, fim de dados, x.data, 2@, a%
*
Cada variável tem um tipo associado, que caracteriza o tipo de dado que ela representa: 
inteiro (int) - representa qualquer número inteiro; negativo, nulo ou positivo, não possuem componentes decimais/fracionários. Ex.: 5, 456, -3.
float - representa qualquer número real; negativo, nulo ou positivo, podem possuir componentes decimais ou fracionários.
Ex: -5.0, 40.3, 5.58585.
caractere (char) - representa qualquer conjunto de caracteres. Contém dados com letras, dígitos e/ou símbolos especiais. "AB", "123”, “a@”.
*
Operadores Aritméticos
algoritmo: media_aluno
inicio
 N1 = leia(‘Digite a primeira nota: ‘);
 N2 = leia(‘Digite a segunda nota: ‘);
 Media = ( N1+N2 )/2;
 se (Media >= 7)
 imprima (‘Aprovado’);
 senao
 imprima (‘Em Análise’);
 fim-se
fim
*
Os operadores aritméticos são usados para 
	desenvolver operações matemáticas. A seguir está a lista que usaremos: 
Operador 	Ação + 		Soma (inteira e ponto flutuante) - 		Subtração ou Troca de sinal (inteira e ponto flutuante) * 		Multiplicação (inteira e ponto flutuante) / 		Divisão (inteira e ponto flutuante) 
1ª prioridade: * e /
2ª prioridade: + e -
*
Atrbuição
algoritmo: media_aluno
inicio
 N1 = leia(‘Digite a primeira nota: ‘);
 N2 = leia(‘Digite a segunda nota: ‘);
 Media = ( N1+N2 )/2;
 se (Media >= 7)
 imprima (‘Aprovado’);
 senao
 imprima (‘Em Análise’);
 fim-se
fim
*
A função do comando de atribuição é guardar um valor em uma variável 
O que devemos atentar é se o que está sendo atribuído, é válido para o tipo de dado, definido para a variável 
Qualquer resultado de expressão pode ser atribuído a uma variável, primeiro resolvendo a expressão e depois atribuindo à variável
*
Exemplos:
N1 = 3;		(int)
altura = 1.65;		(float)
total = 5 + 2;		(int)
aluno = “Ana”	(char)
*
Exercícios
Considerando o trecho do algoritmo abaixo. Qual será o valor final das variáveis X, Y em cada passo? 
 X = 14; Y = 3;
	X= X * 3;
	X= X / Y;
	X= X*Y;
*
Utilizando o SCILAB, elabore os seguintes algoritmos:
Informar a idade de uma pessoa daqui a 12 anos;
*
A partir do ano atual e ano de nascimento.
a_atual = 2010;
id = input (‘Ano de nascimento: ’);
x = 2010 – id;
printf (‘Sua idade: %d’,x);
Outra:
a_atual = input (‘Ano atual: ’);
id = input (‘Ano de nascimento: ’);
x = a_atual – id;
printf (‘Sua idade: %d’,x);
*
Qual será o valor de cada variável, após cada comando de imprima?
 idade = 18;
	altura = 1.68;
	idade = idade + 1;
	altura = altura * 5;
	printf(‘A nova idade é: %f ’,idade);
	printf(‘A nova altura é: %f ’,altura);
*
Elabore os seguintes algoritmos:
Informe a idade atual (aproximada) de uma pessoa a partir do ano de nascimento
Calcule a média aritmética entre dois números quaisquer e apresente o resultado
Qual a média ponderada entre duas notas quaisquer sabendo que o peso da primeira nota é 6 e o da segunda é 4? Apresente o resultado.
Qual é o salário de um funcionário que recebeu 15% de aumento? 
*
Leia uma determinada hora, discriminada em hora, seus minutos e segundos e converta tudo para segundos. Quantos segundos correspondem à hora lida? 
Dada uma temperatura em Celsius, qual é a sua correspondente em Fahrenheit? Para converter Celsius em graus Fahrenheit, multiplicar o valor em Celsius por 9, dividir por 5 e somar 32.
Exemplo: 20ºC = 68ºF =>(20 * 9 / 5 + 32 = 68).
*
Dado o valor em de memória em MegaBytes, mostre o valor correspondente em Bytes, sabendo que 1 Kbyte corresponde a 1024 Bytes e que 1 MBytes corresponde a 1024 KBytes. 
Dado o valor em de memória em KiloBytes, mostre o valor correspondente em Bytes, sabendo que 1 Kbyte corresponde a 1024 Bytes.
*
Uma certa firma de encanamento paga R$ 20,00 reais por dia trabalhado. Escreva um algoritmo que calcule o salário líquido de um encanador dessa firma, sabendo-se a quantidade de dias que ele trabalhou. Obs.: O salário líquido corresponde ao salário normal, descontados 8% de impostos.
Elabore um algoritmo que dada uma distância entre duas cidades, em quilômetros, e o tempo de viagem, em horas, calcule e mostre a velocidade em que a distância foi percorrida. A fórmula é S = So + VT (S  Distancia final; So  Distancia inicial; V  Velocidade média; T  Tempo de viagem).

Teste o Premium para desbloquear

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

Outros materiais