Buscar

Apostila_AED_I - OK

Prévia do material em texto

l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Algoritmos e Estruturas de Dados
Introdução
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br>
V́ıdeoaulas, exemplos e exerćıcios em linguagem C, acesse
www.mathgraph.com.br
25 de fevereiro de 2016
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Sumário
1 Introdução
2 Estrutura Sequencial
3 Estrutura Condicional
se... então
se ... senão ...
4 Estruturas de Repetição
enquanto... faça
para... até... faça
repita... até...
5 Estruturas Homogêneas de Dados
Vetor
Matriz
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
2/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Algoritmos computacionais
Definição
Segundo Cormem (2001) um algoritmo computacional pode ser
entendido como “... qualquer procedimento computacional bem
definido que toma algum valor ou conjunto de valores como
entrada e produz algum valor ou conjunto de valores como sáıda.
Portanto, um algoritmo é uma sequência de passos computacionais
que transformam a entrada na sáıda”.
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
3/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Algoritmos computacionais
Outras definições
• ”Algoritmo é uma sequência de passos que visa atingir um
objetivo bem definido” (FORBELLONE, 1999)
• “Algoritmo é a descrição de uma seqüência de passos que
dever ser seguida para a realização de uma tarefa”
(ASCENCIO, 2007)
• “Algoritmo é uma sequência finita de instruções ou operações
cuja execução, em tempo finito, resolve um problema
computacional, qualquer que seja sua instância” (SALVETTI,
1999)
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
4/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Algoritmos computacionais
Outras definições
• “Algoritmo são regras formais para a obtenção de um
resultado ou da solução de um problema, englobando
fórmulas de expressões aritméticas” (MANZANO, 1997)
• “Ação é um acontecimento que, a partir de um estado inicial,
após um peŕıodo de tempo finito, produz um estado final
previśıvel e bem-definido. Portanto, um algoritmo é a
descrição de um conjunto de comandos que, obedecidos,
resultam numa sucessão finita de ações” (FARRER, 1999)
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
5/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Algoritmos computacionais
Continuação
Um algoritmo é como uma “receita de bolo” para o computador,
onde estão definidos todos os comandos que ele deve executar p
ara se chegar a um resultado. Dáı, temos que, o algoritmo é uma
sequência de instruções, onde cada instrução representa uma
AÇÃO que deve ser entendida e realizada. Em algoritmos
computacionais, o computador possui um conjunto limitado de
instruções e o algoritmo deve ser expresso nos termos destas
instruções. O computador utiliza dois conceitos básicos para
construir e interpretar algoritmos, são eles:
• Estruturas de Dados → para manipulação das informações
• Estruturas de Controle → para manipulação das ações
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
6/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Tipos de Algoritmos
Descrição Narrativa
A descrição narrativa consiste em analisar o enunciado do
problema e escrever, utilizando um linguagem natural (por
exemplo, a ĺıngua portuguesa), os passos a serem seguidos para
resolução do problema (semelhante a escrever uma receita).
• Vantagem: Não é necessário aprender nenhum conceito novo,
pois uma ĺıngua natural já é bem conhecida.
• Desvantagem: A linguagem natural (não padronizada e
informal) abre espaço para várias interpretações. Será mais
dif́ıcil estruturá-la e transcrever este algoritmo para uma
linguagem de programação.
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
7/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Tipos de Algoritmos
Fluxograma
Analisar o enunciado do problema e escrever, utilizando śımbolos
gráficos pré-definidos, os passos a serem seguidos para a resolução
do problema.
• Vantagem: Visão geral do fluxo de processamento.
• Desvantagem: É necessário aprender a simbologia dos
fluxogramas e, além disso o algoritmo resultante não
apresenta muitos detalhes, dificultando sua transcrição para
uma linguagem de programação.
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
8/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Tipos de Algoritmos
Fluxograma
Os śımbolos utilizados para representar o uso em fluxograma
podem variar dependendo do autor. A seguir é apresentada a lista
de śımbolos a ser utilizada nas aulas deste curso.
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
9/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Tipos de Algoritmos
Pseudocódigo
Consiste em analisar o enunciado do problema e escrever, por meio
de regras predefinidas, os passos a serem seguidos para a resolução
do problema.
• Vantagem: A passagem (transcrição) do algoritmo para uma
linguagem de programação é quase imediata, bastando
conhecer as regras e palavras reservadas da linguagem que
será utilizada.
• Desvantagem: É necessário aprender as regras para se
escrever um algoritmo corretamente.
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
10/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Estruturas de Dados
Definição
Uma estrutura de dados é um meio para armazenar e organizar
dados com o objetivo de facilitar o acesso e as modificações.
Nenhuma estrutura de dados única funciona bem para todos os
propósitos, e assim é importante conhecer os pontos fortes e as
limitações de várias delas (CORMEN, 2001)
As estruturas de dados representam as informações do problema a
ser resolvido. Tais estruturas estão organizadas em tipos distintos
de informações. Dentro do escopo das estruturas de dados,
define-se os seguintes termos:
Constante, Variável e Identificador.
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
11/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Estruturas de Dados
Constantes
Representam valores constantes, ou seja, que não variam no
decorrer do algoritmo.
Exemplo 1:
Seja x = 2, efetuando as seguintes operações:
y = x → y = 2
A = 3x + 5x → A = 3*(2) + 5 * 2 → A = 16
Exemplo 2:
Seja PI = 3,14, efetuando as seguintes operações:
A = PI .*1 → A = 3,14
A = PI * 2 → A = 6,28
A = PI * 3 → A = 9,42
Nos exemplos 1 e 2, tanto o valor de x quanto PI não variam a
medida que as operações são executadas.
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
12/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Estruturas de Dados
Variáveis
Representam informações cujos valores são modificados ao longo
do tempo.
Exemplo 1:
Deseja-se saber o salário de um funcionário considerando que ele
recebe R$ 1.000, 00 por mês, supondo que teve um aumento de
20% e deve-se descontar 8% de INSS do novo salário, qual será o
salário ĺıquido?
Resposta:
salario = 1.000
reajuste = salario * 0,2
salario = salario + reajuste
imposto = salario * 0,08
salario = salario - imposto
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
13/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Estruturas de Dados
Variáveis
Matematicamente, variável é a representação simbólica dos
elementos de um certo conjunto. Computacionalmente, pode-se
definir variável como um local reservado na memória do
computador usado para armazenar dados.Uma variável possui nome (identificador) e tipo, possui apenas um
valor em um determinado instante, mas seu conteúdo pode variar
ao longo do tempo.
O conceito de variável, em computação, corresponde a posições de
memória RAM (Random Access Memory) onde são
armazenados os dados manipulados pelo programa quando este for
executado.
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
14/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Estruturas de Dados
Identificador
Nome de um local onde se pode colocar qualquer valor do
conjunto de valores posśıveis de um tipo básico associado. Usado
para manipular os dados necessários no algoritmo.
O identificador é também usado para rotular valores constantes,
assim como o nome PI, utilizado no exemplo 2, em constantes (o
identificador PI foi utilizado para representar o valor constante
3,14).
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
15/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Estruturas de Dados
Regras para formação de identificadores
1 Começar sempre o nome com uma letra ou o caractere
sublinhado “ ”;
2 Não usar espaços em branco, pontuação, acentos nem
caracteres especiais (@, #, ?, $, etc);
3 Não usar palavras reservadas, ou seja, palavras que pertençam
a linguagem de programação que estiver sendo usada (ex: if,
for, case, int, etc).
Importante: Um identificador deve representar o melhor posśıvel
o papel da variável no algoritmo
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
16/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Estruturas de Dados
Identificadores válidos
1 nota, nota1, nota 1, operador, salario, nome, x, y,
enderecoResidencial,
2 aluno01, preco produto, Area, Tensao A, tensao B, media,
soma, S.
Identificadores inválidos
1 1K, nota 1, salário, nome, x@1, y%2, aluno 01, preco produto.
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
17/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Tipos Primitivos de Dados
Numéricos
1 Inteiros. Ex: ...-100... -2, -1, 0, 1, 2, ..., 100, ...
2 Reais. Ex: ... -100, ..., -50.2, ..., -2, ..., -1.5, ..., 0, ..., 1, ...,
2, ..., 25.12,
Literal
Caractere ou alfanuméricos. Ex: “ESCOLA”, “livro”, “18”,
“R$ 55,36”, ...
Lógicos ou booleanos
Assume um estado: verdadeiro (V) ou falso (F)
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
18/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Tipos Primitivos de Dados
Declaração
É a criação (ou definição) do identificador da variável (ou
constante) que será utilizado no algoritmo. Esta variável será
utilizada para a manipulação de um determinado tipo de dado.
Formato
tipo do dados: identificador;
tipo do dado: identificador1, identificador2, . . . , identificadorn
1 Todas as variáveis utilizadas em algoritmos serão definidas no ińıcio
do mesmo, por meio de um comando de uma das formas seguintes:
2 Em uma mesma linha podem ser denidas uma ou mais variáveis do
mesmo tipo, separando-se os nomes das mesmas por v́ırgulas.
3 Variáveis de tipos diferentes devem ser declaradas em linhas
diferentes.
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
19/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Tipos Primitivos de Dados
Exemplos
inteiro: idade;
real: salario;
caracter: nome;
lógico: temFilhos;
No exemplo, foram declaradas quatro variáveis, sendo elas:
• Variável nome: capaz de armazenar dados literais;
• Variável idade: capaz de armazenar um número inteiro;
• Variável salario: capaz de armazenar um número real;
• Variável temFilhos: capaz de armazenar um valor lógico,
verdadeiro (V) ou falso (F).
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
20/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Comandos básico
Tabela: Comandos em pseudocódigo
Comando Função Exemplo
← atribui um valor a uma variável x ← 2
leia
obter um valor informado externo
e atribuir a uma variável
leia x;
escreva
mostrar algo, que pode ser uma
variável, texto ou ambos
escreva x;
escreva ”mensagem de teste”;
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
21/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Estrutura Sequencial
Sobre a estrutura
Na estrutura sequencial os comandos são executados numa
sequência pré-estabelecida. Cada comando é executado somente
após o término do comando anterior.
Em pseudocódigos, a estrutura sequencial caracteriza-se por um
conjunto de comandos dispostos ordenadamente.
Formato
ińıcio
tipo: variável1, variável2, . . . ; //declaração das variávieis
leia variável1, variável2; //dados de entrada
comandos/ações; //ações a serem executadas
escreva “Mensagem pré-determinada”, variável; //dados de sáıda
fim.
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
22/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Estruturas Condicional
Finalidade
Utilizada quando o problema apresenta alguma ou algumas
condições. Em problemas que apresentam classificação,
comparação, verificação, restrição, e outras situações que existam
condições a serem observadas.
Classificação:
1 Simples
2 Composta
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
23/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Condicional Simples
Pseudocódigo
se (condição) então
comandos/ações;
fimse;
Caracteŕısticas:
• A ação será executada apenas se a condição for verdadeira.
• A ação ou ações a serem executadas são escritas depois da
palavra então e antes de fimse.
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
24/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Condicional Composta
Pseudocódigo
se (condição) então
comando1;
senão
comando2;
fimse;
Funcionamento:
Se a condição for verdadeira, será executado o comando1; caso
contrário, se a condição for falsa, será executado o comando2.
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
25/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Seleção de Múltipla Escolha
Finalidade
Utilizada para simplificar a escrita de seleções encadeadas
se-senão-se.
Pseudocódigo
escolha X
V1: C1;
V2: C2;
. . .
Vn: Cn;
fimescolha;
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
26/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Estruturas de Repetição
Finalidade
Permitem executar mais de uma vez (repetir) um determinado
trecho do algoritmo
• O trecho do algoritmo em repetição é também chamado de
laço (ou “loop”)
• As repetições devem ser sempre finitas
Quanto a quantidade de repetições, os laços podem ser
1 Pré-determinados: Sabe-se antes a quantidade de execuções
2 Indeterminados: Não se conhece a quantidade de execuções
Quanto ao critério de parada, os laços podem utilizar
1 Variável de controle
2 Teste no ińıcio
3 Teste no final
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
27/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Estruturas de Repetição
enquanto... faça
• Laço que verifica antes de cada execução, se é “permitido”
executar o trecho do algoritmo
• O laço acontece enquanto uma dada condição permanecer
verdadeira
Pseudocódigo
enquanto(condição) faça
comandos/ações;
fimenquanto;
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
28/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Estruturasde Repetição
Exemplo: Faça um algoritmo que leia a nota de cada aluno de uma
turma com 50 alunos, em seguida apresente a média da turma.
ińıcio
real: mediaTurma, somaNotas, nota;
inteiro: i; //contador
i ← 0; //inicialização do contador
somaNotas ← 0; //inicializaodoacumulador
enquanto (i < 50) faça // teste da condição de parada
leia nota;
//soma em somaNotas os valores lidos em nota
somaNotas ← somaNotas + nota ;
i ← i + 1; //incremento do contador
fimenquanto;
mediaTurma ← somaNotas / 50; // cálculo da média da turma
escreva “média da turma = “, mediaTurma;
fim.
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
29/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Estruturas de Repetição
para... até... faça
• Utilizada somente em casos nos quais a quantidade de
repetições previamente conhecida.
• Incorpora internamente o funcionamento de um contador para
controlar a quantidade de laços
Pseudocódigo
para v de vi até vf passo p faça
comandos/ações;
fimpara;
• v : variável de controle
• vi : valor inicial de v
• vf : valor final de v
• p: variação de v
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
30/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Estruturas de Repetição
repita... até...
• A verificação se é permitido repetir a ação ocorre no final da
estrutura
• Trata-se de um laço que se mantém repetindo até que uma
dada condição se torne verdadeira
Pseudocódigo
repita
comandos/ações;
até (condição);
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
31/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Estruturas de Repetição
Comparação
É importante perceber que existem laços mais adequados ou
convenientes para cada situação
Tabela: Comparação entre Estruturas de Repetição
Estrutura Condição Qtd. de Execuções
Condição de
Existência
enquanto ... ińıcio zero ou muitas verdadeira
para ... ińıcio valor final - valor inicial verdadeira
repita ... final ḿınimo uma falsa
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
32/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Estrutura Homogênea de Dados
Definição
• Estruturas homogêneas de dados possibilitam o
armazenamento de grupos de valores em uma única variável
que será armazenada na memória do computador.
• São ditas homogêneas porque os valores a serem armazenados
devem ser do mesmo tipo.
• Entre outros nomes que estas estruturas recebem, iremos
chamá-las de vetores e matrizes.
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
33/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Vetor
Vetor - Arranjo Unidimensional
• Um vetores é uma variável composta (arranjo) com múltiplas
posições.
• Podem ser vistos como lista de elementos do mesmo tipo.
• São estruturas lineares e estáticas, ou seja, são compostas por
um número finito e pré-determinado de valores
Representação:
Exemplo: Vetor de notas de uma turma com 10 alunos:
Notas = 6,1 3,4 9,2 8,5 4,6 8,3 7,4 6,5 10 9,6
Posição 1 2 3 4 5 6 7 8 9 10
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
34/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Vetor
Pseudocódigo - Declaração
tipo: identificador[qtd. de elementos];
Exemplo: Faça um algoritmo que leia as notas de uma turma com
50 alunos e mostre o vetor resultante.
inicio
inteiro: i, notas[50];
para i de 1 até 50 passo 1 faça
escrever ”Entre com um valor: ”;
ler notas[i];
fimpara;
para i de 1 até 50 passo 1 faça
escrever notas[i];
fimpara;
fim.
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
35/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Matriz
Matriz - Array Bidimensional
Uma matriz é uma variável composta homogênea bidimensional
formada por elementos do mesmo tipo, alocados sequencialmente
na memória, organizada em linhas e colunas.
Representação:
Aluno
6,1 3,4 9,2 8,5 4,6 8,3 7,4 6,5 10 9,6 1
Turma 5,6 3,1 8 4,5 7 6 7,3 9,8 6,7 8 2
8,6 9 5,5 8,4 3,5 7,3 8,9 8,1 5,7 7 3
1 2 3 4 5 6 7 8 9 10
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
36/37
l ó g i c a d e p r o g r a m a ç ã o m a t h g r a p h
Matriz
Pseudocódigo - Declaração
tipo: identificador[qtd. linha][qtd. coluna];
Exemplo: Faça um algoritmo que leia as notas de 5 turmas, cada turma com 50
alunos, e mostre a matriz resultante.
inicio
inteiro i, j;
real notas[5][50];
para i de 1 até 5 passo 1 faça
para j de 1 até 50 passo 1 faça
escreva ”Entre com um valor: ”;
leia notas[i][j];
fimpara;
fimpara;
para i de 1 até 5 passo 1 faça
para j de 1 até 50 passo 1 faça
escreva notas[i][j];
fimpara;
fimpara;
fim.
Prof. Sinaide Nunes Bezerra <contato@mathgraph.com.br> — AED — 25 de fevereiro de 2016
37/37
	Introdução
	Estrutura Sequencial
	Estrutura Condicional
	se... então
	se ... senão ...
	Estruturas de Repetição
	enquanto... faça
	para... até... faça
	repita... até...
	Estruturas Homogêneas de Dados
	Vetor
	Matriz

Continue navegando