apostila_logica
-
Upload
franca-sp-franca -
Category
Documents
-
view
36 -
download
25
description
Transcript of apostila_logica
-
Lgica de Programao 1
Lgica de ProgramaoI
Ana Carolina S. S. [email protected]
Setembro/2006
Prof Ana Carolina [email protected]
-
Lgica de Programao 2
ndice1 Algoritmos...................................................................................................................5
1.1 O que so Algoritmos?......................................................................................................................................................51.2 Representaes..................................................................................................................................................................51.3 Qual a dificuldade no aprendizado de algoritmos?.....................................................................................................51.4 Lngua x Linguagem...........................................................................................................................................................5
1.4.1 Lngua ............................................................................................................................................................................................61.4.2 Linguagem......................................................................................................................................................................................6
1.4.2.1 Linguagem Natural..............................................................................................................................................................61.4.2.2 Linguagem Artificial.............................................................................................................................................................6
1.4.2.2.1 Linguagem algortmica...............................................................................................................................................61.4.2.2.2 Linguagem de programao.......................................................................................................................................6
1.4.3 Diferena entre Linguagem natural e Linguagem artificial..............................................................................................................61.4.3.1 Ambigidade: ......................................................................................................................................................................61.4.3.2 Estrutura e complexidade: ..................................................................................................................................................61.4.3.3 Objetivo Geral x Objetivo Especfico: .................................................................................................................................61.4.3.4 Estrutura e significado:........................................................................................................................................................6
1.5 Caractersticas dos algoritmos.........................................................................................................................................72 Conceitos Bsicos......................................................................................................8
2.1 Constante.............................................................................................................................................................................82.2 Varivel ...............................................................................................................................................................................82.3 Operaes............................................................................................................................................................................82.4 Dados...................................................................................................................................................................................8
2.4.1 Tipos de Dados...............................................................................................................................................................................82.4.1.1 Escalares (primitivos).........................................................................................................................................................82.4.1.2 Estruturados........................................................................................................................................................................9
2.5 Operaes............................................................................................................................................................................92.5.1 Operaes aritmticas....................................................................................................................................................................92.5.2 Operaes relacionais e lgicas....................................................................................................................................................9
2.5.2.1 Operaes Relacionais.......................................................................................................................................................92.5.2.2 Operaes Lgicas............................................................................................................................................................10
2.5.3 Operaes Mondicas e Didicas................................................................................................................................................10
2.6 Atribuio..........................................................................................................................................................................102.7 Expresses........................................................................................................................................................................10
2.7.1 Expresses Aritmticas................................................................................................................................................................112.7.2 Expresses lgicas.......................................................................................................................................................................11
3 Instrues e Operaes...........................................................................................123.1 Critrios de Algoritmos Eficientes..................................................................................................................................12
3.1.1 Correo.......................................................................................................................................................................................123.1.2 Tempo de execuo.....................................................................................................................................................................123.1.3 Adaptabilidades............................................................................................................................................................................123.1.4 Simplicidade.................................................................................................................................................................................123.1.5 Elegncia......................................................................................................................................................................................123.1.6 Legibilidade...................................................................................................................................................................................12
3.2 Como construir.................................................................................................................................................................12
Prof Ana Carolina [email protected]
-
Lgica de Programao 3
3.3 Componentes de um algoritmo.......................................................................................................................................123.3.1 Entradas.......................................................................................................................................................................................123.3.2 Sadas..........................................................................................................................................................................................133.3.3 Atribuio......................................................................................................................................................................................133.3.4 Tipos de Dados/Variveis/Constantes..........................................................................................................................................13
4 Operadores................................................................................................................144.1 Operadores Aritmticos...................................................................................................................................................144.2 Operador de resto e quociente de diviso inteira.........................................................................................................14
4.2.1 Prioridades de resoluo...................................................................................144.3 Operadores Relacionais...................................................................................................................................................144.4 Operadores Lgicos.........................................................................................................................................................15
4.4.1 Tabelas-Verdade..........................................................................................................................................................................154.4.1.1 Operao de negao.......................................................................................................................................................154.4.1.2 Operao de conjuno.....................................................................................................................................................164.4.1.3 Operao de disjuno......................................................................................................................................................164.4.1.4 Prioridades.........................................................................................................................................................................16
5 Algoritmos seqenciais...........................................................................................175.1 Atividades com solues.................................................................................................................................................18
6 Comandos de Seleo..............................................................................................216.1 Comando de Seleo Simples........................................................................................................................................22
6.1.1 Atividades.....................................................................................................................................................................................22
6.2 Seleo Mltipla................................................................................................................................................................306.2.1 Atividades.....................................................................................................................................................................................32
7 Comandos de Repetio..........................................................................................337.1 Acumulador.......................................................................................................................................................................337.2 Contador............................................................................................................................................................................33
7.2.1 O operador ++......................................................................................................................................................................33
7.3 Comandos de Repetio..................................................................................................................................................337.3.1 Para..............................................................................................................................................................................................347.3.2 Enquanto......................................................................................................................................................................................347.3.3 Faa...enquanto............................................................................................................................................................................34
7.4 Atividades..........................................................................................................................................................................358 Matrizes......................................................................................................................39
8.1 Matrizes Unidimensionais - Vetores...............................................................................................................................398.2 Matrizes Bidimensionais..................................................................................................................................................40
8.2.1 Ordenao de matrizes mtodo da bolha..................................................................................................................................428.2.2 Ordenao de Matrizes - mtodo de troca do maior:....................................................................................................................44
8.3 Atividades..........................................................................................................................................................................459 Estruturas ou Registros...........................................................................................48
9.1 Criando...............................................................................................................................................................................489.2 Acrescentando mais detalhes.........................................................................................................................................499.3 Usando...............................................................................................................................................................................509.4 Exemplos...........................................................................................................................................................................50
Prof Ana Carolina [email protected]
-
Lgica de Programao 4
10 Subalgoritmos.........................................................................................................5410.1 Funes...........................................................................................................................................................................54
10.1.1 Implementao...........................................................................................................................................................................5410.1.1.1 Nome da Funo.............................................................................................................................................................5410.1.1.2 Chamada.........................................................................................................................................................................5510.1.1.3 Variveis pblicas e locais...............................................................................................................................................55
10.2 Procedimentos................................................................................................................................................................5610.2.1 Implementao...........................................................................................................................................................................5610.2.2 Chamada....................................................................................................................................................................................56
11 Exerccios................................................................................................................5711.1 Seqenciais.....................................................................................................................................................................5711.2 Seleo.............................................................................................................................................................................5711.3 Repetio.........................................................................................................................................................................5811.4 Vetores e matrizes..........................................................................................................................................................58
Bibliografia...................................................................................................................60
Prof Ana Carolina [email protected]
-
Lgica de Programao 5
1 Algoritmos
Uma forma de indicar o caminho para a soluo dos mais variados problemas. So quase to antigos quanto a matemtica Deriva do nome de um matemtico Persa, sculo IX, ABU JAFAR MAOM IBN MS
ALKHOWRIZM
1.1 O que so Algoritmos?Algoritmo o caminho para a soluo de um problema, e os caminhos so muitos.Algoritmo no a soluo do problema, seno cada problema teria um nico algoritmo ou uma nica soluo.
A soluo de um problema obtida por meio da execuo do algoritmo, realizado: Mentalmente Manualmente (lpis e papel) Computador
1.2 Representaes Linguagens semelhantes a Linguagens de programao.
software ILA, que interpreta algoritmos escritos de forma bem similar linguagem natural Representaes Grficas.
Fluxogramas e diagramas de Chapin Linguagens Estruturadas ou Portugus Estruturado.
1.3 Qual a dificuldade no aprendizado de algoritmos?Expressar idias da linguagem natural em forma de smbolos e cdigos (linguagem formal)
LINGUAGEM NATURAL
(expresso completamente livre)
LINGUAGEM ALGORTMICA
(expresso organizada, com sintaxe, mas com ateno lgica, e no tanto na sintaxe)
LINGUAGEM FORMAL
(com sintaxe - no familiar)
A dificuldade est em organizar o raciocnio lgico, de forma estruturada, com um conjunto de etapas bem definidas, paraatingirmos um objetivo esperado (soluo do problema).
1.4 Lngua x Linguagem
Prof Ana Carolina [email protected]
-
Lgica de Programao 6
1.4.1 LnguaIdioma de um povo, formado por seus costumes, hbitos e trejeitos.Ex.: Lngua portuguesa (dicionrio, hbitos culturais escritos ou falados)
1.4.2 LinguagemAlguma coisa criada para uma situao especfica a fim de comunicao. Fornece um conjunto de termos (vocabulrio), regras
(sintaxe) e significados (semntica) que permitem um entendimento.
1.4.2.1 Linguagem NaturalUtilizada para comunicao entre pessoas.
1.4.2.2 Linguagem ArtificialComunicao criada para fins especficos.Ex.: Linguagem de programao comunicao entre seres inteligentes (pessoas) e no inteligentes (mquinas)
1.4.2.2.1 Lin g u a g e m a l go r tm i ca
Utiliza alguns termos, regras, mas a principal nfase na l g i ca p a r a a s o l u o d o p ro b l e m a .
1.4.2.2.2 L i ngua g em de p r ogra m a o Termos, regras e significados que so compreendidos pelo programador e que permitem a formulao de
instrues que sero processadas e executadas pelo computador.Temos maior preocupao com detalhes de codificao/implementao.
1.4.3 Diferena entre Linguagem natural e Linguagem artificial1.4.3.1 Ambigidade:
certas frases e expresses apresentam mais de um sentido.
O homem viu o menino com o telescpio. (quem est com o telescpio ?)
Ele esteve em minha c o m p a n h i a . (pode significar ele esteve comigo ou ele esteve em minha empre s a ).
1.4.3.2 Estrutura e complexidade: longas frases sem pontuao, como por exemplos os textos jurdicos.
Quando ela saiu la da minha casa e da minha casa ela saiu de novo e dai entrou de novo e dai saiu de novoa gente foi procurar o caderno e dai o caderno caiu e dai quando o caderno caiu o caderno molhou e o cadernoficou molhado porque o caderno caiu.
1.4.3.3 Objetivo Geral x Objetivo Especfico: entender de forma completa, e no isolada, e somente o que est realmente expresso - no subentender coisas (adivinhar).
O v i n h o se d na p ac i n c i a d o s c a c h o s . (cacho tem pacincia??) (entender de forma completa, e noisolada)
1.4.3.4 Estrutura e significado: A = ; Eu pegamos a casa. Eu d e z o mel a n c ia aqui. (os termos esto corretos se estiverem isolados, mas juntos no formam um
bom contexto um contexto intendvel)
Prof Ana Carolina [email protected]
-
Lgica de Programao 7
1.5 Caractersticas dos algoritmosUm algoritmo deve ser definido como uma seqncia ordenada e sem ambigidade de passos que levam a soluo de um
determinado problema.
Um algoritmo tem cinco caractersticas importantes:
Finitude: Um algoritmo deve sempre terminar aps um nmero finito de passos.
Definio: Cada passo de um algoritmo deve ser precisamente definido (sem ambigidades)
Entradas: Um algoritmo pode ter uma ou mais entradas, isto , dados que so lhe so fornecidos antes do algoritmo iniciar. Emraros casos o algoritmo ter zero entradas.
Sadas: Um algoritmo deve ter pelo menos uma sada, isto , informar resultados que tm uma relao especfica com as entradas(resultados dos processamentos das entradas)
Efetividade: Um algoritmo deve ser efetivo. Todas as operaes devem ser to simples e to suficientes para solucionar oproblema, de forma que uma pessoa pode execut-las facilmente usando lpis e papel, e que mesmo assim o problema seja solucionado.
Prof Ana Carolina [email protected]
-
Lgica de Programao 8
2 Conceitos Bsicos
2.1 ConstanteSo valores invariantes em todas as expresses em que possa ser utilizado. Exemplo:
pi = 3,14159265358979323846... acelerao da gravidade na Terra (g) = 9.8 m/s
2.2 Varivel So objetos que representam valores em uma frmula para que ela possa ser generalizada. Representa, ento, uma
classe de um problema e no um problema especfico.
Ex: soma de dois nmeros: 2 + 4 = 6 ou x + y = z, onde x e y so nmeros variantes (variveis) e z tambm varivel, poisdepende do x e do y para assumir um determinado valor.
2.3 OperaesSo aes executadas sobre operandos (valores constantes ou valores variveis) que foram previamente definidos.
Representam a entrada, processamento e sada: ler, manipular, escrever.
Certas operaes s ocorrem em determinados objetos. Fogo no carvo, salgar a carne. (porque no podemos colocar fogo na carne salgar o carvo) a , onde a deve ser um nmero real e positivo. (porque no se pode fazer uma raiz de um nmero
negativo ou nmero irreal)
Operaes seguem uma seqncia pr-determinada 2+5*3 , por definio, sempre a multiplicao feita antes de uma soma ou subtrao
2.4 Dados Dados representam valores quaisquer, em qualquer intervalo ou domnio.
100; verdadeiro; casa; 200; 12.50; Joo, e qualquer outro valor que possa ser representado. Representam somente o valor, no informando o contexto ou domnio em que se encontra.
O nmero 100 um dado que pode representar: o saldo da conta bancria de um indivduo a idade da bisav dele um instante de tempo em segundos, minutos ou horas, e assim por diante.
O nome Joo pode representar: um aluno da Universidade um paciente de um hospital, etc. Um funcionrio de uma empresa
2.4.1 Tipos de DadosDados podem ser classificados em dois tipos:
2.4.1.1 Escalares (primitivos)
So dados de tipos padro como inteiros, reais, caracter e booleanos, que so bem definidos e geralmente bemconhecidos.
Inteiros: representam somente nmeros pertencentes aos conjuntos I ou Z. Ex.: 100; -1; 100000;0; +345.
Prof Ana Carolina [email protected]
-
Lgica de Programao 9
Reais: representam nmeros pertencentes ao conjunto R, que possuem uma parte inteira e uma parte fracionada.Ex.: 100.34; -1.25; 1047.34
Caracter: dado composto de um nico smbolo, representado por letra do alfabeto, smbolo especial ou por algarismo.Ex.: a, b, c, ..., x, y, z, 0, 1, *, ., etc
Cadeia (string, literal): dado composto por um conjunto de caracteres. Deve ser definido (entre colchetes o tamanhomximo)
Ex.: Maxwell, Joo, melancia
Booleanos ou lgicos: representam elementos do conjunto {verdadeiro, falso} ou {0, 1}. Ex.: 0,1 : onde 0 falso e 1 verdadeiro
V, F: onde V verdadeiro e F falso
2.4.1.2 EstruturadosSo combinaes de tipos de dados escalares e incluem matrizes, vetores, registros, arquivos e conjuntos.
Ex.: Matriz de inteiros, vetores de caracteres, registros, conjunto de nmeros reais...
2.5 OperaesOperaes so aes que podem ser executadas sobre dados de um tipo especfico.
Existe uma relao bastante importante entre os tipos de dados e as operaes, uma vez que algumas operaes spodem ser executadas sobre determinados tipos de objetos, por isso que imprescindvel definirmos o tipo de dado de uma varivel/valor.
2.5.1 Operaes aritmticasPodem ser realizadas sobre nmeros inteiros e/ou reais e produzem um nmero de um tipo definido.
Operador Nome da Operao Representao Resultado- subtrao 4-1 3+ adio 3+2 5* multiplicao 3*4 12/ diviso 8/4 2
mod Resto da diviso mod(4,2) 0div Quociente (resultado
inteiro da diviso)div(4,2) 2
sqrt Radiciao sqrt(16,2)sqrt(16)
sqrt(27,3)
443
pow Potenciao pow(2,3) 8
2.5.2 Operaes relacionais e lgicasProduzem um valor lgico como resultado, isto , verdadeiro ou falso.
2.5.2.1 Operaes Relacionais
== (igual)> (maior que)< (menor que)!= (diferente de)
Prof Ana Carolina [email protected]
-
Lgica de Programao 10
>= (maior ou igual) yJoo == Jos( x + z ) == ( a - c )p >= q22)
O pe ra es di d i c as : um operador atua sobre dois operandos. Ex.:
1 + 2 a * b x > y (G1 >= 7 ) e (faltas < 15) (curso == engenharia) ou (curso ==administracao).
2.6 AtribuioA atribuio de um valor a uma varivel definida como o ato de a r m a z e n a r o u g r a v a r um d a d o em uma v a r i v e l . Atravs de uma atribuio a varivel passa a representar um novo dado, sendo perdido seu contedo anterior.A atribuio representada pelo operador =
Exemplo de um algoritmo:
x = 5 (x passa a representar o valor 5)x = 3+3 (agora x passa a valer 3+3, ou seja, 6 e no vale mais 5)
2.7 ExpressesSo representaes simblicas de seqncias de operaes a serem realizadas sobre determinados operandos, visando
obteno de um resultado.
Prof Ana Carolina [email protected]
-
Lgica de Programao 11
Os operandos de uma expresso podem ser variveis ou constantes.O tipo da expresso determinado pelo conjunto de operandos e operaes que compem a expresso e pelo tipo de resultado a
ser obtido.
2.7.1 Expresses AritmticasSo uma combinao de variveis e/ou constantes relacionadas por meio de operaes e/ou funes aritmticas.
Produzem nmeros como resultado.Exemplo: ( x + 200 ) / ( 350 - z ) , tem um nmero como resultado.
A prioridade dos operadores aritmticos em uma expresso determinada da seguinte maneira:
1. Potenciaes e (-) mondico2. Multiplicao e diviso3. Soma e subtrao4. Parnteses, colchetes ou chaves podem alterar esta ordem5. Segue-se da esquerda para a direita em caso de indeterminao (isto , mais de uma operao com a mesma
prioridade).
2.7.2 Expresses lgicasCombinam operadores relacionais ou lgicos com variveis e/ou constantes e produzem resultados com valor lgico, isto ,
verdadeiro ou falso. (fazem perguntas)Exemplos:
(X == maria) e (a >0)(a > 200) ou (y != 0)(z != x) ou (z < x)(2 >5)(2>5) ou (4
-
Lgica de Programao 12
3 Instrues e Operaesx=2y=x+3escrever(y)
O p r o c e d ime n t o acima possui um conjunto finito de passos. Quantos?E execuo em te m p o i n f i n i t o (ele comea e termina)
escrever uma instruo, que informa para o usurio o contedo de y.= o operador de atribuio. Na primeira linha atribui para x o valor 2. Na segunda linha atribui para y o resultado da operao soma,representada pelo operador +.
3.1 Critrios de Algoritmos Eficientes3.1.1 Correo
Se o algoritmo resolve o problema e se o faz corretamente
3.1.2 Tempo de execuoSe fazemos em 4 minutos o que pode ser feito em 30 segundos
3.1.3 AdaptabilidadesAdaptabilidades do algoritmo para soluo de problemas similares. Algoritmo que podemos usar muitas vezes
3.1.4 SimplicidadeEscrever de forma que podemos fazer com lpis e papel
Algoritmo com instrues bem objetivas
3.1.5 ElegnciaInstrues bem escritas e organizadas
3.1.6 LegibilidadeAlgoritmo elegante e bem apresentado (organizado)
Quanto maior o nmero de operaes para se executar uma tarefa, mais algoritmos teremos para execut-la, ou seja, mais formasde escrever essas instrues.
3.2 Como construir1. ler atentamente o enunciado
2. identificar as possveis entradas (dados variveis e constantes)
3. identificar as sadas (resultados)
4. determinar o que fazer para transformar as entradas nas sadas desejadas
5. escrever o algoritmo (os procedimentos)
6. execut-lo para verificar se est certo
3.3 Componentes de um algoritmo3.3.1 Entradas
Prof Ana Carolina [email protected]
-
Lgica de Programao 13
o que o usurio vai informar
ler ()
Ex.:ler (a) //obtem um valor do usurio e o atribui para aler (a, b) //obtem dois valores do usurio e o atribui para a e bler (numero, nome, salario)
3.3.2 Sadaso que vamos informar ao usurio (escrever na tela)
escrever ()
Ex.:
escrever (5) //caracter 5escrever (x) //contedo da varivel xescrever (x, y, z) //contedo de x, de y e de zescrever (x+3) //resultado da soma de x com 3escrever (Matrcula = (m) Nota= (n))
Tudo que estiver entre aspas ser escrito fielmente, tudo que estiver entre parnteses ser substitudo peloseu valor, pois so nomes de variveis e constantes.
3.3.3 Atribuiodigo qual valor a varivel vai simbolizar
variavel = expresso
Ex.:x =15y = 4+2 -((d * 5 )/3)
3.3.4 Tipos de Dados/Variveis/ConstantesValores armazenados em um endereo de memria.Possuem um tipo de dado e um nome sem acento, sem espao e sem caracteres estranhos, em letras minsculas.Antes do incio do algoritmo temos um bloco de declarao de variveis e constantes. Cada varivel recebe dados de um tipo determinado. Isso importante porque determinadas operaes s podem ser aplicadas
sobre determinados tipos de dados.
Ex.:
caracter opcao // varivel que armazenar um nico simbolocadeia nome_paciente[58] // varivel que armazenar ate 58 caracteresinteiro idade // varivel que armazenar um inteiro de nome idadeinteiro x // varivel que armazenar um inteiroreal salario = 350,0 // constante que armazenar valor tipo real
Prof Ana Carolina [email protected]
-
Lgica de Programao 14
4 Operadores4.1 Operadores Aritmticos
Operador Funo
+ Adio
- Subtrao
* Multiplicao
/ Diviso
4.2 Operador de resto e quociente de diviso inteiraOperador Funo Exemplo
mod Resto da diviso inteira mod ( 9,4) = 1
mod (27,5) = 2
div Quociente (resultado) da diviso inteira div (9,4) = 2
div (27,5) = 5
Exemplo:
mod (9,4) div (9,4)
4.2.1 Prioridades de resoluoAteno! Em todos os casos vale a regra: primeiro resolva o que estiver dentro dos parnteses mais
internos e depois o que estiver nos mais externos!
Quando se tem uma expresso contendo mais de uma operao, determinadas operaes devem ser resolvidas antes das outras.
Quando se tem operaes iguais (como 2+3+5) ou de mesma prioridade (2+7-1), obedecemos a ordem em que elas esto escritas(por exemplo: em 2+3-1 primeiro fazemos 2+3 depois a subtrao).
Geralmente, esta a lista de ordem de prioridades (o que deve ser resolvido antes do qu):
1) potenciao ou radiciao (raiz quadrada, cbica....)2) * / 3) div mod4) + -
4.3 Operadores RelacionaisFazem questionamentos comparativos sobre duas (ou mais) proposies.
Prof Ana Carolina [email protected]
-
Lgica de Programao 15
Operador Funo Exemplos
= = Igual a 3 = = 3> Maior que 3 > 2< Menor que 2 < 3
>= Maior ou igual a 3 >= 2 5 0 < 9 (2 > 5) ou (0 < 9) VERDADEIRO
4.4.1.1 Operao de negao
A No A
F VV F
Prof Ana Carolina [email protected]
F V F ou V = V
-
Lgica de Programao 16
4.4.1.2 Operao de conjuno
A B A e B
F F FF V FV F FV V V
4.4.1.3 Operao de disjuno
A B A ou B
F F FF V VV F VV V V
4.4.1.4 Prioridades
As prioridades na resoluo das operaes lgicas :
1. Negao2. Conjuno3. Disjuno
Prof Ana Carolina [email protected]
-
Lgica de Programao 17
5 Algoritmos seqenciaisQuando em um algoritmo executamos todos os passos (instrues) na seqncia em que eles aparecem, e sem omitir nem repetir
nenhum, temos um algoritmo seqencial. Naturalmente, depois que um passo acaba o prximo passo comea a ser executado umanica vez!
Um algoritmo os procedimentos que devemos fazer para resoluo de um problema. Tecnicamente falamos que o algoritmo soas instrues que executamos para processar as entradas em sadas. Essas instrues, posteriormente podem ser codificadas(implementadas) em qualquer (teoricamente) linguagem de programao, criando-se, assim, um software.
Alguns exemplos de instrues usadas para fazermos algoritmos:
INICIAR inicio o algoritmo ou um bloco de operaes PARAR termino um bloco de operaes ou um comando
INICIO...FIM
ESCREVER imprimo na tela mensagens ou resultados
escrever (Sejas bem vindo)escrever(O resultado da soma (soma))
LER - o que o usurio ir digitar, passa a ser colocado em uma varivel
ler (nome)
ATRIBUIR fao um espao de memria (uma varivel) receber alguma coisa. Por exemplo: o resultado de uma expresso(clculo matemtico ou clculo lgico: V ou F), uma palavra, um nmero, etc..
resultado = 3 + 5nome = Mariasoma = 4 + numero
CALCULAR uso operadores lgicos ou matemticos para processar os dados
soma = 4+5
(4 > 5)
(4 > 5) ou (variavel1 = variavel2)
Para a definio de um algoritmo, devemos identificar o que deve ser feito, como deve ser feito e usando o qu. Ou seja:
1- identificar os operandos (os dados que o usurio vai informar de acordo com a necessidade dele)
Prof Ana Carolina [email protected]
Imprimir neste lugar o contedo da varivel soma.
Eu sei isso porque a palavra
est entre parnteses.
O que o usurio digitar ir para a varivel que est entre parnteses.
A palavra numero uma varivel que eu declarei anteriormente, juntamente com seu tipo.Se no for um valor digitado pelo usurio eu no
necessito fazer declarao dela na incio do algoritmo, com exceo de constantes que para me facilitar eu nomeio para usar depois referenciando-me pelo seu nome e no pelo seu contedo.
O operador + o operador de soma
Operador relacional. Compara valores (maior que, menor que....)
Operador Lgico. Faz uma pergunta, e o resultado dessa operao lgica sempre Verdadeiro ou Falso
-
Lgica de Programao 18
2- identificar as possveis isntrues (o que devemos fazer com esses dados)3- operar os operandos usando os operadores, na ordem correta4- exibir o resultado
Se quisermos um programa (um software) que some dois nmeros com o nmero 3 e com o nmero pi , devemos pensarque:
o usurio deve informar dois nmeros devemos conhecer o valor do nmero pi (3.14 15 92 6535 898) devemos utilizar um operador para somar esses valores devemos atribuir esse resultado em algum lugar devemos mostrar para o usurio esse resultado (que est guardado em certo lugar da memria)
Para resolvermos esse problema, podemos fazer esse algoritmo aqui:algoritmo somavariaveis e constantesreal soma, numero1, numero2real pi = 3,1415926535898
inicioescrever (digite um nmero: )ler (numero1)escrever (digite o segundo nmero: )ler (numero2)soma= numero1 + numero2 + pi + 3escrever (o resultado (soma) )
fim
Vamos explicar melhor ele:
algoritmo somavariaveisreal soma, numero1, numero2real pi = 3,1415926535898
inicioescrever (digite um nmero: )ler (numero1)escrever (digite o segundo nmero: )ler (numero2)soma= numero1 + numero2 + pi + 3escrever (o resultado (soma))
fim
5.1 Atividades com solues1. Receba dois nmeros e faa sua mdia:
algoritmo mediavariaveis
real numero1, numero2, mediainicio
Prof Ana Carolina [email protected]
Tipo das variveis
Nomes das variveis. por neio deles que nos referenciaremos a seus contedos
Valores complicados de serem escritos ou de serem lembrados, devem ser declarados como constantes. Tambm recebero um nome, e sempre que citarmos quele nome estaremos nos referenciando ao valor declarado nesta parte do algoritmo.
Tipo Nome
Valor permanente dela
O que o usurio digitar ir para esse espao de memria
Aparecer na tela
Os nomes das variveis e da constante somado, junto ao valor 3 e atribudo para a variavel soma
O 3 no precisa ser declarado como constante porque ele no ser muito usado e no difcil lembrarmos dele, portanto no precisaremos alocar um espao de memria para armazen-lo (seria um desperdcio)
Aparecer esta frase na tela, porm como soma est entre parntese quer dizer que estamos nos referenciando ao seu contedo (que o resultado da operao feita na linha anterior)
Final dos procedimentos
-
Lgica de Programao 19
escrever (digite um numero: )ler (numero1)escrever (digite outro numero: )ler (numero2)media = (numero1+numero2)/2escrever ( a media de (numero1) com (numero2) igual a (media) )
fim
2. Calcule a rea de um tringulo, onde leia a medida da base e a medida da altura. Escreva "o triangulo com base ... e altura ....tem rea igual a ...."
algoritmo area_triangulovariaveis
real area, base, alturainicio
escrever (digite a medida da base do triangulo)ler (base)escrever (digite a medida da altura do triangulo)ler (altura)area = (base*altura)/2escrever ( a area do triangulo (area) )
fim
3. Sabendo que o valor do pi 3,141592653, calcular rea de um crculo cujo raio ser informado pelo usurio, e escrever "Umcrculo de raio ........ tem rea igual a ......"
algoritmo circulovariaveis
real area, raio, piinicio
escrever (digite o raio do crculo para saber sua area)ler (raio)pi = 3,141592653area= pi * pow(raio,2) /* tambm pode-se multiplicar 2 vezes o raio raio*raio*/escrever (um circulo de raio (raio) tem area igual a (area))
fim
ou (usando pi como constante)
algoritmo circulovariaveis
real area, raio, pi = 3,141592653inicio
escrever (digite o raio do crculo p saber sua area)ler (raio)area= pi * pow(raio,2) escrever (circulo de raio (raio)tem area = (area))
fim
4. Calcular a rea de um trapzio, onde o usurio informar as duas bases e a altura. Escrever a rea do trapzio.
algoritmo trapeziovariaveis
real area, base1, base2, alturainicio
escrever (digite a base1, a base 2 e a altura)ler (base1, base2, altura) area= ((base1*base2)/2 )*alturaescrever (a area (area) )
fim
Prof Ana Carolina [email protected]
-
Lgica de Programao 20
5. Leia o valor da pea tipo1, o valor da pea tipo2, o nmero de peas tipo1 compradas, o nmero de peas tipo2 compradas e ovalor do frete. Calcule e escreva o valor total a ser pago.
/*devemos multiplicar o preo de cada produto pela quantidade comprada de cada um deles. Depois de feito isso deve-se acrescentar opreo do frete*/
algoritmo comprasvariaveis
real qtd_pecas1, qtd_pecas2, preco_1, preco_2, frete, totalinicio
escrever ("informe a quantidade de peas do tipo 1")ler (qtd_pecas1)escrever ("informe o preo das peas do tipo 1")ler (preco_1)escrever ("informe a quantidade de peas do tipo 2")ler (qtd_pecas2)escrever ("informe o preo das peas do tipo 2")ler (preco_2)escrever ("informe o valor do frete")ler (frete)total = (qtd_pecas1*preco_1) + (qtd_pecas2*preco_2) + freteescrever ("o valor a ser pago (total) ")
fim
Prof Ana Carolina [email protected]
-
Lgica de Programao 21
6 Comandos de Seleos vezes necessrio tomarmos decises dentro de um programa (ou algoritmo). Ou seja, desejamos que se faa uma coisa ou
outra coisa. Vou dar um exemplo da vida real:
me: Filho, se amanh estiver chovendo tu ficas em casafilho: E se no estiver chovendo?me: Da tu vais ao colgio e depois vens para casa
Isso um algoritmo no computacional, mas que poderia ser escrito assim:
se (chove) ficar em casa
senoir ao colgiovoltar para casa
fim_se
Tambm poderamos elaborar mais esse algoritmo, assim:
me: Filho, se amanh estiver chovendo tu ficas em casafilho: E se no estiver chovendo?Me: Se tiver nublado vais ao colgio e depois vens para casa, senao tiver nublado e no tiver chovendo tu vais no colgio e depois vaipara casa da tia
Ficaria assim: (note que: ou est chovendo ou est nublado ou est ensolarado)
se (chove) ficar em casa
senose (nublado)
ir ao colgiovoltar para casa
senoir no colgioir para casa da tia
fim_sefim_se
Os algoritmos podem ser baseados em estruturas concatenadas (uma em baixo da outra) ou estruturas aninhadas - uma dentro daoutra (de acordo com a formulao de condies e repeties)
Em um algoritmo com seleo, a execuo de uma ou mais instrues dependente da veracidade (verdadeiro ou falso) de umacondio - algumas instrues do algoritmo sero ou no executadas.
Por exemplo:
algoritmo numerovariaveisinteiro numero
inicioescrever (digite um numero)ler (numero)se (numero !=2)
escrever (voc no digitou o nmero certo! )seno
escrever (voc acertou! )fim_se
fim
Prof Ana Carolina [email protected]
-
Lgica de Programao 22
No exemplo acima, OU vai ser escrito Voc no digitou o nmero certo!, ou Voc acertou!, dependendoda veracidade da condio (nmero ser diferente de 2), portanto, nem todas as instrues desse algoritmo vo ser executadas(uma delas no vai!)
6.1 Comando de Seleo SimplesO comando de seleo mais simples, o comando SE. (if, na maioria das linguagens de programao)
se
fim_se
ou (com uso do seno)
se
seno
fim_se
Onde INSTRUO qualquer uma instruo logartmica (iniciar, ler, escrever, operar ou calcular, parar) ou ainda uma seqnciade instrues.
CONDIO uma expresso lgica, isto , o resultado das operaes que esto representadas por ela ser VERDADEIRO ouFALSO.
Assim, condio :
ou uma comparao de expresses aritmticas (relaes) - por meio de operadores relacionais (=,,>=, 1500 ento Imposto de Renda = 15% do salrio bruto Se salrio_bruto > 500 e salrio_bruto < 1500 ento Imposto de Renda = 10% do salrio bruto Se salrio_bruto < 500 no tem desconto
O funcionrio pode ganhar um adicional (bnus): Se idade > 40 ans ento adicional = 2% do salrio bruto Se o tempo de servio > 15 anos adicional=3,5% do salrio bruto Se o tempo de servio < 15 anos, porm maior que 5 anos e a idade do funcionrio > 30 anos, adicional=1,5% do salrio bruto
Calcular o salrio lquido e escrever o nmero do funcionrio e seu salrio lquido.
algoritmo funcionariovariaveisinteiro numfunc, numhoras, numfilhos, idadefunc,temposervico real valorhora, salfamilia, salbruto, salliquido, ir, adicional
inicioescrever (informe o num do funcionario, valor hora e num de filhos)
Prof Ana Carolina [email protected]
-
Lgica de Programao 23
ler(numfunc, numhoras, valorhora, numfilhos)escrever (informe a idade, tempo de servico e valor do sal. familia)ler(idadefunc, temposervio, salfamilia)
/*clculo do salrio bruto com o desconto do in=*/salbruto =(numhoras*valorhora) + (salfamilia*numfilhos)salbruto = salbruto - ((salbruto * 8,5)/100)
/*clculo do imposto de renda conforme salrio bruto*/se (salbruto > 1500 )
ir = (salbruto * 15)/100fim_sese ((salbruto > 500) e (salbruto 40)
adicional = (salbruto * 2)/100fim_sese (temposervio > 15)
adicional = (salbruto * 3,5)/100fim_sese ((temposervio < 15) e (temposervio > 5 e (idade > 30))
adicional = (salbruto * 1,5)/100fim_sesalliquido = (salbruto ir) + adicional
/*exibe nmero do funcionrio e o valor o salrio lquido armazenado na varivel salliquido: */escrever(o funcionario (numfunc), e o salario liquido (salliquido) )
fim
Leia o nmero de identificao de um aluno e as 3 notas obtivas por ele no semestre, assim como uma nota de exerccios. Calculara mdia final usando esta frmula (linearize ela coloque em uma mesma linha!!!)
Mdia = Nota 1 + (Nota 2 * 2) + (Nota 3 * 3) + Mdia dos exerccios
7algoritmo mediasvariaveis
inteiro numaluno real nota1, nota2, nota3, mediaexercic, ma /* ma mdia de aproveitamento*/caractere conceito /* uma letra s*/
inicioler(numaluno, nota1, nota2, nota3, mediaexercic)ma = nota1 + (nota2 * 2) + (nota3 * 3) + mediaexercic
/*armazena na varivel conceito a, b, c, d ou e conforme o valor de ma*/se ( ma >= 9,0 )
conceito = "a"fim_sese ((ma >= 7,5) e (ma < 9,0) )
conceito = "b"fim_sese ((ma >= 6,0) e (ma < 7,5))
conceito = "c"fim_sese ((ma >= 4,0) e (ma < 6,0))
conceito = "d"fim_sese (ma < 4,0)
conceito = "e"fim_se
/*exibe o nmero do aluno, notas, a mdia dos exerccios, ma e o conceito*/escrever( numaluno, nota1, nota2, nota3, mediaexercic, ma )
Prof Ana Carolina [email protected]
-
Lgica de Programao 24
/*testa se o aluno foi aprovado ou no, e exibe a mensagem aprovado ou reprovado*/se ((conceito == "a")ou(conceito == "b")ou(conceito == "c") )
escrever("aluno aprovado")seno
escrever("aluno reprovado")fim_se
fim
Determinada empresa decidiu dar aumento de salrio aos funcionrios conforme tabela abaixoSalrio Atual umento
0 - 400 15%401 - 700 12%701 - 1000 10%
1001 - 1800 7%1801 - 2500 4%
Acima de 2500 sem aumento
algoritmo aumento_usando_concatenacao_de_condicionaisvariaveisinteiro numfunc real salatual, percentual, salcorrigido
inicioler(numfunc, salatual)
se (salatual 400) e (salatual 700) e (salatual 1000) e (salatual 1800) e (salatual 2500))
percentual = 0fim_sesalcorrigido = salatual + percentualescrever( numfunc, salatual, percentual, salcorrigido )
fim
Mesmo algoritmo, mas a soluo usa os SE de forma ANINHADA (otimizao do algoritmo)
algoritmo aumento_usando_concatenacao_de_condicionaisvariaveis
inteiro numfuncreal salatual, percentual, salcorrigido
inicioescrever (digite o nmero do funcionrio e seu salrio)ler(numfunc, salatual)se (salatual
-
Lgica de Programao 25
se ((salatual > 400) e (salatual 700) e (salatual 1000) e (salatual 1800) e (salatual
-
Lgica de Programao 26
Temos a nota 1 que somada com a nota 2, e depois esse somatrio dividido por 2. Se o aluno alcanou a mdia 6,0 (ou superior),ele est aprovado (e deve-se informar isso a ele). Caso no alcanou essa mdia, informe a ele que no est aprovado ainda, e pea anota da prova de recuperao. Essa nota de recuperao ser somada mdia inicial (da prova 1 com a prova 2) e dividida por 2. Se essanova mdia for maior ou igual a 6,0, informe ao aluno que ele est aprovado, seno, que ele est reprovado.
algoritmo mediasvariaveis
real nota1, nota2, media_notas, recuperacao, media_final inicio
escrever (digite a nota 1)ler (nota1)escrever (digite a nota2)ler (nota2)media_notas = (nota1 + nota2)/2se (media_notas >= 6)
escrever (aprovado)seno
escrever (ainda no aprovado. digite nota de recuperao)ler (recuperacao)media_notas = (media_notas + recuperacao)/2se(media_notas >= 6)
escrever (aprovado!!!!)seno
escrever (reprovado)fim_se
fim_sefim
O usurio informar um valor horizontal ( a coordenada x) e o valor vertical (a coordenada y). Escreva em qual quadrante domonitor est esse ponto, ou se ele est exatamente na ordenada (eixo y) ou na abscissa (eixo x)
algoritmo quadrantesvariaveisreal x, y
inicioescrever (informe a coordenada x)ler (x)escrever (informe a coordenada y)ler (y)se (y==0)
escrever (abscissa)seno
se (x=0) escrever (ordenada)
senose (x>0)
se (y>0) escrever (quadrante 1)
senoescrever (quadrante 4)
fim_seseno
Prof Ana Carolina [email protected]
X
Y
-
Lgica de Programao 27
se (y= 8)
conceito = aprovadoseno
conceito = reprovadofim_seescrever (aluno: (nome_aluno) media: (media) conceito: (conceito))
fim
Faa um algoritmo que leia 3 nmeros inteiros e imprima o maior deles. (usando somente operadores lgicos)
ALGORITMO maiorVARIAVEISreal a, b, c
INICIOescrever (Informe o valor a)ler (a)
Prof Ana Carolina [email protected]
a igua a b?
-
Lembre-se! Quando querermos mostrar o contedo de uma varivel na tela devemos colocar ela entre parnteses no comando escrever
Lgica de Programao 28
escrever (Informe o valor b)ler (b)escrever (Informe o valor c)ler (c)se (a > b)
se (a > c) escrever ( O maior (a))
senoescrever ( O maior (c))
fim_seseno
se (b > c) escrever ( O maior (b))
senoescrever ( O maior (c))
fim_sefim_se
FIM
Dados trs valores X, Y, Z, verificar se eles podem ser os comprimentos dos lados de um tringulo e, se forem, verificar se tringulo equiltero, issceles ou escaleno. Se no formarem tringulo, escrever uma mensagem .
Lembre que: o comprimento de cada lado de um tringulo menor que a soma dos comprimentos dos outros dois lados. Equiltero tem 3 lados iguais. Issceles: 2 lados iguais e 1 diferentes. Escaleno: todos os lados so diferentes
ALGORITMO trianguloVARIAVEISreal a, b, c
INICIOescrever (Informe o lado a)ler (a)escrever (Informe o lado b)ler (b)escrever (Informe o lado c)ler (c)se ((a < (b+c)) e (b < (a+c)) e (c < (a+b)))
se ((a==b) e (a==c)) escrever(Triangulo Equilatero.)
seno se ((a==b) ou (a==c) ou (b==c))
escrever(Triangulo Isoceles.)seno
escrever(Triangulo Escaleno.)fim_se
fim_seseno
escrever(As medidas nao formam um triangulo.)fim_se
FIM
Leia trs valores numricos e escreva-os em ordem crescente.
ALGORITMO 3_em_ordemVARIAVEISreal num1, num2, num3
INICIOescrever (Informe o primeiro numero)ler (num1)escrever (Informe o segundo numero)ler (num2)escrever (Informe o terceiro numero)ler (num3)
Prof Ana Carolina [email protected]
Dica: Pode-se fazer assim (direto), ao invs de atribuirmos a soma de a com ca uma varivel para depois compararmos.
-
Lgica de Programao 29
se (num1
-
Lgica de Programao 30
se(num2 != 0) divisao = num1 / num2escrever("A divisao (divisao))
senoescrever("Impossvel dividir! O segundo nmero zero.")
fim_seFIM
Leia sua data de nascimento, data de hoje, calcule sua idade e escreva na tela.
ALGORITMO dados_pessoaisVARIAVEIScadeia nome[80], ender[90], fone[10]inteiro dia_nascimento, mes_nascimento, ano_nascimento,
dia_atual, mes_atual, ano_atual, idade INICIOescrever("Dia do seu nascimento")ler(dia_nascimento)escrever("Mes do seu nascimento")ler(mes_nascimento)escrever("Ano do seu nascimento")ler(ano_nascimento)escrever("Informe o dia atual (hoje):")ler(dia_atual)escrever(Informe o mes)ler(mes_atual)escrever(Informe o ano)ler(ano_atual)idade = ano_atual - ano_nascimentose (mes_atual < mes_nascimento)
idade = idade 1fim_sese (mes_atual == mes_nascimento)
se (dia_atual < dia_nascimento) idade = idade 1
fim_sefim_seescrever("Voce tem (idade) anos ")
FIM
6.2 Seleo Mltiplacaso { :
: ... :
}seno
fim_caso
Onde ,,.., so valores que podem ser assumidos pela . Para cada valor pode-seespecificar uma ao ou um conjunto de aes a serem executadas (as instrues).
Por exemplo:
Prof Ana Carolina [email protected]
!= quer dizer diferente
-
Lgica de Programao 31
algoritmo media_alunovariveis
real a, b, respostainteiro escolha
inicioa=20b=5resposta=0escrever (o que vc quer ver:
1 soma 2- multiplicao 3- diviso )
ler (escolha)caso (escolha) { 1: resposta= a+b
2: resposta= a*b3: resposta= a/b
}seno
escrever (voce no digitou uma opcao valida!)fim_casoescrever (resposta (resposta) )
fimalgoritmo cache_bancariovariaveisinteiro opcao_menu
inicioescrever(menu: )escrever(1 saldo da conta)escrever(2 saque)escrever(3 transferncia)escrever(digite uma opcao: )ler(opcao_menu)caso (opcao_menu) { 1: escrever(voce quis ver o saldo)
2: escrever(voce quis fazer um saque)3: escrever(voce quis fazer uma transferncia)
}seno
escrever(opcao invalida!)fim-caso
fim
algoritmo soma_de_dois_numerosvariaveisinteiro x, y
inicioescrever(digite um numero )ler (x)escrever(digite outro numero)ler(y)caso ( x+y ) { 0: escrever(a soma deu zero)
1: escrever(a soma deu 1)}seno
escrever(a soma deu um numero positivo maior que 1)fim-caso
fim
Prof Ana Carolina [email protected]
Veja que aqui eu coloquei uma expresso aritmtica de soma para executar a comparao
-
Lgica de Programao 32
Depois que executar a instruo selecionada (ou a 1, ou a 2, ou a 3), automaticamente termina o bloco caso (marcao fim_caso)e passa a ser executada a instruo que aparece logo abaixo do fim_caso, que : escrever (Resposta (resposta)).
Essa mesma regra vale para o se (usado para seleo nica)
6.2.1 Atividades1. Numa festa, foi feito um sorteio para distribuir um bolo de dinheiro. Dez pessoas foram sorteadas e deveriam pegar uma bola numerada
de 0 a 9 e conforme o algarismo sorteado o prmio seria:
Nmero da Bola Prmio (% do valor do caixa)0 051 252 103 074 085 056 157 128 039 10
A pessoa deve informar a quantidade de dinheiro a ser dividida e o nmero da bola que tirou. Calcule o valor do prmio dela combase na tabela e escreva na tela.
2. Sendo dados 3 nmeros positivos, verificar a natureza do tringulo formado, quanto aos seus ngulos, com estes nmeros comomedida dos lados (issceles, equiltero, escaleno ou se no forma tringulo).
3. Ler quantos lados tem um polgono. Classifique os polgonos de 3 a 10 lados. Se for informado um nmero menor do que 3 diga queesse polgono no existe. Considere que o usurio nunca digite um nmero maior do que 10.
4. Dada a hora (apenas a hora, sem minutos ou segundos), informar qual a direo do sol. (leste, centro,ou oeste)
Prof Ana Carolina [email protected]
-
Em algum ponto do algoritmo ela acrescida de qualquer valor, mas no
zerada
Inicializa em 0 a varivel que vai ser
o acumulador
Lgica de Programao 33
7 Comandos de RepetioEm um algoritmo de repetio, certas instrues so executadas mais de uma vez.
7.1 AcumuladorUma varivel acumulador (ou somador) qualquer varivel que recebe um valor INICIO constante (geralmente 0) e incrementada por
qualquer valor (pode no ser fixo) em algum ponto do algoritmo.
Observe este pedao de um algoritmo qualquer:
INICIOacumulador = 0
.
.
.acumulador = acumulador + 1...acumulador = acumulador + media_do_aluno...
FIM
7.2 ContadorUma varivel contador uma varivel como outra qualquer, mas que recebe um valor INICIO (geralmente 0) e depois
incrementada por um valor constante qualquer (geralmente 1 ou 2). Ou seja, recebe sempre o mesmo valor.Observe esse pedao de um algoritmo qualquer:
INICIOcontador = 0...contador = contador + 1...
FIM
A linha contador = 0 armazena na varivel chamada contador o valor 0.Na linha contador = contador + 1 incrementamos em 1 o contedo atual da varivel contador .
7.2.1 O operador ++O operador ++ usado sempre que se quiser acrescentar 1 (um) no valor atual de uma varivel.Esse operador reconhece o valor que tem na varivel, soma 1 naquele valor e atribui para ela - ele acrescenta 1A facilidade de us-lo se d na abreviao. Ou seja, ao invs de escrever: var=var+1 basta escrever: var++
7.3 Comandos de Repetio
Prof Ana Carolina [email protected]
Inicializa em 0 a varivel que vai ser o contador.
Em algum ponto do algoritmo incrementa em 1
-
Lgica de Programao 34
7.3.1 ParaRepete certas instrues um nmero fixo (e j conhecido) de vezes.
PARA ( = at ; )
Observe esse algoritmo, ele vai imprimir a frase Eu sei repetir 20 vezes na tela.
algoritmo uso_do_paravariaveisinteiro contador
iniciopara (contador = 1 at 20; contador = contador+1)
escrever (eu sei repetir)fim_para
fim
Nem sempre saberemos quantas vezes queremos que sejam repetidas as instrues, mas sim, sabemos que uma coisa deve serfeita at que tal coisa acontea (uma condio passe a ser verdadeira) ou enquanto tal coisa est acontecendo (que uma condio aindaseja verdadeira). Quando isso acontece, usamos os comandos: enquanto ou faa...at que...
7.3.2 EnquantoExecuta certos comandos enquanto uma condio for verdadeira.
enquanto ()
fim_enquanto
No algoritmo abaixo, escreve uma mensagem e l novamente um numero, enquanto o nmero no for 2.algoritmo uso_do_enquantovariaveisinteiro numero
inicioenquanto (numero != 2)
escrever (digite um numero: )ler (numero)
fim_enquantofim
7.3.3 Faa...enquanto...Repete certas instrues at que a condio seja verdadeira.
faa
enquanto ( )
O algoritmo executado linha-a-linha e de cima para baixo, por isso como a condio est depois das instrues, as instruessero repetidas pelo menos 1 vez (mesmo que a condio seja falsa desde o INICIO).
No algoritmo abaixo, escreve-se uma frase na tela e incrementa um contador (que conta quantas vezes a frase foi repetida, j queacrescenta mais 1 cada vez que ela escrita). Quanto o contador estiver em 5 o processo pra de ser repetido e o algoritmo acaba.
algoritmo uso_do_enquantovariaveisinteiro contador
iniciofaa
Prof Ana Carolina [email protected]
-
Lgica de Programao 35
escrever (eu nao canso de repetir)contador = contador + 1
enquanto (contador 4) entao
soma = soma + numeromaior4 = maior4 + 1
fim_seconta = conta + 1
fim_enquantomedia = soma / maior4escrever (media)
fim
Faa um algoritmo para ler base e altura de 50 tringulos e imprimir a sua rea.
algoritmo triangulovariaveis inteiro contador real base, altura, areainicio contador = 1 enquanto (contador < 51)
Prof Ana Carolina [email protected]
Quando a varivel contador for maior que 5 ele pra de repetir.
Podemos usar nmeros para dar nomes s variveis!!
-
Lgica de Programao 36
ler (base) ler (altura)
area = (base * altura)/2 escrever (area) contador = contador + 1 fim_enquantofim
Dado um conjunto de 20 valores reais, faa um algoritmo que:a) Imprima os valores que no so negativos.b) Calcule e imprima a mdia dos valores < 0.
algoritmo conjunto20variaveis real n, soma_menor, media_menor inteiro contador, contador inicio contador = 0 soma_menor = 0 enquanto (contador < 20) ler (n) se (n >= 0) escrever (n) senao soma_menor = soma_menor + n contador = contador + 1 fim_se contador= contador + 1 fim enquanto media_menor = soma_menor / contadorfim
Voc digita um nmero e ele escreve todos os nmeros de 0 at ele.
algoritmo escreve_numerosvariaveis inteiro numero, contador inicio // primeiro o programa solicita
//um nmero ao usurio escrever("informe um nmero: ") ler (numero) // inicializa o contador contador = 0 //enquanto o contador for menor ou igual ao valor informado, faa enquanto (contador
-
Ao invs de atribuir isso para uma varivel e depois escrev-la, posso colocar direto. Primeiro ser feito o
clculo e depois ser exibido automaticamente o resultado
Lgica de Programao 37
escrever (digite um nmero)ler (n)escrever ( n * 3)
enquanto (n!=999)fim
A srie Fibonacci tem como dados os 2 primeiros termos da srie que so respectivamente 0 e 1. A partir deles, os demais termosso construdos pela seguinte regra:
atual = ultimo + penultimo
Escrever um algoritmo que gera os 10 primeiros termos desta srie e calcula e escreve a sua soma.
algoritmo fibonacci_usando_laco_paravariveisinteiro atual, ultimo, penltimo, contador, soma
iniciosoma = 0penultimo = 0ultimo = 1escrever(penultimo) /*mostro os dois primeiros elementos da srie*/escrever(ultimo)para (cont = 1 at 8; contador++)/*aqui, mostro os 8 elementos restantes*/
atual = ultimo + penltimoescrever(atual) /*a medida que encontro o elemento atual, vou exibindo*/soma = soma + atual /*somo todos os elementos gerados*/penultimo = ultimo /*troco o que era o ultimo elemento, transforma-se em*/ultimo = atual /*ltimo. e o que era atual, transforma-se em ultimo*/
fim_paraescrever(soma)
fim
algoritmo fibonacci, mas usando instruo faa...at que
algoritmo fibonacci_usando_facavariveisinteiro atual, ultimo, penltimo,contador, soma
iniciosoma = 0penultimo = 0ultimo = 1escrever(penultimo) escrever(ultimo)contador = 0faa
atual = ultimo + penltimoescrever(atual) soma = soma + atual penultimo = ultimo ultimo = atual contador = contador + 1
enquanto (contador < 8)escrever(soma)
fim
Algoritmo Fibonacci com a instruo ENQUANTO
algoritmo fibonacci_usando_enquantovariveisinteiro atual, ultimo, penultimo, contador, soma
inicio
Prof Ana Carolina [email protected]
Porque eu s quero os 10 primeiros termos da srie. Os 2 primeiros so fixos
(0 e 1) e os 8 eu fao usando o algoritmo com o lao de repetio
-
Lgica de Programao 38
soma = 0penultimo = 0ultimo = 1escrever(penultimo)escrever(ultimo)contador = 0enquanto (contador < 8)
atual = ultimo + penultimoescrever(atual) soma = soma + atual penultimo = ultimo ultimo = atualcontador++
fim_enquantoescrever(soma)
fim
Foi realizada uma pesquisa de algumas caractersticas fsicas da populao de uma certa regio, a qual coletou os seguintesdados referentes a cada habitante para serem analisados:
- sexo (masculino e feminino) - cor dos olhos (azuis, verdes ou castanhos) - cor dos cabelos ( louros, castanhos, pretos) - idade
Faa um algoritmo que determine e escreva: - a maior idade dos habitantes - a quantidade de indivduos do sexo feminino cuja idade est entre 18 e 35 anos inclusive e que tenham olhos verdes e cabeloslouros.
O final do conjunto de habitantes reconhecido quando a idade informada for negativa (idade menor que 0).algoritmo pessoasvariveiscaracter sexocadeia corolhos[20], corcabelo[20]inteiro idade, contapess, maioridade
iniciocontapess = 0maioridade = 0ler(idade)enquanto (idade >= 0)
ler(sexo, corolhos, corcabelo)se (idade > maioridade)
maioridade = idadefim_sese (sexo == f) e (idade >= 18) e (idade
-
Lgica de Programao 39
8 MatrizesMatriz um conjunto de variveis, cada uma podendo representar um valor, como se fossem variveis simples, mas todas
compartilham o mesmo nome
Para individualizarmos cada um dos elementos do conjunto, associamos um ndice (um nmero) a cada um deles.Exemplo: um conjunto de nome mat possui 4 elementos:
Como todos os elementos possuem o mesmo nome, a identificao de cada um deles passa a ser feita pelo nome (que o mesmonome do conjunto) seguido por um ndice (nmero).
Muitos algoritmos, necessitam que muitas variveis sejam declaradas (e manipuladas) dentro dele.A escrita, leitura e manipulao (operao) de cada uma delas exigiria que nomessemos uma-a-uma.As matrizes solucionam esse problema, pois declaramos uma matriz e depois dizemos quantos elementos ela pode conter. Assim,
se precisaramos nomear 15 variveis do tipo real no nosso algoritmo, basta declararmos uma varivel com 15 posies uma matriz! ecada vez que quisermos trabalhar com o primeiro, ou o segundo, ou o terceiro valor de dentro dela, acessamos ele com o nome da varivelmatriz seguido pelo seu ndice.
Assim como na matemtica, as matrizes podem ter mais de uma dimenso. Para cada dimenso usaremos um ndice que vai de 1at a quantidade de posies em cada dimenso.
Os tipos que mais usaremos a matriz unidimensional (s uma linha) e bidimensional (mais de uma linha). Algumas linguagens deprogramao nem permitem a declarao de mais dimenses.
8.1 Matrizes Unidimensionais - VetoresObserve este exemplo:
1. algoritmo matrizes2. variveis3. inteiro minha_matriz[5]4. inicio5. minha_matriz[1]=26. minha_matriz[2]=667. minha_matriz[3]=32
Prof Ana Carolina [email protected]
A matriz se chamar minha_matriz
Ela vai ter 5 posies em 1 dimenso (1 linha)
Tipo dos valores que cada posio poder conter.
Todos os elementos tm que ser do mesmo tipo (inteiro, neste caso)
-
Lgica de Programao 40
8. minha_matriz[4]=119. minha_matriz[5]=47210. fim
Nesse algoritmo, declarei uma varivel matriz/vetor chamada minha_matriz, de uma dimenso (1 linha) que comporta at 5elementos.
Nas linhas 5, 6, 7, 8 e 9, eu prencho o vetor com 5 elementos (um para cada posio).Ficar assim:
2 66 32 11 4721 2 3 4 5
Para ler (pedir ao usurio) o contedo de uma posio (por exemplo a posio 5), o procedimento pode ser:ler (minha_matriz[5])
Para imprimir na tela o contedo de uma posio (por exemplo a posio 3), o procedimento pode ser:
escrever (O contedo da posio 5 (minha_matriz[3]) )
Percebe-se, que com 5 posies a escrita e a leitura j pode ser um processo trabalhoso se citarmos uma posio de cada vez nahora de atribuirmos um valor para cada.....(veja isso no exemplo do algoritmo anteriormente citado)
Um recurso que a gente usa para facilitar essas operaes, repetir o comando quantas vezes for o tamanho da matriz e usar ocontador para ir passando ndice por ndice.
Observe este exemplo - preencher o vetor com valores informados pelo usurio:
algoritmo matrizesvariveisinteiro minha_matriz[5], contador
iniciopara (contador=1 at 5; contador++)
ler (minha_matriz[contador])fim_para
fim
Por que isso funciona? Porque estou dizendo que vou repetir o comando de leitura 5 vezes (que o tamanho do vetor), e cadavez que eu ler eu vou colocar o valor lido dentro da varivel minha_matriz (o vetor) na posio 1, 2, 3, 4 ou 5. Depende do nmero que avarivel contador ir representar cada vez.
Sabemos que no lao de repetio PARA, sero repetidos determinados comandos um certo nmero de vezes, e possui umavarivel de controle do nmero de vezes que est sendo repetido o comando. Essa varivel contador alterada (somada 1) cada vez,portanto, na primeira vez ela vai ser 1, depois ela vai ser 2, depois 3, depois 4, depois 5.
Como 1, 2, 3, 4 e 5 so os nmeros que a gente precisa (para serem os ndices das posies do vetor), a gente aproveita o valordo contador para indicar para qual posio do vetor eu estou lendo o valor do usurio.
Ento vai ser:minha_matriz[1]minha_matriz[2]minha_matriz[3]minha_matriz[4]minha_matriz[5]
um de cada vez. E os nmeros de ndice sero dados pelo contedo da varivel contador (iniciando em 1 e terminando em 5).
8.2 Matrizes BidimensionaisQuando se tem um vetor, o procedimento o citado acima.
Quando se tem uma matriz com mais de uma dimenso devemos ter dois contadores (uma para contar as linhas, e outro paracontar as colunas).
Observe uma matriz bidimensional.
Prof Ana Carolina [email protected]
posies
-
percorre as linhaspercorre as
colunas dentro da
linha
Lgica de Programao 41
1,1 1,2 1,3 1,4 1,5 1,62,1 2,2 2,3 2,4 2,5 2,6
Para preenchermos (ou escrevermos) um vetor, precisamos de somente 1 contador, pois no vetor s tempo o contador de posiesdentro de somente uma linha de dados.
Em uma matriz, precisamos de um contador para cada dimenso, pois temos um ndice para cada dimenso da matriz (porexemplo, um contador para as linhas, e outro para as colunas)
Assim, para nos referenciarmos posio linha 1 coluna 3, vamos precisar do ndice de linha e do ndice de coluna.
Primeiro vem o ndice de linha, depois o de coluna!
Fazendo isso sem usarmos os laos de repetio, seria assim:
Exemplo 1:
algoritmo matrizesvariveisinteiro minha_matriz[2] [6]
iniciominha_matriz[1][1]=6minha_matriz[1][3]=56minha_matriz[2][3]=99minha_matriz[2][5]=132
fim
6 5699 132
Para fazermos isso usando laos de repetio, basta colocar um PARA para cada ndice.... um dentro do outro.Isso se faz para que ele corra todas as colunas de uma linha, depois todas as colunas da outra linha.
Exemplo 2:
algoritmo matrizesvariveisinteiro linhas, colunas, minha_matriz[2][6]
iniciopara (linhas = 1 at 2; linhas++)
para (colunas= 1 at 6; colunas++)escrever ( minha_matriz[linhas][colunas] )
fim_parafim_para
fim
Agora um exemplo que multiplica todos os dados de uma matriz por 2 e escreve eles:Exemplo 3:
algoritmo matrizesvariveisinteiro linhas, colunas, minha_matriz[2][6]
iniciopara (linhas = 1 at 2; linhas++)
para (colunas= 1 at 6; colunas++)
Prof Ana Carolina [email protected]
ndice de linhas
ndice de colunas
A matriz se chamar minha_matriz
Ela vai ter 2 linhas e 6 colunas
Tipo dos valores que cada posio poder conter.
-
Lgica de Programao 42
minha_matriz[linhas][colunas]=minha_matriz[linhas][colunas]*2escrever (contedo da linha (linhas) coluna (colunas)=
(minha_matriz[linhas][colunas]) )fim_para
fim_parafim
Exemplo 4:
Ler um vetor chamado meu_vetor, com 80 elementos, cada elemento anota de um aluno de certa turma. Calcular a mdia geralda turma e verificar quantos alunos ficaram acima da mdia ou iguais ela e quantos abaixo da mdia. Escrever a mdia, o nmero denotas acima da mdia ou iguais mdia e o nmero de notas abaixo da mdia.
algoritmo estatistica_de_alunosinteiro meu_vetor[80], i, j, acima_media, abaixo_mediareal soma, media_geral
iniciosoma =0 acima_media =0para (i=1 at 80; i++)
ler (meu_vetor[i])soma = soma + meu_vetor[i]
fim_paramedia_geral = soma / 80para (j = 1 at 80; j++)
se (meu_vetor[j]< media_geral) acima_media ++
fim_sefim_para
abaixo_media = acima_media 80escrever (a mdia geral (media_geral) )escrever (alunos na mdia ou acima (acima_media) )escrever (alunos abaixo da mdia (abaixo_media) )
fim.
Observe que poderamos ter usado a mesma varivel ( i ou j) como ndice dos vetores, pois o i para de ser usado e poderia serreaproveitado, mas no algoritmo usa-se a varivel i para correr o vetor e preench-lo, e depois a varivel j para correr o vetor e compararseus elementos com a mdia.
Exemplo 5:Ler um vetor chamado meu_vetor, de 6 elementos, e escrev-lo. Ordenar, em seguida, os elementos de V em ordem crescente e
escreer o vetor V assim ordendado.Teremos aqui 2 exemplos, bastantes simples, portanto eficientes para manipulao de conjuntos pequenos (poucos elementos) e
mais lentos (no muito bons) para a manipulao de grande quantidade de dados.
8.2.1 Ordenao de matrizes mtodo da bolhaVamos comparar cada elemento do vetor com o elemento imediatamente seguinte ( meu_vetor[i] com meu_vetor[i+1] ).Se o elemento comparado for menor ou igual ao elemento seguinte, compara-se o segundo valor com o prximo, at terminar o
vetor.Se o elemento comparado for maior do que o imediatamnte segunte, troca-se entre si os dois elementos comparados e continua-se
comparando o segundo valor com o imediatamente seguinte enquanto houver elementos no vetor.
para (i = 1 at 5; i++)se (meu_vetor[i] > meu_vetor[i+1])
x= meu_vetor[i]meu_vetor[i] = meu_vetor[i+1]
Prof Ana Carolina [email protected]
Preencho o vetor com as notas dos alunos
Acumulo todas as notas
Usados para controlar a posio do vetor que estou manipulando
Porque 80 a quantidade de notas lidas
Avalio quantos valores do vetor so maiores que a
mdiaDiminuo de 80 os alunos que esto na mdia (ou acima) para
descobrir quantos esto abaixo da mdia geral
-
Lgica de Programao 43
meu_vetor[i+1] =xfim_se
fim_para
Supondo a leitura de um vetor meu_vetor[6] com os seguintes valores:
15 7 1 4 17 10
Executando o trecho acima sobre este vetor, resultaria o seguinte:
7 1 4 15 10 17
Como pode ser observado, o novo vetor ficou mais prximo de uma ordenao em ordem crescente, mas no est ordenadoconforme se deseja. Isso indica que o processo deve ser repetido vrias vezes at se conseguir o objetivo final.
Uma segunda execuo nos levaria a:
1 4 7 10 15 17
Como se v, este vetor, com apenas 2 execues do trecho do algoritmo acima j ficou ordenado. Outros vetores, entretanto,podem exigir uma quantidade bem maior de repeties das execues do trecho acima at conseguirem deixar o vetor completamentordenado.
O nmero mximo de execues necessrias para a completa ordenao de um vetor N 1 vezes, onde N o tamanho do vetor.Sabendo isso, podemos completar o trecho do algoritmo:
para (n = 1 at 5; n ++)para (i=1 at 5; i++)
se (meu_vetor[i] > meu_vetor[i+1]) x= meu_vetor[i]meu_vetor[i] = meu_vetor[i+1]meu_vetor[i+1] =x
fim_sefim_para
fim_para
Esse trecho certamente garante a ordenao do vetor conforme desejado, contudo, na prtica o nmero de vezes que se tem quepassar pelo vetor bem menor do que N -1, conforme pde ser visto no exemplo do vetor acima. Em lugar de 5 passagens oramnecessrias apenas 2. Desta forma, uma soluo melhor a seguinte:
k=oenquanto (k==0)k=1para (i=1 at 5; i++)
se (meu_vetor[i] > meu_vetor[i+1]) x= meu_vetor[i]meu_vetor[i] = meu_vetor[i+1]meu_vetor[i+1] =xk=0
fim_sefim_para
fim_enquanto
Com isto, a verso 1 da ordenao de um vetor de 6 elementos a seguinte:
Algoritmo ordena_crescente_bolhaVariveisinteiro meu_vetor[6], i, k, x
INICIOpara (i= 1 at 6; i++)
ler (meu_vetor[i])escrever (meu_vetor[i])
fim_para
Prof Ana Carolina [email protected]
-
Lgica de Programao 44
k=oenquanto (k==0)
k=1para (i=1 at 5; i++)
se (meu_vetor[i] > meu_vetor[i+1]) x= meu_vetor[i]meu_vetor[i] = meu_vetor[i+1]meu_vetor[i+1] =xk=0
fim_sefim_para
fim_enquantopara (i= 1 at 6; i++)
escrever (meu_vetor[i])fim_para
FIM
Assim, o algoritmo acima l um vetor de 6 elementos e o escreve talq ual foi lido. Em seguida, ordena o vetor em ordem crescenteusando um dos muitos modos de ordenao existentes (Bubble Sort). Uma vez ordenado, o algoritmo escreve o vetor ordenado emordem crescente.
Outro processo de ordenao de um conjunto, consiste em achar o maior elemento do conjunto e troc-lo com a ltima posio.Em seguida, acha-s o maio do conjunto restante e troca-se com a penltima posio. Procede-se da mesma maneira at qiue o conjuntorestante contenha apenas um elemento quando se d por concludo o processo.
Supondo que se tenha o mesmo vetor usado anteriormente:
15 7 1 4 17* 10*15* 7 1 4 10* 1710* 7 1 4* 15 174 7* 1* 10 15 174* 1* 7 10 15 171 4 7 10 15 17
Os asteriscos indicam que foram trocados de uma linha para a seguinte.A soluo dos problemas de ordenao por este processo leva ai seguinte algoritmo.
8.2.2 Ordenao de Matrizes - mtodo de troca do maior:Algoritmo ordena_troca_do_maiorVariveisinteiro meu_vetor[6], i, n, m, p, aux, k
INICIOpara (i= 1 at 6; i++)
ler (meu_vetor[i])escrever (meu_vetor[i])
fim_paran=6enquanto (n>1)
m= meu_vetor[1]p=1para (i=2 at 6; i++)
se (m < meu_vetor[i]) m= meu_vetor[i]p=i
fim_sefim_paraaux = meu_vetor[n]meu_vetor[n]=meu_vetor[p]
Prof Ana Carolina [email protected]
-
Lgica de Programao 45
meu_vetor[p]=auxn=n-1
fim_enquantopara (k= 1 at 6; k++)
escrever (meu_vetor[k])fim_para
FIM
Quando se trata de matrizes de duas dimenses, tem-se dois ndices que devem ser controlados. Considere o seguinte problema:
Ler uma tabela chamada minha_tabela[10][20].Em seguida ler 15 valores, um decada vez, e para cada valor lido, verificar se este valor est ou no na
tabela minha_tabela, escrevendo-o com a mensagem adequada.
Desta forma temos o algoritmo abaixo:
Algoritmo pesquisa_em _tabelaVariveisinteiro minha_tabela[10][20], n, i, j, a
INICIOpara (i= 1 at 10; i++)
para (j= 1 at 20; j++)ler (minha_tabela[i][j])
fim_parafim_parapara (n=1 at 15; n++)
ler (a)para (i=1 at 10; i++)
para (j= 1 at 20; j++)se (a == minha_tabela[i][j])
i= 12j= 10
fim_sefim_para
fim_parase (i==11)
escrever ( (a) no est na tabela)seno
escrever ( (a) est na tabela)fim_se
fim_paraFIM
8.3 Atividades1) Conceitue MatrizMatriz um conjunto de variveis, cada uma podendo representar o valor de uma constante, como se fossem variveis simples,
mas todas elas compartilham o mesmo nome e todas so do mesmo tipo.
2) Como indicada a leitura de um vetor V(10)?
algoritmo leitura_vetorvariveis
tipo_qualquer v[10] inteiro coluna
iniciopara (coluna=1 at 10; coluna++)
ler( v[coluna] )fim_para
fim
3) Como indicada a escrita de uma matriz M(5,8)?
Prof Ana Carolina [email protected]
-
Lgica de Programao 46
algoritmo escreve_matrizvariveistipo_qualquer m[5][8]inteiro coluna, linha
iniciopara (linha = 1 at 5; linha++)
para (coluna=1 at 8; coluna++)escrever( m[linha][ coluna] )
fim_parafim_para
fim
4) Escrever um algoritmo que l um vetor X(100) e o escreve. Substitua, a seguir, todos os valores negativos de X por 1 e escrevao vetor modificado
algoritmo modifica_vetorvariveisinteiro x[100], coluna
iniciopara (coluna=1 at 100; coluna++)
ler (x[coluna])escrever(x[coluna])se (x[coluna] < 0 )
x[coluna] = 1fim_se
fim_parapara (coluna=1 at 100; coluna++)
escrever(x[coluna])fim_para
fim5) Escrever um algoritmo que l um vetor K(20) e o escreve. Troque, a seguir, os elementos de ordem mpar com os de ordem par
imediatamente seguintes e escreva o vetor assim modificado.algoritmo troca_elementosvariveisinteiro k[20], aux, coluna
iniciopara (coluna=1 at 20; coluna++)
ler (k[coluna])escrever(k[coluna])
fim_paracoluna =1faa
aux = k[coluna]k[coluna]= k[coluna + 1]k[coluna + 1] = auxcoluna = coluna + 2
at que ( coluna >= 20)para (coluna=1 at 20; coluna++)
escrever(k[coluna])fim_para
fim6) Armazene em uma Matriz de 3 linhas por 2 colunas nome de pessoas.Pesquise nessa matriz quantas pessoas chamadas "camila" esto cadastradas.
ALGORI