Sie sind auf Seite 1von 10
Instituto Federal do Triângulo Mineiro Disciplina de Algoritmos Curso de Licenciatura em Computação – EaD

Instituto Federal do Triângulo Mineiro Disciplina de Algoritmos

Curso de Licenciatura em Computação EaD Prof. Ernani Cláudio Borges

Estudos das atividade da SEGUNDA semana 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

b) Em caso de dúvidas, entre em contato com seu TUTOR A DISTÂNCIA.

Tranquilidade, firmeza, objetividade e BONS ESTUDOS!

Nome do aluno(a):

Data:

/

/

Matrícula (RA):

Nome do POLO:

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).

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.

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:

-5

78

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.

Fique de olho! Em programação, muitos autores denominam a união de caracteres como concatenação.
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

conhecidos como tipos boleanos.

1.3 Tipos de operações e operadores

(V)

ou

falso

(F), também

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

8

+ 5

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. 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ógicos sã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.

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

B

Resultado

(tem camisa)

(tem boné)

(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.

 

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.

 

OU

 

A

B

Resultado

(tem camisa)

(tem boné)

(compra?)

Linha 1)

V

V

V

Linha 2)

V

F

V

Linha 3)

F

V

V

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 é 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

NÃO A (não tem camisa)

(tem camisa)

Linha 1)

V

F

Linha 2)

F

V

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.

abaixo apresenta as principais funções a serem utilizadas. Quadrado ( ) = retorna o quadrado de

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

(

)

Funções

NÃO

Lógico

^

Aritmético

*

/

Aritmético

+

-

Aritmético

<

<=

>

>=

Relacional

=

<>

Relacional

E

Lógico

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. 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.

   

O resto da divisão inteira

de

5

por

3

(5 resto 3) = 2

Verdadeiro

(5 resto 3) resulta em 2. Logo, a avalição de

2

= 2 resulta em verdadeiro.

   

O

quociente da divisão inteira de 5 por 3 (5

(5 quociente 3) = 2

Falso

quociente 3) resulta em 1. Logo, a avaliação de 1 = 2 resulta em falso.

   

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

5 = 3 e 5 < 7 ou 7 > 3

Verdadeiro

7 > 3 é verdadeiro (V). Observando a precedência dos operadores lógicos, verificamos que o operador E 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.

   

Observe que a função Parte-inteira retorna

Parte-inteira (10.8)

10.0

resultado 10.0 que é do tipo "real" e não um número inteiro, como o nome parece indicar.

o