Buscar

Aula 1 - Algoritmos_Estruturados - 2015

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 113 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 113 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 113 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 Estrutura de Dados 
Prof. André Rocha 
(EAGS-SIN) - AE001 
Roteiro 
 Conceito de algoritmos - Conceitos; 
 Tipos de lógica - Conceitos; 
 Diagrama de Blocos - Fluxograma; 
 Pseudocódigo - Portugol; 
 Tipos de dados; 
 Operadores, variáveis e expressões; 
 Estruturas de controle; e 
 Estruturas de dados: vetores e matrizes. 
 
Conceitos - Algoritmo 
É uma seqüência de passos computacionais que 
transformam a entrada na saída. 
Um algoritmo é formalmente uma seqüência finita 
de passos que levam a execução de uma tarefa. 
É um evento que ocorre em período de tempo finito 
e com efeito bem sucedido. 
É um processo sistemático para a resolução de um 
problema. 
Aspectos básicos para estudo de algoritmos: 
Correção e Análise. 
Conceitos - Lógica 
Lógica de programação é a técnica de 
encadear pensamentos para atingir 
determinado objetivo. 
Seqüência Lógica 
Estes pensamentos podem ser descritos como uma 
seqüência de instruções, que devem ser seguidas 
para se cumprir uma determinada tarefa. 
 
Seqüência Lógica são passos executados até atingir 
um objetivo ou solução de um problema. 
Conceitos - Software 
Softwares são programas. Programas são 
roteiros, escritos por programadores, que 
apresentam seqüências de instruções que o 
computador deve seguir para realizar 
determinadas tarefas. 
Lógica de Programação 
A lógica de programação é necessária para pessoas que 
desejam trabalhar com desenvolvimento de sistemas e 
programas, ela permite definir a seqüência lógica para o 
desenvolvimento. 
Tipos de Lógica 
 Existem vários tipos de lógica. As 
usadas em processamento automático 
de dados são: 
 
 Lógica Linear; 
 Lógica Modular; e 
 Lógica Estruturada. 
Particularidades entre 
Lógicas 
 Lógica Linear - Visa a solução de problemas como foram 
proposto sem dividi-los em seguimentos. Tenta-se resolver os 
problemas linearmente, tratando de cada ação na ordem em 
que sua necessidade for aparecendo. 
 Lógica Modular - Caracteriza-se pela subdivisão do 
problema proposto em diversos módulos (subproblemas), para 
poder analisar melhor cada rotina (separadamente) visando, 
assim, à solução geral da questão proposta. 
 Lógica Estruturada - Caracteriza-se por soluções em laços, 
de dentro para fora. Dentro de uma rotina existem outras 
rotinas, numa espécie de aninhamento. É muito usada em 
ambientes que utilizam linguagens que pouco fazem uso de 
comandos de desvio. 
Particularidades entre 
Lógicas 
 Linear - este tipo de procedimento está voltado à técnica 
matemática, a qual permite determinar a atribuição de 
recursos limitados, utilizando uma coleção de elementos 
organizados ou ordenados por uma só propriedade, de tal 
forma que cada um deles seja executado passo a passo de 
cima para baixo, em que tenha um só “predecessor” e um 
só “sucessor”; 
 Estruturada - Possui características e padrões 
particulares, os quais diferem dos modelos das linguagens 
elaboradas por seus fabricantes. Tem como pontos fortes 
para elaboração futura de um programa. A seqüência, a 
seleção e a iteração são as três estruturas básicas para a 
construção do diagrama de blocos; 
Particularidades entre 
Lógicas 
 Modular - Elaborada como uma estrutura de partes 
independentes, módulos, cujo procedimento é controlado 
por um conjunto de regras. A modularização deve ser 
desenvolvida, se possível, em diferentes níveis. É utilizada 
para separar um problema em sistemas, um sistema em 
programas e um programa em módulos. 
 Diagrama de Chapin - Substitui o diagrama de blocos 
por um diagrama de quadros que apresenta uma visão 
hierárquica e estruturada da lógica. Usar este tipo de 
diagrama é representar as estruturas que tem um ponto de 
entrada e um ponto de saída e são compostos pelas 
estruturas básicas de controle de sequencia, seleção e 
repetição; e 
Particularidades entre 
Lógicas 
 Português Estruturado - o diagrama de blocos é a 
primeira forma de notação gráfica, mas existe outra, que é 
uma técnica narrativa denominada pseudocódigo, também 
conhecida com português estruturado ou chamada por 
alguns de portugol. 
 Esta técnica de algoritmização é baseada em uma PDL – 
Program Design Language (Linguagem de Projeto de 
Programação). 
Estrutura do Algoritmo 
 Um Algoritmo é normalmente dividido em 2 
partes: 
A Primeira parte é aonde será declaradas 
tudo o que é necessário para a execução do 
algoritmo. Esta parte vai desde a palavra 
INICIO até a Palavra PROCEDA. 
A segunda parte é aonde serão colocados 
os comandos que serão executados pelo 
Algoritmo.Esta parte se inicia com a Palavra 
PROCEDA e vai até a palavra FIM. 
Estrutura do Algoritmo 
Exemplo: 
 
INICIO 
 Primeira Parte 
PROCEDA 
 Segunda Parte 
FIM. 
 É algo muito parecido com uma receita de bolo, aonde primeiro 
colocamos os ingredientes, e depois colocamos o modo de preparo, 
aonde detalhamos os procedimentos necessários para o preparo da 
receita. 
 A diferença é que no algoritmo procuramos fazer a “receita” de 
acordo com uma linguagem especifica. O uso desta linguagem evita 
que sejam feitas interpretações diferentes da mesma sentença. 
Algoritmo Estruturado 
 Objetivos das Técnicas do Desenvolvimento 
