You are on page 1of 67

ALGORITMOS

APOSTILA DE AULA

PROFESSORA GELLARS TAVARES


gellarstavares@yahoo.com.br

2012

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

CONTEDO PROGRAMTICO
Unidade 1 - Fundamentos de Lgica para a Soluo de Problemas:
Soluo de problemas;
Formalizao da soluo de problemas;
Construo de algoritmos;
Representao de algoritmos fluxograma (diagrama de blocos) e pseudocdigo
(portugol).
Unidade 2 Linguagem de Programao:
Apresentao da linguagem de programao;
Sintaxe de comandos da linguagem de programao.
Unidade 3 Estrutura Sequencial:
Caractersticas da estrutura sequencial;
Comandos de incio e fim;
Comando de sada de dados comando escreva;
Variveis conceito;
Declarao de variveis Tipos;
Comando de entrada de dados comando leia;
Comando de atribuio de valores comando ;
Operadores aritmticos (soma, subtrao, multiplicao, diviso, exponenciao, resto
de diviso).
Unidade 4 Estrutura de Deciso:
Caractersticas de estrutura de deciso;
Operadores Relacionais (igual a, diferente de, maior que, menor que, maior ou igual
a e menor ou igual a);
Comando de deciso comando se...ento...seno...fim_se / se...ento...fim_se;
Comandos de deciso aninhados comandos se e comando escolha;
Operadores lgicos (e, ou e no);
Comando de deciso com condies compostas.
Unidade 5 Estrutura de Repetio:
Caractersticas da estrutura de repetio;
Comando de Repetio (teste lgico no incio da repetio)
comando enquanto...faa...fim_enquanto;
Estilos de repetio;
Repetio controlada por contador;
Repetio com limite do contador determinado pelo usurio;
Repetio controlada pelo resultado de uma operao;
Repetio controlada pelo valor da entrada de dados;
Algoritmos Professora Gellars Tavares ano 2012

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Repetio controlada pela resposta do usurio;


Validao de dados de entrada;
Comando de repetio (teste lgico no final da repetio)
comando faa...enquanto;
Comando de repetio (com varivel de controle) comando para...faa...fim_para.
Unidade 6 Estrutura de Dados Homognea:
Matriz unidimensional (vetor);
Conceito de vetor;
Declarao de um vetor;
Incluso de dados em um vetor;
Leitura de dados de um vetor;
Matriz bidimensional (matriz);
Conceito de matriz;
Declarao de uma matriz;
Incluso de dados em uma matriz;
Leitura de dados de uma matriz.

Algoritmos Professora Gellars Tavares ano 2012

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

BIBLIOGRAFIA BSICA
1. FORBELLONE, Andr Luiz Villar; EBERSPACHER, Henri. Lgica de
programao. 3. ed. So Paulo: Makron Books, 2005.
2. ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida
Veneruchi. Fundamentos
da
programao
de
computadores:
Algoritmos, Pascal, C/C++ e Java. 2. ed. So Paulo: Pearson Education,
2008.
3. PUGA, Sandra; RISSETTI, Gerson. Lgica de programao e estrutura
de dados: com aplicaes em Java. 1. ed. So Paulo: Pearson Education,
2003.
BIBLIOGRAFIA COMPLEMENTAR
1. MANZANO, Jos Augusto N. G.; OLIVEIRA, Jayr Figueiredo. Algoritmos:
lgica para desenvolvimento de programao de computadores. 22. ed. So
Paulo: rica, 2009.
2. DASGUPTA,
Sanjoy;
PAPADIMITRIOU,
Christos;
VAZIRANI,
Umesh. Algoritmos. 1. ed. So Paulo: McGraw-Hill Brasil, 2009.
3. FEOFILOFF, Paulo. Algoritmos em linguagem C. 1. ed. Rio de Janeiro:
Campus, 2008.

Algoritmos Professora Gellars Tavares ano 2012

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

UNIDADE 1

Fundamentos de Lgica para a


Soluo de Problemas

Algoritmos Professora Gellars Tavares ano 2012

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

CONCEITOS INTRODUTRIOS DE ALGORITMOS


COMPUTADORES

Dispositivo capaz de executar clculos e tomar decises lgicas em


velocidades milhes, e at bilhes, de vezes mais rpidas do que os
seres humanos;
Computadores processam dados sob o controle de conjunto de
instrues chamado de programas de computador;
Estes programas de computador guiam o computador atravs de
conjuntos ordenados de aes especificados por pessoas chamadas de
programadores de computador.

ESTRUTURA DE UM COMPUTADOR DIGITAL

REPRESENTAO DA INFORMAO

O bit (BInary digiT) a menor unidade de informao existente em um


computador, podendo assumir os valores 0 (zero) e 1 (um), o que tem
relao com a arquitetura do processador;
Para cada dado, o computador utiliza diversos 0 e 1 seguidos:
0011010101001011. Podemos dizer ento que o computador tem como
base o sistema binrio;
A unidade padro de medida na Informtica o Byte (BinarY TErm), que
o conjunto de 8 (oito) Bits. A um caractere (letra, nmero, ou smbolo
especial) associamos um byte, como ilustrado abaixo:

Algoritmos Professora Gellars Tavares ano 2012

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

A ESTRUTURA BSICA DE UM COMPUTADOR DIVIDE-SE EM:


Memria Principal divididas em clulas, registram dados de forma voltil.
De alta velocidade utilizada a todo o momento para fazer armazenagem de
clculos e registro dos programas que so utilizados. Isso significa que ao
executar um programa, ele ser, obrigatoriamente, armazenado na memria
principal para que seja executado.
Memria Secundria Pode apresentar-se em mdia magntica ou ptica e
ser utilizada para armazenar programas e dados objetivando a reutilizao.
Processador Dividido em ULA e UC processa todas as solicitaes oriundas
dos programas que esto sendo executados. Mantm uma pequena memria,
chamada cach, com o objetivo de aumentar a velocidade de processamento.
Dispositivos de E/S Teclado, Mouse, Monitor, Impressora...
LGICA

Cincia que estuda as leis do raciocnio.


Correo/validao do pensamento.
Encadeamento/ordem de idias.
Arte de bem pensar.
modo de raciocinar: as solues dos problemas utilizam a lgica para
serem criadas, ou seja, elas so ordenadas de uma forma que sejam
possveis de ser realizadas e de uma maneira que essa forma seja a mais
adequada para o que se deseja obter.

Exemplos de aplicao da lgica


O quarto est fechado e meu livro est no quarto. Ento, preciso
primeiro abrir o quarto para pegar o livro.
Rosa me de Ana, Paula filha de Rosa, Jlia filha de Ana. Ento,
Jlia neta de Rosa e sobrinha de Paula.
Todo mamfero animal e todo cavalo mamfero. Ento, todo cavalo
animal.
Todo mamfero bebe leite e o homem bebe leite. Ento, todo homem
mamfero e animal (mas no um cavalo).

Algoritmos Professora Gellars Tavares ano 2012

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

PROGRAMAO
O que Programao? = ABSTRAO!
A realidade complexa e rica em detalhes!
ABSTRAO

Realidade
O que voc abstrai dessa realidade?

ABSTRAO
Abstrao = Operao mental que observa a realidade e captura apenas os
aspectos relevantes para um contexto

Algoritmos Professora Gellars Tavares ano 2012

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Algoritmos Professora Gellars Tavares ano 2012

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Voc pode ver uma cabea, um homem, uma mulher e um co?

Algoritmos Professora Gellars Tavares ano 2012

10

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

As bolas parecem se movimentar conforme voc olha..

Algoritmos Professora Gellars Tavares ano 2012

11

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Se voc acha que estes crculos esto em movimento...


Voc est errado! Olhe fixamente somente para um deles...

Algoritmos Professora Gellars Tavares ano 2012

12

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Algoritmos Professora Gellars Tavares ano 2012

13

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Algoritmos Professora Gellars Tavares ano 2012

14

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

NOES DE LGICA
Em Lgica um conceito importante o de Proposio
Proposio: um enunciado verbal, ao qual deve ser atribudo, sem
ambigidade, um valor lgico verdadeiro (V) ou falso (F).
Exemplos de proposies:
Ronaldinho Gaucho jogador de futebol. (V)
3 + 5 == 10 (F)
5 < 8 (V)
Contra-exemplos de Proposies:
Onde voc vai ?
3 + 5
Os estudantes jogam vlei. (Quais?)
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:
OPERAO
NEGAO
CONJUNO
DISJUNO

