




























































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
ALGORITMOS E PROGRAMAÇAO
Tipologia: Notas de estudo
1 / 122
Esta página não é visível na pré-visualização
Não perca as partes importantes!





























































































Este capítulo visa conceituar: constante, variável, operação, expressão e atribuição. Considerando-se a fórmula matemática simples do cálculo do volume de uma esfera têm-se:
V = (^) 34 π R 3
onde encontramos:
1 – valores que podem ser classificados como:
a) valores constantes, invariantes em todas as aplicações da fórmula, no caso, os valores 4, 3, e π, que, pelo fato de serem sempre os mesmos são denominados de constantes; b) valores a serem substituídos na fórmula, em cada aplicação que dela fazemos. A representação destes valores, usualmente é feita através do uso de letras ou combinações de letras e/ou dígitos numéricos, que recebem o nome de variáveis e tornam a fórmula genérica, isto é, possível de ser usada para resolver uma certa classe de problemas e não apenas um problema específico. No exemplo, V e R são denominados de variáveis. Outros exemplos de variáveis: a, b1, valor, x14, codigo10, etc.
2 - operações a serem executadas sobre determinados operandos ( valores ), para a obtenção da solução do problema. Na fórmula do volume da esfera estão representadas as operações de divisão, multiplicação e potenciação, efetuadas sobre os operandos 4, 3, π e R, numa seqüência pré-determinada, mas nem sempre rigorosa, devido às leis matemáticas da comutatividade e associatividade.
Uma fórmula matemática é simplesmente uma descrição de um conjunto de ações ( operações ) que devem ser executadas sobre um conjunto de objetos ( constantes e/ou variáveis).
É importante que os objetos sobre os quais as operações tem efeito sejam precisamente definidos. Existe uma outra relação que deve ser cuidada entre objetos e operações. Certas operações somente podem ser executadas sobre determinados objetos, se estes objetos satisfizerem certas condições como pode ser ilustrado nos exemplos abaixo:
A operação de radiciação somente pode ser executada sobre o objeto a , se este pertencer ao conjunto dos reais positivos R +.
Exemplo 2: n!
O conjunto de operações necessárias para o cálculo do fatorial de n só fará sentido prático se o objeto n pertencer ao conjunto dos inteiros positivos I+.
Exemplo 3: Arc sen x
A operação de determinação do arco do seno trigonométrico somente pode ser executada sobre o objeto x se este pertencer ao intervalo [ -1,1 ] do conjunto R.
Exemplo 4: Verificar a ocorrência da letra a em um dado texto.
A operação de comparação de cada um dos caracteres do texto com a letra a tem como resultado um valor lógico verdadeiro ou falso conforme o caracter a for ou não encontrado no texto. Entretanto, ela só fará sentido se o caracter a pertencer ao conjunto de símbolos possíveis de ocorrerem no texto. Nos exemplos apresentados, pode-se notar dois tipos de limitações:
Inteiros – quando pertencem aos conjuntos I ou Z. Reais – quando pertencem ao conjunto R. Lógicos – quando pertencem ao conjunto { verdadeiro, falso }. Literais – quando pertencem ao conjunto dos caracteres.
O conjunto de valores que uma variável pode assumir poderá influir, inclusive, na maneira de se executar certas operações:
Exemplo: A B^ que pode assumir as seguintes variações de cálculo:
x
x
x … x
c) B real : A B^ = 10 B. log 10 A
d) B nulo : A B^ = 1
Uma constante é pois, um objeto invariante em cada execução de uma fórmula matemática, enquanto variável é um objeto que representa um valor que pode ser alterado a cada execução da fórmula que a contém.
Se for resolvida a expressão V = (^) 34 π R 3 para uma esfera de raio 3, por exemplo, teremos:
Observa-se que neste caso, a existência de números como 34 = 1,3333… obrigou-nos ao estabelecimento de um
limite de precisão para que a seqüência de operações pudesse ser executada.
As variáveis podem ser visualizadas como receptáculos de valores. Cada receptáculo é identificado através de um nome e pode receber um valor de um determinado tipo.
Assim a fórmula V = (^) 34 π R 3 pode ser visualizada como segue:
Cada vez que a fórmula for utilizada, ocorrerá o seguinte:
V =^ 34 π R
Essa representação compacta pode ser substituída por outras, tais como:
Sn =
É importante notar que a representação compacta não diminui a quantidade de operações a serem feitas, isto é, não minimiza o esforço de cálculo, apenas minimiza o esforço de notação. A decomposição de uma expressão em passos mais elementares possibilita o emprego de máquinas simples para a solução de problemas de grande complexidade ou grande volume de cálculos repetitivos. São exemplos de Expressões Aritméticas, de acordo com a definição apresentada acima:
Na resolução de uma expressão aritmética deve-se seguir uma ordem pré-definida que depende dos operadores e de símbolos capazes de indicar alteração de ordem de resolução.
A prioridade natural dos operadores é a seguinte:
Exemplo1 : Resolver
√
Considere-se esta outra expressão: ( a + b) 2
+1 que tem a seguinte ordem de operações:
A decomposição de uma expressão deverá atender sempre o seguinte princípio básico: a solução das sub- expressões deve conduzir à solução de toda a expressão. Tanto o resultado final da expressão quanto os resultados das sub-expressões devem ser armazenados em variáveis. O ato de armazenar ou escrever um valor em uma variável é chamado de atribuição de valor , sendo representado através de símbolos, tais como: Variável ← valor Variável := valor Variável = valor A atribuição compreende uma ação de substituição do conteúdo de uma variável cujo efeito é: após a atribuição, a variável passa a representar um novo valor, sendo “ perdido” o valor anterior. Assim, uma atribuição tal como:
PI = 3,
seguida de outra do tipo:
PI = 3,
fará com que a variável PI represente o valor 3,15 como resultado atual, perdendo o valor 3, anteriormente nela armazenado. Considere as atribuições:
A = 5 B = 2 C = 10
Se fizermos em seguida: A = B e B = C, teremos como resultados
A = 2 B = 10 C = 10
Fazendo-se, a seguir, as seguintes atribuições: B = C e A = B, teremos A = 10 B = 10 C = 10
a b 2 2 a 5 b 2 1
x x
x
1) Conceitue constante.
2
6 ) Conceitue Expressão Aritmética. 7 ) Que são operadores monádicos e diádicos? 8 ) Além das expressões aritméticas que outro tipo de expressões são usadas em algoritmos? 9 ) Qual a seqüência de operações necessárias para intercambiar os valores de 3 variáveis a, b, c de modo que a fique com o valor de b , b fique com o valor de c e c fique com o valor de a?
X = X + 3 X = X – 6 X = X/ X = 3X Qual será o valor armazenado em X?
Este capítulo visa conceituar algoritmo, formalizar este conceito, caracterizar algoritmos seqüenciais, bem como, iniciar a apresentação de uma linguagem algorítmica a ser utilizada ao longo do livro. Nada é mais básico em computação do que o conceito de algoritmo.
“ Um conjunto finito de regras, bem definidas, para a solução de um problema em um tempo finito.”
Este conceito, aparentemente simples, pode ser formalizado matematicamente com grande precisão, edificando-se sobre a definição toda uma teoria de algoritmos. Considere o seguinte problema: Dados 3 valores positivos, a , b , c , determinar a sua média aritmética, harmônica, geométrica e ponderada com pesos respectivos de 1, 2 e 3. As tarefas a serem executadas para a solução deste problema, podem ser descritas da seguinte forma:
Obter os valores de a, b, c
Calcular a média aritmética pela fórmula ma =
Comunicar os resultados obtidos: ma,mh,mg,mp
Terminar
A seqüência de tarefas acima, especificadas passo a passo, é um algoritmo, pois é formado por um conjunto finito de regras que podem ser consideradas bem definidas e cuja execução produz a solução do problema proposto, após um tempo finito. A execução da tarefa, neste caso, é corretamente cumprida, se executarmos todos os passos (instruções) na seqüência em que elas aparecem, da primeira até a última, sem omissões e sem repetições. Um algoritmo com estas características é denominado de algoritmo seqüencial. No passo 1 do algoritmo é indicada a ação de “ obter valores “. Para efetuar os cálculos indicados nos passos 2, 3e 4 a pessoa, máquina de calcular ou computador que deverá executar estas tarefas necessita receber os valores de a, b, c. Aos valores recebidos por um algoritmo dá-se o nome de Entradas. Deve-se ter o cuidado de definir claramente o conjunto ou intervalo de conjunto ao qual pertencem as Entradas. No algoritmo acima, a, b, c podem assumir qualquer valor real, exceto o zero, pois, o inverso de zero não está definido e com isso a média harmônica não poderia ser calculada. Todo algoritmo possui pelo menos um resultado. O algoritmo do cálculo das médias possui como resultados os valores das médias ma, mh, mg e mp. Os resultados fornecidos por um algoritmo recebem o nome de Saídas. É importante que num algoritmo cada passo esteja precisamente definido não deixando margem a ambigüidades. Muitos conjuntos de regras encontradas no dia a dia, tais como, receitas, descrições de usos de aparelhos, etc. pecam por definições imprecisas de um ou mais de seus passos. Assim, uma receita que se refere a uma “pitada de sal” ou “mexa até que fique em ponto de caramelo” não define claramente o quanto isto representa, de forma que cada usuário da receita deve interpretá-lo. Para precisar o conceito de algoritmo é necessário que ele satisfaça à propriedade da efetividade ( não confundir com eficiência ), isto é, todas as operações especificadas no algoritmo devem ser suficientemente básicas para que possam ser, pelo menos em princípio, executadas de maneira exata e num tempo finito. Deve-se observar que na prática não basta que um algoritmo seja de execução finita. Um algoritmo útil precisa terminar não apenas em um tempo finito, mas em um tempo “ muito finito “. Por exemplo, dada uma partida de xadrez, existe um algoritmo que determina se as peças brancas podem ou não forçar uma vitória. Eis um algoritmo que pode resolver um problema de grande interesse para um bom número de pessoas. No entanto, não teremos a resposta, pois, tal algoritmo requer um tempo fantasticamente grande, ainda que finito, para chegar a esta conclusão. Não possui a efetividade.
Solução 2
Solução 3
Solução 4
Onde mod é a função módulo ( resto inteiro da divisão de “m” por “n”), Esta solução é a forma recursiva para se calcular o máximo divisor comum entre m e n.
Certamente estas soluções não são as únicas soluções para se resolver este problema.
Quando se dispõe de vários algoritmos para solucionar o mesmo problema, entram em consideração os critérios de escolha do melhor algoritmo. Deve-se, porém, verificar primeiramente se todos os algoritmos são corretos, isto é, resolvem exatamente todo o problema proposto e, somente depois, levam-se em conta os critérios de escolha tais como, tempo de execução, legibilidade, adaptabilidade, elegância, simplicidade, etc.
Para ter-se um algoritmo é necessário:
**1) Que se tenha um número finito de passos.
Se “m” ≥ “n” fazer “m” igual ao resto de “m” dividido por “n” e repetir este mesmo passo.
Trocar os valores de “m” e “n” entre si.
Se “n” = 0 então escrever “m” como resposta e terminar.
Voltar ao passo inicial.
Dividir “m” por “n” e fazer “r” ser o resto.
Se r = 0 escrever “n” como resposta e terminar.
Dividir “n” por “r” e fazer “m” ser o resto.
Dividir “r” por “m” e fazer “n” ser o resto.
Se m = 0 escrever “r” como resposta e terminar.
Se n = 0 escrever “m” como resposta e terminar.
Voltar ao passo inicial.
Se n ≠ 0 então MDC = MDC( n, mod( m,n )) Senão MDC = m.
Um método para a construção de algoritmos pode, simplificadamente, ser descrito pelos seguintes passos:
Nos exemplos de algoritmos até agora apresentados foi utilizada uma linguagem usual, sem maiores formalismos. Contudo, para um melhor entendimento dos próprios algoritmos, para poder compará-los com outros algoritmos que foram escritos por colegas e que solucionam o mesmo problema, é, se não necessário, ao menos altamente conveniente formalizar a linguagem algorítmica usada. Como já visto, um algoritmo geralmente possui uma ou mais entradas. Uma operação de dar entrada de valores será indicada no algoritmo pela seguinte instrução:
Onde lista de variáveis é uma variável ou várias variáveis separadas por vírgulas.
Exemplos: Ler ( a ) Ler ( a, b, c ) Ler ( numero, nome, salário )
Todo algoritmo deve produzir pelo menos um resultado, denominado de saída. Uma operação de saída, no algoritmo, será indicada pela instrução:
Onde lista de expressões é uma constante ou uma variável ou constantes e/ou variáveis e/ou expressões, separadas por vírgulas.
Exemplos: Escrever ( 5 ) Escrever ( x ) Escrever ( x, y, z ) Escrever ( “ Matrícula = “, m, “ Nota = “, n ) Escrever ( “ Faculdade de Informática “ )
Escrever (
, 2ab, b 2 -4ac )
Num algoritmo existem, geralmente, um ou mais passos indicando cálculos que devem ser realizados. Uma operação de cálculo será indicada pela instrução de atribuição:
Exemplos: a = 5 x = y d = b 2 – 4ac nome = “João“
Como, após a execução de um certo número de passos, o algoritmo, deve chegar à condição de tarefa realizada, isto é, termino da execução do algoritmo. Esta operação será indicada pela instrução:
Ler (< lista de variáveis >)
Escrever ( < lista de expressões > )
Variável = Expressão
Fim
Onde s = semiperímetro.
fixo e o valor que recebe por carro vendido e calcula o salário a ser pago a este vendedor, escrevendo o número do vendedor e seu salário total.
Maior =
a) O valor da diária no período da promoção. b) O valor médio arrecadado sem a promoção, durante um mês. c) O valor médio arrecadado com a promoção, durante um mês. d) O lucro ou prejuízo mensal com a promoção.
As inter-relações entre as proposições são feitas através de operadores lógicos. Um operador lógico é um operador cujos operandos são expressões lógicas e cujo resultado é um valor lógico verdadeiro ( V ) ou falso ( F ).
Expressões Lógicas
Dados dois valores lógicos quaisquer, T1 e T2, e um operador L, o resultado da expressão lógica T1 L T2 tem valor verdadeiro ( V ) ou falso ( F ). Devido ao restrito domínio dos valores lógicos, é possível definir os resultados das operações de forma compacta, através de “ tabelas-verdade “. Este tipo de tabela mostra o resultado das operações, para todas as possíveis combinações dos operandos. A tabela-verdade para os três principais operadores lógicos, a negação, o produto lógico e a soma lógica, pode ser representada como segue:
Sendo: T1 e T2 operandos lógicos ~ operador unário de negação ( “ não “ ) ^ operador de produto lógico ( “ e “ ) ∨ operador de soma lógica ( “ ou “ )
As relações também podem fazer parte das expressões lógicas, como operandos, uma vez que seu resultado é lógico. As relações são definidas entre expressões aritméticas, por meio de operadores relacionais. Dados dois valores E1 e E2, e um operador relacional R, o resultado da expressão E1 R E2 tem o valor verdadeiro ( V ) ou falso ( F ). Os operadores relacionais são:
Enquanto os operadores lógicos atuam sobre operandos lógicos, os peradores relacionais atuam sobre operandos aritméticos, como pode ser visto na expressão abaixo:
Proposição : X ∈ [ 1; -1 ], isto é
“ X pertence ao intervalo [ 1 ; -1 ] ”, cuja expressão lógica correspondente é:
X ≥ -1 ^ X ≤ 1 R1 R
R1 e R2 são relações que fornecem como resultado um valor lógico V ou F. O operador lógico ^ (“e”) dará como resultado o valor lógico V somente se ambas as relações R1 e R2 forem verdadeiras. Os operadores relacionais “ ≤ “ e “ ≥ “ atuam sobre os valores X, 1 e –1, que são expressões aritméticas e não lógicas. Nos algoritmos a correta formulação de condições, isto é, expressões lógicas, é de fundamental importância, visto que as estruturas de seleção e também as de repetição ( que serão vistas adiante ), são baseadas nelas.
Portanto, condição é
, ≥, ≤, ≠ );
As diversas formulações das condições podem levar a algoritmos distintos. Considere-se o problema:
“ Dado um par de valores X, Y , que representam as coordenadas de um ponto no plano, determinar o quadrante ao qual pertence o ponto, ou então, se está sobre algum dos eixos cartesianos ou na origem ”.
A solução do problema consiste em determinar todas as combinações de X e Y para as classes de valores positivos, negativos e nulos. A tabela, a seguir, mostra todas as entradas e saídas possíveis:
Entradas X Y
Mensagem de Saída
= 0 = 0 Ponto na origem = 0 (^) ≠ 0 Ponto sobre o eixo Y ≠ 0 = 0^ Ponto sobre o eixo X
0 > 0 Ponto no Quadrante 1 < 0 > 0 Ponto no Quadrante 2 < 0 < 0 Ponto no Quadrante 3 0 < 0 Ponto no Quadrante 4
Os algoritmos podem ser baseados em estruturas concatenadas ( uma em seqüência a outra ) ou em estruturas aninhadas ( uma dentro da outra ), de acordo com a formulação das condições.
Algoritmo 3.1: Estruturas concatenadas
Algoritmo 3.2: Estruturas aninhadas
É importante notar que é possível obter diversos algoritmos para a solução deste problema, através de diferentes combinações de formulações de condições.
Algoritmo PosiçãoPonto x, y : Inteiros Início Ler ( x, y ) Se x = 0 e y = 0 então escrever ( “ Ponto na origem “ ) Se x = 0 e y ≠ 0 então escrever (“ Ponto sobre o eixo y ” ) Se x ≠ 0 e y = 0 então escrever (“ Ponto sobre o eixo x “) Se x > 0 e y > 0 então escrever (“ Ponto no quadrante 1 “ ) Se x < 0 e y > 0 então escrever (“ Ponto no quadrante 2 “ ) Se x < 0 e y < 0 então escrever (“ Ponto no quadrante 3 “ ) Se x > 0 e y < 0 então escrever (“ Ponto no quadrante 4 “ ) Fim
Algoritmo PosiçãoPonto x, y : Inteiros Início Ler ( x, y ) Se x ≠ 0 então se y = 0 então escrever (“ Ponto sobre o eixo x “ ) senão se x > 0 então se y > 0 então escrever ( “ Ponto no quadrante 1 “ ) senão escrever (“ Ponto no quadrante 4 “) senão se y > 0 então escrever (“ Ponto no quadrante 2”) senão escrever ( “ Ponto no quadrante 3 “) senão se y = 0 então escrever (“ Ponto na origem “) senão escrever (“ Ponto sobre o eixo y “) Fim