Estruturado de Algoritmo: 
 
 Facilitar o desenvolvimento dos algoritmos; 
 Facilitar o entendimento pelos humanos; e 
 Facilitar a manutenção e a sua modificação. 
 
 
Formas de Algoritmos 
Fluxograma - representação gráfica de algoritmos, ou seja, das 
instruções e/ou módulos do processamento, conhecido também 
como diagrama de bloco; 
Descrição narrativa - expressa o algoritmo em linguagem natural, 
como por exemplo, as instruções de operação de uma 
determinado eletrodoméstico, constantes do manual do operador; 
e 
Portugol (linguagem estruturada - pseudocódigo) - forma de 
escrever algoritmos que muito se assemelha a forma na qual os 
programas são escritos nas linguagens de programação (Pascal, 
Cobol, C++, Java, etc...). 
Diagrama de Chapin - Forma de substituição gráfica da 
representação tradicional (diagrama de blocos) por uma 
diagramação com quadros que oferecem a visão hierárquica e 
estruturada da lógica proposta para um programa. 
Fluxograma - (Diagrama 
de Bloco) 
 O fluxograma é uma representação gráfica do 
algoritmo, através de formas geométricas, facilitando a 
compreensão da lógica utilizada pelo profissional. 
Fluxograma - (Diagrama 
de Bloco) 
• Processamento 
 
 
• entrada /saída 
 
 
• decisão 
• Terminal 
 
 
• conexão 
 
 
• conexão de 
página 
 
Fluxograma - (Diagrama 
de Bloco) 
• Processamento 
pré-defenido 
 
 
• exibição 
 
• documento 
• Vários 
documentos 
 
 
• acesso a disco 
 
 
• direção do fluxo 
 
Fluxograma - (Diagrama 
de Bloco) 
Fluxograma - (Diagrama de 
Bloco) - Manzano 
Fluxograma - (Diagrama de 
Bloco) - Manzano 
Fluxograma - (Diagrama de 
Bloco) - Manzano 
Algoritmo 
Não Computacional 
Portugol 
 Esta é uma forma de representar um algoritmo que 
ao contrário do fluxograma é mais rica em detalhes, se 
assemelhando muito as fontes (linhas de código) de 
uma linguagem de programação, onde temos que 
definir as variáveis, rotinas, sub-rotinas, etc... Ao invés 
de símbolos gráficos, utilizamos ordens (comandos) 
para solicitar uma determinada tarefa/rotina. Sua 
sintaxe básica é: 
Algoritmo <nome do algoritmo> 
 <declaração das variáveis> 
Inicio da rotina 
 <instruções a serem seguidas> 
Fim da rotina 
Algoritmo 
 Para nosso fim didático vamos usar a seguinte 
estrutura: 
 
Algoritmo <nome do algoritmo> 
1. início 
2. declare <declaração das variáveis>; 
3. atribuição de valores; 
4. leia <entrada de dados>; 
5. processamento <instruções a serem seguidas>; 
6. escreva <saída de informações> 
7. fim. 
DIAGRAMA DE CHAPIN 
 Foi elaboradopor Nassi e Shneiderman e ampliada 
por Ned Chapin. 
Itens Fundamentais 
 Constantes: É um determinado valor fixo 
que não se modifica ao longo do tempo 
durante a execução do algoritmo ou programa. 
Ex.: O Valor de π ← 3,14. 
 Classificação: 
 
 Numérica; 
 Literal; e 
 Lógica. 
 
Itens Fundamentais 
 Constantes Numéricas: A representação de uma constante 
numérica dos algoritmos é feita no sistema decimal, podendo 
ser um número com ou sem parte fracionária. Ex.: 25 e 2.8. 
 Constantes Literais: Uma constante desse tipo pode ter 
qualquer seqüência de caracteres (letras, dígitos ou símbolos 
especiais) que forme um literal com algum significado para o 
problema em estudo. Ex.: “ANDRÉ ROCHA”, “12345”, 
“A!#@3”. 
Obs. 1: Não pode haver espaço em branco entre os 
caracteres para representar uma constante numérica; e 
 Obs. 2: As aspas “”, são utilizadas para representar uma 
constante literal. 
Itens Fundamentais 
 Constantes Lógicas: É um valor lógico que pode ser 
falso ou verdadeiro, usado em proposições lógicas 
conforme o problema a ser estudado. Ex.: falso, 
verdadeiro. 
 
Variáveis 
 É uma representação simbólica dos elementos de um 
certo conjunto. 
 Nos algoritmos, destinados a resolver um problema no 
computador, a cada variável corresponde uma posição de 
memória, cujo conteúdo pode variar ao longo do tempo, 
durante o tempo de execução de um programa. 
Formação dos Identificadores 
 Um identificador (Nome de Variável ou Constante) é formado por 
um ou mais caracteres, sendo que o primeiro caractere deva, 
obrigatoriamente ser uma letra e as seguintes letras ou dígitos, não 
sendo permitido o uso de símbolos especiais. Ex.: A, AS, 
MATRICULA, PROG1. Não pode ser. Ex.: 5B, X-Y, E(13). 
 
 Não podem ter nomes de palavras reservadas (comandos da 
linguagem); 
 Devem possuir como 1º caractere uma letra ou Underscore ( _ ); 
 Ter como demais caracteres letras, números ou Underscore; 
 Ter no máximo 127 caracteres; 
 Não possuir espaços em branco; e 
 A escolha de letras maiúsculas ou minúsculas é indiferente. 
Tipos de Dados 
 Quando os dados são dispostos e manipulados de 
uma forma homogênea, constituem um tipo abstrato 
de dados. 
 Um algoritmo é projetado em termos de tipos 
abstratos de dados. Para implementá-los numa 
linguagem de programação é necessário encontrar 
uma forma de representá-los nessa linguagem. Na 
representação do modelo matemático emprega-se 
uma estrutura de dados. 
Tipos de Dados 
 Todas as Variáveis devem assumir um determinado tipo de 