SMBOLO
~
^
v

SMBOLO(C++)
!
&&
||

SMBOLO(PASCAL)
not
and
or

SIGNIFICADO
NO
E
OU

Definindo a prioridade:
Usar parnteses Ex: ((p v q)^(~q)) ou
Obedecer (~) > (^) > (v)
Exemplos de aplicao das operaes lgicas
Considere:
p = 7 primo = (V)
q = 4 mpar = (F)
Ento:
4 NO mpar = ~q = (~F) = (V)
7 NO primo = ~p = (~V) = (F)
7
7
4
4

primo
primo
mpar
mpar

E
E
E
E

4
4
7
7

NO mpar = p ^ ~q = (V ^ (~F)) = (V ^ V) = (V)


mpar = p ^ q = (V ^ F) = (F)
primo = q ^ p = (F ^ V) = (F)
NO primo = q ^ ~p = (F ^ (~V)) = (F ^ F) = (F)

Exemplos de aplicao das operaes lgicas (Cont.)


Considere:
p = 7 primo = (V)
q = 4 mpar = (F)
Algoritmos Professora Gellars Tavares ano 2012

15

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Ento:
7 primo
7 primo
4 mpar
4 mpar

OU
OU
OU
OU

4
4
7
7

NO mpar = p v ~q = (V v (~F)) = (V v V) = (V)


mpar = p v q = (V v F) = (V)
primo = q v p = (F v V) = (V)
NO primo = q v ~p = (F v (~V)) = (F v F ) = (F)

Exemplos de aplicao das operaes lgicas


Resumindo:
p
V
V
F
F

q
V
F
V
F

~p
F
F
V
V

p^q
V
F
F
F

pvq
V
V
V
F

Ou seja:
No (~) troca o valor lgico. Se for F passa a ser V e viceversa.
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
- Um procedimento passo a passo para a soluo de um problema.
- Seqncia lgica e no ambgua de instrues que levam soluo de
um problema num tempo finito.
- Seqncia lgica de instrues que devem ser seguidas para a resoluo
de um problema ou para a execuo de uma tarefa.

Algoritmo a descrio de um conjunto de comandos que, obedecidos,


resultam numa sucesso finita de aes;
Ao um acontecimento que, a partir de um estado inicial, aps
um perodo de tempo finito, produz um estado final previsvel e
bem definido;
A construo de algoritmo consiste na primeira fase de resoluo de
problemas utilizando-se recursos computacionais. Somente aps a sua
construo, verificao de sua correo e codificao, tem-se um
programa;
Um programa a formalizao de um algoritmo em uma
determinada linguagem de programao, segundo suas regras de
sintaxe e semntica, de forma que o computador possa entender a
seqncia de aes;

Algoritmos Professora Gellars Tavares ano 2012

16

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

A base da boa programao consiste na construo de bons algoritmos.


Alguns passos:
Compreender o problema identificando as suas entradas e sadas;
Desenvolver um procedimento para a soluo do problema;
Verificar manualmente a sua correo;
Codificar o algoritmo;
Execut-lo e test-lo;
Refinar se necessrio, o algoritmo e document-lo.

CARACTERSTICAS BSICAS DE UM 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
Algoritmo Textual Informal
Modo

de preparo de um bolo:
Bata a margarina, as gemas e o acar at ficar cremoso
Junte o leite, o coco e a farinha e continue batendo
Acrescente o fermento e, por ltimo, s claras em neve
Unte uma forma com manteiga e leve ao forno para assar

Algoritmo Textual Informal Refinado


Modo de preparo:
Bata a margarina, as gemas e o acar por 15 minutos
Algoritmos Professora Gellars Tavares ano 2012

17

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Junte o leite, o coco e a farinha e continue batendo por mais 15


minutos
Acrescente 20 g de fermento e, por ltimo, s claras em neve
Unte uma forma com manteiga e leve ao forno para assar por 30
minutos
Ateno:
Um algoritmo uma soluo e no a soluo de um problema.
Um problema pode ser resolvido por mais de um algoritmo!
Tarefas que possuem padro de comportamento podem ser
descritas por um algoritmo.
Ex: Qual ser o prximo nmero das seqncias
a) 0,1,4,9,16,25?
b) 7,8,10,13,17?
LGICA DE PROGRAMAO
Lgica de Programao = o encadeamento lgico de instrues para o
desenvolvimento de programas.
PROGRAMA
Programa = a implementao das instrues (codificao + traduo +
execuo) de um algoritmo em uma linguagem de programao.

Estes programas podem ser escritos em Linguagem de mquina,


ou ainda em linguagens de programao tais como: C, C++,
Cobol, VB, dentre outros.

INSTRUO
Instruo = Informao que representa uma ao elementar que deve ser
executada.
Ateno
O ; (ponto-e-vrgula) indica o fim de uma instruo!
RESUMINDO
Algoritmo sequncia de etapas que visam atingir um objetivo especfico. Por
exemplo, resolver um determinado problema;
Programa - conjunto de comandos especficos que traduzem para
computador o que um algoritmo determinou que devesse ser realizado.
Algoritmos Professora Gellars Tavares ano 2012

o
18

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Existe a necessidade da construo de modelos do mundo real, de forma que


seja possvel traduzir isso para a linguagem de computadores. Os principais
problemas encontrados no desenvolvimento de algoritmos so:
Dificuldade na resoluo de problemas;
Dificuldade na interpretao de enunciados; e
Dificuldade em abstrair e formalizar informaes.
Dessa forma, necessrio desenvolver essas habilidades, comeando pela
soluo de problemas sem a necessidade do uso de ferramentas
computacionais.
Lgica modo de raciocinar: As solues dos problemas utilizam a lgica para
serem criadas, ou seja, elas so ordenadas de uma forma que sejam possveis
de ser realizadas e de uma maneira que essa forma seja a mais adequada para
o que se deseja obter (a ordenao do procedimento da soluo segue uma
lgica de raciocnio; a formalizao dos procedimentos de resoluo de
problemas precisa ser refinada para aproximar-se do que ser aplicado na
prtica: a lgica de programao);
Lgica de programao uso correto das leis do pensamento, da ordem da
razo e de processos de raciocnio e simbolizao formais na programao de
computadores, objetivando racionalidade e o desenvolvimento de tcnicas que
cooperem para a produo de solues logicamente vlidas e coerentes, que
resolvam com qualidade os problemas que se deseja programar
(Forbellone; Eberspacher, 2000).

POR QUE APRENDER ALGORITMOS?


Para desenvolver o raciocnio lgico e conceber uma soluo a um dado
problema, independente de uma linguagem de programao. (Ex:
Pascal, C e Java)

Porque, a partir do algoritmo desenvolvido, fica mais fcil implementar o


respectivo programa.

Segundo grandes pesquisadores...


A noo de algoritmo bsica para toda a programao de
computadores. KNUTH
KNUTH - Professor da Universidade de Stanford e autor da
coleo The art of computer programming.
Algoritmos Professora Gellars Tavares ano 2012

19

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

O conceito central da programao e da cincia da computao


o conceito de algoritmo. WIRTH
WIRTH - Professor da Universidade de Zurique, autor de
diversos livros na rea e responsvel pela criao de
linguagens de programao como ALGOL, PASCAL e MODULA
-2.
Estruturas bsicas de um algoritmo:
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.
Repetio Repita, Enquanto ou Para
Define uma estrutura de iterao condicional (V ou F) ou
contada (predefinida) de instrues.
Algoritmo para ligar de um telefone pblico Seqncia:
Incio
1. Tirar o fone do gancho;
Este algoritmo usa uma
2. Ouvir o sinal de linha;
estrutura de sequncia
3. Introduzir o carto;
Inicio/Fim
4. Teclar o nmero desejado;
5. Conversar;
6. Desligar;
7. Retirar o carto;
Fim.
Algoritmo para ligar de um telefone pblico Seleo
Incio
1. Tirar o fone do gancho;
2. Se ouvir o sinal de linha, ento
2.1 Introduzir o carto;
Este algoritmo usa uma
2.2 Teclar o nmero desejado;
estrutura de deciso
2.3 Conversar;
Se-ento/seno
2.4 Desligar;
2.5 Retirar o carto;
1. Seno
3.1 Ir para o prximo telefone;
Fim.
Algoritmos Professora Gellars Tavares ano 2012

