Buscar

TICs_APOSTILA_AED I_Versao Final

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 154 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 154 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 154 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Algoritmos e Estruturas de Dados I
ALGORITMOS E ESTRUTURAS DE DADOS I 
Tecnologias de Informação e Comunicação na Educação
Professor Antonio Maria Pereira de Resende
Tutora Profa Ana Rubélia Mendes de Lima Resende
Lavras/MG
2011
�
ALGORITMO E ESTRUTURAS DE DADOS I
71	INTRODUÇÃO AO CURSO	�
71.1	Algoritmo	�
101.2	Estrutura de Dados	�
121.3	Algoritmo e Estrutura de Dados	�
131.4	Orientações para um Melhor Aprendizado de AED	�
142	CONSTRUÇÃO DE ALGORITMOS	�
142.1	Notações para Construção de Algoritmos	�
142.1.1	Notação em Descrição Narrativa	�
142.1.2	Notação Gráfica	�
162.1.3	Notação em Pseudocódigo	�
172.1.4	EXERCÍCIOS PROPOSTOS	�
182.2	Teste de Mesa	�
192.3	Fases de desenvolvimento de um Algoritmo	�
213	ALGORITMOS EM PSEUDOCÓDIGO	�
213.1	Estrutura Básica de um Algoritmo	�
224	DECLARAÇÃO DE VARIÁVEIS E CONSTANTES	�
224.1	Variáveis	�
244.1.1	Tipos de Dados	�
254.1.2	EXERCÍCIO PROPOSTO	�
254.2	Constantes	�
264.3	Regras para nomear Variáveis, Constantes e Algoritmos	�
274.3.1	EXERCÍCIOS PROPOSTOS	�
285	COMANDOS SEQUENCIAIS	�
285.1	Comando de Entrada	�
285.2	Comando de Saída	�
295.3	Comando de Atribuição	�
305.4	Boas Práticas para os Comandos Sequenciais	�
315.5	Operadores e Funções pré-definidas	�
315.5.1	Operadores Aritméticos	�
325.5.2	Funções pré-definidas	�
355.5.3	EXERCÍCIOS PROPOSTOS	�
376	COMANDOS CONDICIONAIS	�
376.1	Operadores Relacionais e Lógicos	�
386.1.1	Operadores Relacionais	�
406.1.2	Operadores Lógicos	�
426.1.3	EXERCÍCIO PROPOSTO	�
426.2	Comando Condicional Simples SE ... ENTÃO	�
436.3	Comando Condicional Composto SE ... ENTÃO ... SENÃO	�
466.4	Indentação	�
486.5	Aninhamento de Comandos SE...ENTÃO...SENÃO	�
526.6	Comando Condicional ESCOLHA ... CASO	�
576.6.1	EXERCÍCIOS PROPOSTOS	�
597	COMANDOS DE REPETIÇÃO	�
618	Comando de Repetição: Número Definido de Repetições e Teste de Condição no Início	�
618.1	Comando de Repetição PARA ... FAÇA	�
719	Comando de Repetição: Número Indefinido de Repetições e Teste de Condição no Início	�
719.1	Comando de Repetição ENQUANTO ... FAÇA	�
729.1.1	Peculiaridades Importantes do ENQUANTO..FAÇA	�
749.1.2	Loop Infinito	�
8110	Comando de Repetição: Número Indefinido de Repetições e Teste de Condição no Final	�
8110.1	Comando de repetição REPITA ... ATÉ	�
8210.1.1	Peculiaridades Importantes do REPITA ... ATÉ	�
8410.1.2	Loop Infinito	�
9210.1.3	EXERCÍCIOS PROPOSTOS	�
9311	VARIÁVEIS COMPOSTAS HOMOGÊNEAS: VETORES E MATRIZES	�
9512	VETORES	�
9612.1	Representação Gráfica de um Vetor	�
9612.2	Declaração de Vetor	�
9712.3	Manipulação de Dados de um Vetor	�
9712.4	Operações de Entrada e Saída de dados em um Vetor	�
9912.5	Processamento dos Dados de um Vetor	�
10012.5.1	EXERCÍCIOS PROPOSTOS	�
10113	MATRIZES	�
10113.1	Representação Gráfica de uma Matriz	�
10213.2	Declaração de Matriz	�
10413.3	Manipulação de Dados de uma Matriz	�
10413.4	Operações de Entrada e Saída de dados em uma Matriz	�
10713.5	Processamento dos Dados de uma Matriz	�
11113.5.1	EXERCÍCIOS PROPOSTOS	�
11214	VARIÁVEIS COMPOSTAS HETEROGÊNEAS: REGISTROS E VETOR DE REGISTROS	�
11214.1	Declaração de Registro	�
11314.2	Representação Gráfica de um Registro	�
11314.3	Manipulação de Dados de Variável de Registro	�
11414.4	Operações de Entrada e Saída Utilizando Registros	�
11514.5	VETOR DE REGISTROS	�
11614.6	Representação Gráfica de Vetor de Registro	�
11714.7	Manipulação de Dados do Vetor de Registro	�
11714.8	Operações de Entrada e Saída Utilizando Vetor de Registros	�
12014.8.1	EXERCÍCIOS PROPOSTOS	�
12115	MODULARIZAÇÃO: PROCEDIMENTOS E FUNÇÕES	�
12215.1	PROCEDIMENTOS	�
12315.1.1	Declaração de Procedimentos	�
12515.1.2	Procedimentos sem Passagem de Parâmetros	�
12615.1.3	Procedimentos com Passagem de Parâmetros	�
12715.2	FUNÇÕES	�
12815.2.1	Declaração de Funções	�
12915.2.2	Funções sem Passagem de Parâmetros	�
13015.2.3	Funções com Passagem de Parâmetros	�
13515.3	Escopo de Variáveis – Variáveis Locais e Globais	�
13615.4	PASSAGEM DE PARÂMETROS POR VALOR E POR REFERÊNCIA	�
13615.4.1	Passagem de Parâmetros por Valor	�
13815.4.2	Passagem de Parâmetros por Referência	�
14116	RECURSIVIDADE	�
14516.1.1	EXERCÍCIOS PROPOSTOS	�
14617	ÍNDICE DE FIGURAS	�
15218	ÍNDICE DE TABELAS	�
15319	RELAÇÃO DE ÍCONES	�
�
�
INTRODUÇÃO AO CURSO
O conteúdo de Algoritmo e Estrutura de Dados – AED é ensinado em cursos técnicos e universitários como Ciência da Computação, Sistemas de Informação, Engenharias (de Software, Elétrica, Civil, Mecânica, Mecatrônica,...), Programação, Analista de Sistemas, Informática, dentre outros. A profundidade e abrangência do conteúdo dependem do foco de cada curso.
Geralmente, o conteúdo de AED divide-se em disciplinas denominadas AED I, AED II e AED III nos cursos relacionados à computação. O aprendizado é acumulativo, sendo impossível aprender AED II ou AED III sem aprender AED I, ou aprender AED III sem aprender AED I e AED II.
O ensino das disciplinas de AED desenvolve o raciocínio lógico dos alunos, capacitando-os para programação de computadores.
A seguir, o termo Algoritmo e o termo Estrutura de Dados são explicados separadamente, facilitando a compreensão de seus significados.
Algoritmo
A primeira palavra relacionada a Algoritmo, algorism, foi criada no século 9 pelo matemático persa islão Abu Abdullah Muhammad ibn Musa Al-Khwarizmi. Inicialmente, o termo foi criado para nomear regras que ensinavam como realizar cálculos usando números hindu-arábicos. No século 18, o termo foi traduzido para o Latin Europeu como Algorithm, e seu significado passou a abranger todo procedimento definido (claro, preciso) para resolver problemas e executar tarefas.
Um exemplo clássico de algoritmo pertence ao matemático Euclides, pai da geometria Euclidiana, que desenvolveu um algoritmo para calcular o Máximo Divisor Comum – MDC, replicado a seguir:
	
Divida o número a por b, o resto é r;
Troque a pelo valor de b;
Troque b pelo valor de r;
Continue os passos acima até não mais conseguir dividir. Neste caso, a é o MDC.
Figura 1 - Algoritmo de Euclides para calcular o MDC
�
 Executando o algoritmo de Euclides...
Tabela 1 - Execução do algoritmo de Euclides para calcular o MDC dos números 48 e 30
	a
	b
	Resto r
	Passos do Algoritmo
	48
	30
	18
	Passo 1- Divide-se 48 por 30 e o resto coloca-se na coluna do resto;
	30
	18
	12
	Passo 2 - Valor de b colocado em a; 
Passo 3 - Valor de r colocado em b;.
Passo 1- Divide-se novamente a por b colocando o resto em r;
	18
	12
	6
	Passo 2 - Valor de b colocado em a; 
Passo 3 - Valor de r colocado em b;.
Passo 1- Divide-se novamente a por b colocando o resto em r;
	12
	6
	0
	Passo 2 - Valor de b colocado em a; 
Passo 3 - Valor de r colocado em b;.
Passo 1- Divide-se novamente a por b colocando o resto em r;
	6
	0
	-X-
	Passo 2 - Valor de b colocado em a; 
Passo 3 - Valor de r colocado em b;.
Passo 1- Divide-se novamente a por b colocando o resto em r. 
Como não é mais possível dividir, então a (=6) é o MDC de 48 e 30.
Existem outros algoritmos conhecidos na matemática como: 
de Arquimedes para calcular uma aproximação do número Pi; e
de Erastótenes para encontrar números primos (Crivo de Erastótenes).
Veja a seguir algoritmo de Erastótenes para encontrar números primos de 2 até N e sua execução.
	
Definir o valor limite N;
Encontrar a raiz quadrada de N, guardar a parte inteira denominando-a de raiz;
Criar uma lista (vetor) com os números de 2 até N;
Para i de 2 até a raiz faça
Se i não estiver riscado na lista, riscar todos os seus múltiplos de i² até N;
Pronto, após finalizar o passo 4, os números não riscados formam a lista de números primos de 2 a N.
Figura 2 - Algoritmo Erastótenes para encontrar números primos de 2 até N.
�
 Executando o algoritmo de Erastótenes...
Tabela 2 - Execução do algoritmo de Erastótenes para encontrar os números primos de 2 a 30
	Passo 1)N = 30;
Passo 2) Raiz (30) = 5,477. Para guardar parte inteira então raiz = 5;
Passo 3) Lista de números de 2 até 30
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Passo 4) Para i de 2 até a raiz faça
	