informação. 
 O tipo de dado pode ser: 
 
 Primitivo - Pré-definido pela linguagem; 
• A : INTEIRO (Primitivo) 
 
 Sub-Faixa - É uma parte de um tipo já existente; 
• TIPO NOTA=[1..10] DE INTEIRO 
 
 Escalar - Definidos pelo programador. 
• TIPO SEMANA = (Segunda-feira, Terça-feira, Quarta-feira, 
Quinta-feira, Sexta-feira, Sábado, Domingo) 
Tipos Primitivos de Dados 
INTEIRO ADMITE SOMENTE NÚMEROS INTEIROS. GERALMENTE 
É UTILIZADO PARA REPRESENTAR UMA CONTAGEM 
(QUANTIDADE). 
REAL ADMITE NÚMEROS REAIS (COM OU SEM CASAS 
DECIMAIS). GERALMENTE É UTILIZADO PARA 
REPRESENTAR UMA MEDIÇÃO. 
CARACTERE ADMITE CARACTERES ALFANUMÉRICOS. OS 
NÚMEROS QUANDO DECLARADOS COMO 
CARACTERES TORNAM SE REPRESENTATIVOS E 
PERDEM A ATRIBUIÇÃO DE VALOR. 
LÓGICO ADMITE SOMENTE VALORES LÓGICOS 
(VERDADEIRO/FALSO). 
Tipos Primitivos de Dados 
 Inteiro 
 Números inteiros maiores ou menores que 0 representados 
por 2 bytes, em uma faixa que vai de -32.768 até 32.767. 
Declaração: 
 NUMERO : INTEIRO 
No exemplo acima foi declarada uma variável do tipo 
INTEIRO que atende pelo nome de "NUMERO“. 
 
 Real 
 Conjunto dos números racionais. representado por 4 bytes. 
Declaração: 
 SALARIO : REAL 
No exemplo acima foi declarada uma variável do tipo 
REAL com o nome de "SALARIO". 
Tipos Primitivos de Dados 
 Caractere (Char) 
 Conjunto dos caracteres alfanuméricos (números, letras, símbolos, 
etc).Representado por apenas um byte. 
 Note que as variáveis do tipo CHAR podem armazenar apenas 1 
caracter. 
 Declaração: 
 SEXO : CHAR 
 No exemplo acima foi declarada uma variável do tipo CHAR com o 
nome "SEXO" 
 Lógico 
 Quando assume apenas 2 valores: 
 • FALSO 
 • VERDADEIRO 
 Declaração 
 FLAG : LÓGICO 
 No exemplo acima, foi declarada uma variável do tipo LÓGICO com 
o nome de FLAG. 
Tipos Primitivos de Dados 
 Agregados de Dados 
 Os agregados são estruturas formadas a partir dos tipos de 
dados primitivos, e que permitem o processamento de 
informações mais aprimoradas, são eles: 
 
 Cadeia de Caracteres (String) 
 É um agregado de dados homogêneo, ou seja, usa somente 
um tipo primitivo, aonde todos os elementos são do tipo 
caractere (CHAR) 
 Declaração: 
 NOME_CLI : STRING [ 40 ] 
 No exemplo acima foi declarada uma variável do tipo STRING, que 
poderá ter no máximo 40 posições e o seu nome é NOME_CLI 
Tipos Primitivos de Dados 
 Matriz 
 É um agregado de dados do tipo homogêneo, aonde todos os 
elementos podem ser de qualquer tipo, desde que todos os 
componentes sejam do mesmo tipo. 
Declaração: 
NUMERO : MATRIZ [ 4 , 5 ] DE INTEIRO 
 No exemplo acima, foi declarada uma MATRIZ com 4 linhas e 5 
colunas, aonde todos os elementos serão do tipo INTEIRO. Note 
que o primeiro numero sempre representa o numero máximo de 
linhas que uma matriz pode ter, e o segundo numero representa o 
numero máximo de colunas que uma matriz pode ter. 
 Note que podem existir matrizes unidimensionais, os chamados 
vetores. Neste caso a matriz possui apenas linhas ou colunas. 
neste caso não será necessário informar a coluna e a linha , mas 
somente um numero, não importando se ele representa a 
quantidade de colunas ou linhas. 
Tipos Primitivos de Dados 
 Registros 
 É o único agregado de dados heterogêneo, ou seja pode 
combinar dados de diferentes tipos em uma única estrutura. 
Declaração: 
REG_DADOS : REGISTRO 
NOME : STRING [ 40 ] 
SEXO : CHAR 
IDADE : INTEIRO 
SALARIO : REAL 
FIM_REGISTRO 
 Note que o REGISTRO é formado por 4 CAMPOS, e cada 
campo é de um tipo diferente, entretanto , todos os campos 
fazem parte de uma única estrutura, que atende pelo nome 
de REG_DADOS. 
Operadores Aritméticos 
+ Adição 
- Subtração 
* Multiplicação 
/ Divisão 
Exponenciação 
^ ou ** Exponenciação ex. 2³ = 2 ^ 3 ou 2 ** 3 
Operadores Relacionais 
> Maior que 
< Menor que 
>= Maior ou Igual 
<= Menor ou Igual 
= Igual 
<> Diferente 
Operadores Aritméticos 
Especiais 
MOD Retorna o resto da divisão entre 2 números 
inteiros. 
DIV Retorna o valor inteiro que resulta da 
divisão entre 2 números inteiros. 
Ex.: 13 DIV 2 = 6 
13 MOD 2 = 1 
 8 * 3 + 7 mod 2 + 6 * 9 
 Calculando: 24 + 1 + 54 = 79 
Expressões Lógicas 
 As expressões compostas de relações 
baseadas em uma proposição sempre 
resultam em um valor lógico do tipo 
Verdadeiro ou Falso. 
Exemplos: 
 2+5>4 Verdadeiro 
 3<>3 Falso 
