Baixe o app para aproveitar ainda mais
Prévia do material em texto
Autor: Ernani Cláudio Borges 1 Instituto Federal do Triângulo Mineiro Cursos da Área de Computação Disciplina de Algoritmos Prof. Ernani Cláudio Borges Estudos das atividades – PARTE 1 Observações importantes: a) Esta atividade irá fazer a introdução aos conceitos de: • Algoritmos; • Tipos de Dados; � Inteiro; � Real � Caracter ou literais � lógicos • Tipos de Operadores: � Aritméticos; � Relacionais � Lógicos • Funções Matemáticas Tranquilidade, firmeza, objetividade e BONS ESTUDOS! Nome do aluno(a): __________________________________________________________________ Data: ____/_____/_____ Matrícula (RA): __________________________ ___________________________________________ 1 CONCEITOS DE ALGORITMOS Analisando os exemplos apresentados anteriormente você pode verificar que para resolver um problema sempre efetuamos a sua análise e posteriormente descrevemos uma sequência finita de passos necessários para que possamos obter a solução desejada. Isto é, sempre acabamos definindo um algoritmo para solucionar o problema. Bem, como você já deve ter percebido, executamos algoritmos ao longo de toda a nossa vida e, muitas das vezes, nem nos damos conta disso. Certo? Vejamos agora como alguns autores da área de informática definem o que é algoritmo. Para Forbellone (1993, p. 2), um “algoritmo é uma sequencia de passos que visam atingir um objetivo bem definido.”. Já outros autores preferem definir a noção de algoritmo da seguinte forma: Algoritmo é um processo de cálculo matemático ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, regras formais para obtenção de um resultado ou da solução de um problema, englobando fórmulas de expressões aritméticas. (MANZANO, 1996, p.07). “Ação é um acontecimento que, a partir de um estado inicial, após um período de tempo finito, produz um estado final previsível e bem definido”. (FARRER, 1999, p.14). “Processo de cálculo; encadeamento das ações necessárias para o cumprimento de uma tarefa; processo efetivo, que produz uma solução para um problema num número finito de etapas" (HOUAISS, 2007, p.155). "Algoritmo é a descrição de uma sequencia de passos que deve ser seguida para a realização de uma tarefa." (ASCENCIO, 2007 apud 1999). Autor: Ernani Cláudio Borges 2 Se você analisar cuidadosamente cada uma das definições dadas anteriormente, perceberá que todas elas definem, de uma forma geral, um algoritmo como sendo uma sequência de passos ou ações para se resolver um problema ou tarefa. Entretanto, Guimarães e Lages também nos lembram muito bem que: "Algoritmos devem ser feitos para serem lidos por seres humanos. Tenha em mente que seus algoritmos deverão ser lidos e entendidos por outras pessoas (e por você mesmo) de tal forma que possam ser corrigidos, receber manutenção e ser modificados." (GUIMARÃES/ LAGES, 1994, p.39). A questão é que todos os problemas, ou tarefas, possuem informações a serem analisadas e processadas. Como o nosso objetivo é escrever algoritmos que serão executados em um computador, então devemos avaliar mais cuidadosamente quais são os tipos de informações que o computador consegue manipular. Será que ele consegue utilizar os mesmos tipos de informações que nos humanos conseguimos? Fique de olho! 1. Podem existir vários algoritmos para solucionar o mesmo problema. Entretanto, é importante construirmos um algoritmo da maneira mais otimizada possível. 2. Além disso, o algoritmo deve ser fácil de se interpretar e codificar. Ou seja, ele deve ser o intermediário entre a linguagem falada e a linguagem a ser utilizada para se programar o computador, a qual denominamos de linguagem de programação. 1.1 Tipos de Informação Segundo Manzano (1996), o computador é uma máquina capaz de solucionar problemas que permitem manipular informações, podendo estas informações ser de dois tipos básicos: dados e instruções. 1.2 Tipos de Dados Os tipos de dados que são reconhecidos pelo computador são números inteiros, números reais, dados caracteres (também chamados de literais) e dados lógicos. Analisemos cada um deles. Autor: Ernani Cláudio Borges 3 1.2.1 Tipos inteiros São dados numéricos positivos, negativos e o zero. Só como observação, em linguagens de programação, esse tipo de dado tem limite de memória, podendo variar de -32678 até +32677. Exemplos de tipos inteiros: 78 -5 0 1.2.2 Tipos reais São dados numéricos positivos, negativos, números fracionários e o zero. Seu limite de memória em linguagens de programação varia de 2.9 * 10-39 à + 1.7 * 1038. Exemplos de tipos reais: 78 -5,8 0 521 -27,6 1.2.3 Tipos caracteres ou literais É uma sequencia com letras e símbolos numéricos sempre apresentados entre aspas (" ") como por exemplo: "olá!" "Bom dia, hoje é dia 06 de janeiro de 2013" "5" É importante não confundir números com literais numéricos (números entre aspas), ou seja, o número 5 é diferente do literal "5". Veja o exemplo a seguir: a soma dos números 5 + 5 resulta em 10 a soma dos literais "5" + "5" resulta em "55" Em outras palavras, a soma de caracteres (literais) nada mais é que a união desses caracteres. Autor: Ernani Cláudio Borges 4 Fique de olho! Em programação, muitos autores denominam a união de caracteres como concatenação. 1.2.4 Tipos lógicos São dados que representam valores verdadeiro (V) ou falso (F), também conhecidos como tipos boleanos. 1.3 Tipos de operações e operadores As instruções representam um conjunto de operações, que permitem transformar os dados, ou um conjunto de comandos para se executar algum tipo de ação. Iniciaremos analisando primeiramente algumas operações e seus respectivos operadores. 1.3.1 Operadores aritméticos Como vamos trabalhar com cálculos matemáticos é importante conhecer as principais operações aritméticas e seus símbolos, as quais são aplicadas apenas aos tipos de dados numéricos (inteiros e reais): Nome símbolo Exponenciação ^ Divisão / Multiplicação * Adição + Subtração - Utilizando os operadores aritméticos podemos construir expressões aritméticas da mesma maneira que na matemática: 2 + 5 8 – 7 6 * 4 / 2 2,0 * 3,1415 * 1,25 ^ 2,0 Estas expressões, ao serem avaliadas, resultarão em um valor numérico. Autor: Ernani Cláudio Borges 5 Lembre-se, assim como na matemática, as expressões aritméticas são avaliadas da esquerda para a direita, respeitando-se a precedência dos operadores. Portanto, de acordo com a precedência, a exponenciação deve ser executada antes da multiplicação, divisão, adição e subtração; e a multiplicação e divisão devem ser executadas antes da adição e subtração. Se desejarmos quebrar a precedência dos operadores, então devemos envolver a operação entre parênteses. Por exemplo, a avaliação da expressão 8 – 4 / 2 resulta em 6, enquanto que a avaliação da expressão (8 – 4) / 2 resulta em 2. 1.3.2 Operadores relacionais Da mesma forma que os operadores aritméticos, os operadores relacionais são fundamentais, pois nos permitem efetuar comparações entre expressões numéricas ou expressões literais. Estes operadores encontram-se descritos pela tabela abaixo: Nome símbolo igual = diferente <> maior > menor < maior ou igual >= menor ou igual <= Utilizando os operadores relacionais podemos construir expressões relacionais que ao serem avaliadas resultarão em valores lógicos verdadeiro ou falso. Por exemplo, a avaliação da expressão relacional 5 > 4 resulta em verdadeiro, enquanto que a avaliação da expressão –5 > 4 resulta em falso. 1.3.3 Operadores lógicos Os operadores lógicos nos permitem construir expressões lógicas que ao serem avaliadas resultarão em verdadeiro ou falso. Os operadores lógicossão: E (conjunção), OU (disjunção) e NÃO (negação). Para entender melhor estes operadores, considere as seguintes afirmações, que representaremos por A e B: A: a loja vende camisas; e B: a loja vende bonés. Autor: Ernani Cláudio Borges 6 Estas afirmações podem ser verdadeiras ou falsas. Por exemplo, se entrarmos em uma loja qualquer e ela vender camisas, então a afirmação A (a loja vende camisas) é verdadeira. Entretanto, se ela não vender camisas, então a afirmação A é falsa. O mesmo raciocínio se aplica a afirmação B. Operador E: Suponha que você deseje comprar uma camisa e um boné em uma única loja (comprar um sem o outro não lhe serve). Então, a compra só será realizada se a loja vende camisas E a loja vende bonés. Isto é, a compra será realizada somente se a expressão lógica A E B for verdadeira, ou seja, somente se ambos, A e B, são verdadeiros. Podemos ilustrar melhor este raciocínio através de uma tabela denominada de TABELA VERDADE. E A (tem camisa) B (tem boné) Resultado (compra?) Linha 1) V V V Linha 2) V F F Linha 3) F V F Linha 4) F F F Acompanhe a análise: Na linha 1) A loja tem a camisa e tem o boné, assim o resultado é verdadeiro (V), ou seja, a compra pode ser realizada; Na linha 2) A loja tem a camisa e não tem o boné, assim o resultado é falso (F), ou seja, a compra não poderá ser realizada; Na linha 3) A loja não tem a camisa e tem o boné, assim o resultado é falso (F), ou seja, a compra não poderá ser realizada; Na linha 4) A loja não tem a camisa e não tem o boné, assim o resultado é falso (F), ou seja, a compra não poderá ser realizada. Autor: Ernani Cláudio Borges 7 Operador OU: Suponha agora que você deseje comprar uma camisa ou um boné em uma loja (neste caso, tanto faz comprar uma camisa, um boné ou ambos). Então, a compra será realizada se a loja vende camisas OU se a loja vende bonés. Isto é, a compra será realizada somente se a expressão lógica A OU B for verdadeira. Neste caso, a única situação em que a compra não será executada se, ambos, A e B, forem falsos (a loja não vende camisas e não vende bonés). Podemos ilustrar melhor este raciocínio através da TABELA VERDADE a seguir. Acompanhe a análise: Na linha 1) A loja tem a camisa e tem o boné, assim o resultado é verdadeiro (V), ou seja, a compra pode ser realizada; Na linha 2) A loja tem a camisa e não tem o boné, assim o resultado é verdadeiro (V), ou seja, a compra pode ser realizada; Na linha 3) A loja não tem a camisa e tem o boné, assim o resultado é verdadeiro (V), ou seja, a compra pode ser realizada; Na linha 4) A loja não tem a camisa e não tem o boné, assim o resultado é falso (F); ou seja, a compra não pode ser realizada. Operador NÃO: Já o operador NÃO tem a função de inverter o resultado da avaliação de uma expressão lógica. Tente interpretar a tabela abaixo antes de verificar a análise. A (tem camisa) NÃO A (não tem camisa) Linha 1) V F Linha 2) F V OU A (tem camisa) B (tem boné) Resultado (compra?) Linha 1) V V V Linha 2) V F V Linha 3) F V V Linha 4) F F F Autor: Ernani Cláudio Borges 8 Acompanhe a análise: Na linha 1) Na segunda coluna, observamos que a loja tem a camisa, assim o resultado da afirmação é verdadeiro (V). A terceira coluna nega esta afirmação, ou seja, ela afirma que a loja não tem a camisa, o que é falso; Na linha 2) Na segunda coluna, observamos que a loja não tem a camisa, assim o resultado da afirmação é falso (F). A terceira coluna nega esta afirmação, ou seja, ela afirma que a loja não tem a camisa, o que é verdadeiro; 1.3.4 Funções matemáticas São operações que não possuirão símbolos de operadores para representá-las. Por exemplo, para representar o símbolo da raiz quadrada de 16 ( 16 ) iremos usar a função chamada RAIZ (16). Assim como na matemática, uma função retorna sempre um resultado. Portanto, a utilizarmos a função RAIZ (16) ela nos retornará como resultado o valor 4. A Tabela abaixo apresenta as principais funções a serem utilizadas. Quadrado ( ) = retorna o quadrado de um número Raiz ( ) = retorna a raiz quadrada de um número Resto = retorna o resto da divisão inteira entre dois números inteiros Quociente = retorna o quociente da divisão inteira entre dois números inteiros Parte-inteira ( ) = retorna a parte inteira de número fracionário 1.4 Precedência dos operadores Na avaliação de uma expressão (seja ela aritmética, relacional ou lógica) é respeitada a precedência (ordem de avaliação) dos operadores indicada pela tabela a seguir. Operadores Tipo Precedência ( ) – 1º Funções – 2º NÃO Lógico 3º ^ Aritmético 4º Autor: Ernani Cláudio Borges 9 * / Aritmético 5º + - Aritmético 6º < <= > >= Relacional 7º = <> Relacional 8º E Lógico 9º OU Lógico 10º 1.4.1 Exemplos de utilização dos operadores Para você testar seu aprendizado na utilização de operadores lógicos, relacionais, operadores de caracteres e também a precedência de execução dos cálculos, vejamos alguns exemplos. Acompanhe o resultado e as análises correspondentes à avaliação de cada uma das expressões contidas na primeira coluna da tabela. Expressão Resultado Análise 5 = 7 e 7 > 3 Falso Analisando a precedência dos operadores, verificamos que os operadores de igualdade (=) e maior (>) devem ser analisados antes do operador lógico E. Procedendo a análise, temos que: 5 = 7 é falso (F) e 7 > 3 é verdadeiro (V). Logo, pela definição do operador lógico E, falso E verdadeiro (F e V) resulta em falso. Logo a avaliação da expressão resulta em falso. 5 <> 7 ou 7 < 3 Verdadeiro Analisando a precedência dos operadores, verificamos que os operadores de desigualdade (<>) e menor (<) devem ser analisados antes do operador lógico OU. Procedendo a análise, temos que: 5 <> 7 é verdadeiro (V) e 7 < 3 é falso (F). Logo, pela definição do operador lógico OU, verdadeiro OU falso (V ou F) resulta em verdadeiro. Logo a avaliação da expressão resulta em verdadeiro. não (5 > 7) Verdadeiro Primeiro devemos analisar o que está dentro dos parênteses. Logo, 5 > 7 é falso (F). Agora, pela definição do operador lógico NÃO, NÃO falso (não F) resulta em verdadeiro. Logo a avaliação da expressão resulta em verdadeiro. (5 < 7) e (7 > 3) Verdadeiro Primeiro devemos analisar o que está dentro dos parênteses. Logo, 5 < 7 é verdadeiro (V) e 7 > 3 é verdadeiro (V). Logo, pela definição do operador lógico E, verdadeiro E verdadeiro (V e V) resulta em verdadeiro. Autor: Ernani Cláudio Borges 10 Logo a avaliação da expressão resulta em verdadeiro. (5 >= 7) ou (7 = 3) Falso Primeiro devemos analisar o que está dentro dos parênteses. Logo, 5 >= 7 é falso (F) e 7 = 3 também é falso (F). Logo, pela definição do operador lógico OU, falso OU falso (F ou F) resulta em falso. Logo a avaliação da expressão resulta em falso. não (5 <= 7) Falso Analisando, temos que 5 <= 7 é verdadeiro (V). Logo, pela definição do operador lógico NÃO, NÃO verdadeiro (não V) resulta em falso. Logo a avaliação da expressão é falso. (5 resto 3) = 2 Verdadeiro O resto da divisão inteira de 5 por 3 (5 resto 3) resulta em 2. Logo, a avalição de 2 = 2 resulta em verdadeiro. (5 quociente 3) = 2 Falso O quociente da divisão inteira de 5 por 3 (5 quociente 3) resulta em 1. Logo, a avaliação de 1 = 2 resulta em falso. 5 = 3 e 5 < 7 ou 7 > 3 Verdadeiro Como não há parênteses envolvendo as expressões, devemos respeitar as precedências dos operadores durante a avaliação. Pela precedência, os operadores relacionais devem ser analisados antes dos operadores lógicos. Resolvendo, temos que: 5 = 3 é falso (F), 5 < 7 é verdadeiro (V) e 7 > 3 é verdadeiro (V). Observando a precedência dos operadores lógicos, verificamos que o operadorE deve ser avaliado antes do operador OU. Então devemos resolver primeiramente a expressão 5 = 3 e 5 < 7, o que nos dá falso, pois falso E verdadeiro (F e V) resulta em falso (F). Agora podemos avaliar o operador OU, isto é falso OU verdadeiro (falso ou 7 > 3), assim temos falso ou verdadeiro (F ou V) o que nos dá verdadeiro. Parte-inteira (10.8) 10.0 Observe que a função Parte-inteira retorna o resultado 10.0 que é do tipo "real" e não um número inteiro, como o nome parece indicar.
Compartilhar