20

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Algoritmo para ligar de um telefone pblico Repetio


Incio {o telefone precisa estar funcionando}
1. Repita
1. Tirar o fone do gancho;
2. Se ouvir o sinal de linha ento
Este algoritmo usa uma
2.1 Introduzir o carto;
estrutura de repetio
2.2 Teclar o nmero desejado;
Repita/At
2.3 Conversar;
2.4 Desligar;
2.5 Retirar o carto;
1. Seno
3.1 Desligar;
4. Continua (S/N)
1. At Continua=N
Fim.

Algoritmo para ligar de um telefone pblico Repetio


E se o telefone chamado estiver com defeito?
E se o telefone chamado estiver ocupado?
E se acabarem os crditos do carto telefnico?
E se...?
normal que um algoritmo sofra melhorias sucessivas.
(Tcnica de refinamentos sucessivos)

Algoritmos Professora Gellars Tavares ano 2012

21

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

SISTEMA COMPUTACIONAL

Sistema
Computacional
Hardware

Software

Peopleware

Programao de Sistema Computacional


A programao de um sistema computacional pode ser resumida em 3
passos bsicos: Entrada, Processamento e Sada.
Arquitetura de Von Newman
Entrada

Processamento

Dispositivo
de Entrada

UCP
Memria

Algoritmos Professora Gellars Tavares ano 2012

Sada

Dispositivo
de Sada

22

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Exemplo 1 Exibir a mdia de dois nmeros


Entrada
Dispositivo
de Entrada

Sada

Processamento

UCP

Dispositivo
de Sada

Memria
6,8

(6 + 8) / 2

Exemplo 2 Exibir se o aluno est aprovado ou reprovado


Entrada

Processament

Dispositivo
de Entrada

UCP

Sada
Dispositivo
de Sada

Memria
Ana, 5, 3

Se (5+3)/2>=7
aprovado
Seno
reprovado

Ana, reprovado

LINGUAGENS DE PROGRAMAO
z O conjunto de instrues, que ser executado pelo processador,
chamado de linguagem de mquina.
z As linguagens de programao so classificadas de acordo com a
similaridade que esta linguagem tem com a linguagem de mquina.

Algoritmos Professora Gellars Tavares ano 2012

23

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Tipos de Linguagens de Programao


1 - Totalmente codificadas em binrio (0s e 1s)
2 - Usam instrues simblicas para representar os 0s e 1s
3 - Voltadas para facilitar o raciocnio humano
Alto Nvel

Baixo Nvel
Linguagem
de
Mquina

Linguagem
Assembly
(Mnemnica)

0010 0001 1110 LOAD R1, val1

Linguagem
de
Alto Nvel
val2 = val1+val2

0010 0010 1111 LOAD R2, val2


0001 0001 0010 ADD R1, R2
0011 0001 1111 STORE R1, val2

Um computador compreende apenas linguagens compostas por nmeros


0s e 1s.
Ento imagina criar um programa utilizando apenas esses nmeros, isso
seria extremamente complicado.
Por esse motivo foi necessrio a criao de um cdigo que relacionasse a
linguagem de mquina a uma linguagem mais fcil de ser compreendida.
Dessa forma, foi criada uma linguagem de montagem (chamada
Assembly) que um cdigo que tem uma instruo alfanumrica para
cada instruo numrica em linguagem de mquina.
Linguagem de baixo nvel
z Para que um programa criado na linguagem Assembly possa ser
entendido pelo computador, necessrio que seu cdigo seja traduzido
para o cdigo de mquina.
z Esta traduo realizada por um programa chamado Assembler.
Cdigo em
linguagem de
assembly.

Assembler

Cdigo em
linguagem de
mquina.

A linguagem Assembly muito prxima da linguagem de mquina, por


esse motivo considerada uma linguagem de baixo nvel.
Cada processador apresenta uma linguagem de Assembly. Dessa forma,
quando for utilizado um programa em processador no compatvel com o
qual foi escrito inicialmente, necessrio que o cdigo tenha que ser
refeito.
Isso chamado de portabilidade.
Algoritmos Professora Gellars Tavares ano 2012

24

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

A implementao de programas na linguagem de baixo nvel ainda


muito complexa. Ento para aumentar a produtividade dos
programadores foram criadas as linguagens de programao de alto
nvel.
So linguagens que independem do processador, apresentam um cdigo
mais elaborado, contemplam operaes mais complexas e mais prximas
da lgica humana.
Entretanto, algumas dependem do sistema operacional a ser executado.
Tradutor
Para serem processadas por um processador as linguagens faz o uso de
um tradutor para a linguagem de mquina, chamado de COMPILADOR
ou INTERPRETADOR.
Compilador

Como o funcionamento do compilador?


O compilador a partir do cdigo em linguagem de alto nvel,
chamado de cdigo fonte, gera um arquivo com o cdigo em
linguagem de mquina conhecida como cdigo-objeto.
Esse cdigo-objeto fica em disco e quando for o momento da sua
execuo ele carregado para a memria.

Cdigo fonte em
linguagem de
alto nvel

Compilador

Cdigo em
linguagem de
mquina.

Caractersticas:
Traduz cada instruo de uma nica vez, independente de quantas
vezes o programa executado.
Tempo de execuo mais rpido.

Algoritmos Professora Gellars Tavares ano 2012

25

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Interpretador

O interpretador, diferente do compilador, no gera um cdigoobjeto, as instrues so traduzidas para a linguagem de mquina em
tempo de execuo.

Caractersticas:
Maior tempo de execuo.
No gera instrues que no sero utilizadas.
Cdigo fonte em
linguagem de alto
nvel

Interpretador

Memria

Traduo de cada
instruo na fase de

VANTAGENS E DESVANTAGENS
Linguagens de Baixo Nvel
Linguagens de baixo nvel: so linguagens voltadas para a mquina, isto
, so escritas usando as instrues do microprocessador do
computador.
Vantagens:
maior velocidade de processamento
menor espao de armazenamento
Desvantagens:
pouca portabilidade
difcil programao
Linguagens de Alto Nvel
` Linguagens de alto nvel: so linguagens voltadas para o ser humano.
Vantagens:
x Por serem compiladas ou interpretadas, tem maior
portabilidade.
x A programao torna-se mais fcil.
Desvantagens:
x Em geral, as rotinas geradas (em linguagem de mquina)
so mais genricas e, portanto mais complexas e por isso
so mais lentas e ocupam mais memria.

Algoritmos Professora Gellars Tavares ano 2012

26

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

` Exemplos de linguagem de alto nvel: Pascal, C, Cobol, Java, entre