Operadores Lógicos 
 Atuam sobre expressões lógicas retornando 
resultados do tipo Falso ou Verdadeiro. 
.E. 
RETORNA VERDADEIRO, SE AMBAS AS PARTES 
DA EXPRESSÃO FOREM VERDADEIRAS. 
.OU. 
BASTA QUE UMA PARTE DA EXPRESSÃO SEJA 
VERDADEIRA PARA RETORNAR VERDADEIRO. 
.NÃO. 
INVERTE O ESTADO, DE VERDADEIRO PASSA 
PARA FALSO E VICE-VERSA. 
Prioridades dos operadores Lógicos: 
a) .não. ← Negação 
b) .e. ← Conjunção 
c) .ou. ← Disjunção 
Tabela Verdade 
A B A .e. B A .ou. B .não. (A) 
V V V V F 
V F F V F 
F V F V V 
F F F F V 
Símbolos 
 Os principais e mais utilizados são: 
 ou := atribuição de dados a variáveis; 
 ( início de um conjunto dados; 
 ) fim de um conjunto de dados; 
 “ inicio e fim de uma expressão caracter; 
 // { } % comentário; 
 ; terminadores de linhas de instruções; 
 . fim do algoritmo; e 
 , separador de conjunto de dados 
Exemplo: 
 
Símbolos 
 INICIO 
 // variáveis 
 INTEIRO A, X,idade; 
 REAL peso, L; 
 CARACTER nome, cep, K; 
 LOGICO resposta; 
 // principal 
 A  5; 
 Peso  65.4; 
 nome  “FEPI” ; 
 resposta  falso 
 FIM. 
Funções 
 Uma função é um instrumento (Sub-
algoritmo) que tem como objetivo retornar um 
valor ou uma informação. 
 A chamada de uma função é feita através da 
citação do seu nome seguido opcionalmente de 
seu argumento inicial entre parênteses. 
 As funções podem ser predefinidas pela 
linguagem ou criadas pelo programador de 
acordo com o seu interesse. 
Funções 
 São usados procedimento e funções. A 
passagem de parâmetros é feita por referência, 
isto é, o endereço do parâmetro é transmitido para 
rotina. Essa forma de transmissão possibilita a 
alteração do conteúdo da variável utilizada. 
 Recursivo é um tipo especial de procedimento 
que contém, em sua descrição chamadas a si 
mesmo, e a chamada a sim mesmo é dita 
chamada recursiva. Exemplo é o fatorial. 
Funções 
 SEN(x) - retorna o seno do valor especificado entre os 
parênteses; 
 COS(x) - retorna o cosseno do valor especificado entre os 
parênteses; 
 MOD(x) - retorna o resto da divisão de um valor especificado por 
parênteses; 
 ABS(x) - retorna o valor absoluto do valor especificado entre os 
parênteses; 
 SQRT(x) - retorna a raiz quadrada do valor especificado entre os 
parênteses; 
 SQR(x) - retorna o valor elevado ao quadrado; 
 TRUNC(x) - Valor Truncado; Ex.trunc(7,9)=7 ou trunc(7,1) =7; 
 ROUND(x) - Valor Arredondado; Ex. Round() de 7,0 até 7,4 = 7 e 
de 7,5 até 7,9 = 8 
Estruturas de Controle 
 Existem 3 estruturas básicas 
de controle que se baseiam os 
algoritmos: 
 
Sequênciação; 
Decisão; e 
Repetição 
ESTRUTURAS SEQÜÊNCIAIS 
 Como pode ser analisado no tópico anterior, todo 
programa possui uma estrutura seqüencial 
(seqüência de comandos) determinada por um 
INICIO e FIM. 
 
 PONTO E VÍRGULA ; (flexível) 
O sinal de ponto e vírgula “;” indica a existência de 
um próximo comando (passa para o próximo). 
Na estrutura INICIO e no comando que antecede a 
estrutura FIM não se usa “;”. 
Comandos 
 Palavras chaves ou instruções pré-definidas que são 
interpretadas pelo processador e passam produzir 
interações entre o usuário e a máquina. 
 
Principais comandos: 
 LEIA(x) permite ao usuário informar um valor para a 
variável durante a execução do algoritmo; 
 ESCREVA(x) mostra na tela do computador o valor 
da variável em questão; 
 IMPRIMA(x) envia para impressora o valor da 
variável em questão; 
Comandos 
INICIO 
 // variáveis 
 INTEIRO A, B, C; 
 // principal 
 Escreva(“ Informe um valor para variável A: “); 
 Leia(A); 
 Escreva(“ Informe um valor para variável B: “); 
 Leia(B); 
 C A / B; 
 Escreva(A); 
 Escreva(“ Resultado da divisão = “, C); 
 Imprima(“ O resultado da divisão de “,A, “ por “, B, “ é “,C) 
FIM. 
Sentenças 
 É a mistura de todas as 
estruturas a fim de se obter 
um resultado ou uma 
solução para um problema. 
Formam uma sentença o 
conjunto de regras, 
comandos, variáveis, 
funções e símbolos, 
agrupados de forma lógica 
permitindo que o 
computador possa 
processar e interagir com 
os dados. 
INICIO 
 // variáveis 
 INTEIRO A, B, C; 
 // principal 
 Leia(A); 
 Leia(B); 
 C A / ABS(B); 
 Escreva( “o valor de C é :” , C) 
FIM. 
Primeiro Algoritmo 
 FAÇA UM ALGORITMO PARA LER E SOMAR 2 
NÚMEROS E IMPRIMIR A SOMA. 
Primeiro Algoritmo 
algoritmo SOMA; 
1. início 
2. declare NUMERO1, NUMERO2, SOMA: INTEIRO; 
3. leia (NUMERO1); 
4. leia (NÚMERO2); 
5. SOMANUMERO1+NUMERO2; 
6. escreva (SOMA) 
7. fim. 
Algoritmos de Estudos 
 Criar um algoritmo que leia 2 
