Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
APOSTILA DE AULA
2012
CURSO: SISTEMAS DE INFORMAO
DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES
CONTEDO PROGRAMTICO
BIBLIOGRAFIA BSICA
BIBLIOGRAFIA COMPLEMENTAR
UNIDADE 1
COMPUTADORES
REPRESENTAO DA INFORMAO
LGICA
PROGRAMAO
ABSTRAO
Realidade
O que voc abstrai dessa realidade?
ABSTRAO
NOES DE LGICA
OPERAES LGICAS:
So usadas para formar novas proposies a partir de proposies existentes.
Considerando p e q duas proposies genricas, podem-se aplicar
as seguintes operaes lgicas bsicas sobre elas:
Definindo a prioridade:
Usar parnteses Ex: ((p v q)^(~q)) ou
Obedecer (~) > (^) > (v)
Ento:
7 primo OU 4 NO mpar = p v ~q = (V v (~F)) = (V v V) = (V)
7 primo OU 4 mpar = p v q = (V v F) = (V)
4 mpar OU 7 primo = q v p = (F v V) = (V)
4 mpar OU 7 NO primo = q v ~p = (F v (~V)) = (F v F ) = (F)
p q ~p p^q pvq
V V F V V
V F F F V
F V V F V
F F V F F
Ou seja:
No (~) troca o valor lgico. Se for F passa a ser V e vice-
versa.
E (^) s tem valor V quando as duas proposies forem V.
Basta uma proposio ser F para o resultado ser F.
OU (v) s tem valor F quando as duas proposies forem F.
Basta uma proposio ser V para o resultado ser V.
ALGORITMO
Seqncia lgica
As instrues devem ser definidas em uma ordem correta.
No ambgua
A seqncia lgica e as instrues no devem dar margem dupla
interpretao.
Soluo de um problema
A seqncia lgica deve resolver exatamente (nem mais e nem
menos) o problema identificado.
Tempo finito
A seqncia lgica no deve possuir iteraes infinitas.
Exemplos de algoritmos
Receitas de comidas
Coreografia
Manuais de instalao
Contra-exemplos de algoritmos
Listas de compras
Dana informal
ndice remissivo de um livro
Modo de preparo:
Bata a margarina, as gemas e o acar por 15 minutos
LGICA DE PROGRAMAO
PROGRAMA
INSTRUO
Ateno
RESUMINDO
Seqncia Incio/Fim
Define uma estrutura onde as instrues sero executadas
na ordem que aparecem.
Seleo Se-Ento/Seno
Define uma estrutura condicional que, dada a sua avaliao
(V ou F), determina qual caminho do algoritmo ser
executado.
SISTEMA COMPUTACIONAL
Sistema
Computacional
Software Hardware
Peopleware
Dispositivo UCP
de Entrada Dispositivo
de Sada
Memria
Memria
6,8 7
(6 + 8) / 2
Dispositivo UCP
de Entrada Dispositivo
de Sada
Memria
LINGUAGENS DE PROGRAMAO
Cdigo em Cdigo em
Assembler
linguagem de linguagem de
assembly. mquina.
Tradutor
Compilador
Cdigo fonte em
linguagem de Cdigo em
Compilador
alto nvel linguagem de
mquina.
Caractersticas:
Traduz cada instruo de uma nica vez, independente de quantas
vezes o programa executado.
Tempo de execuo mais rpido.
Interpretador
Cdigo fonte em
linguagem de alto Interpretador Memria
nvel
Traduo de cada
instruo na fase de
VANTAGENS E DESVANTAGENS
Linguagem Natural
Diagrama de Blocos
Algoritmo <nome_do_algoritmo>
[<declarao_de_variveis>]
Incio
<corpo_do_algoritmo>
Fim.
Algoritmo
Indica o incio da definio do algoritmo.
<nome_do_algoritmo>
Nome dado ao algoritmo para distingui-lo dos demais.
[<declarao_de_variveis>]
Parte opcional onde so declaradas as variveis usadas
no algoritmo e, eventualmente, nos sub-algoritmos
(partes de um algoritmo).
[<subalgoritmos>]
Parte opcional onde so definidos os sub-algoritmos
(quebra do algoritmo em partes: modularizao).
Incio
Palavra que delimita o incio do corpo do algoritmo.
<corpo_do_algoritmo>
Conjunto de instrues do algoritmo.
Fim
Palavra que delimita o trmino do corpo do algoritmo.
programa Fahrenheit-Celsius
var
real Fahrenheit, Celsius;
incio
leia (Fahrenheit);
Celsius 5 /9 * (Fahrenheit 32);
escreva (Celsius);
fim
PSEUDOCDIGO
Incio
real NOTA1, NOTA2, MEDIA;
Leia (NOTA1, NOTA2);
MEDIA := (NOTA1 + NOTA2) / 2;
SE MEDIA >= 5
escreva ( Aprovado );
SENO
escreva ( Reprovado);
Fim
FLUXOGRAMA
VANTAGENS E DESVANTAGENS
Vantagens Desvantagens
Descrio O portugus bastante conhecido Impreciso.
Narrativa por ns. Pouca confiabilidade (a impreciso
acarreta a desconfiana).
Extenso (normalmente, escreve-se
muito para dizer pouca coisa).
Fluxograma Padro mundial. Complica-se medida que o
Ferramenta bem conhecida. algoritmo cresce.
Figuras dizem muito mais que Pouca ateno aos dados, no
palavras. oferecendo recursos para declar-los.
Linguagem Independncia de linguagem de Exige a definio de uma linguagem
Algortmica programao. no real para trabalho.
Usa o portugus como base. No padronizada.
Define-se melhor quais e como os
dados vo estar estruturados.
Passagem quase imediata do
algoritmo para uma linguagem de
programao qualquer.
Numricos
Inteiros: dados numricos positivos e negativos pertencentes ao
conjunto de nmeros inteiros, excluindo qualquer valor numrico
fracionrio. Ex. 10, 0, -3, etc.;
CONSTANTES
Exemplos:
pi = 3.14159265
resultado = aprovado
situacao = .falso.
VARIVEIS
Smbolo Significado
/ Diviso
* Multiplicao
+ Adio
- Subtrao
Observao:
PRIORIDADE
Operador Precedncia
Calculados em primeiro
()
lugar da esq. p/ dir.
Calculados em segundo
*, / ou %
lugar da esq. p/ dir.
Calculados por ltimo da
+ ou -
esq. p/ dir.
Smbolo Significado
== ou = Igual a
!= ou <> Diferente
A != B A diferente de B
X == 1 X igual a 1
7>6 7 maior que 6
8<9 8 menor que 9
1 <= Y 1 menor ou igual ao valor da varivel Y
4 >= W 4 maior ou igual ao valor da varivel W
PRIORIDADE
Operador Precedncia
() Calculados em primeiro lugar da esq. p/ dir.
*, / ou % Calculados em segundo lugar da esq. p/ dir.
+ ou - Calculados em terceiro lugar da esq. p/ dir.
<, <=, > ou >= Calculados em quarto lugar da esq. p/ dir.
== ou != Calculados em quinto lugar da esq. p/ dir.
= Calculados em ltimo lugar da dir.p/ esq.
Condio Resultado
V F
F V
ORDEM DE PRIORIDADES
Operador Prioridade
Aritmticos 1
Relacional 2
Lgico 3
UNIDADE 2
LINGUAGEM DE PROGRAMAO
UNIDADE 3
ESTRUTURA SEQUENCIAL
Estrutura de um algoritmo:
INSTRUES/COMANDOS PRIMITIVOS:
COMANDO DE ATRIBUIO:
A V;
Resultado 5;
B 5 + 13/4;
Sexo F;
Dolar 1.98;
Nome "JOSE";
ESCREVA varivel/constante/expresso/literal ;
Este comando gera uma sada no vdeo que poder ser o valor de uma
varivel, uma constante, o resultado da avaliao expresso, um literal
(conjunto de caracteres delimitados por aspas) ou qualquer combinao destes
elementos deste que separados por vrgula.
Observaes:
- Na linguagem de programao C++, o comando de entrada o cin>>
e o comando de sada o cout<<
- Na linguagem de programao Pascal, o comando de entrada o read
ou readln e o comando de sada write ou writeln
Exemplo:
algoritmo exemplo
inteiro A, B, C;
inicio
escreva Digite um valor: ;
leia A;
escreva Digite outro valor: ;
leia B;
C A + B;
Escreva A soma de , A, e , B, = , C;
fim
using namespace std; //uso do namespace padro std (usado no cin , cout)
} //fim da funo
Comentrios em C++
Diretivas de compilao:
Sintaxes:
Exemplos de bibliotecas:
FUNES CHAR
Biblioteca (cstring)
strcpy(s1, s2) Para armazenar uma string literal numa varivel string -
ou copiar o contedo de uma varivel string para outra
strcat(s1, s2) Concatena s2 no final da s1.
strcmp(s1,s2) compara, <0 se s1<s2,
0 se s1==s2,
>0 se s1>s2
strncpy(s1,s2,n) copia ate n caracteres
Biblioteca
(ctype)
toupper(char) Converte um nico caractere para maisculo
FUNES NUMRICAS
Biblioteca (cmath)
ceil(x) Arredonda valor real para cima (ex: ceil(3,2) =4)
UNIDADE 4
ESTRUTURAS DE SELEO
INTRODUO:
Uma estrutura de seleo encadeada nada mais do que uma combinao entre
as estruturas de seleo simples e compostas, possibilitando, desta forma, a
especificao de vrios conjuntos de instrues passveis de execuo. Entretanto, da
mesma forma como na estrutura de seleo composta, somente um dos conjuntos de
instrues especificados ser executado, dependendo do resultado de testes sobre os
dados.
UNIDADE 5
ESTRUTURA DE REPETIO
ESTRUTURAS DE REPETIO
INTRODUO:
Quando uma sequncia de comandos deve ser executada repetidas vezes, tem-
se uma estrutura de repetio.
A estrutura de repetio, assim como a de deciso, envolve sempre a avaliao
de uma condio.
As estruturas de repetio so muitas vezes chamadas de Laos ou de Loops. A
classificao das estruturas de repetio feito de acordo com o conhecimento prvio
do nmero de vezes que o conjunto de comandos ser executado. Assim os Laos se
dividem em:
Laos contados, quando se conhece o nmero de vezes que o conjunto de
comandos ser executado;
Laos condicionais, quando no se conhece o nmero de vezes que o conjunto
de comandos no interior do lao ser repetido, pelo fato de estar preso a uma
condio sujeita a modificao pelas instrues do interior do lao.
Todo algoritmo que possui um ou mais de seus passos repetidos um
determinado nmero de vezes denomina-se algoritmo com repetio. Com a utilizao
de estruturas de repetio, ser necessrio o uso de dois tipos de variveis para a
resoluo de diversos tipos de problemas: Variveis contadoras e variveis
acumuladoras.
Uma varivel contadora uma varivel que recebe um valor inicial, geralmente
0 (zero) antes do incio de uma estrutura de repetio e incrementada no interior da
estrutura de um valor constante, geralmente 1 (um):
cont 0;
<estrutura de repetio>
cont cont +1;
<fim da estrutura de repetio>
soma 0;
<estrutura de repetio>
soma soma + valor;
<fim da estrutura de repetio>
Sintaxe:
Representao em Fluxograma:
Sintaxe:
Representao em Algoritmo:
Algoritmo exemplo
inteiro mes
inicio
faa
leia (mes);
fim
Representao em Fluxograma:
Sintaxe:
Outro exemplo: Escreva um programa que imprima os nmeros mpares menores que
10.
Algoritmo:
Algoritmo exemplo
inteiro numero;
inicio
para (numero de 1 ate 10 passo 2) faa
escreva (numero);
fim_para
fim
Fluxograma:
UNIDADE 6
ESTRUTURA DE DADOS
HOMOGNEA
DECLARAO DE UM VETOR:
Algoritmo C++
Algoritmo C++
Esse comando armazena o valor 4,5 no ndice 4 do vetor. Observe que o valor
armazenado no ndice 4. Quando observamos o vetor, a posio utilizada a quinta posio,
pois a contagem dos ndices comea no valor zero.
NOTA 0 1 2 3 4 5 6 7 8 9
5.8
A leitura de um vetor feita passo a passo, um de seus componentes por vez, usando a
mesma sintaxe da instruo primitiva da entrada de dados, onde alm do nome da varivel,
deve ser explicitada a posio do componente lido:
Algoritmo C++
Algoritmo C++
Algoritmo C++
algoritmo exemplo #include<iostream>
real NOTA [10]; using namespace std;
inteiro CONT; int main()
inicio {
float NOTA [10];
int CONT;
para (CONT de 0 at 9 passo 1) faa
for (CONT=0;CONT<=9;CONT++)
escreva (Digite valor: );
{
leia (NOTA [CONT]);
cout<<Digite valor: ;
fim_para
cin>>NOTA[CONT];
}
para (CONT de 0 at 9 passo 1) faa
for (CONT=0;CONT<=9;CONT++)
escreva (NOTA [CONT]);
{
fim_para
cout<<NOTA [CONT];
fim }
system(pause);
return 0;
}
Este tipo de estrutura tambm tem sua principal utilizao criao de tabelas.
Caracteriza-se por ser definida uma nica varivel vinculada dimensionada com um
determinado tamanho. A dimenso de uma matriz constituda por constantes inteira e
positivas. Os nomes dados matrizes seguem as mesmas regras de nomes utilizados para
indicar as variveis simples.
A matriz comporta-se como um vetor, com a diferena que ela utiliza o conceito de
linhas e colunas para armazenar dados.
Uma matriz tambm uma varivel que permite o armazenamento de diversos dados
sob um mesmo nome, apresentando posies diferentes identificadas por ndices. A diferena
em relao ao vetor que necessitamos explicitar o ndice da linha e o ndice da coluna, para
identificar a posio desejada na matriz.
Algoritmo C++
O exemplo declara uma matriz do tipo real, com 10 linhas e cinco colunas para
armazenamento de dados. Dessa forma, graficamente, ela teria a aparncia exata de uma
matriz utilizada na Matemtica:
NOTAS
0 1 2 3 4
Algoritmo C++
NOTAS
0 1 2 3 4
0
1
2
3
4 4.5
5
6
7
8
9
A leitura de uma matriz feita passo a passo, um de seus componentes por vez,
usando a mesma sintaxe da instruo primitiva da entrada de dados, onde alm do nome da
varivel, deve ser explicitada a posio do componente lido:
Algoritmo C++
Algoritmo C++
Algoritmo C++
algoritmo exemplo #include<iostream>
real NOTAS [4][2]; using namespace std;
inteiro C1,C2; int main()
inicio {
float NOTAS [4][2];
int C1, C2;
para (C1 de 0 at 3 passo 1) faa
for (C1=0;C1<=3;C1++)
para (C2 de 0 at 1 passo 1) faa
{
escreva (Digite valor: );
for (C2=0;C2<=1;C2++)
leia (NOTAS [C1][C2]);
{
fim_para
cout<<Digite valor: ;
fim_para
cin>>NOTAS[C1][C2];
}
}
para (C1 de 0 at 3 passo 1) faa
for (C1=0;C1<=9;C1++)
para (C2 de 0 at 1 passo 1) faa
{
escreva (NOTAS [C1][C2]);
for (C2=0;C2<=1;C2++)
fim_para
{
fim_para
cout<<NOTAS [C1][C2];
}
}
fim
system(pause);
return 0;
}
Como o algoritmo utiliza uma matriz que possui quantidades diferentes para
linhas e colunas, utilizamos varivel C1, para ser o contador da quantidade de
linhas, e a varivel C2, para ser contador da quantidade de colunas.