outras. Alm disso, os cdigos so portveis.
Linguagem Natural
z No se pode fazer um programa para um computador na linguagem
natural, ou seja, do jeito que escrevemos. Pois a linguagem natural
dirigida para orientar pessoas e no mquinas, quem faz este papel a
linguagem de programao.
z As
linguagens
de
programao
devem
apresentar
algumas
caractersticas, que so:
` Rigidez sinttica: Um compilador consegue fazer tradues sobre um
idioma, com construes muito bem definidas.
` Rigidez semntica: O computador no pode lidar com ambigidades,
dessa forma, um programador deve exprimir sua inteno de forma
exata.
Exemplo: A pessoa ouviu o barulho da janela.
Pode ser interpretado pelo menos de trs maneiras:
x A velhinha ouviu o barulho produzido pela janela.
x A velhinha estava junto janela e ouviu o barulho.
x A velhinha ouviu o barulho que veio atravs da janela.
` Qualquer mquina seria incapaz de interpretar o que realmente est
acontecendo, mesmo que o contexto pudesse ajudar. Por isso, a rigidez
semntica extremamente importante.

Algoritmos Professora Gellars Tavares ano 2012

27

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

EXERCCO: Problema da Torre de Hani - Eduard Lucas em 1883


z Seja a seguinte situao:
z deve-se mover todos os discos do primeiro eixo para o
terceiro mantendo-se a ordem original
z em cada movimento, pode-se mover apenas um disco
z um disco maior nunca poder ser sobreposto por outro
menor

FORMAS DE REPRESENTAR UM ALGORITMO


Algoritmos podem ser representados, dentre outras maneiras, por:
PSEUDOCDIGO Tambm chamado de PORTUGUS ESTRUTURADO
DESCRIO NARRATIVA Linguagem natural para especificar os passos
de uma tarefa
FLUXOGRAMA Tambm chamado de DIAGRAMA
representao grfica dos passos de uma tarefa.

DE

BLOCOS,

DIAGRAMA DE CHAPIN Tambm chamado de DIAGRAMA DE NASSISHNEIDERMAN, diagrama com viso hierrquica e estruturada.
Um algoritmo uma soluo e no a soluo de um problema.
Um problema pode ser resolvido por mais de um algoritmo!

Algoritmos Professora Gellars Tavares ano 2012

28

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Exemplos de representao de um algoritmo

Diagrama de Blocos

Exemplo: Algoritmo para converter uma temperatura em Fahrenheit para


Celsius
Descrio narrativa do algoritmo Fahrenheit-Celsius:
- solicite a temperatura em Fahrenheit;
- transforme a temperatura em Fahrenheit para Celsius;
- informe a temperatura em Celsius.
Fluxograma (Diagrama de Mdulos)
Seus principais smbolos grficos so:

Algoritmos Professora Gellars Tavares ano 2012

29

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Fluxograma do algoritmo Fahrenheit-Celsius

Linguagem algortmica (pseudocdigo)


A forma geral de um algoritmo em pseudocdigo:
Algoritmo <nome_do_algoritmo>
[<declarao_de_variveis>]
Incio
<corpo_do_algoritmo>
Fim.
LINGUAGEM ALGORTMICA (PSEUDO-CDIGO)
Onde:
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).

Algoritmos Professora Gellars Tavares ano 2012

30

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

LINGUAGEM ALGORTMICA (PSEUDO-CDIGO)


Onde:
[<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.
Pseudocdigo do algoritmo Fahrenheit-Celsius

programa Fahrenheit-Celsius
var
real Fahrenheit, Celsius;
incio
leia (Fahrenheit);
Celsius 5 /9 * (Fahrenheit 32);
escreva (Celsius);
fim

Algoritmos Professora Gellars Tavares ano 2012

31

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Tarefas que possuem padro de comportamento podem ser descritas por um


algoritmo.
PSEUDOCDIGO
Incio
real NOTA1, NOTA2, MEDIA;
Leia (NOTA1, NOTA2);
MEDIA := (NOTA1 + NOTA2) / 2;
SE MEDIA >= 5
escreva ( Aprovado );
SENO
escreva ( Reprovado);
Fim

Algoritmos Professora Gellars Tavares ano 2012

32

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

FLUXOGRAMA

VANTAGENS E DESVANTAGENS
Vantagens
Descrio
Narrativa

Fluxograma

Linguagem
Algortmica

Desvantagens

O portugus bastante conhecido Impreciso.


Pouca confiabilidade (a impreciso
por ns.
acarreta a desconfiana).
Extenso (normalmente, escreve-se
muito para dizer pouca coisa).
Padro mundial.
Complica-se medida que o
algoritmo cresce.
Ferramenta bem conhecida.
Pouca ateno aos dados, no
Figuras dizem muito mais que
oferecendo recursos para declar-los.
palavras.
Independncia de linguagem de Exige a definio de uma linguagem
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.

Algoritmos Professora Gellars Tavares ano 2012

33

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

TIPOS DE DADOS PRIMITIVOS

Numricos
Inteiros: dados numricos positivos e negativos pertencentes ao
conjunto de nmeros inteiros, excluindo qualquer valor numrico
fracionrio. Ex. 10, 0, -3, etc.;
Reais: dados numricos positivos e negativos pertencentes ao
conjunto de nmeros inteiros, incluindo qualquer valor numrico
fracionrio e inteiro. Ex. 10, 0, -34.435, etc.;
No-numricos
Caracteres: seqncia de valores delimitados por aspas ( )
formados por letras (de A at Z), nmeros (0 at 9) e smbolos
(%,@,$,...). Este tipo tambm conhecido como alfanumrico,
string, literal ou cadeia. Ex. q, linguagem c++;
Lgicos: dados que sugerem uma nica opo entre duas
possibilidades existentes: verdadeiro ou falso, sim ou no, 1(um)
ou 0 (no).

CONSTANTES

Tudo que fixo, estvel, inaltervel, imutvel, contnuo, invarivel, de


valor fixo;
As constantes no sofrem alteraes ao longo do programa.

Exemplos:
pi = 3.14159265
resultado = aprovado
situacao = .falso.
VARIVEIS

Varivel tudo aquilo que sujeito a variaes, que incerto instvel ou


inconstante;
As informaes variveis so armazenadas na memria do computador;
A memria pode ser vista como um conjunto de gavetas. Para utilizar
uma gaveta preciso identific-la com uma etiqueta. A identificao
feita pelo nome da varivel;
Cada varivel guarda uma informao de cada vez, sendo sempre do
mesmo tipo.
Todo valor atribudo a uma varivel ser feito por meio do smbolo de
atribuio:
em algoritmo: (uma seta)
em C++:
= (igual)
em Pascal:
:= (dois pontos igual)

Algoritmos Professora Gellars Tavares ano 2012

34

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Ex. de declarao de varivel: real nota;


Ex. de atribuio em uma varivel: nota = 5.7;

REGRAS DE DEFINIO DE IDENTIFICADORES

Constantes e variveis so identificadores. As regras de definio de


nomes devem ser observadas:
O primeiro caractere do identificador deve ser sempre alfabtico.
Os demais podem ser alfanumricos;
No podem ser utilizados espaos em branco para formao de
identificadores com nomes compostos. Os nomes devero ser
separados por sublinhado (_);
No podem ser utilizados caracteres especiais;
No podem ser utilizadas palavras reservadas;
Os nomes devem refletir o contedo do identificador;
Exs. Vlidos: nome, nome_usuario, fone1;
Exs. Invlidos: 1X, fone#, inteiro, nome usuario;

OPERADORES ARITMTICOS: so as operaes aritmticas bsicas


Smbolo

Significado

Diviso

Multiplicao

Adio

Subtrao

% ou mod

Resto da diviso de inteiros

div

Quociente da diviso de inteiros

Soma - Na matemtica, representada pelo sinal + e, em expresses em


termos computacionais, pelo mesmo sinal.
A+B
Expresso que simboliza a soma do valor de duas variveis.
2+3
Nesta expresso, o valor retornado a soma dos valores dados, isto
, 5.

Algoritmos Professora Gellars Tavares ano 2012

35

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Subtrao - Na matemtica, representada pelo sinal - e, em expresses em


termos computacionais, pelo mesmo sinal.
A-B
3 -2

Expresso que simboliza a subtrao do valor de duas variveis.


Nesta expresso, o valor retornado o resto, isto , 1.

Multiplicao - Na matemtica, representada pelos sinais x ou. e, em


expresses em termos computacionais, pelo sinal * .
B*D
3*2

Expresso que simboliza a multiplicao do valor de duas variveis.


Nesta expresso, o valor retornado o produto dos valores dados,
isto , 6.

Diviso - Na matemtica, representada pelo sinal

e, em expresses

computacionais, pelo sinal /.


A/B
6 /2
5 / 2

Expresso que simboliza a diviso do valor de duas variveis.


Nesta expresso, o valor retornado a diviso dos valores dados,
que, no caso, ser equivalente a 3.
Nesta expresso, o valor retornado a diviso dos valores dados,
que no caso ser equivalente a 2,5.

% - Resto (em outras linguagens, conhecido como mod). usado em


expresses em termos computacionais quando se deseja encontrar o resto da
diviso de dois nmeros inteiros.
K%Y
5%2
7%4

Expresso que simboliza a inteno de achar o valor do resto da


diviso do valor da varivel K pelo valor da varivel Y.
Nesta expresso, o valor retornado o resto da diviso do primeiro
pelo segundo nmero que, no caso, ser equivalente a 1.
Nesta expresso, o valor retornado o resto da diviso do primeiro
pelo segundo nmero que, no caso, ser equivalente a 3.

Algoritmos Professora Gellars Tavares ano 2012

36

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Observao:
Normalmente, as linguagens de programao assumem que a diviso uma
operao que retorna um valor REAL. Ateno especial, portanto, para
variveis que recebero o resultado de uma diviso.
Em algumas linguagens, quando se divide dois nmeros inteiros, o resultado
ser um inteiro.
PRIORIDADE

Operador
()
*, / ou %
+ ou -

Precedncia
Calculados em primeiro
lugar da esq. p/ dir.
Calculados em segundo
lugar da esq. p/ dir.
Calculados por ltimo da
esq. p/ dir.

OPERADORES RELACIONAIS: so operadores binrios


prioridade) que somente retornam os valores lgicos V ou F.

Smbolo

Significado

== ou =

Igual a

>

Maior que

<

Menor que

>=

Maior ou igual a

<=

Menor ou igual a

!= ou <>

Diferente

Algoritmos Professora Gellars Tavares ano 2012

(de

mesma

37

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Como exemplos de Expresses relacionais tm:


A != B
X == 1
7>6
8<9
1 <= Y
4 >= W

A diferente de B
X igual a 1
7 maior que 6
8 menor que 9
1 menor ou igual ao valor da varivel Y
4 maior ou igual ao valor da varivel W
PRIORIDADE

Operador
()
*, / ou %
+ ou <, <=, > ou >=
== ou !=
=

Precedncia
Calculados em primeiro lugar da esq. p/ dir.
Calculados em segundo lugar da esq. p/ dir.
Calculados em terceiro lugar da esq. p/ dir.
Calculados em quarto lugar da esq. p/ dir.
Calculados em quinto lugar da esq. p/ dir.
Calculados em ltimo lugar da dir.p/ esq.

Estes somente so usados para efetuar comparaes, as quais s podem ser


feitas entre dados do mesmo tipo.
O resultado de uma comparao sempre um valor lgico.

OPERADORES LGICOS OU BOOLEANOS: so usados para combinar


expresses relacionais e lgicas. Tambm retornam como resultado valores
lgicos V ou F.
Operador lgico de disjuno ( e )
Op. Lg. de Disjuno .e.
Cond.1

Cond.2 Resultado

Algoritmos Professora Gellars Tavares ano 2012

38

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Operador lgico de conjuno ( ou )

Op. Lg. de Conjuno .ou.


Cond.1

Cond.2 Resultado

Operador lgico de negao ( no )


Op. Lg. de Negao .no.
Condio

Resultado

ORDEM DE PRIORIDADES

Operador

Prioridade

Aritmticos

Relacional

Lgico

Algoritmos Professora Gellars Tavares ano 2012

39

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

UNIDADE 2
LINGUAGEM DE PROGRAMAO
E

UNIDADE 3
ESTRUTURA SEQUENCIAL

Algoritmos Professora Gellars Tavares ano 2012

40

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

CONSTRUO DE ALGORITMOS EM PSEUDOCODIGO


Para iniciar um algoritmo precisamos dividir o problema em trs fases
fundamentais:
ENTRADA: Dados que alimentam o sistema, informaes inseridas pelo
usurio.
PROCESSAMENTO: Clculos e manipulaes dos dados de entrada.
SADA: Resultado obtido do processamento dos dados.

ENTRADA

PROCESSAMENTO

SADA

Estrutura de um algoritmo:
Na especificao de um algoritmo em Pseudocdigo necessrio o
estabelecimento de uma estrutura a fim de organizar o mesmo em sees. Os
algoritmos desenvolvidos em pseudocdigo possuem a seguinte estrutura:
ALGORTIMO <nome do algoritmo>
<rea de declaraes>
INCIO
<rea de instrues>
FIM
Dentro desta estrutura tem-se as seguintes definies e espaos para
cdigos especficos:
ALGORTIMO: palavra reservada para indicar o incio de um algoritmo;
nome do algoritmo: somente um nome simblico dado ao algoritmo
com a finalidade de distingui-lo dos demais;
rea de declaraes: espao designado para a declarao das
informaes (variveis, constantes, tipos de dados do usurio,
procedimentos e funes) que sero usadas na seqncia lgica de
instrues do algoritmo;

Algoritmos Professora Gellars Tavares ano 2012

41

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

INCIO e FIM: palavras reservadas que delimitam o incio e o fim da


seqncia lgica de instrues ou do algoritmo; e
rea de instrues: espao designado para a especificao da
seqncia lgica de instrues do algoritmo que ser executada para
se atingir seu objetivo.
INSTRUES/COMANDOS PRIMITIVOS:
A manipulao de dados por um algoritmo feita atravs da
especificao de instrues que os manipulam. Dentro os conjuntos de
instruo do pseudocdigo, ou de uma linguagem de computador, so
considerados instrues ou comandos primitivos aquelas que efetuam as
tarefas essenciais para a operao dos computadores, como a entrada e sada
de dados e a movimentao dos mesmos para a memria. So eles, os
comandos de atribuio e de entrada e sada de dados.
COMANDO DE ATRIBUIO:
Quando definimos uma varivel, para a manipulao por nosso
algoritmo, natural que queiramos atribuir a ela algum valor. Uma das formas
de atribuir um valor a uma varivel e, consequentemente colocar este dado
para dentro da memria do computador, atravs de uma atribuio direta do
valor desejado para a varivel. Para tanto, utiliza-se o smbolo de atribuio
() que indica que o valor (ou o resultado da avaliao de uma expresso)
que est direita do smbolo de atribuio ser colocado na posio de
memria indicada pela varivel que est a esquerda do smbolo, conforme a
sintaxe abaixo:
Nome da Varivel Valor ou Expresso
Deste momento em diante, o acesso quele valor se dar atravs da
invocao do nome da varivel. Deve-se ter em mente que, como uma varivel
possui um tipo de dado associado, o valor ou resultado da avaliao de uma
expresso a ser atribudo quela varivel dever ser, obrigatoriamente, do tipo
de dado definido para a varivel. Uma exceo a esta restrio o conceito de
coero, ou seja, a possibilidade de associao de um valor inteiro a uma
varivel do tipo numrico real.

Algoritmos Professora Gellars Tavares ano 2012

42

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Como exemplo poderia ter as seguintes atribuies:


A V;
Resultado 5;
B 5 + 13/4;
Sexo F;
Dolar 1.98;
Nome "JOSE";

Observao: Na linguagem de programao C++, o comando de


atribuio feito pelo = (igual) e em Pascal feito pelo := (dois
pontos igual).
Exemplo de atribuio: Resultado 5;
COMANDOS DE ENTRADA E SADA DE DADOS:
O computador no uma mquina isolada e precisa interagir com o
mundo exterior, quer seja para receber dados fornecidos por um usurio,
colocando-os na memria, quer seja para fornecer ao usurio os resultados de
seus processamentos. Isto feito atravs dos comandos primitivos de entrada
e sada de dados.
Os comandos de sada de dados so a forma pela quais informaes
contidas em sua memria so colocadas em um dispositivo de sada (vdeo,
impressora, etc.) para que o usurio possa apreci-las. A sintaxe de um
comando de sada dada abaixo:
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.
Por outro lado, os comandos de entrada de dados so a forma por
quais dados so fornecidos ao computador atravs de dispositivos de entrada
(inicialmente somente atravs do teclado) e armazenados em sua memria,
nas variveis especificadas no comando de entrada. Desta forma, pode ser
entendido como o inverso de um comando de sada de dados. A sintaxe de um
comando de entrada de dados dada abaixo:
LEIA lista de variveis;

Algoritmos Professora Gellars Tavares ano 2012

43

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

A partir deste ponto, tem o leitor os comandos bsicos necessrios para


especificar as trs fases de um algoritmo (Entrada, Processamento e Sada),
podendo assim desenvolver seus primeiros exerccios.
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

ESTRUTURA SEQUNCIAL SIMPLES


Um algoritmo em estrutura sequncial exprime linhas de comando que
sero executadas apenas uma vez, uma aps a outra.
Apenas a estrutura sequncial em um algoritmo ter uma sada
previsvel, porm, combinada com as estruturas condicionais e de repetio
tornaro essenciais.
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

Algoritmos Professora Gellars Tavares ano 2012

44

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Exemplo usando a linguagem de programao C++:


#include <iostream> //instrui o compilador a usar a biblioteca padro
using namespace std; //uso do namespace padro std (usado no cin , cout)
int main() //cabealho da funo principal (main)
{ //inicio da funo
int A, B, C; //declarao de trs variveis do tipo inteiro
cout<< Digite um valor: ; //escreve na tela o texto entre aspas
cin>>A; //le um valor do teclado e armazena na varivel indicada (A)
cout<< Digite outro valor: ;
cin>> B;

//soma os valores que esto armazenados nas variveis A e B e armazena em C

C = A + B;
cout<< A soma de << A<< e << B<< = << C;
system(pause); //faz com que o sistema fique pausado
return 0; // ela retorna o controle para o sistema operacional.
} //fim da funo

Comentrios em C++
Um comentrio um texto adicionado para explicar (para voc ou outros
programadores) o que est acontecendo com seu cdigo. O comentrio no
tem efeito; serve apenas como documentao.
H dois tipos de comentrios em C++. O comentrio de barra dupla (//), que
chamaremos de comentrio no estilo C++, manda o compilador ignorar tudo
que vem depois das barras at o final da linha.
O comentrio de barra-asterisco (/*), no estilo C, manda o compilador ignorar
tudo o que vem depois at que uma marca de comentrio de asterisco-barra
(*/) seja detectada.

Algoritmos Professora Gellars Tavares ano 2012

45

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Diretivas de compilao:
As diretivas de compilao include e define, so comandos processados
durante a compilao. Elas incluem as bibliotecas e constantes que sero
anexadas quando o programa executvel for criado.
As bibliotecas agrupam funes de acordo com as finalidades, pois se
no fizssemos uso delas, os programas seriam muito extensos e lentos.
Sintaxes:
#include <nome da biblioteca>
#include nome da biblioteca
Onde nome da biblioteca o nome da biblioteca que se deseja incluir.
Estando entre os sinais <e> significa que est no diretrio padro e ficando
entre , significa que precisamos fornecer o caminho onde se encontra a
biblioteca.
Exemplos de bibliotecas:

strcpy(s1, s2)
strcat(s1, s2)
strcmp(s1,s2)
strncpy(s1,s2,n)
strlen(s)

FUNES CHAR
Biblioteca (cstring)
Para armazenar uma string literal numa varivel string ou copiar o contedo de uma varivel string para outra
Concatena s2 no final da s1.
compara, <0 se s1<s2,
0 se s1==s2,
>0 se s1>s2
copia ate n caracteres
tamanho de s sem contar com \0

strchr(s,c)
strrchr(s,c)

endereo do primeiro /
ultimo caractere c em s ou 0

strstr(s,sub)

endereo do primeiro substring em s ou 0

strupr(string)

converte uma string para maiscula

strlwr (string)

converte uma string para minscula

Biblioteca
(ctype)
toupper(char)

Converte um nico caractere para maisculo

tolower(char)

Converte um nico caractere para minsculo

Algoritmos Professora Gellars Tavares ano 2012

46

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

ceil(x)

FUNES NUMRICAS
Biblioteca (cmath)
Arredonda valor real para cima (ex: ceil(3,2) =4)

floor(x)

Arredonda valor real para baixo (ex: ceil(3,2) =3)

sin(x)

seno de um ngulo em radianos

cos(x)

co-seno de um ngulo em radianos

tan(x)

Tangente de um ngulo em radianos

abs(x)

Valor absoluto do nmero inteiro

fabs(x)

Valor absoluto do nmero real

exp(x)

nmero e elevado a potncia x

log(x)

logaritmo natural de x

log10(x)

Logaritmo decimal de x

sqrt(x)

raiz quadrada do nmero

pow(base,exp)

Calcula x elevado a y

Algoritmos Professora Gellars Tavares ano 2012

47

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

UNIDADE 4

ESTRUTURA DE DECISO (OU


SELEO)

Algoritmos Professora Gellars Tavares ano 2012

48

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

ESTRUTURAS DE SELEO
INTRODUO:
Como visto na conceituao de algoritmo, o mesmo preponderantemente
sequncial, ou seja, todas as suas instrues sero executadas, uma nica vez, uma
aps a outra. Entretanto, a complexidade inerente aos problemas a serem resolvidos pelo
computador implica na necessidade de estruturas mais complexas para que algoritmos
possam ser projetados para a sua soluo.
Durante o desenvolvimento de um algoritmo, frequentemente existe a
necessidade de se tomar decises e executar ou no determinadas instrues, de acordo
com o panorama atual de alguns dados. Para tanto foram projetadas as instrues de
seleo ou deciso. Estas permitem definir um conjunto de instrues que podero ser
executadas ou no, dependendo do resultado de um teste realizado em cima de alguns
dados. Desta forma, algumas instrues sero ou no executadas durante a execuo do
programa, interferindo diretamente no andamento do programa, conduzindo a algoritmos
e programas que no so totalmente sequenciais.
As instrues de seleo ou deciso encontradas no pseudocdigo so as
seguintes: estrutura de seleo simples, estrutura de seleo composta, estrutura de
seleo encadeada e estrutura de seleo de mltipla escolha.
ESTRUTURA DE SELEO SIMPLES:
Esta estrutura de seleo permite definir um nico conjunto de instrues ou
comandos que ser ou no executado em funo do resultado da realizao de um teste
sobre os dados. Sua sintaxe dada a seguir:
Algoritmo
SE <condio> ENTO
<conjunto de instrues>

C++
if <condio>
<conjunto de instrues>

Pascal
if <condio> then
<conjunto de instrues>

FIM SE
Nesta estrutura, um teste sobre os dados executado atravs da especificao
de uma expresso a ser avaliada. Tal expresso definida pela clusula <condio>.
Esta, por sua vez, ser avaliada e, em resultando um valor verdadeiro, o <conjunto de
instrues> ser executado. Caso o resultado da avaliao da <condio> no seja
verdadeiro, sero executadas as instrues imediatamente seguintes ao trmino da
estrutura, dada pela palavra reservada FIM SE.
Com exemplo desta estrutura, poderamos ter o seguinte trecho de algoritmo:
Algoritmo

C++

SE (x > 5) ENTO
x x + 1;
escreva O valor de x igual a , x;

if (x > 5)
x = x + 1;
cout<< O valor de x igual a << x;

Pascal
if (x > 5) then
x := x + 1;
write( O valor de x igual a , x);

FIM SE

Algoritmos Professora Gellars Tavares ano 2012

49

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

ESTRUTURA DE SELEO COMPOSTA:


Uma estrutura de seleo composta permite definir dois conjuntos de instrues
passveis de execuo. Estes dois conjuntos de instrues, por sua vez, so excludentes,
ou seja, somente um dos dois ser executado. A escolha de qual dos dois conjuntos de
instrues ser executado depender tambm do resultado da avaliao de um teste
sobre os dados. Desta forma, um deles ser executado quando o resultado da avaliao
do teste for verdadeiro, enquanto o outro somente ser executado quando o resultado da
avaliao do teste for falso. Tal instruo possui a seguinte sintaxe:
Algoritmo
SE <condio> ENTO
<conjunto de instrues1>
SENO
<conjunto de instrues2>
FIM SE

C++
if <condio>
<conjunto de instrues1>
else
<conjunto de instrues2>

Pascal
if <condio> then
<conjunto de instrues1>
else
<conjunto de instrues2>

Alguns autores consideram a estrutura de seleo composta e a estrutura de


seleo simples como uma estrutura nica, tendo a clusula SENO como opcional. Na
estrutura de seleo composta, um teste sobre os dados, especificado na clusula
<condio> ser realizado. Caso o resultado da avaliao deste teste seja verdadeiro, as
instrues constantes no <conjunto de instrues1> sero executadas sendo, em caso
contrrio (o resultado da avaliao do teste falso) as instrues constantes no <conjunto
de instrues2> sero executadas. Aps a execuo de um dos dois conjuntos de
instrues, o fluxo de execuo do algoritmo segue normalmente com as instrues
imediatamente seguintes ao final da estrutura, dado pela palavra reservada FIM SE.
Como exemplo, pode-se ter o seguinte trecho de algoritmo:
Algoritmo
C++
Pascal
if (x > 5)
if (x > 5)
SE (x > 5) ENTO
begin
{
x x + 1;
x := x + 1;
x = x + 1;
escreva O valor de x
igual a , x;
writeln (O valor de x
cout<< O valor de x
igual a , x);
igual a << x<<\n;
SENO
end
}
y y+1;
else
escreva O valor de y else
begin
{
igual a , y ;
y := y + 1 ;
y = y+1;
FIM SE
writeln (O valor de y
cout<< O valor de y
igual a , y) ;
igual a << y<< \n ;
end
}

Algoritmos Professora Gellars Tavares ano 2012

50

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

ESTRUTURA DE SELEO ENCADEADA:

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.

Um exemplo de sintaxe para este estrutura dado abaixo:


Algoritmo
SE <condio 1> ENTO
SE <condio 2> ENTO
<conjunto de instrues1>
SENO
<conjunto de instrues2>
FIM SE
SENO
SE <condio 3> ENTO
<conjunto de instrues3>
FIM SE
FIM SE

C++

Pascal

if <condio 1>
if <condio 2>
<conjunto de instrues1>
else
<conjunto de instrues2>
else
if<condio3>
<conjunto deinstrues3>

if <condio 1> then


if <condio 2> then
<conjuntodeinstrues1>
else
<conjunto de instrues2>
else
if <condio 3> then
<conjunto de instrues3>

O exemplo acima combina duas estruturas de seleo composta, juntamente


com uma estrutura de seleo simples, permitindo a especificao de trs conjuntos de
instrues. Entretanto, somente um deles dever ser executado. A combinao de
estruturas de seleo simples e composta livre, desde que se observe a hierarquizao
das mesmas. Um exemplo deste tipo de combinao pode ser visto no trecho abaixo:
Algoritmo
SE (x > 5) ENTO
SE (nome = Luiz) ENTO
escreva Nome = , nome;
FIM SE
SENO
SE (y > 5) ENTO
x x + 1;
escreva O valor de x igual a , x;
SENO
SE (k < 4) ENTO
y y+1;
escreva O valor de y igual a , y ;
FIM SE
FIM SE
FIM SE

C++

Pascal

if (x > 5)
if (nome == Luiz)
cout<<Nome = << nome;
else
if (y > 5)
{
x = x + 1;
cout<<O valor de x
igual a << x;
}
else
if (k < 4)
{
y = y+1;
cout<<O valor de y
igual a << y ;
}

if (x > 5) then
if (nome = Luiz )
write(Nome = , nome);
else
if (y > 5)
begin
x := x + 1;
write(O valor de x igual
a , x);
end
else
if (k < 4)
begin
y = y+1;
write(O valor de y igual
a , y) ;
end

Algoritmos Professora Gellars Tavares ano 2012

51

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

ESTRUTURA DE SELEO DE MLTIPLA ESCOLHA:


A seleo escolha-caso permite inserirmos mltiplas condies com apena um
teste.
A vantagem que o algoritmo poder descrever vrios blocos de execuo e o
teste, no necessariamente ser lgico.
Um exemplo de sintaxe para este estrutura dado abaixo:

Algoritmo

C++

ESCOLHA <varivel>
CASO <condio 1> : <comando>;
CASO <condio 2> : <comando>;
CASO <condio 3> : <comando>;
SENO : <comando>;
FIM ESCOLHA

switch (varivel)
{
case<condio 1> : <comando>;
case<condio 2> : <comando>;
case<condio 3> : <comando>;
default : <comando>;

Pascal
case (varivel) of
<valor 1> : <comando>;
<valor 2> : <comando>;
<valor 3> : <comando>;
else
<comandos>;
end;

Como exemplo, pode-se ter o seguinte trecho de algoritmo:

Algoritmo

C++

Pascal

LEIA valor;
ESCOLHA (valor)
CASO 1 : escreva valor 1;
CASO 2 : escreva valor 1;
CASO 3 : escreva valor 3;
SENO : escreva valor diferente
de 1, 2 ou 3;
FIM ESCOLHA

cin>>valor;
switch (valor)
{
case 1 : cout<<valor 1;
case 2 : cout<<valor 2;
case 3 : cout<<valor 3;
default : cout<<valor diferente
de 1, 2 ou 3;

readln(valor);
case (valor) of
1 : writeln(valor 1);
2 : writeln(valor 1);
3 : writeln(valor 1);
else
writeln(valor diferente de
1, 2 ou 3);
end;

Algoritmos Professora Gellars Tavares ano 2012

52

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

UNIDADE 5

ESTRUTURA DE REPETIO

Algoritmos Professora Gellars Tavares ano 2012

53

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

ESTRUTURAS DE REPETIO
INTRODUO:
Quando uma sequncia de comandos deve ser executada repetidas vezes, temse 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>
Uma varivel acumuladora uma varivel que recebe um valor inicial,
geralmente 0 (zero) antes do incio de uma estrutura de repetio e o valor
acumulado no interior da estrutura de um valor varivel:
soma 0;
<estrutura de repetio>
soma soma + valor;
<fim da estrutura de repetio>

Algoritmos Professora Gellars Tavares ano 2012

54

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Existem trs estruturas de repetio disponveis: para (for), enquanto


(while) e repita ou faa-enquanto (do-while). Em todas as estruturas estar
presente pelo menos uma expresso para controlar a repetio.
Estrutura de repetio: ENQUANTO (while)
O comando enquanto testa primeiro a condio e executa se a condio for
verdadeira, caso seja falsa, no executa. Ou seja, a estrutura do enquanto repete
enquanto a condio for verdadeira.
A varivel usada na condio deve ser inicializada antes da condio e alterada
dentro da repetio, pois seno ficar em loop (repetio) sem parar.

Sintaxe:

Algoritmo
enquanto (condio) faa
comandos;
fim_enquanto

C++
while (condio)
{
comandos;
}

Pascal
while (condio) do
begin
comandos;
end;

Exemplo usando a estrutura: Imprimir os nmeros de 1 at 100.

Algoritmo
cont 1;
enquanto (cont <= 10) faa
escreva (cont);
cont cont + 1;
fim_enquanto

C++
cont = 1;
while (cont <= 10)
{
cout<<cont<<\n;
cont = cont + 1;
//ou cont++;
}

Algoritmos Professora Gellars Tavares ano 2012

Pascal
cont := 1;
while (cont <= 10) do
begin
writeln (cont);
cont := cont + 1;
end;

55

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Representao em Fluxograma:

Vamos entender o que o trecho acima esta realizando (teste de mesa):

1- A varivel chamada cont inicializada com valor 1.


2- A condio para que haja repetio que enquanto o valor da varivel cont
apresentar valor menor ou igual a 10, os comandos sero repetidos. Logo, o
primeiro teste realizado se o valor 1 que esta armazenado na varivel cont
menor ou igual a 10. Como o resultado do teste verdadeiro, so executados
os comandos que esto logo abaixo do teste.
3- Escreve cont, ou seja, escreve o nmero 1 na tela.
4- A varivel cont recebe o valor dela mais 1, ou seja, a varivel cont passa a
armazenar o valor 2.
5- feito um novo teste, agora testa se o valor 2 que est na varivel cont
menor ou igual a 10, como o resultado verdadeiro, escreve na tela o valor 2
a varivel cont novamente varia o valor para 3.
6- Estes passos sero repetidos at que o valor da varivel cont seja 11 onde ser
feito mais um teste e o resultado ser falso, pois o valor 11 no menor que
10, dando ento encerramento da repetio.

Algoritmos Professora Gellars Tavares ano 2012

56

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Estrutura de repetio: REPITA OU FAA-ENQUANTO (do-while)

Esta estrutura parecida com a estrutura do ENQUANTO (while). Sua diferena


que o bloco executado pelo menos uma vez, pois ao contrrio do enquanto, o
teste ser feito ao final. Esta estrutura repete enquanto a condio for verdadeira.

Sintaxe:
Algoritmo
faa
comando;
enquanto (condio);

C++
do
{
comandos;
} while (condio);

Pascal
repeat
comandos;
until (condio);

Veremos como fica o mesmo exemplo anterior:


Algoritmo
cont 1;
faa
escreva (cont);
cont cont + 1;
enquanto (cont < 100);

C++
cont = 1;
do
{
cout<<cont<<\n;
cont = cont + 1; // ou cont++

Pascal
cont := 1;
repeat
writeln (cont);
cont := cont + 1;
until (cont >100);

} while (cont <=100);

Diferenas entre o enquanto e o repita:


a) o enquanto testa para entrar no lao
o repita testa para sair do lao e no usa inicio...fim
b) o enquanto pode no ser executado
o repita executa pelo menos uma vez
c) a condio do repita inversa da condio do enquanto, j no enquanto testa
para entrar no lao e no repita testa para sair do lao (entrar e sair so
operaes inversas)
d) o resultado final entre um enquanto e um repita podem ser diferentes. Portanto
o repita s deve ser usado se for executado pelo menos uma vez.

Algoritmos Professora Gellars Tavares ano 2012

57

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Outro exemplo: Escreva um programa que permita a introduo do nmero do ms de


nascimento
Representao em Algoritmo:

Algoritmo exemplo
inteiro mes
inicio
faa
leia (mes);
enquanto (mes < 0 e mes >= 12);
escreva ("o mes " , mes);
fim

Representao em Fluxograma:

Algoritmos Professora Gellars Tavares ano 2012

58

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Estrutura de repetio: PARA (for)

a estrutura mais indicada quando o nmero de repeties for conhecido embora,


as outras duas estruturas tambm possam ser usadas. O controle do nmero de
repeties, na maioria das vezes, feito por uma varivel chamada de varivel
contadora.

Sintaxe:

Algoritmo
para (varivel de valor_inicial at
valor_final passo 1) faa
bloco de comandos;
fim_para

C++
for (inicializao ;condio ;incremento)
{
bloco de comandos;

Pascal
for varivel := valor_inicial to
valor_final do
begin
bloco de comandos;
End;

Veremos o mesmo exemplo:


Algoritmo
para (cont de 1 at 100 passo 1)
faa
escreva (cont);
fim_para

C++
for (cont=1 ;cont<=100;cont++)
{
cout<<cont<<\n;

Pascal
for cont := 1 to 100 do
begin
writeln (cont);
end;

Algoritmos Professora Gellars Tavares ano 2012

59

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

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:

Algoritmos Professora Gellars Tavares ano 2012

60

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

UNIDADE 6

ESTRUTURA DE DADOS
HOMOGNEA

Algoritmos Professora Gellars Tavares ano 2012

61

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

ESTRUTURAS DE DADOS HOMOGNEAS


MATRIZ UNIDIMENSIONAL (VETOR):
As estruturas de dados homogneas permitem agrupar diversas informaes dentro de
uma mesma varivel. Este agrupamento ocorrer obedecendo sempre ao mesmo tipo de dado,
e por esta razo que estas estruturas so chamadas homogneas.
A utilizao deste tipo de estrutura de dados recebe diversos nomes, como: variveis
indexadas, variveis compostas, variveis subscrita, arranjos, vetores, matrizes, tabelas em
memria ou arrays. Os nomes mais usados e que utilizaremos para estruturas homogneas
so: matrizes (genrico) e vetores (matriz de uma linha e vrias colunas).
DECLARAO DE UM VETOR:
Este tipo de estrutura em particular tambm denominado por profissionais da rea
como matrizes unidimensionais. Sua utilizao mais comum est vinculada 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 inteiras e
positivas. Os nomes dados s matrizes seguem as mesmas regras de nomes utilizados para
indicar as variveis simples.
A sintaxe do comando de definio de vetores a seguinte:
<tipo do elemento> <nome da varivel> <quantidade de posies>
Algoritmo
real NOTA[10];

C++
float NOTA[10];

ATRIBUIO DE VALORES EM VETORES:


Para atribuir valor a uma posio de um vetor, utilizamos o mesmo comando de
atribuio de valor visto anteriormente. A diferena que necessitamos explicitar em qual
ndice (posio) do vetor desejamos atribuir o valor. Observe o exemplo:
Algoritmo

C++

NOTA [4] 5.8;

NOTA [4] = 5.8;

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.
Algoritmos Professora Gellars Tavares ano 2012

62

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

NOTA

5.8
Na atribuio de valores para um vetor, podemos utilizar qualquer detalhe que
observamos at aqui, isto , podemos atribuir um valor diretamente pode atribuir o valor de
uma varivel ou podemos atribuir o resultado de uma operao (aritmtica).

LEITURA DE DADOS EM VETORES:


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

leia NOTA [4];

cin>>NOTA [4];

ESCRITA DE DADOS EM VETORES:


A escrita de um vetor obedece mesma sintaxe da instruo primitiva de sada de
dados e tambm vale lembrar que, alm do nome do vetor, deve-se tambm especificar por
meio do ndice o componente a ser escrito:
Algoritmo

C++

escreva NOTA [4];

cout<<NOTA [4];

Uma observao importante a ser feita a utilizao da estrutura de repetio PARA a


fim de efetuar a operao de leitura ou escrita repetidas vezes, em cada uma delas lendo ou
escrevendo um determinado componente do vetor. Esta construo bastante comum quando
se trabalha com vetores, devido necessidade de se realizar uma mesma operao com os
diversos componentes dos mesmos. Na verdade, so raras as situaes que se deseja operar
isoladamente com um nico componente do vetor.
Exemplo utilizando a estrutura de repetio para entrada e sada de dados com vetor:
Algoritmo
algoritmo exemplo
real NOTA [10];
inteiro CONT;
inicio
para (CONT de 0 at 9 passo 1) faa
escreva (Digite valor: );
leia (NOTA [CONT]);
fim_para
para (CONT de 0 at 9 passo 1) faa
escreva (NOTA [CONT]);
fim_para

C++
#include<iostream>
using namespace std;
int main()
{
float NOTA [10];
int CONT;
for (CONT=0;CONT<=9;CONT++)
{
cout<<Digite valor: ;
cin>>NOTA[CONT];
}
for (CONT=0;CONT<=9;CONT++)
{

Algoritmos Professora Gellars Tavares ano 2012

63

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

cout<<NOTA [CONT];
}
system(pause);
return 0;
}

fim

MATRIZ BIDIMENSIONAL (MATRIZ):


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.

DECLARAO DE UMA MATRIZ:


necessrio explicitar a quantidade de linhas e a quantidade de colunas que a matriz
ter (exatamente nessa ordem).
Algoritmo
real NOTAS[10][5];

C++
float NOTAS[10][5];

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

0
1
2
3
4
5
6
7

Algoritmos Professora Gellars Tavares ano 2012

64

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

8
9

ATRIBUIO DE VALORES EM MATRIZES:

A atribuio segue o mesmo conceito apresentado para os vetores. A diferena


que necessitamos explicitar os ndices de linha e coluna, da posio na qual
desejamos atribuir o valor. Observe o exemplo:
Algoritmo

NOTAS [4][2] 4.5;

C++

NOTAS [4][2] = 4.5;

Esse comando armazena o valor 4.5 no ndice de linha 4 e no ndice de linha 2


da matriz. A posio encontra-se no cruzamento dos ndices utilizados no comando.
NOTAS
0
0
1
2
3
4
5
6
7
8
9

4.5

LEITURA DE DADOS EM MATRIZES:


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
Algoritmos Professora Gellars Tavares ano 2012

C++

65

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

leia NOTAS [4][2];

cin>>NOTAS[4][2];

ESCRITA DE DADOS EM MATRIZES:


A escrita de uma matriz obedece mesma sintaxe da instruo primitiva de sada de
dados e tambm vale lembrar que, alm do nome do vetor, deve-se tambm especificar por
meio do ndice o componente a ser escrito:
Algoritmo

C++

escreva NOTAS [4][2];

cout<<NOTAS [4][2];

Da mesma forma que utilizamos a estrutura de repetio PARA a fim de efetuar a


operao de leitura ou escrita repetidas vezes, em cada uma delas lendo ou escrevendo um
determinado componente do vetor, utilizaremos na matriz tambm.
Exemplo utilizando a estrutura de repetio para entrada e sada de dados com matriz:
Algoritmo
algoritmo exemplo
real NOTAS [4][2];
inteiro C1,C2;
inicio
para (C1 de 0 at 3 passo 1) faa
para (C2 de 0 at 1 passo 1) faa
escreva (Digite valor: );
leia (NOTAS [C1][C2]);
fim_para
fim_para

para (C1 de 0 at 3 passo 1) faa


para (C2 de 0 at 1 passo 1) faa
escreva (NOTAS [C1][C2]);
fim_para
fim_para

fim

C++
#include<iostream>
using namespace std;
int main()
{
float NOTAS [4][2];
int C1, C2;
for (C1=0;C1<=3;C1++)
{
for (C2=0;C2<=1;C2++)
{
cout<<Digite valor: ;
cin>>NOTAS[C1][C2];
}
}
for (C1=0;C1<=9;C1++)
{
for (C2=0;C2<=1;C2++)
{
cout<<NOTAS [C1][C2];
}
}
system(pause);
return 0;
}

O algoritmo possui dois pares de comandos de repetio (comando para). O


primeiro par serve para ler os dados e armazenar o valor na matriz; o segundo, para
apresentar todos os valores armazenados na matriz;

Algoritmos Professora Gellars Tavares ano 2012

66

CURSO: SISTEMAS DE INFORMAO


DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Em cada par de comandos para, utilizamos o primeiro comando para manipular


os ndices das linhas, e o segundo para manipular os ndices das colunas;
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.

Algoritmos Professora Gellars Tavares ano 2012

67

You might also like