números inteiros A e B, troque seu 
conteúdo e os exiba. 
ALGORITMO TROCATUDO; 
 
VAR 
 A,B, AUXILIAR: INTEIRO; 
INICIO 
 LER(A); 
 LER (B); 
 AUX<- A; 
 A<- B; 
 B<- AUX; 
ESCREVER (A,B) 
FIM. 
Algoritmos de Estudos 
Estrutura Condicional 
Simples 
Simples: 
 
SE <<CONDIÇÃO>> ENTÃO 
<<COMANDO1>>; 
<<COMANDON>> 
FIM-SE 
 
Obs: Os comandos Só são executados se 
a condição for verdadeira!!! 
 Faça um ALGORITMO que leia uma 
nota e se ela for maior ou igual a 7 
imprima “APROVADO”. 
Algoritmos de Estudos 
Estrutura Condicional 
Simples 
No Diagrama de Bloco 
Estrutura Condicional 
Composta 
SE <<CONDIÇÃO>> 
ENTÃO 
<<COMANDO1>>; 
<<COMANDON>> 
SENÃO 
<<COMANDO1>>; 
<<COMANDON>>; 
FIM-SE 
 FAÇA UM ALGORITMO PARA LER 
NOME E SEXO, SE O SEXO FOR 
“M” IMPRIMA “É HOMEM”, SENÃO 
IMPRIMA “É MULHER” 
Algoritmos de Estudos 
Estrutura Condicional 
Composta 
 FAÇA UM ALGORITMO QUE LEIA 3 
VALORES INTEIROS, DETERMINE E 
IMPRIMA O MENOR DELES. 
Algoritmos de Estudos 
Algoritmos de Estudos 
Exercícios 
 Segue um Algoritmo que lê o nome e 
as 4 notas bimestrais de um aluno. 
Em seguida o Algoritmo calcula e 
escreve a média obtida pelo aluno 
escrevendo também se o aluno foi 
aprovado ou reprovado. Média para 
aprovação maior ou igual a 6. 
ALGORITMO MEDIA_FINAL; 
VAR 
NOTA1, NOTA2, NOTA3, NOTA4, MEDIA: REAL; 
NOME : CARACTERE [35] 
INICIO 
LER (NOME); 
LER (NOTA1, NOTA2, NOTA3, NOTA4); 
MEDIA := (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4; 
SE MEDIA>=6 ENTÃO 
 ESCREVER (‘APROVADO’) 
 SENÃO 
 ESCREVER (‘REPROVADO’) ; 
 ESCREVER (NOME, MEDIA) 
FIM-SE 
FIM. 
Exercícios 
Estrutura de Repetição 
 Em vários momentos, na programação, se 
torna necessário repetir um trecho de um 
programa um determinado número de vezes. 
Nesse caso, pode ser criado um laço de 
repetição que efetue o processamento de um 
determinado trecho, tantas vezes quantas 
forem necessárias. Os laços de repetição 
também são conhecidos por loopings. 
Estrutura de Repetição 
 Existem três tipos de estruturas de repetição: 
Repita-Até, Enquanto-Faça e Para-de-Até-
Passo-Faça, cada uma com suas 
peculiaridades e apropriada para cada 
problema, normalmente é possível resolver um 
mesmo problema usando qualquer uma das 
estruturas de repetição, mas, na maioria das 
situações, haverá uma mais adequada. 
Estrutura de Repetição - 
Para / fim_para 
 Repetição utilizando estrutura 
Para / Próximo - Variável de 
Controle. 
 A estrutura do Para/fim_para 
é garantida, e sua sintaxe em 
português estruturado é 
apresentada no seguinte 
formato: 
para <var> de <início> ate <fim> passo <incremento> 
 <comandos> 
Fim_para 
Estrutura de Repetição - Para 
/ fim_para 
1. início 
2.declare media,n1,n2,i numérico; 
3. Para i de 1 ate 3 passo 1 faça // (no caso passo 1 é opcional); 
 leia (n1); 
 leia (n2); 
 media  (n1+n2)/2; 
 escreva (“Média:”, media); 
 fim_para 
4. fim. 
Estrutura de Repetição - Para 
/ fim_para 
Estrutura de Repetição - 
Enquanto / fim_enquanto 
 Embora também possa ser utilizada quando 
se tem um número pré-determinado de 
repetições a executar, como no exemplo 
acima, essa estrutura é mais indicada 
quando é necessário repetir um determinado 
trecho de programa indefinidamente. Para 
ilustrar, suponha que um determinado valor 
deva ser lido indefinidamente, até que seja 
digitado zero (condição de parada). Nesse 
caso devemos usar a estrutura Enquanto: 
Estrutura de Repetição - 
Enquanto / fim_enquanto 
1. início 
2. declare val numérico; 
3. val  1; 
3. Enquanto val <> 0 faça 
 escreva (“Valor:”); 
 leia (val); 
 <comandos>; 
 fimenquanto 
4. <comandos>; 
5. fim. 
Nesse caso, quando for digitado 0 (zero) para val, 
o fluxo do programa segue até chegar no comando 
fimenquanto. Ao retornar na linha faça enquanto, é 
verificado que o valor não é diferente de zero e o 
controle do programa passa para a linha 
comandos2. A partir daí o fluxo do programa segue 
normalmente. 
Estrutura de Repetição - 
Enquanto / fim_enquanto 
1. início 
2. declare media, n1, n2, i numérico; 
3. i  1; 
4. Enquanto i<=3 faça 
 leia (n1); 
 leia (n2); 
 media  (n1+n2)/2; 
 escreva (“Média:”,media); 
 i  i+1; 
 fimenquanto 
5. fim. 
Estrutura de Repetição - 
Enquanto / fim_enquanto 
Português Estruturado 
algoritmo "Looping_1A" 
Var X, R: inteiro 
 CONT: inteiro 
inicio 
CONT <- 1 
enquanto (CONT <= 5) faca 
 leia(X) 
 R <- X * 3 
 escreva(R) 
 CONT <- CONT + 1 
fimenquanto 
fimalgoritmo 
• Segue um algoritmo que calcule a soma dos 
salários dos funcionários de uma empresa. 
O programa termina quando o usuário digitar 
um salário menor que 0. 
Estrutura de Repetição - 
Enquanto / fim_enquanto 
PROGRAMA SOMA_SALARIOS; 
VAR SOMA, SALARIO: REAL; 
INICIO 
SOMA:=0; 
SALARIO:=0; 
ENQUANTO SALARIO>=0 FAÇA 
SOMA:=SOMA+SALARIO; 
LER (SALARIO); 
FIM_ENQUANTO 
ESCREVER (SOMA) 
FIM. 
Estrutura de Repetição - 
Enquanto / fim_enquanto 
Estrutura de Repetição - 
Repita / Até 
A estrutura de repetição repita difere da 
enquanto no que diz respeito ao momento em 
que o teste da condição é submetido. 
 
repita 
 comando1; 
 comando2; 
 ... 
 comandoN; 
até < condição >; 
Estrutura de Repetição - 
Repita / Até 
1. início 
2. declare media, n1, n2, i numérico; 
3. i  1; 
4. Repita 
 leia (n1); 
 leia (n2); 
 media  (n1+n2)/2; 
 escreva (“Média:”, media); 
 i  i+1; 
 
 até i > 3; 
5. fim. 
Estrutura de Repetição - 
Repita / Até 
Português Estruturado 
algoritmo "Looping_2A" 
var 
X, R: inteiro 
CONT: inteiro 
inicio 
CONT <- 1 
repita 
 leia (X) 
 R <- X * 3 
 escreva(R) 
 CONT <- CONT + 1 
ate (CONT > 5) 
fimalgoritmo 
Contadores e 
Acumuladores 
 Em algoritmos com estruturas de 
repetição (Repita, Enquanto ou Para) é 
comum surgir a necessidade de utilizar 
variáveis do tipo contador e/ou 
acumulador. 
Contadores 
 É uma variável de controle, inteira, que serve para controlar 
quantas vezes um determinado trecho de programa foi 
executado. Considere, por exemplo, um programa que leia 10 
valores, podendo eles serem somente negativos ou positivos 
(desconsidere os valores nulos). A seguir, considere que o 
programa deva mostrar a quantidade de valores positivos 
digitados. Nesse caso, devemos fazer um teste a cada leitura, 
e, no caso do valor lido ser positivo, adicionar +1 para uma 
variável tipo contador (contp=contp+1). 
 Exercício.: faça o algoritmo acima (ler 100 valores), 
mostrando no final a quantidade de números negativos e 
positivos digitados. 
Contadores 
1) A variável (do contador) deve possuir um valor inicial 
conhecido, isto é, ela deve ser inicializada. Normalmente, 
inicializa-se a variável do contador com zero, ou seja, zera-se a 
variável antes de utilizá-la. 
Para zerar uma variável basta atribuir a ela o valor zero: 
VARIÁVEL 0 
2) A constante (que é geralmente o valor 1) determina o valor 
do incremento da variável (do contador), ou seja, o que será 
somado (acrescido) a ela. 
 Escreva um algoritmo para ler a nota de 10 alunos e contar 