Passo 4.1) para i=2, riscar todos os seus múltiplos de i²(=4) até N se não estiver riscado
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
	Passo 4.1) i=3, riscar todos os seus múltiplos de i² (=9)até N se não estiver riscado
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
	Passo 4.1) i=4, riscar todos os seus múltiplos de i²(=16) até N se não estiver riscado
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
	Passo 4.1) i=5, riscar todos os seus múltiplos de i² (=25) até N se não estiver riscado
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Passo 5) Pronto, os números não riscados formam a lista de números primos de 2 a N.
02
03
05
07
11
13
17
19
23
29
Os números primos de 2 a 30 são: 02, 03, 05, 07, 11, 13, 17, 19, 23 e 29.
Portanto, pode-se afirmar que algoritmo é um conjunto de passos (instruções) bem definidos e executados em uma sequencia lógica para se produzir um resultado esperado. Assim, se alguém deseja calcular o MDC de dois números, basta aplicar o algoritmo de Euclides. Se alguém deseja encontrar os números primos em um intervalo de 2 até N, deve aplicar o algoritmo de Erastótenes.
Outro exemplo prático de algoritmo é uma receita de bolo. 
Uma receita de bolo define os passos a seguir para se fazer um bolo. Há receitas com passos bem definidos e quando seguidos obtêm-se o bolo. Estas receitas podem ser chamadas de algoritmo. Entretanto, há também receitas escritas de maneira inadequada, ou faltando quantidade de um ingrediente, ou faltando o tempo que determinada massa fica no fogo. Tais receitas não podem ser chamadas de algoritmo, por não possuírem passos (instruções) bem definidos para se atingir o fim esperado.
Em computação dizemos que instrução é uma informação que indica uma ação a ser executada, por exemplo, por um computador. Deve-se considerar que uma instrução executada em separado, pode não ter sentido. Para obtermos o resultado desejado precisamos executar um conjunto de instruções na ordem correta.
Exemplificando... 
Para fazer um bolo é preciso executar uma sequencia de instruções, como: separar os utensílios e ingredientes a serem utilizados, pré-aquecer o forno e medir os ingredientes, untar a forma, bater os ovos etc.
Entretanto estas instruções devem ser executadas em uma ordem adequada – não se deve colocar o fermento após o bolo assado.
Estrutura de Dados
A melhor maneira de explicar uma estrutura de dados é compreender um formulário em papel contendo seus campos, tamanho de cada campo e o tipo de dado a ser armazenado.
Exemplificando...
Na Figura 3, observa-se um formulário que deve ser preenchido para renovação ou assinatura nova de uma revista. Nele, observa-se a necessidade de preencher campos como:
- Informar se é assinatura nova ou renovação;
- Informar o código do assinante, se assinante; 
- Informar qual revista e o prazo da assinatura;
- Informar o valor a ser pago; dentre outros.
O usuário sabe que não pode colocar o valor em uma data, nem uma data em um campo de nome, por exemplo. E que as informações devem ser preenchidas de acordo com o tamanho do campo. Isto é uma estrutura de dados, onde se tem um conjunto de dados com tamanho e tipo de dado para cada campo bem definidos.
Figura 3 – Formulário de Assinatura de Revista
Um exemplo de uma estrutura de dados para Cliente é:
	Cliente {	
	nome [30]: literal; //
	salario: real;
	idade: inteiro;		
 }
Figura 4 – Estrutura de dados Cliente 
�
Entretanto, dependendo da empresa, a estrutura de dados para Cliente poderia ser:
	Cliente {
	nome [50]: literal;
	telefone: literal;
	sexo: caractere;		
	credito: real;
 }
Figura 5 – Variação de uma Estrutura de dados Cliente
De acordo com o problema e necessidade da empresa, as estruturas de dados são planejadas e definidas.
Considerando que o computador é utilizado para informatizar as empresas e seus processos, então existe a necessidade de capturar as informações existentes e automatizá-las. Para isto, utilizam-se os conceitos de Estrutura de Dados para representar, armazenar, processar e recuperar estas informações nos computadores. 
Em AED, ensinam-se várias Estruturas de Dados e o aluno deverá aprender aplicá-las corretamente dependendo da finalidade desejada. 
Algoritmo e Estrutura de Dados
Sabendo que:
- Algoritmo é um conjunto de passos bem definidos para se atingir um resultado; e
- Estrutura de dados define um conjunto de dados, seu tamanho e tipo de dado para cada campo;
Pode-se afirmar então que Algoritmo e Estrutura de Dados é o conjunto de conhecimento que permite representar a informação no computador associado a um conjunto de passos bem definidos que propiciam realizar operações com estas informações.
No mercado de trabalho, diariamente, profissionais da área de computação e sistemas de informação deparam-se com problemas. Para cada um dos problemas, ele deve definir:
- a(s) melhor(es) estrutura de dados aplicável na solução do problema (Estrutura de Dados);
- construir um conjunto de passos para realizar operações com os dados (Algoritmo).
Após construir o(s) algoritmo(s) e definir a(s) estrutura(s) de dados, o profissional está apto para programar o sistema que será entregue ao cliente.
Portanto, não é possível programar sem saber algoritmos e estrutura de dados. O profissional deve ter o raciocínio lógico que o capacita a pensar como o computador. Após muita prática, os profissionais conseguem programar o computador sem ter de formalmente definir o algoritmo, pois seu raciocínio já está treinado para observar o problema, desenvolver o algoritmo mentalmente e programá-lo no computador.
Ressalta-se que se o profissional não souber resolver o problema manualmente, ele não conseguirá desenvolver o algoritmo, pois não será capaz de definir os passos que descrevem a solução. Quando o profissional se encontrar nesta situação, caso comum, ele deve estudar e aprender a desenvolver a solução manualmente para depois descreva o algoritmo. Quando estiver desenvolvendo um sistema para uma empresa, ele deve procurar as pessoas que realizam aquela atividade manualmente, a fim de aprender e passar o conhecimento daquelas pessoas para a forma de algoritmo e programá-lo.
Algoritmo e Estrutura de Dados caracterizam-se por não possuir solução única. Se 30 pessoas forem convidadas para desenvolver algoritmos para determinado, espera-se 30 soluções distintas. 
Orientações para um Melhor Aprendizado de AED
Treine - Quanto mais exercícios o aluno resolver, maior será sua capacidade na resolução de novos problemas. Deve-se exercitar algoritmos diariamente, resolvendo, pelo menos, 2 ou 3 problemas, pois somente a prática propiciará o aprendizado;
Teste - Sempre realize o teste de mesa para verificar se o algoritmo está correto;
Relembre - Não vá para a aula sem leia/revisar o conteúdo de aulas anteriores. O conhecimento é acumulativo, é imprescindível saber os conceitos anteriores para aprender a aplicar os novos;
Seja responsável - Faça você mesmo os exercícios e busque exercícios complementares em livros na biblioteca. Lembre-se que cada um possui a sua própria lógica,produzindo algoritmos distintos. Só aprende quem faz por si mesmo, não há outra forma de aprendizado. Evite resolver uma grande lista de exercícios em apenas um dia; e
Aprenda - Enquanto você não souber resolver um problema manualmente, você será incapaz de descrever o algoritmo. Se pedir para um aluno, que cozinha, construir um algoritmo para fritar um bife, ele o fará. Porém, se pedir a ele para calcular a derivada dupla de uma equação ordinária de 3ª ordem e ele não souber resolver, então o aluno deverá estudar para aprender como se faz o cálculo para depois desenvolver um algoritmo. 
�
CONSTRUÇÃO DE ALGORITMOS
Para começar a construir algoritmos, deve-se primeiro aprender as notações mais utilizadas para descrevê-los e conhecer as fases para seu desenvolvimento.
Notações para Construção de Algoritmos
Os três tipos de notações utilizadas para construir algoritmos são: descrição narrativa, gráfica e pseudocódigo. O profissional deve escolher uma das três formas, sendo o pseudocódigo o mais utilizado na computação.
Notação em Descrição Narrativa
Consiste em descrever os passos de uma solução utilizando linguagem natural. 
Exemplificando... 
	Algoritmo para fritar um ovo:
Passo 1 – Pegar a frigideira e colocar óleo;
Passo 2 – Levar a frigideira ao fogo;
Passo 3 – Pegar o ovo, quebrá-lo e colocar seu conteúdo na frigideira;
Passo 4 – Esperar a clara ficar branca e virar o ovo; e
Passo 5 – Se preferir, você pode estourar a gema para deixá-la firme.
Figura 6 - Exemplo de algoritmo usando Descrição Narrativa
Notação Gráfica
Consiste em descrever os passos de uma solução utilizando a forma gráfica. Existem diferentes formas de representar um algoritmo graficamente, sendo o fluxograma, também conhecido como diagrama de blocos, a mais difundida.
O conjunto de símbolos descritos a seguir é utilizado para representar uma seqüência lógica (algoritmo) denominada Fluxograma. 
Tabela 3 – Simbologia utilizada em Fluxogramas
	
	Indica o início e o fim de um algoritmo.
	�
	Indica a direção do processamento. Utiliza-se para conectar os símbolos.
	
	Representa um processo a ser executado, cálculos e atribuição de valores.
	
	Indica entrada de dados. No interior devem constar informações de variáveis a serem lidas.
	
	Símbolo utilizado para representar saída de dados.
	
	Indica decisão segundo uma condição e possibilidade de desvio. Deve haver uma entrada, uma pergunta e duas saídas, conhecidas por VERDADEIRO ou FALSO.
	
	Indica uma conexão entre pontos distantes de um algoritmo.
	
	Indica uma rotina a ser chamada. No final da rotina (subprograma) a execução continua do ponto onde foi realizada a chamada.
Exemplificando...
�
Figura 7 - Fluxograma Fritar um ovo
�
Figura 8 - Fluxograma Média
Notação em Pseudocódigo
Consiste em descrever os passos de uma solução utilizando um conjunto de instruções pré-definidas.
O pseudocódigo utilizado no Brasil denomina-se portugol e possui um conjunto de instruções utilizáveis para a descrição da solução do problema. A seguir, utiliza-se o portugol para leia duas notas de um aluno, calcular a média e responder se ele está aprovado ou reprovado, considerando média mínima de 60% para aprovação.
�
Exemplificando...
	Algoritmo media;
Declare N1,N2 : inteiro;
	media : real;