quantos foram aprovados, sendo que, para ser aprovado, a 
nota deve ser maior ou igual a 6,0. Escrever o número de 
aprovados. 
Acumuladores ou 
Somadores 
 É uma variável de controle, inteira, que serve 
para acumular valores. 
 Um acumulador (somador) é uma variável 
(qualquer) que recebe ela mesma mais uma outra 
variável. 
 
 VARIAVEL1  VARIAVEL1 + VARIAVEL2 
Acumuladores ou 
Somadores 
1) A variável1 (do acumulador) deve possuir um valor 
inicial conhecido, isto é, ela deve ser inicializada. 
Normalmente, inicializa-se a variável do acumulador com 
zero, ou seja, zera-se a variável antes de utilizá-la. Para 
zerar uma variável basta atribuir a ela o valor zero: 
VARIAVEL1 0 
2) A variável2 indica o valor a ser acumulado, somado e 
armazenado na variável1. 
 Considere que um programa, além de ler 100 valores e 
mostrar a quantidade de números positivos, deva mostrar 
a média dos valores positivos digitados. 
Exemplo Problema: 
 
 Supondo que pedíssemos para criar 
um algoritmo para ler o nome de 5 
pessoas, e mostrasse esses nomes 
na ordem inversa de leitura. A 
princípio, vocês pensariam em cinco 
variáveis: nome1, nome2, nome3, 
nome4 e nome5. 
 
Solução 
Inicio 
caracter: nome1, nome2, nome3, nome4, nome5; 
escreva(‘Informe o nome de 5 pessoas: ‘); 
leia(nome1); //ANA 
leia(nome2); //PAULA 
leia(nome3); //CRISTINA 
leia(nome4); //GUSTAVO 
leia(nome5); //ANTONIO 
escreva(‘Ordem Inversa de Leitura ‘); 
escreva(nome5); 
escreva(nome4); 
escreva(nome3); 
escreva(nome2); 
escreva(nome1); 
Fim 
Solução 
 Se alterássemos esse algoritmo para ler o nome de 100 
pessoas, a solução anterior se tornaria inviável. Para casos 
como este, podemos fazer uso de vetores. Se tivéssemos 
criado 100 variáveis, teríamos que declarar e usar: nome1, 
nome2, nome3, ..., nome99, nome100. Com o vetor passamos 
a ter: nome[1], nome[2], nome[3], nome[99], nome[100], onde a 
declaração do vetor se limita à linha: caracter: nome[100]. Veja 
que para todos os elementos nos referimos ao mesmo nome 
de vetor “Nome”. 
91 91 
Variáveis Composta Homogênea - 
VETORES 
 Os vetores são estruturas de dados que permitem o armazenamento de 
um conjunto de dados de mesmo tipo. Por este motivo, são chamadas de 
estruturas homogêneas. Os vetores são unidimensionais, pois cada 
elemento do vetor é identificado por um índice. Podemos definir vetores 
como posições de memória, identificadas por um mesmo nome, 
individualizadas por índices e cujo conteúdo é de mesmo tipo. Para 
acessarmos um elemento de um vetor, referimo-nos ao nome do vetor 
acompanhado pelo seu índice que virá entre colchetes ( [ e ] ). 
Correspondem a posições de memória, Exemplo: Supondo-se um dado 
instante a variável composta NOTA contivesse os seguintes valores: 
 
NOTA 
 
 
Obs.: A variável I, possibilita o acesso a qualquer uma das notas 
armazenadas. 
NOTA [I] = NOTA[10] = 2 
7 8 9 6 3 1 4 3 10 2 
1 2 3 4 5 6 7 8 9 10 Índice 
VETORES - Declaração 
 declare <NOMEVETOR>: VETOR[1:N] <TIPO>; 
 declare NOTA: VETOR[1:10] REAL; 
 NOTA: VETOR[1..10] DE REAL 
 
Estrutura de Comando 
Para V de I até L passo P faça 
 <Comando>; 
fimpara 
Para I de 1 até 10 passo 1 faça 
 SOMA SOMA + NOTA [I]; 
fimpara 
93 93 
VETORES 
algoritmo VETORIDADE; 
1. inicio 
2. declare IDADE:VETOR[1:15] numérico; 
 SOMA, CIDADAO, I, MEDIA numérico; 
3. SOMA0; 
4. Para I de 1 até 15 faça 
 LER(IDADE[I]); 
 SOMASOMA+IDADE[I]; 
 fim-para 
5. escrever (SOMA); 
6. MEDIA  SOMA/15; 
7. escrever (MEDIA); 
8. escrever (´Digite o numero do Cidadão o qual deseja obter a idade´); 
9. ler (CIDADAO); 
10. escrever (IDADE[CIDADAO]) 
11. fim. 
94 94 
VETORES 
Exemplo Problema (Com 
vetores): 
 
Supondo que pedíssemos para criar 
um algoritmo para ler o nome de 5 
pessoas, e mostrasse esses nomes 
na ordem inversa de leitura. A 
princípio, vocês pensariam em cinco 
variáveis: nome1, nome2, nome3, 
nome4 e nome5. 
 
Solução com vetor 
Representação da memória: 
Matrizes - Variáveis 
Multidimensionais 
 A matriz é uma estrutura de dados homogênea 
multidimensional. As matrizes são estruturas de dados que 
permitem o armazenamento de um conjunto de dados de 
mesmo tipo, mas em dimensões diferentes. Os vetores são 
unidimensionais, enquanto as matrizes podem ser 
bidimensionais (duas dimensões) ou multidimensionais. 
Podemos conceituar matrizes como um conjunto de dados 
referenciado por um mesmo nome e que necessitam de mais 
de um índice para ter seus elementos individualizados. Para 
fazer referência a um elemento da matriz serão necessários 
tantos índices quantas forem as dimensões da matriz. 
Matrizes - Variáveis 
Multidimensionais 
 Veja a sintaxe da declaração de uma matriz: 
 
<<NOME>>: MATRIZ [1 : N, 1 : M] <<TIPO>>, onde: 
 N - Número máximo de linhas; 
 M - Número máximo de colunas; 
Exemplo: NOTAS: matriz[1..8, 1..4] de real 
 
Obs: Quando você desejar percorrer uma matriz, linha 
por linha, crie uma estrutura de repetição, fixando a linha 
e variando a coluna. Parapercorrer uma matriz, coluna 
por coluna, fixe a coluna e varie a linha. 
Matrizes - Variáveis 
Multidimensionais 
 Vamos pensar numa estrutura onde as colunas 
representem os cinco dias úteis da semana, e as 
linhas representem as três vendedoras de uma loja. 
Na interseção de cada linha x coluna, colocaremos o 
faturamento diário de cada vendedora. 
A representação desta tabela em forma de matriz, seria: 
VendasDiarias : matriz [ 1..3, 1..5 ] de real; ou 
VendasDiarias : matriz [ 3, 5 ] de real; 
Matrizes - Variáveis 
Multidimensionais 
Veja como ficaria o algoritmo para ler esses valores: 
algoritmo LeVendasDiarias; 
1.inicio 
2. declare VendasDiarias[3,5] numérico; 
 indLinha, indColuna, numérico; 
 //Variando o número de linhas - Vendedoras 
3. para indLinha de 1 até 3 faça 
 escreve (“Vendedora :”, indLinha); 
 //Variando o número de colunas - Dias da Semana 
 para indColuna de 1 até 5 faça 
 escreva (“Faturamento do Dia : “, indColuna); 
 leia (VendasDiarias[indLinha, indColuna]); 
 fimpara; 
 fimpara; 
4. fim. 
Matrizes - Variáveis 
Multidimensionais 
Algoritmo LeVendasDiariasVersao2; 
1. inicio 
2. declare VendasDiarias[3,5] numérico; 
 Vendedoras[3], DiasSemana[5] literal; 
 indLinha, indColuna numérico; 