Inicio
	Leia (N1);
	Leia (N2);
	media ( (N1+N2) / 2;
	SE (media >= 60) ENTÃO
		Escreva (“Aluno aprovado com média: ”, media);
	SENÃO
		Escreva (“Aluno reprovado com média: ”, media);
	FIMSE;
Fim.
Figura 9 - Algoritmo Média em Pseudocódigo
EXERCÍCIOS PROPOSTOS
Elabore um algoritmo, usando descrição narrativa:
para alguém sair da faculdade e chegar até sua casa.
para trocar uma lâmpada.
�
Teste de Mesa
Após desenvolver um algoritmo ele deverá sempre ser testado. Este teste é chamado de Teste de Mesa e implica em seguir as instruções do algoritmo de forma precisa para verificar se o procedimento utilizado está correto ou não. 
Exemplificando... 
	#
	Algoritmo
	x
	y
	z
	Saída
	
	algoritmo soma;
	
	
	
	
	
	Declare x, y, z : inteiro;
	
	
	
	
	
	Inicio
	
	
	
	
	
		Leia(x);
	8
	
	
	
	
		Leia(y);
	
	7
	
	
	
		z ( x + y;
	
	
	15
	
	
		Escreva(z);	
	
	
	
	15
	
	Fim.
	
	
	
	
Figura 10 – Execução de Teste de Mesa do Algoritmo Soma
Cria-se uma tabela sendo que: na primeira coluna insere-se o programa, na segunda coluna até a penúltima inserem-se os dados de entrada (x e y) e processamento (z), e na última coluna os dados de saída. Após montar a tabela, basta leia cada uma das linhas do programa e fazer o que se pede.
A primeira linha apenas determina o nome do programa (soma). A segunda linha determina os dados de entrada e processamento. A terceira linha informa onde o corpo principal do algoritmo começa. Na quarta linha, o comando leia(x) implica em se determinar o valor de x que, neste caso, foi atribuído o valor 8. Na quinta linha, o comando leia(y) implica em se determinar o valor de y que, neste caso, foi atribuído o valor 7. Na sexta linha, o comando z( x + y implica em somar os dois números e guardar o resultado em z. O valor guardado foi 15. Na sétima linha, o comando ESCREVA determina que o valor z deve ser escrito na tela do computador. E a última linha encerra o algoritmo.
�
Fases de desenvolvimento de um Algoritmo
Um algoritmo é uma seqüência lógica de instruções que podem ser executadas, portanto, qualquer tarefa que siga determinado padrão pode ser descrita por um algoritmo.
Por exemplo: - Como fazer Arroz Doce ou então - Calcular o Saldo de um Estoque.
Para evitar erros no desenvolvimento de um algoritmo, deve-se conhecer algumas fases fundamentais para sua construção.
Compreensão do problema: Compreenda o problema a ser resolvido, destacando os pontos principais;
Definição das Entradas: Identificar os dados que devem ser solicitados e lidos pelo computador para a resolução do problema;
Definição do Processamento: Definir quais operações devem ser realizadas nos dados de entrada, gerando os dados de saída;
Definição das Saídas: Identificar quais dados o usuário espera receber do computador após ter fornecido os dados de entrada;	
Construção do algoritmo: Escolher a notação descritiva, gráfica ou pseudocódigo e construir o algoritmo; e
Teste do algoritmo: Executar o algoritmo passo a passo, aplicando, por exemplo, o teste de mesa.
�
Exemplificando... 
	Problema: Calcule e mostre a média aritmética simples das notas de um aluno, sabendo que foram realizadas 4 provas P1, P2, P3 e P4. 
1ª Fase – Compreensão do Problema: Devo obter as 4 notas do aluno, somá-las e dividir a soma por 4. O resultado é a média. Logo, eu conheço a solução do problema e se é possível resolve-lo manualmente, então deve-se buscar um algoritmo para ele. 
2ª Fase – Definição das Entradas: Os dados de entrada são P1, P2, P3 e P4.
3ª Fase – Definição do Processamento: O procedimento será somar os 4 dados de entrada (P1, P2, P3, P4) e dividir seu resultado por 4.
4ª Fase – Definição das Saídas: O dado de saída será a média final.
5ª Fase – Construção do Algoritmo: Será utilizada a notação em Pseudocódigo e o algoritmo é:
Algoritmo em Pseudocódigo
Algoritmo media;
Declare P1, P2, P3, P4, media: real;
Inicio
	Leia(P1);
	Leia(P2);
	Leia(P3);
	Leia(P4);
	Media ( (P1+ P2+P3+ P4) / 4;
	Escreva(“Média: ”, media);
Fim.
6ª Fase – Teste do Algoritmo: 
Realizando o teste de mesa do algoritmo construído:
#
Algoritmo
P1
P2
P3
P4
Media
Saída
1
Algoritmo media;
2
Declare P1, P2, P3, P4, media: real;
3
Inicio
4
	Leia(P1);
8
5
	Leia(P2);
7
6
	Leia(P3);
5
7
	Leia(P4);
10
8
	Media ( (P1+ P2+P3+ P4) / 4;
7,5
9
	Escreva(“Média:”, media);
Média: 7,5
10
Fim.
ALGORITMOS EM PSEUDOCÓDIGO
Estrutura Básica de um Algoritmo
Um algoritmo possui a estrutura básica representada a seguir. As representações indicadas pela notação < > implicam que devem ser substituídas e o programador deve determinar o valor. As representações indicadas pela notação [ ] implicam em estrutura facultativa, podendo-se fazer um algoritmo sem utilizá-la.
Utiliza-se duas barras “//” para comentar uma linha. Para comentar um bloco que possua mais de uma linha, utiliza-se barra e asterisco “/*” para abrir o comentário de bloco e asterisco e barra “*/” para fechar o comentário de bloco.
	
Algoritmo <nome do algoritmo>;
[Const <declare uma constante>;]
[Declare <declare uma variável>;]
Início
	 <comandos>;
 Fim.
	
	/*Este algoritmo calcula a área de um círculo qualquer e imprime o resultado */
Algoritmo AreaCirculo; // π*r2
Declare area, R: real;
Início
	R ( 2; // raio recebe o valor 2
	area ( 3,1415 * (R * R);
	Escreva (area); // mostra na tela a área
Fim.
	Figura 11 - Estrutura básica de um algoritmo
	
	Figura 12 - Exemplo de um algoritmo
O detalhamento para se construir o algoritmo e quais comandos podem ser usados consiste no objetivo do restante deste livro.
�
DECLARAÇÃO DE VARIÁVEIS E CONSTANTES
Declaração de variáveis e constantes é utilizada para informar ao computador quais dados serão utilizados e necessários para resolver-se um problema. 
Para um computador calcular o salário de um funcionário, ele precisa de dados como salário base do funcionário, número de horas extras, total de adiantamentos, dentre outros créditos e descontos que compõem uma folha de pagamento. Cada um desses valores representa um dado a ser armazenado e processado no computador, o qual os transforma em salário bruto e líquido. 
Algoritmos podem possuir dados declarados como variáveis ou constantes, explicados a seguir.
Variáveis
Declara-se uma variável para determinar seu nome (salário, data, idade, nome, ...) e o tipo de dado (número inteiro, número real, um caractere, texto, ...) a ser fornecido pelo usuário ou calculado pelo algoritmo. 
Se o algoritmo precisa armazenar a idade de uma pessoa, então é preciso declarar no algoritmo uma variável chamada idade do tipo inteiro. Se é preciso armazenar o salário de um funcionário, então deve-se declarar no algoritmo a variável salário do tipo real. A declaração das variáveis idade e salário é exemplificada a seguir.
�
	Algoritmo teste;
Declare idade : inteiro;
	salario : real;
INICIO
 <comandos>;
FIM.
Figura 13 - Exemplo de declarações de variáveis
�
Uma variável está associada a uma posição de memória, e seu conteúdo pode ser alterado durante a execução de um programa. Embora uma variável possa assumir diferentes valores, ela só pode armazenar um valor por vez.
	Algoritmo teste2;
Declare salario, comissao: real;
Início
	salario ( 1200,00;
	Escreva (“Entre com valor da comissão: “);
	Leia (comissao);
	salario ( salario + comissao;
 Escreva (“O salário atual é:”, salario);
Fim;
Figura 14 - Exemplo Alteração de valor de variável
 Representação de criação de variáveis na memória do computador e armazenamento das informações.
	
	1
	2
	3
	4
	5
	6
	7
	1
	
	
	
	
	
	700,00
	
	2
	
	
	
	
	
	
	
	3
	
	
	
	1200,00
	
	
	
	4
	
	
	
	
	
	
	
Após a execução da instrução: salario ( salario + comissao;
	
	1
	2
	3
	4
	5
	6
	7
	1
	
	
	
	
	
	700,00
	
	2
	
	
	
	
	
	
	
	3
	
	
	
	1900,00
	
	
	
	4
	
	
	
	
	
	
	
Figura 15 – Representação de criação de variáveis na memória do computador 
�
Tipos de Dados
O computador processa dados de vários tipos, podendo realizar as mais diferentes operações com dados, inteiros, reais, irracionais, racionais, etc. O programador deve saber quais os dados e tipos de dados ele precisa para resolver um problema. Para conseguir estas informações, pode-se consultar o cliente que solicitou o programa e leia os formulários utilizados na empresa. Por meio destes formulários é possível determinar os campos importantes e seus tipos de dados. 
Em um formulário, não se deve escreva uma data em um campo que se pede um valor monetário. Não se deve escreva um número no campo que pede o nome da pessoa. Não se deve escreva um valor monetário onde pede-se uma idade. Isto gera erro no preenchimento de formulários porque o tipo de dado esperado possui um formato e o usuário escreve outro.
No computador não é diferente. Deve-se definir o tipo de dado para cada um dos campos. O computador acusará erro, por exemplo, se você tentar escreva 12/03/2017 em uma idade. Idade não aceita barras e é composto por apenas um número inteiro, ao contrário da data que possui 2 números inteiros. O contrário também gera erro, pois um número inteiro não satisfaz a necessidade de 3 números inteiros.
	Algoritmos e programas de computadores exigem que o programador estabeleça (defina) cada um dos dados e o Tipo de Dado que ele utiliza para resolver um problema. Os Tipos de Dados utilizados para construção de algoritmos são inteiro, real, literal, caractere e lógico. Cada um deles explicado a seguir.	
Tabela 4 – Tipo de Dados
	Tipo
	Descrição
	Exemplo
	Inteiro
	Armazena um número inteiro
	1; 345; -237; 91; 125874;
	Real
	Armazena um número real
	2,0; 21,987; - 237,2; 0,9854;
	Caractere
	Armazena um único (1) caractere podendo ser letras maiúsculas, minúsculas, números (não utilizados para cálculos) e caracteres especiais como (&, #, $, @, [, {, dentre outros). O caractere sempre é representado entre aspas simples.
	‘1’; ‘L’; ‘a’; ‘!’; ‘%’; ‘~’
	Literal
	Armazena um conjunto de caracteres como um nome de pessoa, data, cor, descrição de um produto, etc. Uma literal sempre é representado entre aspas simples ou dupla.
	“PEDRO”; “Rua das Flores”; “São Paulo”; “Amarelo”; “Pacote de Macarrão 500gr”; “21/12/2011”
	Lógico
	Armazena o valor verdadeiro ou falso
	V; F; Verdadeiro; Falso
Podem-se fazer operações com os tipos de dados. Os números podem ser somados, subtraídos dentre outras operações aritméticas. Literais podem ter parte de seus caracteres retirados, outros inseridos etc.
�
 
EXERCÍCIO PROPOSTO
Relacione o Tipo de Dado e o valor armazenável nele. Utiliza-se a vírgula para separar as casas decimais e o ponto a casa de milhares:
	1-Inteiro
2-Real
3-Caractere
4-Literal
5-Lógico
	( ) ‘K’
( ) V
( ) ‘V’
( ) 2,1345
( ) ‘mecanismo de destruição’
( ) 325.472
( ) ‘21/02/2548’
( ) ‘02/02/22’
( ) ‘*’
( ) -352,254
( ) ‘Roxo’
	( ) falso
( ) -95
( ) ‘-95’
( ) ‘6’
( ) ‘234’
( ) ‘a’
( ) ‘aaaa’
( ) ‘$’
( ) ‘UFLA’
( ) ‘325.654.387,35987412569874521’
( ) 325.654.387,35987412569874521
Constantes
Denomina-se como constante dados que não se modificam no decorrer do algoritmo, por isto o nome de constante. 
Exemplos clássicos de constantes são número Pi, número de Euler (e), aceleração da gravidade, dentre outros. Qualquer dado que possua um valor que não varie deve ser declarado como uma constante. A declaração das constantes Pi e ‘e’ (número de Euler) é exemplificado no algoritmo a seguir.
	Algoritmo teste;
Const pi = 3,1415;
	 e = 2,71828;
Declare idade : inteiro;
	 salario : real;
Início
	<comandos>;
Fim.
Figura 16 - Exemplo de declarações de constantes
A representação de constantes e variáveis na memória do computador é idêntica e segue a forma mostrada na Figura 15.
Regras para nomear Variáveis, Constantes e Algoritmos
As regras para nomear variáveis, constantes e algoritmos são apresentadas a seguir:
O nome deve estar relacionado ao conteúdo armazenado (idade, nome, sexo); 
Devemcomeçar com uma letra ou sublinhado “_“;
O restante pode ser letra ou número ou sublinhado; 
Não usar espaços em brancos;
Não usar caracteres especiais do tipo @, +, -, %, !, #, $, &, *, (, ^ , }, dentre outros;
Não usar palavras reservadas da linguagem de programação; e
O uso de letras maiúsculas ou minúsculas é indiferente no algoritmo. Entretanto, dependendo da linguagem de programação utilizada, maiúsculo ou minúsculo determinam variáveis e constantes distintas.
Tabela 5 - Exemplo de nomes válidos e inválidos
	Nomes Válidos
	
	Nomes Inválidos
	TOTAL
	
	3ARQUIVO - começa com dígito
	UMNOMEMUITOCOMPRIDOEDIFICILDELER
	
	X+Y - não permitido
	lado2
	
	For - palavra reservada para comando
	UM_NOME_MUITO_COMPRIDO_MAS_FACIL_DE_LEIA
	
	Until - palavra reservada para comando
	L123
	
	Media(76) - não é permitido parênteses
	duas_palavras
	
	Data de nascimento - não é permitido espaço
�
EXERCÍCIOS PROPOSTOS
Diferencie constantes de variáveis. Exemplifique a declaração de uma constante e de uma variável: 
Deseja-se armazenar nota, nome, número da matrícula, sexo, data de nascimento, valor da mensalidade de um aluno e se ele é bolsista. Declare as variáveis em portugol.
Assinale com C os nomes CORRETOS para algoritmos, variáveis e constantes e com I os INCORRETOS. Explique o que está errado nos incorretos.
�
( ) 34 - 23
( ) nome aluno
( ) _d20
( ) Minimo
( ) aula_03
( ) SALARIO
( ) nota*final
( ) km/h
( ) “nota”
( ) cia3a3
( ) xyz
( ) Data_Nascimento
( ) achou!
( ) A + B
( ) 3notas
( ) nota_bimestral
( ) e-mail
( ) estado_civil( )
( ) comissao%
( ) nota_bimestral
( ) 360hs
�
�
COMANDOS SEQUENCIAIS
Os comandos sequenciais são as estruturas mais simples utilizadas na construção de algoritmos e subdividem-se em comandos de entrada, saída e atribuição.
Ela é formada por um conjunto de instruções (ou comandos) que executadas em uma seqüência linear de cima para baixo e da esquerda para a direita, ou seja, da mesma forma como foram escritas. 
Comando de Entrada
Em diversas soluções de problemas necessita-se de dados informados pelo usuário para serem processados pelo algoritmo, sendo o teclado a entrada padrão do computador.
O Comando de Entrada permite obter estes dados externos ao algoritmo e armazená-los em variáveis. 
Em pseudocódigo o comando de entrada é representado pela palavra Ler ou Leia.
Exemplificando...
	...
 leia (raio); // O valor digitado pelo usuário será armazenado na variável raio.
...
 leia (nome); // Os caracteres digitados pelo usuário serão armazenados na variável nome.
...
Comando de Saída
O Comando de Saída é utilizado para apresentar dados e mensagens ao usuário. 
Em pseudocódigo o comando de saída é representado pela palavra Escrever ou Escreva.
Exemplificando...
	
Escreva (“Digite um valor:”); // Mostra uma mensagem ao usuário.
Escreva (x); // Mostra o valor armazenado na variável x.
Escreva (“O aluno “, nome, “está aprovado”); /*Mostra a mensagem “O aluno “, logo depois o valor armazenado na variável nome e em seguida o restante da mensagem “está aprovado” */
Comando de Atribuição
O Comando de Atribuição é utilizado para atribuir valor ou operações a uma variável, sendo representado pelo símbolo “(”.
Exemplificando...
	x ( “José”;
y ( 2.5;
y ( y + 1;
teste ( falso;
media ( (N1 + N2 + N3 + N4) / 4;
raio ( 2;
area ( PI * (raio * raio);
perimetro ( 3* PI * raio;
Utilizamos as palavras INÍCIO e FIM para delimitar o bloco de sequência, conforme sintaxe a seguir. 
Exemplificando...
	Algoritmo Comandos_Sequenciais;
Declare
X, Y : inteiro;
A, B : real;
nome : literal;
INÍCIO
Escreva (“Entre com o valor de X: ”) ;
Leia (X);
Escreva (“Entre com o valor de A: ”);
Leia (A);
Escreva (“Entre com o seu nome: ”);
Leia (nome);
Y ( X * 3;
B ( (A * 2,4) / 3;
Escreva (nome “, os valores de X e A agora valem: “,Y, B);
FIM.
Figura 17 – Exemplo de Comandos Sequenciais
Observe que todos os comandos entre INÍCIO e FIM estão com a margem mais a direita, para facilitar a visualização. Isto se chama indentação e será explicada em mais detalhes em outra seção. O mesmo pode ser observado com 3 linhas de declaração de variáveis, cuja margem foi empurrada para a direita, sendo um subnível de Declare.
Boas Práticas para os Comandos Sequenciais
	SEMPRE Escreva uma mensagem ao usuário antes de qualquer comando de entrada, informando o dado a ser fornecido e a unidade de medida. Caso contrário, o usuário verá o cursor piscando na tela e não saberá o que fazer.
ERRADO
CERTO
// Cursor fica piscando e usuário não sabe o que fazer
// pois não foi enviada mensagem a ele
Leia(nome);
// Envia mensagem e lê o nome
Escreva(“Nome: ”);
Leia(nome);
// Usuário não sabe se temperatura é C, F ou K.
Escreva(“Digite a temperatura: ”);
Leia(temp);
// Envia mensagem e lê o salário
Escreva(“Digite a temperatura em Celsius: ”);
Leia(temp);
Ao imprimir o resultado de um processamento na tela do computador, SEMPRE mande uma mensagem informando a unidade de medida e o que o dado representa. Caso contrário, o usuário verá um dado na tela e não saberá do que se trata.
ERRADO
CERTO
// Usuário sabe que o dado é sobre altura, mas não 
// sabe se é em metros, centímetros etc.
Escreva(“Altura: ”, altura);
// Informar a unidade de medida e o que o dado
// representa
Escreva(“Altura: “, altura, “ (metros)”);
// Usuário vê um número na tela e não sabe do que se trata.
Escreva(temperatura);
// Informar a temperatura explicitando ser em Celsius.
Escreva(“A temperatura atual é: ”, temp, “C”);
O computador trabalha com dados numéricos sem conhecer a unidade de medida ou o dado representado. Assim, quando você digita 30 no teclado, o computador não sabe se 30 é a idade (anos), a temperatura (C,F, K), a dimensão (mm, cm, m, km,...), pressão etc. Se você pedir para ele subtrair a idade da pressão, ele o fará, pois para ele tudo é número. Cabe ao programador gerenciar e fazer corretamente as contas, ficando atento as unidades de medida. 
�
Operadores e Funções pré-definidas
Os operadores são meios pelo qual incrementamos, decrementamos, comparamos e avaliamos dados dentro do computador. Temos três tipos de operadores: Aritméticos, Relacionais e Lógicos.
Os Operadores Relacionais e Lógicos serão apresentados na seção 6.1.1 e 6.1.2 respectivamente.
Vejamos agora os operadores Aritméticos.
Operadores Aritméticos
Os Operadores Aritméticos são utilizados para obter resultados numéricos. Além da adição, subtração, multiplicação e divisão, podem utilizar também o operador de multiplicação para exponenciação.
Os símbolos para os Operadores Aritméticos são:
Tabela 6 – Operadores Aritméticos
	+
	Adição
	-
	Subtração
	*
	Multiplicação
	/
	Divisão
	* * ou ^
	Exponenciação
Hierarquia das Operações Aritméticas
Na resolução das operações aritméticas os operadores possuem uma hierarquia de prioridade ou regra de precedência. 
Tabela 7 – Hierarquia das Operações Aritméticas
	1º
	( ) parênteses
	2º
	Exponenciação
	3º
	Multiplicação ou divisão (o que vier primeiro)
	4º
	Adição ou subtração (o que vier primeiro)
�
Exemplificando...
	area_triangulo ( (Base * Altura) / 2;
X ( 5*(7-9)+3*7;
Z ( 1 + 7 * 2 ** 3 –1;
media ( (P1+ P2) / 2;
Funções pré-definidas
Uma função tem por objetivo retornar um valor ou informação. As funções pré-definidas ou bibliotecas de funções armazenam um conjunto de funções que podem ser usadas pelos programas.
A Tabela 8 apresenta alguns tipos de funções pré-definidas para a utilização na construção de algoritmos. 
Entretanto, cada linguagem possui suas próprias funções pré-definidas e como veremos adiante no tópico 15.2 o programador pode criar funções conforme necessidade.Tabela 8 – Funções pré-definidas
	ABS(x)
	Retorna o valor absoluto de x
	TRUNC(x) ou INT(x)
	Retorna a parte inteira de x
	FRAC(x)
	Retorna a parte fracionária de x
	SQRT(x)
	Retorna a raiz quadrada de x
	ROUND(x)
	Retorna o valor arredondado de x
	SQR(x)
	Eleva o valor de x ao quadrado 
	x MOD y
	Retorna o resto da divisão entre x e y
	x DIV y
	Retorna o valor inteiro do resultado da divisão de x por y
	CONCAT(x)
	Concatena (junta) uma sequencia de caracteres 
	SIN(x)
	Retorna o Seno de x
	COS(x)
	Retorna o Coseno de x
	TAN(x)
	Retorna a Tangente de x
�
Exemplificando...
	A ( ABS (-4); // A ( 4
A ( TRUNC (2,78); // A ( 2 
A ( INT (4,15); // A ( 4
A ( INT (-4,15); // A ( - 4
A ( FRAC (3.65); ;// A (   0.65 
A ( FRAC (-3.65); // A (  - 0.65
A ( SQRT(9); // A ( 3; 
A ( ROUND (2.78); // A ( 3 
A ( ROUND (-1,4); // A ( -1
A ( SQR(2); // A ( 4;
A ( 7 MOD 2 ; // A ( 1;
A ( 6 MOD 2 ; // A ( 0;
A ( 7 DIV 2; // A (3,5;
A ( 18 DIV 3; // A (6;
A ( CONCAT(“abc”, “def”) ; // A ( abcdef;
A ( CONCAT(“ana”, “rubelia”) ; // A ( anarubelia;
�
 Exercícios Resolvidos:
Elabore um algoritmo para calcular o perímetro de um círculo dado o seu raio, considerando que Perímetro = 2 * π * Raio.
	Algoritmo perimetro_circulo;
Const pi = 3,1415;
Declare peri, raio : real;
INÍCIO
Escreva (“Programa para calcular o perímetro de um círculo dado seu raio”);
Escreva (“Entre com o valor do raio: ”);
Leia (raio);
peri ( 2 * pi * raio;
Escreva (“O perímetro do círculo segundo o raio “, raio, “informado é: ”, peri);
FIM.
Figura 18 – Algoritmo para calcular o perímetro de um círculo
Elabore um algoritmo para calcular consumo médio de um veículo, conhecidos a distância total e a quantidade de combustível consumido para percorrer tal distância.
	Algoritmo calc_consumo;
Declare consumo, distancia, qde_comb: real;
INÍCIO
Escreva (“Programa para calcular o consumo médio de combustível”);
Escreva (“Informe a distancia em Km percorrida pelo veiculo: ”);
Leia (distancia);
Escreva (“Informe a quantidade em litros de combustível gasto: ”);
Leia (qde_comb);
consumo ( qde_comb/ distancia;
Escreva (“O consumo médio de combustível para a distância de”, distancia, “km foi de:” , consumo, “litros/km.”);
Escreva (“O carro fez ”, distancia/qde_comb, “ km por litro!”);
FIM.
Figura 19 – Algoritmo para calcular o consumo de combustível
Elabore um algoritmo para leia uma quantidade de chuva dada em polegadas e apresente o equivalente em milímetros, considerando que 1 polegada = 25,4 milímetros (mm).
	Algoritmo chuva_em_mm;
Declare pol, mm: real;
INÍCIO
Escreva (“Programa para converter um volume de chuva de polegadas para milímetros.”);
Escreva (“Informe a quantidade de chuva em polegadas: ”);
Leia (pol);
mm(pol * 25,4;
Escreva (“volume de chuva em milímetros é: “, mm, “mm”);
FIM.
Figura 20 – Algoritmo para calcular o consumo de combustível
�
EXERCÍCIOS PROPOSTOS
Para as variáveis a seguir e seus respectivos valores, B ( 2; X ( 3 determine o resultado das expressões aritméticas a seguir:
a) X * B
b) - (X ** B)
c) (-X) ** B
d) (2*B)/X^X
Escreva em linguagem algorítmica as expressões aritméticas:
Dada a declaração de variáveis:
Declare A, B, C : inteiro;
 X, Y, Z : real;
 NOME, RUA : literal;
 L1, L2 : lógico;
Classifique as expressões a seguir segundo o tipo de dado resultante da(s) operação(ões), em I (inteiro), R (real), L (literal), B (lógico) ou ND (quando não for possível definir):
�
( ) A + B + C
( ) A + B + Z
( ) NOME + RUA
( ) A B
( ) A Y
( ) NOME RUA
( ) A + B / C
( ) A + X / Z
( ) A + Z / A
( ) A B = L1
( ) (A = B)
( ) X + Y / Z
 ( ) X = Z / A
( ) L1 ** L2
( ) A + B / L2
( ) X < L1 / RUA
�
Elabore um algoritmo para calcular o estoque médio de uma peça, considerando que EstoqueMedio = (QuantidadeMínima + QuantidadeMáxima) /2. Faça um Teste de Mesa com dados definidos por você.
Elabore um algoritmo para leia uma temperatura em graus Fahrenheit, calcule e exiba a temperatura convertida em graus Centígrados, considerando que C = (F - 32) * ( 5 / 9 ). 
Elabore um algoritmo que leia o salário base de um funcionário, o número de horas extras feitas, o valor de cada hora extra e o auxilio refeição. Imprima na tela o valor do salário bruto (sem descontos). Na sequencia calcule o desconto do INSS de 10% sobre o salário bruto e mostre o total a receber.
Elabore um algoritmo que leia três números e apresente o resultado da soma das combinações destes números. 
Elabore um algoritmo para leia uma temperatura em graus Celsius, calcule e exiba a temperatura convertida em graus Kelvin, considerando que K = C + 273. 
Elabore um algoritmo que dada a cotação do dólar e um valor em dólares, converta este valor em Real e mostre o resultado.
Elabore um algoritmo que leia valores para X e Y respectivamente e calcule: 
O resto da divisão de X / 3 
X3 – 4
(X * Y) 2
XY + 2 
Raiz quadrada de Y 
�
COMANDOS CONDICIONAIS
Os comandos condicionais (decisão ou desvio) permitem a escolha de uma instrução ou grupo de instruções a ser executado quando determinada condição é ou não satisfeita como exemplificado na figura a seguir.
Figura 21 – Fluxograma de Comando Condicional SE ENTÃO SENÃO
	...
se (tiver dinheiro suficiente) então 
	almoçarei em um bom restaurante;
senão 
	comerei um lanche;
fim-se;
...
Figura 22 – Exemplo de Comando Condicional SE ENTÃO SENÃO
Neste capítulo, apresentam-se Operadores Relacionais, Operadores Lógicos e Comandos Condicionais “SE ... ENTÃO”, “SE ... ENTÃO ... SENÃO” e “ESCOLHA ... CASO”. 
Operadores Relacionais e Lógicos
Os Operadores Relacionais e Lógicos são utilizados para comparar e avaliar dados utilizados nos comandos condicionais. Desta forma, será possível criar algoritmos que representem regras do mundo real como:
- Se salário for maior que 2400 reais então desconte 15% do imposto de renda na fonte;
- Se salário menor que 3 salários mínimos então salário família por dependente será 30 reais, senão 10 reais.
- Se comprador é de Minas Gerais então aplique 18% ICMS, senão aplique 12% de ICMS.
�
Operadores Relacionais
Os Operadores Relacionais são utilizados para comparar caracteres e números. Estes operadores sempre retornam valores lógicos (Verdadeiro ou Falso / True ou False). 
Os símbolos para os Operadores Relacionais são:
Tabela 9 – Operadores Relacionais
	= 
	Igual a
	<> ou #
	Diferente de
	>
	Maior que
	<
	Menor que
	> =
	Maior ou igual a
	< =
	Menor ou igual a
Exemplificando...
Tabela 10 – Operadores Relacionais aplicados ao tipo INTEIRO
	Dados os valores das variáveis do tipo INTEIRO X = 3 e Y = 7, vide os resultados das expressões a seguir:
Expressão
Resultado
X = Y
FALSO
X <> Y
VERDADEIRO
X > Y
FALSO
X < Y
VERDADEIRO
X > = Y
FALSO
X < = Y
VERDADEIRO
.
Analogamente, o raciocínio é aplicado para variáveis do tipo reais, caractere e lógico.
Tabela 11 – Operadores Relacionais aplicados ao tipo REAL
	Dados os valores das variáveis do tipo REAL X = 4.52 e Y = 4.60, vide os resultados das expressões a seguir:
Expressão
Resultado
X = Y
FALSO
X <> Y
VERDADEIRO
X > Y
FALSO
X < Y
VERDADEIRO
X > = Y
FALSO
X < = Y
VERDADEIRO
.
Tabela 12 – Operadores Relacionais aplicados ao tipo CARACTERE
	Dados os valores das variáveis do tipo CARACTERE X = ‘a’ e Y = ‘d’, vide os resultados das expressões a seguir:
Expressão
Resultado
X = Y
FALSO
X <> Y
VERDADEIRO
X > Y
FALSO
X < Y
VERDADEIRO
X > = Y
FALSO
X < = Y
VERDADEIRO
.
Para saber se um caractere é maior que outro, consideram-se oscaracteres em ordem alfabética e que os caracteres minúsculos são maiores que os maiúsculos. Além disto, ‘a’ é diferente de ‘A’, implicando que caracteres maiúsculos são diferentes de caracteres minúsculos, ainda que represente a mesma letra no alfabeto. 
Veja exemplo a seguir:
Tabela 13 – Operadores Relacionais aplicados a CARACTERES maiúsculo e minúsculo
	Dados os valores das variáveis do tipo CARACTER X = ‘A’ e Y = ‘a’, vide os resultados das expressões a seguir:
Expressão
Resultado
X = Y
FALSO
X <> Y
VERDADEIRO
X > Y
FALSO
X < Y
VERDADEIRO
X > = Y
FALSO
X < = Y
VERDADEIRO
.
Tabela 14 – Operadores Relacionais aplicados ao tipo LITERAL
	Dados as variáveis do tipo LITERAL X = ‘Ana’ e Y = ‘antonio’, vide os resultados das expressões a seguir:
Expressão
Resultado
X = Y
FALSO
X <> Y
VERDADEIRO
X > Y
FALSO
X < Y
VERDADEIRO
X > = Y
FALSO
X < = Y
VERDADEIRO
.
Para comparar literais, usa-se as mesmas regras de caracteres, seguindo um processo análogo a procura de palavra em um dicionário. Assim compara-se a primeira letra de X, ‘A’, com a primeira letra de Y, ‘a’, assume-se que X é menor que Y, pois letras maiúsculas são menores que as minúsculas. 
Outro exemplo para melhor compreensão seria comparar X=’Ana’ e Y=’Antonio’. Compara-se a primeira letra das duas palavras. Observa-se que elas são idênticas e representam a letra ‘A’ maiúscula. Portanto, deve-se comparar a segunda letra das duas palavras. Observa-se que também são idênticas e representam a letra ‘n’ minúscula. Na sequência, deve-se comparar a terceira letra das duas palavras. Observa-se que a terceira letra de X é ‘a’ e a terceira letra de Y é ‘t’, como as duas são minúsculas e ‘a’ aparece primeiro que ‘t’ no alfabeto, então pode-se afirmar que X é menor que Y.
Operadores Lógicos
Quando se escreve expressões lógicas, elas podem ser simples ou compostas. Seu programa pode utilizar expressões simples como “Se salário >2400 então...”. Porém, existem problemas que exigem expressões lógicas mais complexas como: “Se salário < 2400 E dependentes > 3 então...”. 
Outro exemplo seria “Se (matrícula=’12345’ OU matricula=’23156’ então...”. Observe que existem casos que várias condições com operadores relacionais precisam ser inseridas na mesma condição.
Para fazer isto, necessita-se dos operadores lógicos E, OU e NÃO.
Os Operadores Lógicos são utilizados para combinar resultados de expressões, retornando se o resultado final é verdadeiro ou falso. 
�
Tabela 15 – Operadores Lógicos 
	E 
	Uma expressão E é verdadeira se todas as condições forem verdadeiras
	OU
	Uma expressão OU é verdadeira se pelo menos uma condição for verdadeira
	NÃO 
	Uma expressão NÃO inverte o valor da expressão ou condição, se verdadeira inverte para falsa e vice-versa
Tabela verdade genérica...
	Dados os valores de x e y, observe os resultados:
Operador E - a resposta da operação é verdade se x e y forem verdadeiras.
x
y
x E y
V
V
V
V
F
F
F
V
F
F
F
F
Operador OU - a resposta da operação é verdade se pelo menos um dos elementos for verdadeiro.
x
y
x OU y
V
V
V
V
F
V
F
V
V
F
F
F
Operador NÃO - Se ela for verdade, torna-se falsa, e vice-versa.
x
NÃO x
V
F
F
V
.
�
EXERCÍCIO PROPOSTO
Dados X(2, A(5, B(4 e C(3 e D(6, determine os resultados lógicos das expressões, indicando se são VERDADEIRAS ou FALSAS:
	(X >= 2) 
	
	(X < 1) E (B >=D) 
	
	(A + B) > 10 OU (A + B) = (C + D)
	
	(A >= C) E (D >= C)
	
	NÃO (X > 3) 
	
	(X < 1) E NÃO (B > D) 
	
	NÃO (D < 0) E (C > 5) 
	
	NÃO (X > 3) OU (C < 7) 
	
	(A > B) OU (C > B) 
	
Comando Condicional Simples SE ... ENTÃO
No SE ... ENTÃO determinada que se uma condição for satisfeita então o bloco de comando(s) é executado.
	...
SE (condição) ENTÃO 
 	comando 1;
	comando 2;
	comando 3;
FIMSE;
...
Figura 23 – Sintaxe do Comando Condicional Simples
Exemplificando...
Faça um algoritmo que leia a média de um aluno e escreva na tela “Aluno Aprovado” caso a média dele seja igual ou superior a 6.
	...
SE (media>=6) ENTÃO 
	escreva (“Aluno Aprovado”);
FIMSE;
...
Figura 24 – Exemplo de Algoritmo usando Comando Condicional Simples
O trecho do algoritmo mostrado na Figura 1 apresenta a utilização do comando SE...ENTÃO... para o enunciado apresentado. Se a média for maior ou igual a 6 então o comando escreva é executado. Caso a média seja menor que 6, o comando escreva não é executado.
Comando Condicional Composto SE ... ENTÃO ... SENÃO
No SE/ENTÃO/SENÃO se a condição for verdadeira o bloco referente aos comandos 1 e 2 será executado. Caso contrário serão executados os comandos 3 e 4.
	...
SE (condição) ENTÃO 
	comando 1;
	comando 2;
SENÃO 
	comando 3;
	comando 4;
FIMSE;
...
Figura 25 – Sintaxe do Comando Condicional Composto
Exemplificando...
Faça um algoritmo que leia a média de um aluno e escreva na tela se ele foi aprovado ou reprovado.
	...
SE (media>=6) ENTÃO
	escreva (“Aluno Aprovado”);
SENÃO
	escreva (“Aluno Reprovado”);
FIMSE;
...
Figura 26 – Exemplo de Algoritmo usando Comando Condicional Composto
Na condição exemplificada, se for verdadeira, executa o comando APROVADO, caso contrário executa o comando REPROVADO. 
�
Veja na sequencia, exemplos utilizando os Operadores Lógicos E, NÃO e OU.
	...
SE (media >= 6) E ( frequencia > 75% ) ENTÃO 
	escreva (“Aluno Aprovado”)
SENÃO
	escreva (“Aluno Reprovado”);
FIMSE;
...
Figura 27 – Exemplo de Algoritmo usando Comando Condicional Simples
	...
SE (NÃO tiver dinheiro) ENTÃO 
	almoçarei em casa;
SENÃO 
	irei a um restaurante;
FIMSE;
...
Figura 28 – Exemplo de Comando Condicional SE ENTÃO SENÃO, usando operador NÃO
	...
SE (tiver dinheiro suficiente) OU (terminado o trabalho) ENTÃO 
	irei ao cinema;
SENÃO 
	ficarei em casa;
FIMSE;
...
Figura 29 – Exemplo de Comando Condicional SE ENTÃO SENÃO, usando operador OU
�
 Exercícios Resolvidos:
Elabore um algoritmo para calcular as raízes de uma equação de segundo grau, dados os fatores a, b e c, Considerando , se d menor que zero as raízes não podem ser calculadas (não existem raízes reais). Senão, é possível calcular as duas raízes. 
 
	...
leia (a);
leia (b);
leia (c);
d ( b * b – 4 * a * c;
SE (d < 0) ENTÃO 
	Escreva (“Não existem raízes reais”);
SENÃO
	raiz1 ( ( -b + SQRT(d) ) / (2 * a );
	raiz2 ( ( -b – SQRT(d) ) / (2 * a );
	Escreva ( raiz1 );
	Escreva ( raiz2 );
FIMSE;
...
 Faça um algoritmo que receba um número inteiro e verifique se esse número é par ou ímpar.
	algoritmo par_impar;
declare num, r : inteiro;
INICIO
	escreva (“Este algoritmo verifica se um número é par ou ímpar.”);
	escreva (“Digite um número inteiro: ”);
	leia (num);
	r ( num MOD 2;
	
 SE (r = 0) ENTÃO
		escreva(“Este número é par”);
	SENÃO
		escreva(“Este número é ímpar”);
 FIMSE;
FIM.	
�
Indentação
Indentação (palavra adaptada do inglês, indentation) é uma técnica de recuo que aplicada ao código de um programa facilita a visualização da organização dos comandos e sua estrutura. Seu uso iniciou-se antes da programação com o nome de “tabulação de texto”, sendo utilizada rotineiramente na escrita de livros, panfletos, cartazes etc. 
Exemplificando...
	INSTITUTO PARA PROMOÇÃO DA FAMÍLIA
As inscrições no curso de Maturidade Familiar devem ser feitos na secretaria do Instituto Para Promoção da Família de 3 a 11 de março. Os documentos necessários são:
PAI
Cópia do RG
Cópia do título de reservista
Cópia do último holerite
MÃE
Cópia do Certificado do Curso “A Arte De Ser Mãe”
Cópia do RG
Comprovantes Médicos com menos de 1ano:
Papa Nicolau
Mamografia
FILHOS
Certidão de nascimento
Figura 30 – Exemplo de Indentação em Texto Comum
Na Figura 30, nota-se que a margem do primeiro parágrafo não é seguida em todo texto. Há dois níveis de indentação, além do alinhamento natural da margem esquerda do primeiro parágrafo. O primeiro nível refere-se às palavras PAI, MÃE E FILHOS, o qual foi empurrado para a direita, não seguindo o alinhamento original da margem esquerda. O segundo nível, empurrado mais para a direita do primeiro nível, refere-se aos comprovantes médicos a serem entregues pela MÃE. Observa-se que as palavras “Papa Nicolau” e “Mamografia” estão em um alinhamento mais interno da folha. A indentação auxiliando no entendimento de quais documentos devem ser entregues por cada um dos participantes segundo seu papel na família (pai, mãe ou filho). 
Um texto pode ter vários níveis de indentação e deve-se garantir uniformidade da margem para os textos de mesmo nível. Portanto, os textos selecionados para compor o segundo nível de indentação devem seguir o mesmo alinhamento de margem, sendo proibida variação de margem para o mesmo nível.
Quando se deseja criar um novo nível de indentação, basta empurrar um pouco mais a margem para a direita. Na prática, a técnica de indentação permite associar visualmente informações específicas as informações genéricas. 
Os conceitos de indentação aprendidos no comando SE...ENTÃO...SENÃO serão utilizados em outros comandos e estruturas.
Exemplificando...
Faça um algoritmo que leia um número e responda se ele é maior que 10.
�
	Algoritmo Maior10;
declare x: inteiro;
INÍCIO
	Escreva (“Digite um número: ”);
	Leia (x);
		SE (x>10) ENTÃO 
	escreva (x, “ é maior que 10”);
	escreva (“Os comandos da indentação do ENTÃO foram executados”);
	escreva(“A indentação facilita visualizar quais comandos estão dentro do ENTÃO”);
		SENÃO
	escreva (x, “ é menor que 10”);
	escreva (“Os comandos da indentação do SENÃO foram executados”);
	escreva(“A indentação facilita visualizar quais comandos estão dentro do SENÃO”);
		FIMSE;
FIM. 
Figura 31 – Exemplo de Indentação
Adote o hábito de utilizar a técnica de indentação mesmo que ela pareça difícil no início. Após dominar seu uso, o programador observará que sua utilização facilita o trabalho, aumenta a produtividade, facilita o entendimento do código, além de ser exigido nas empresas.
�
Aninhamento de Comandos SE...ENTÃO...SENÃO
A técnica de aninhamento de comando refere-se ao ato de utilizar um comando dentro de outro comando. Portanto, diz-se que há aninhamento de comandos SE...ENTÃO...SENÃO, quando utiliza-se um comando SE...ENTÃO...SENÃO dentro de outro comando SE...ENTÃO...SENÃO. Não há limite de aninhamentos, podendo-se ter vários comandos SE...ENTÃO...SENÃO um dentro do outro quantas vezes forem necessárias para se implementar o algoritmo solicitado. 
Até o momento, explicou-se aninhamento para o comando SE...ENTÃO...SENÃO, porém este conceito também é válido para outros diversos outros comandos que ainda serão ensinados.
Exemplificando...
Faça um algoritmo que leia dois números inteiros e responda qual deles é o maior ou se eles são iguais.
	Algoritmo Maior;
declare x, y: inteiro;
INÍCIO
	escreva (“Este algoritmo apresenta qual de 2 números inteiros, lidos do teclado, é o maior.”);
	escreva (“Digite o primeiro número: ”);
	leia (x);
	escreva (“Digite o segundo número: ”);
	leia (y);
		SE (x>y) ENTÃO 
escreva (x,“ é maior que “, y);
		SENÃO
		SE (x<y) então 
escreva (y,“ é maior que “, x);
SENÃO
escreva (x,“ é igual a “, y);
		FIMSE;
		FIMSE;
FIM. 
Figura 32 – Exemplo de Aninhamento de Comandos SE...ENTÃO...SENÃO, Algoritmo Maior
A Figura 32 apresenta um algoritmo contendo 1 aninhamento. Nela observa-se que há um comando SE...ENTÃO...SENÃO dentro do bloco de um SENÃO. Assim, se há um comando SE...ENTÃO...SENÃO dentro de outro comando SE...ENTÃO...SENÃO, diz-se ter aninhamento. 
O aninhamento pode ocorrer apenas com SE...ENTÃO e dentro dele outro SE...ENTÃO. 
Outra forma seria ter um comando SE...ENTÃO dentro de um bloco SENÃO, bem como outras variações. Havendo um comando dentro do outros, afirma-se ter aninhamento.
�
Exercícios Resolvidos:
Faça um algoritmo que leia a média final e frequencia de um aluno e imprima na tela se o aluno está REPROVADO POR FREQUENCIA, APROVADO, RECUPERAÇÃO ou REPROVADO POR NOTA, sabendo que:
Aluno precisa ter 75% ou mais de frequencia nas aulas, caso contrário ele está reprovado por falta, independente da nota.
Aluno está aprovado se a Média for maior ou igual a 60 pontos.
Aluno está de recuperação se a média for maior ou igual a 30 e menor que 60.
Aluno está reprovado por nota se a média for menor que 30 pontos.
	
Algoritmo Aprovacao_Aluno;
Declare 	media, frequencia: real;
INÍCIO
	leia(frequencia);
	leia (media);
	SE ( frequencia >= 0.75 ) ENTÃO
		SE (media >= 60) ENTÃO
			escreva("Aluno APROVADO!")
		SENÃO
			SE ( media >= 30 ) ENTÃO
				escreva( "Aluno deve fazer RECUPERAÇÃO!");
			SENÃO
				escreva( "Aluno REPROVADO POR NOTA INSUFICIENTE!" ); 
			FIMSE;
		FIMSE; 
	SENÃO
		escreva("Aluno REPROVADO POR FALTAS!");
	FIMSE;
FIM.
Figura 33 – Exemplo de Aninhamento de Comandos SE...ENTÃO...SENÃO, Algoritmo Aprovacao_Aluno
�
Faça um algoritmo para leia três números inteiros X, Y e Z e verificar se eles formam um triângulo, imprimindo na tela "X, Y e Z não formam um triângulo" ou "X, Y e Z formam um triângulo". Se as medidas formarem um triângulo, imprimir na tela se o triângulo é equilátero, isósceles ou escaleno.
	
Algoritmo triangulo;
Declare 
	x, y, z: inteiro;
INICIO
	leia ( x, y, z );
	SE ( x+y>z ) E ( x+z>y ) E ( y+z>x ) ENTÃO
		escreva (“X, Y e X formam um triângulo“ );
		SE( x=y ) E ( y=z ) E (x=z) ENTÃO
			escreva (“Triângulo Equilátero“);
		SENÃO 
			SE ( x=y ) OU ( x=z ) ou ( y=z ) ENTÃO
				escreva (“Triângulo Isósceles“);
			SENÃO 
				SE ( x<>y ) E ( y<>z ) E ( x<>z ) ENTÃO
					escreva (“Triângulo Escaleno“);
				FIMSE;
			FIMSE;
		FIMSE;
	SENÃO
		escreva (“X, Y e X não formam um Triângulo”);
	FIMSE;
FIM.
 
Figura 34 – Exemplo de Aninhamento de Comandos SE...ENTÃO...SENÃO, Algoritmo triangulo
�
Comando Condicional ESCOLHA ... CASO
O comando condicional ESCOLHA ... CASO possibilita comparar o valor de uma variável/expressão em várias opções. 
A Figura 35 representa que <variável> assumirá um valor e caso o valor seja igual ao valor em opção1, então os comandos1 serão executados. Caso contrário, <variável> será comparada com o valor em opção2 e, no caso de ser igual, executará comandos2, senão comparará com as demais opções existentes. Se uma opção for satisfeita, então os comandos referente aquela opção é executada e todas as demais opções são ignoradas.
 SHAPE \* MERGEFORMAT ���
Figura 35 – Fluxograma de Comando Condicional ESCOLHA CASO
�
	ESCOLHA <variável> 	
	CASO 1: < comandos >;
	CASO 2: < comandos >;
	CASO 3: < comandos >;
 	...
	CASO n: < comandos >;
	CASO CONTRÁRIO: < comandos >;
FIMESCOLHA;
Figura 36 – Sintaxe do Comando Condicional ESCOLHA CASO
O comando ESCOLHA...CASO, em algumas situações, pode ser usado para simplificar a utilização do SE ... ENTÃO ... SENÃO, facilitando a leitura do algoritmo. Na Figura 37, apresenta-se um trecho de algoritmo aplicando o comando SE...ENTÃO...SENÃO e, em seguida, na Figura 38, apresenta-se a mesma lógica escrita com o comando ESCOLHA...CASO.
	 ...
 leia (cargo);
 SE (cargo=1) ENTÃO
 escreva("Presidente")
 SENÃO
 SE (cargo=5) ENTÃO
 escreva("Chefe de Seção")
 SENÃO 
 SE (cargo=8) ENTÃO
 escreva("Auxiliar de Serviços Gerais")
 SENÃO
 escreva("Esta operação não permite cargos diferentes de 1, 5 e 8");
 FIMSE;
 FIMSE;FIMSE;
 ...
Figura 37 – Algoritmo Aplicando o Comando SE...ENTÃO...SENÃO
Observa-se na Figura 37 um trecho de algoritmo que solicita leia um valor para cargo. Se o usuário digitar o valor 1, então aparecerá na tela "Presidente". Se o usuário digitar o valor 5, então aparecerá na tela "Chefe de Seção". Se o usuário digitar o valor 8, então aparecerá na tela "Auxiliar de Serviços Gerais". Se o usuário digitar um valor diferente de 1, 5 ou 8, então aparecerá na tela "Esta operação não permite cargos diferentes de 1, 5 e 8". 
O algoritmo descrito na Figura 38 apresenta o mesmo algoritmo escrito com o comando ESCOLHA...CASO. Se o usuário digitar o valor 1, então o “CASO 1” será escolhido e aparecerá na tela "Presidente". Se o usuário digitar o valor 5, então o “CASO 5” será escolhido e aparecerá na tela "Chefe de Seção". Se o usuário digitar o valor 8, então o “CASO 8” será escolhido e aparecerá na tela "Auxiliar de Serviços Gerais". Se o usuário digitar um valor diferente de 1, 5 ou 8, então o “CASOCONTRARIO” será escolhido e aparecerá na tela "Esta operação não permite cargos diferentes de 1, 5 e 8". 
Ambos algoritmos tem a mesma funcionalidade, porém o algoritmo da Figura 38 possui uma estética que torna mais fácil a leitura e compreensão do código.
	 ...
 leia (cargo);
 ESCOLHA (cargo)
 CASO 1: escreva("Presidente");
 CASO 5: escreva("Chefe de Seção");
 CASO 8: escreva("Auxiliar de Serviços Gerais");
 CASOCONTRARIO escreva("Esta operação não permite cargos diferentes de 1, 5 e 8");
 FIMESCOLHA;
 ...
Figura 38 – Algoritmo Aplicando o Comando ESCOLHA...CASO
O comando ESCOLHA... CASO possui variações na notação da cláusula CASO, descritas a seguir:
Tabela 16 – Variação de Sintaxe para o Comando ESCOLHA...CASO 
	Notação
	Descrição
	Caso 1:
	Verifica se o valor é 1
	Caso 3..6:
	Verifica se o valor é um número entre 3 e 6. Logo, o valor pode ser 3,4,5 ou 6.
	Caso 2, 7, 21:
	Verifica se o valor é um dos valores contidos na lista 2, 7, 9, 21. Portanto, o valor pode ser 2 ou 7 ou 21.
Ressalta-se que a sintaxe do comando ESCOLHA...CASO não aceita operadores relacionais como >,< , <=, etc. Portanto, se você quiser verificar se um valor de x>=10 e x=< 20, use a sintaxe “CASO 10..20” que denota um intervalo. 
	...
Leia (opcao);
ESCOLHA (opção)
 CASO 1: < comandos >;
 CASO 2, 4: < comandos >;
 CASO 3: < comandos >;
 CASO 5 ..10: < comandos >;
 CASO CONTRÁRIO: < comandos >;
FIMESCOLHA;
...
Figura 39 – Sintaxe do Comando Condicional ESCOLHA CASO – Outra sintaxe 2
Deve-se ressaltar também que o comando ESCOLHA...CASO analisa APENAS uma variável por vez, sendo permitido colocar ESCOLHA (SEXO) ou ESCOLHA(IDADE), mas nunca escreva ESCOLHA(SEXO, IDADE). Este último não é aceito pelo comando. 
Observa-se no Figura 39 diferença na sintaxe em “CASO 2, 4: ” e “CASO 5..10”. Quando se utiliza números separados por vírgula, isto implica que qualquer um dos números descritos serve. Portanto a linha “CASO 2,4: ” indica que se a opção digitada for 2 ou 4, os comandos dentro desta estrutura serão executados! A linha “CASO 5..10: ” indica que se a opção digitada for um valor variando de 5 até 10, inclusive extremidades, a comparação é verdadeira e, portanto, os comandos referentes ao CASO 5..10 serão executados.
Exemplificando...
No algoritmo a seguir o valor da variável mês é lido e testado. Caso o valor esteja entre os valores entre 1 a 12 é executado o comando correspondente a opção. Caso contrário é executado o comando que escreve mês inválido.
�
	algoritmo descubra_mes;
declare mes : inteiro;
INICIO
escreva (“Digite o número do mês: “);
leia (mes);
ESCOLHA (mes)
	CASO 1: escreva (“Janeiro“);
	CASO 2: escreva (“Fevereiro“);
	CASO 3: escreva (“Março“);
 	...
	CASO 12: escreva (“Dezembro“);
	CASO CONTRÁRIO: escreva (“Mês inválido!“);
FIMESCOLHA;
FIM.
Figura 40 – Exemplo de Algoritmo usando Escolha Caso
�
Exemplificando...
No algoritmo da Figura 41 o valor da variável idade é lido e testado. A mensagem enviada na tela corresponderá a idade digitada.
�
	algoritmo faixa_etária;
declare idade : inteiro;
INICIO
escreva (“Digite a idade em anos: “);
leia (idade);
ESCOLHA (idade)
	CASO 0..2: escreva (“Bebê“);
	CASO 3..9: escreva (“Criança“);
	CASO 10..19: escreva (“Adolescente”);
	CASO 20..30: escreva (“Jovem“);
	CASO 31..60: escreva (“Adulto“);
	CASO CONTRÁRIO: escreva (“Idoso“);
FIMESCOLHA;
FIM.
Figura 41 – Exemplo de Algoritmo usando Escolha Caso
�
EXERCÍCIOS PROPOSTOS 
Dê os resultados das expressões contidas na tabela a seguir, utilizando os seguintes valores para as variáveis:
	Valor das variáveis
	Expressão
	Resultado
	X( 8;	Y(10;	Z(3;
	(X = Y) E (Y > Z)
	
	X(13;	Y( 2;	Z(5;
	(X <> Y) OU (Y < Z)
	
	X( 4;	Y( 7;	Z(9;
	 NÃO (X > Y) 
	
	X( 6;	Y( 4;	Z(4;
	(X < Y) E (Y > Z)
	
	X( ‘a’;	Y( ‘k’;	Z(’D’;
	(X >= Y) OU (Y = Z)
	
	X( “Rosana”; Y( “Roseane”; Z(”Rosária”;
	NÃO (X <= Y) 
	
Para as variáveis a seguir e seus respectivos valores:
�
a ( 1 
b ( 2
c ( 3
x ( 3.0
y ( 2.0
z ( -1.0
L1 ( V
nome ( “PEDRO”
rua ( “PEDRINHO”
L2 ( F
�
Determine o resultado das expressões a seguir: 
�
a + c / b 
a + b + c 
c / b / a 
-x ** b 
- (x ** b) 
(-x) ** b 
nome + rua 
nome = rua 
L1 OU L2 
(L1 E(NÃO L2)) 
(L2 E (NÃO L1)) 
(L1 E (NÃO L2)) OU (L2 E (NÃO L1)) 
(x -y) E (c - b) 
(c - 3 * a) (x + 2 * z)
rua <> nome�
�
 
Elabore um algoritmo para receber 3 números e mostre o maior.
Elabore um algoritmo para receber 2 números e execute as operações a seguir, segundo a escolha do usuário.
	Escolha do usuário
	Operação
	1
	Média entre os números digitados
	2
	Diferença do maior pelo menor
	3
	Produto entre os números digitados
	4
	Divisão do primeiro pelo segundo
Elabore um algoritmo para receber 3 números e mostre-os em ordem crescente.
Elabore um algoritmo que leia um número inteiro e mostre uma mensagem indicando se este número é par ou ímpar, e se é positivo ou negativo. 
Um banco concederá um crédito especial a seus clientes dependendo de seu saldo médio. Faça um algoritmo que leia o saldo médio de um cliente e calcule o valor do crédito de acordo com a tabela a seguir. Mostre uma mensagem informando o saldo médio e o valor do crédito. (use o comando ESCOLHA...CASO)
	Saldo Médio
	Percentual
	de 0 a R$ 200,00
	nenhum crédito
	de R$ 201,00 a R$ 400
	20% do valor do saldo médio
	de R$ 401,00 a R$ 600,00
	30% do valor do saldo médio
	acima de R$ 601,00
	40% do valor do saldo médio
�
COMANDOS DE REPETIÇÃO
Para compreender a necessidade de comandos de repetição, é necessário examinar algumas solicitações que um cliente pode fazer.
Imagine a solicitação de um algoritmo que imprima na tela a tabuada de 0 a 9 de um número fornecido pelo usuário. Assim, se o usuário digitar o número 3, então deverá sair na tela uma tabuada do número 3. A Figura 42 apresenta um algoritmo de tabuada sem utilizar comando de repetição.
	Algoritmo Tabuada_Sem_Comando_Repeticao;
declare i, tab, num: inteiro;
INICIO
Escreva (“Fazer tabuada do número: ”)
Leia (tab);
Escreva ( “0 x ”, tab, “ = ”, 0 * tab );
Escreva ( “1 x ”, tab, “ = ”, 1 * tab );
Escreva ( “2 x ”, tab, “ = ”, 2 * tab );
Escreva ( “3 x ”, tab, “ = ”, 3 * tab );
Escreva ( “4 x ”, tab, “ = ”, 4 * tab );
Escreva ( “5 x ”, tab, “ = ”, 5 * tab );
Escreva ( “6 x ”, tab, “ = ”, 6 * tab );
Escreva ( “7 x ”, tab, “ = ”, 7 * tab );
Escreva ( “8 x ”, tab, “ = ”, 8 * tab );
Escreva ( “9 x ”, tab, “ = ”, 9 * tab );
FIM.
Figura 42 – Exemplo de Algoritmo de Tabuada Sem Comando de Repetição
Nota-se que para fazer o algoritmo o comando escreva deve ser repetido várias vezes tendo pequena alteração. Como a tabuada solicitada compreendia os valores entreos números 0 a 9 então o trabalho foi repetitivo, mas não tão grande.
Ao executar o algoritmo, se o usuário digitasse o número 5, então o programa imprimiria na tela:
	0 x 5 = 0
1 x 5 = 5
2 x 5 = 10
3 x 5 = 15
4 x 5 = 20
5 x 5 = 25
6 x 5 = 30
7 x 5 = 35
8 x 5 = 40
9 x 5 = 45
Figura 43 – Saída na tela do Algoritmo da Figura 42
O algoritmo torna-se maior e mais repetitivo se um engenheiro solicitar a você fazer um programa que construa a tabela de seno de 0 até 90 graus, variando de 0.0001 em 0.0001 graus. Quantas linhas você precisaria?
Outro pedido poderia ser a solicitação do somatório de 1 até 1milhão. Pense em como seria a solução para o somatório de 1 até 10, depois imagine ter que fazer o somatório até 10 milhões. 
Invista um tempo para compreender a solução e o trabalho repetitivo imposto por esta solicitação. 
Nestes dois últimos exemplos, do seno e do somatório, muitas linhas de código seriam escritas, em um trabalho puramente repetitivo, mas você chegaria a uma solução. 
Entretanto, os clientes não gostam de soluções fixas como somatório e 1 a 1milhão, ele preferiria digitar o primeiro e último números, esperando a resposta do somatório. Ou então, digitar os valores iniciais e finais para o cálculo do seno. 
Para soluções que exigem trabalho repetitivo, devem-se usar comandos de repetição.
Os Comandos de Repetição, também conhecidos como Laços ou Loops, permitem que um conjunto de instruções seja executado repetidamente até que uma determinada condição de interrupção seja satisfeita.
Existem três Comandos de Repetição denominados PARA...FAÇA, ENQUANTO...FAÇA e REPITA...ATÉ, categorizados da seguinte forma:
Comando de Repetição com Número de Repetições DEFINIDAS:
Teste de Condição no INÍCIO: o comando pertencente a esta categoria é o PARA... FAÇA
Comando de Repetição com Número de Repetições INDEFINIDAS:
Teste de Condição no INÍCIO: o comando pertencente a esta categoria é o ENQUANTO...FAÇA
Teste de Condição no FINAL: o comando pertencente a esta categoria é o REPITA...ATÉ
�
Figura 44 – Categorização dos Comandos de Repetição
Cada um dos comandos descritos na Figura 44, PARA...ATÉ, ENQUANTO....FAÇA e REPITA...ATÉ são detalhados nas próximas seções.
Comando de Repetição: Número Definido de Repetições e Teste de Condição no Início
Comando de Repetição PARA ... FAÇA
O comando PARA...FAÇA representa o comando desta categoria. Utiliza-se este comando quando se sabe o número de vezes que um conjunto de instruções deve ser repetido. No caso da tabuada de 1 até 9, por exemplo, sabe-se que deve-se começar no número 1 e terminar no 9, caracterizando de maneira clara o valor de início e fim das repetições.
O teste de condição do comando PARA fica no início de sua estrutura. Assim, o bloco de comandos é repetido até atingir o número de repetições explicitadas. Quando a condição não for mais satisfeita, a execução saltará os comandos que deveriam ser repetidos, deixando de executá-los, e continuando a execução normal do algoritmo. Se a condição não for satisfeita logo na primeira comparação, nenhuma instrução dentro da estrutura PARA será executada.
Figura 45 – Fluxograma de Comando de Repetição PARA
Na Figura 45, a variável i recebe um valor inicial, um valor final e um valor para incrementar a variável i a cada repetição realizada. Se o incremento for 1, então a cada repetição a variável i será acrescida automaticamente de 1. Se o incremento for 3, então a cada repetição a variável i é incrementada de 3 automaticamente. 
A Figura 46 apresenta o pseudocódigo geral do comando PARA...FAÇA, referente ao fluxograma apresentado na Figura 45. A variável utilizada no comando PARA...FAÇA para contar o número de repetições é denominada de contador. O contador deve ser sempre do tipo inteiro e o nome dado ao contador fica a critério do programador.
	...
Declare contador: inteiro;
...
PARA contador DE <valor inicial> ATÉ <valor final> FAÇA
        <instruções>;
FIM -PARA;
...
Figura 46 – Pseudocódigo do Comando de Repetição PARA
No exemplo apresentado na Figura 47, foi declarada uma variável denominada CONT para ser o contador utilizado no comando PARA...FAÇA. Observa-se que no comando PARA...FAÇA que CONT inicia seu valor em 1, devendo ir até o valor 10. O incremento padrão para CONT é 1, isto é, CONT começará seu valor em 1, e variará de 1 em 1, até atingir 10. 
�
	...
declare cont: inteiro;
...
PARA cont DE 1 ATÉ 10 FAÇA
        escreva ( “o valor do contador é: ”, cont ); 
FIMPARA;
Escreva (“ Saiu das repetições do PARA...FAÇA”);
...
Figura 47 – Exemplo Do PARA...FAÇA Sem A Cláusula PASSO
Executando o algoritmo da Figura 47, cont inicia-se com o valor 1, em seguida o algoritmo imprime a mensagem “o valor do contador é: 1” na tela. 
Ao atingir o FIMPARA, o algoritmo retorna para a primeira linha do comando PARA...FAÇA. cont passa a valer 2, e como ainda não chegou até 10, a linha escreva é executada novamente, imprimindo na tela “o valor do contador é: 2”. 
E assim sucessivamente, até que o valor de cont atinja o valor 10. Neste caso, ele imprime a mensagem na tela “o valor do contador é: 10”, o último valor descrito no comando, e passa a executar a próxima linha após o FIMPARA. As mensagens impressas na tela serão:
	o valor do contador é: 1
o valor do contador é: 2
o valor do contador é: 3
o valor do contador é: 4
o valor do contador é: 5
o valor do contador é: 6
o valor do contador é: 7
o valor do contador é: 8
o valor do contador é: 9
o valor do contador é: 10
Saiu das repetições do PARA...FAÇA
Figura 48 – Mensagens Impressas Na Tela Após Execução do Algoritmo da Figura 47
A Figura 49 apresenta o pseudocódigo geral do comando PARA...FAÇA com uma cláusula extra denominada PASSO. Esta cláusula deve ser usada quando o programador desejar que o contador varie com um valor diferente de 1 a cada repetição. Assim, se for descrito “PASSO 3” no comando, o contador irá varia de 3 em 3 a cada repetição. O contador e o valor do PASSO devem ser do tipo inteiro e o nome dado ao contador fica a critério do programador.
�
	...
Declare i : inteiro;
...
PARA i de <valor inicial> ATÉ <valor final> PASSO <valor de incremento> FAÇA
       <instruções>;
FIMPARA ;
...
Figura 49 – Pseudocódigo do Comando de Repetição PARA
Exemplificando...
	...
Declare cont: inteiro;
...
PARA cont DE 1 ATÉ 10 PASSO 3 FAÇA
        escreva ( “o valor do contador é: ”, cont ); 
FIMPARA;
Escreva (“ Saiu das repetições do PARA...FAÇA”);
...
Figura 50 – Exemplo Do PARA...FAÇA com A Cláusula PASSO
Executando o algoritmo da Figura 50, cont inicia-se com o valor 1, em seguida imprime a mensagem “o valor do contador é: 1” na tela. Ao atingir o FIMPARA, o algoritmo retorna para a primeira linha do comando PARA...FAÇA. 
Como foi determinado o valor 3 para PASSO, então cont passa a valer 4 (1 de CONT + 3 do PASSO). Como cont ainda não chegou até 10, a linha escreva é executada novamente, imprimindo a mensagem “o valor do contador é: 4” na tela. Ao atingir o FIMPARA, o algoritmo retorna para a primeira linha do comando PARA...FAÇA. 
Como foi determinado o valor 3 para PASSO, então cont passa a valer 7 (4 de CONT + 3 do PASSO). E assim sucessivamente, até cont valer mais que 10. As mensagens impressas na tela serão:
	o valor do contador é: 1
o valor do contador é: 4
o valor do contador é: 7
o valor do contador é: 10
Saiu das repetições do PARA...FAÇA
Figura 51 – Mensagens Impressas Na Tela Após Execução do Algoritmo da Figura 50
�
Exemplificando...
Faça um algoritmo que imprima na tela os números de 50 a 20.
	Algoritmo Inverso_50_20;
Declare cont: inteiro;
...
PARA cont DE 50 ATÉ 20 PASSO -1 FAÇA
        escreva ( “o valor do contador é: ”, cont ); 
FIM-PARA;
Escreva (“Saiu das repetições do PARA...FAÇA”);
...
Figura 52 – Exemplo Do PARA...FAÇA Sem A Cláusula

Outros materiais