3. Vendedoras[1]  "Sandra"; 
4. Vendedoras[2]  "Vera"; 
5. Vendedoras[3]  "Maria"; 
6. DiasSemana  ["Segunda", "Terça", "Quarta", "Quinta", "Sexta"); 
//Variando o número de linhas - Vendedoras 
7. Para indLinha de 1 até 3 faça 
 escreva (“Vendedora :”, Vendedoras[indLinha]); 
 //Variando o número de colunas - Dias da Semana 
 Para indColuna de 1 até 5 faça 
 escreva ("Fatur.do Dia:", DiasSemana[indColuna]); 
 leia (VendasDiarias[indLinha, indColuna]); 
 fimpara; 
 fimpara; 
8. fim. 
Matrizes - Variáveis 
Multidimensionais 
Matrizes - Métodos de 
Pesquisa 
 Método de Pesquisa Seqüencial 
 Consiste em efetuar a busca da informação desejada a partir 
do primeiro elemento seqüencialmente até o último. Este método 
de pesquisa é lento, porém eficiente nos casos em que uma 
matriz encontra-se com seus elementos desordenados. 
 Método de Pesquisa Binária 
 É em média mais rápido que o anterior, porém exige que a 
matriz esteja previamente classificada, pois este método “divide” 
a lista em duas partes e “procura” saber se a informação a ser 
pesquisada está acima ou abaixo da linha de divisão. Se estiver 
acima, por exemplo, toda a metade abaixo é desprezada. Em 
seguida, se a informação não foi encontrada, é novamente 
dividida em duas partes, e pergunta se aquela informação está 
acima ou abaixo, e assim vai sendo executada até encontrar ou 
não a informação pesquisada. Pelo fato de ir dividindo sempre 
em duas partes o volume de dados é que o método recebe a 
denominação de pesquisa binária. 
Variáveis 
Globais - são declaradas no início do algoritmo 
principal de um programa, podendo ser utilizada 
por qualquer sub-rotina subordinada ao algoritmos 
principal. Este tipo de variável passa a ser visível a 
todas as sub-rotinas hierarquicamente 
subordinadas à rotina principal, que poderá ser o 
próprio programa principal ou uma outra sub-rotina. 
Devem ser declaradas fora do corpo de todos os 
procedimentos ou funções do programa 
Locais - são declaradas e usadas apenas em sub-
rotinas. 
Tem como escopo a função onde foi declarada. 
Os nomes e valores dessas variáveis tem uso restrito à 
função que declarou estas variáveis. 
Escopo das Variáveis 
 As variáveis A e B da rotina principal 
são num primeiro momento globais às 
sub-rotinas 1 e 2. Porém, dentro da sub-
rotina 1, a variável A é definida 
novamente, assumindo assim um 
contexto local para esta sub-rotina (é 
como se tivesse utilizando uma nova 
variável, no caso A’), mas será global 
para as sub-rotinas 1.1 e 1.2 com relação 
à variável A’ que também terá como 
global a variável X. As variáveis W e Y 
que respectivamente pertencem às sub-
rotinas 1.1 e 1.2 são locais. A variável B é 
global para as sub-rotinas 1, 1.1 e 1.2. 
Parâmetros 
 Os parâmetros têm por finalidade servir como um 
ponto de comunicação bidirecional entre uma sub-
rotina e o programa principal ou uma outra sub-rotina 
hierarquicamente de nível mais alto. Desta forma, é 
possível passar valores de uma sub-rotina ou rotina 
chamadora à outra sub-rotina e vice-versa, os 
parâmetros que podem ser: 
 Formais; e 
 Reais. 
Parâmetros 
 Parâmetros Formais: 
 Declarados por meio de variáveis juntamente com a 
identificação do nome da sub-rotina, os quais serão tratados 
exatamente da mesma forma que são tratadas as variáveis 
globais ou locais. 
 
Procedimento CALCSOMA (A, B: inteiro) 
var 
inicio 
Z : inteiro 
Z <- A + B 
escreva(Z) 
fimprocedimento 
 a variável Z é local e está sendo usada para 
armazenar a soma das variáveis A e B que 
representam os parâmetros formais da sub-rotina 
CALCSOMA. 
Parâmetros 
 Parâmetros Reais: 
 Substituem os parâmetros formais, quando da utilização da 
sub-rotina por um programa principal ou por uma rotina 
chamadora. 
 
inicio 
leia(x, y) 
CALCSOMA(x, y) 
leia(w, t) 
CALCSOMA(w, t) 
CALCSOMA(8, 2) 
fimalgoritmo 
 Toda vez que a sub-rotina CALCSOMA é 
chamada, faz-se uso de parâmetros reais. Desta 
forma, são parâmetros reais as variáveis x, y, w e t, 
pois seus valores são fornecidos pela instrução leia() 
e também os valores 8 e 2. 
Passagem de Parâmetros 
 A passagem de parâmetro ocorre 
quando é feita uma substituição dos 
parâmetros formais pelos reais no 
momento da execução da sub-rotina. 
Esses parâmetros são passados por 
variáveis de duas formas: 
 por valor; e 
 por referência. 
Passagem Por Valor 
 A passagem de parâmetro por valor caracteriza-se pela 
não-alteração do valor do parâmetro real quando o 
parâmetro formal é manipulado dentro da sub-rotina. 
Assim sendo, o valor passado pelo parâmetro real é 
copiado para o parâmetro formal, que no caso assume o 
papel de variável local da sub-rotina. 
 Desta forma, qualquer modificação que ocorra na 
variável local da sub-rotina não afetará o valor do 
parâmetro real correspondente, ou seja, o processamento 
é executado somente dentro da sub-rotina, ficando o 
resultado obtido “preso”na sub-rotina. 
Passagem Por Referência 
 A passagem de parâmetro por referência caracteriza-se 
pela ocorrência de alteração do valor do parâmetro real 
quando o parâmetro formal é manipulado dentro da sub-
rotina. Desta forma, qualquer modificação feita no 
parâmetro formal implica em alteração no parâmetro real 
correspondente. A alteração efetuada é devolvida para a 
rotina chamadora. 
FIM

Outros materiais