Sei sulla pagina 1di 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 2


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 3


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 4


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 5


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 6


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 7


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 8


CURSO: SISTEMAS DE INFORMAO
DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Algoritmos Professora Gellars Tavares ano 2012 9


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 SMBOLO SMBOLO(C++) SMBOLO(PASCAL) SIGNIFICADO


NEGAO ~ ! not NO
CONJUNO ^ && and E
DISJUNO v || or 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 primo E 4 NO mpar = p ^ ~q = (V ^ (~F)) = (V ^ V) = (V)


7 primo E 4 mpar = p ^ q = (V ^ F) = (F)
4 mpar E 7 primo = q ^ p = (F ^ V) = (F)
4 mpar E 7 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 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)

Exemplos de aplicao das operaes lgicas


Resumindo:

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

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


computador o que um algoritmo determinou que devesse ser realizado.
Algoritmos Professora Gellars Tavares ano 2012 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;
2.2 Teclar o nmero desejado; Este algoritmo usa uma
2.3 Conversar; estrutura de deciso
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
2.1 Introduzir o carto; Este algoritmo usa uma
2.2 Teclar o nmero desejado; estrutura de repetio
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

Software Hardware

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 Sada

Dispositivo UCP
de Entrada Dispositivo
de Sada
Memria

Algoritmos Professora Gellars Tavares ano 2012 22


CURSO: SISTEMAS DE INFORMAO
DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Exemplo 1 Exibir a mdia de dois nmeros

Entrada Processamento Sada

Dispositivo UCP Dispositivo


de Entrada de Sada

Memria
6,8 7
(6 + 8) / 2

Exemplo 2 Exibir se o aluno est aprovado ou reprovado

Entrada Processament Sada

Dispositivo UCP
de Entrada Dispositivo
de Sada
Memria

Ana, 5, 3 Ana, reprovado


Se (5+3)/2>=7
aprovado
Seno
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

Baixo Nvel Alto Nvel

Linguagem Linguagem Linguagem


de Assembly de
Mquina (Mnemnica) Alto Nvel
0010 0001 1110 LOAD R1, val1 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 Cdigo em
Assembler
linguagem de linguagem de
assembly. 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 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.

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


objeto, 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 Interpretador Memria
nvel

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 DE BLOCOS,


representao grfica dos passos de uma tarefa.

DIAGRAMA DE CHAPIN Tambm chamado de DIAGRAMA DE NASSI-


SHNEIDERMAN, 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 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.

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 Expresso que simboliza a subtrao do valor de duas variveis.


3 -2 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 Expresso que simboliza a multiplicao do valor de duas variveis.


3*2 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 Expresso que simboliza a diviso do valor de duas variveis.


6 /2 Nesta expresso, o valor retornado a diviso dos valores dados,
que, no caso, ser equivalente a 3.
5 / 2 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 Expresso que simboliza a inteno de achar o valor do resto da


diviso do valor da varivel K pelo valor da varivel Y.
5%2 Nesta expresso, o valor retornado o resto da diviso do primeiro
pelo segundo nmero que, no caso, ser equivalente a 1.
7%4 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 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.

OPERADORES RELACIONAIS: so operadores binrios (de mesma


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 37


CURSO: SISTEMAS DE INFORMAO
DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

Como exemplos de Expresses relacionais tm:

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.

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
F F F
V F F
F V F
V V V

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
F F F
V F V
F V V
V V V

Operador lgico de negao ( no )

Op. Lg. de Negao .no.

Condio Resultado

V F

F V

ORDEM DE PRIORIDADES

Operador Prioridade
Aritmticos 1
Relacional 2
Lgico 3

Algoritmos Professora Gellars Tavares ano 2012 39


CURSO: SISTEMAS DE INFORMAO
DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

UNIDADE 2

LINGUAGEM DE PROGRAMAO

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:

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

strlen(s) tamanho de s sem contar com \0

strchr(s,c) endereo do primeiro /


strrchr(s,c) 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

FUNES NUMRICAS
Biblioteca (cmath)
ceil(x) 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 C++ Pascal
SE <condio> ENTO if <condio> if <condio> then
<conjunto de instrues> <conjunto de instrues> <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++ Pascal


SE (x > 5) ENTO if (x > 5) if (x > 5) then
x x + 1; x = x + 1; x := x + 1;
escreva O valor de x igual a , x; cout<< O valor de x igual a << x; 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 C++ Pascal


SE <condio> ENTO if <condio> if <condio> then
<conjunto de instrues1> <conjunto de instrues1> <conjunto de instrues1>
SENO else else
<conjunto de instrues2> <conjunto de instrues2> <conjunto de instrues2>
FIM SE

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


SE (x > 5) ENTO if (x > 5) if (x > 5)
x x + 1; { begin
escreva O valor de x x = x + 1; x := x + 1;
igual a , x; cout<< O valor de x writeln (O valor de x
SENO igual a << x<<\n; igual a , x);
y y+1; } end
escreva O valor de y else else
igual a , y ; { begin
FIM SE y = y+1; y := y + 1 ;
cout<< O valor de y writeln (O valor de y
igual a << y<< \n ; igual a , y) ;
} 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 C++ Pascal


SE <condio 1> ENTO if <condio 1> if <condio 1> then
SE <condio 2> ENTO if <condio 2> if <condio 2> then
<conjunto de instrues1> <conjunto de instrues1> <conjuntodeinstrues1>
SENO else else
<conjunto de instrues2> <conjunto de instrues2>
<conjunto de instrues2>
else else
FIM SE if<condio3> if <condio 3> then
SENO <conjunto deinstrues3> <conjunto de instrues3>
SE <condio 3> ENTO
<conjunto de instrues3>
FIM SE
FIM SE

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


SE (x > 5) ENTO if (x > 5) if (x > 5) then
SE (nome = Luiz) ENTO if (nome == Luiz) if (nome = Luiz )
escreva Nome = , nome; cout<<Nome = << nome; write(Nome = , nome);
FIM SE else else
SENO if (y > 5) if (y > 5)
SE (y > 5) ENTO { begin
x x + 1; x = x + 1; x := x + 1;
escreva O valor de x igual a , x; cout<<O valor de x write(O valor de x igual
SENO igual a << x; a , x);
SE (k < 4) ENTO } end
y y+1; else else
escreva O valor de y igual a , y ; if (k < 4) if (k < 4)
FIM SE { begin
FIM SE y = y+1; y = y+1;
FIM SE cout<<O valor de y write(O valor de y igual
igual a << y ; 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++ Pascal


ESCOLHA <varivel> switch (varivel) case (varivel) of
CASO <condio 1> : <comando>; { <valor 1> : <comando>;
CASO <condio 2> : <comando>; case<condio 1> : <comando>; <valor 2> : <comando>;
CASO <condio 3> : <comando>; case<condio 2> : <comando>; <valor 3> : <comando>;
SENO : <comando>; case<condio 3> : <comando>; else
FIM ESCOLHA default : <comando>; <comandos>;
} end;

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

Algoritmo C++ Pascal


LEIA valor; cin>>valor; readln(valor);
ESCOLHA (valor) switch (valor) case (valor) of
CASO 1 : escreva valor 1; { 1 : writeln(valor 1);
CASO 2 : escreva valor 1; case 1 : cout<<valor 1; 2 : writeln(valor 1);
CASO 3 : escreva valor 3; case 2 : cout<<valor 2; 3 : writeln(valor 1);
SENO : escreva valor diferente case 3 : cout<<valor 3; else
de 1, 2 ou 3; default : cout<<valor diferente writeln(valor diferente de
FIM ESCOLHA de 1, 2 ou 3; 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, 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>

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


enquanto (condio) faa while (condio) while (condio) do
comandos; { begin
fim_enquanto comandos; comandos;
} end;

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

Algoritmo C++ Pascal


cont 1; cont = 1; cont := 1;
enquanto (cont <= 10) faa while (cont <= 10) while (cont <= 10) do
escreva (cont); { begin
cont cont + 1; cout<<cont<<\n; writeln (cont);
fim_enquanto cont = cont + 1; cont := cont + 1;
//ou cont++; end;
}

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


faa do repeat
comando; { comandos;
enquanto (condio); comandos; until (condio);
} while (condio);

Veremos como fica o mesmo exemplo anterior:

Algoritmo C++ Pascal


cont 1; cont = 1; cont := 1;
faa do repeat
escreva (cont); { writeln (cont);
cont cont + 1; cout<<cont<<\n; cont := cont + 1;
enquanto (cont < 100); cont = cont + 1; // ou cont++ 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 C++ Pascal


para (varivel de valor_inicial at for (inicializao ;condio ;incremento) for varivel := valor_inicial to
valor_final passo 1) faa valor_final do
bloco de comandos; { begin
fim_para bloco de comandos;
bloco de comandos; End;

Veremos o mesmo exemplo:

Algoritmo C++ Pascal


para (cont de 1 at 100 passo 1) for (cont=1 ;cont<=100;cont++) for cont := 1 to 100 do
faa { begin
escreva (cont); writeln (cont);
fim_para cout<<cont<<\n; 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 C++

real NOTA[10]; 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 0 1 2 3 4 5 6 7 8 9
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 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

Algoritmos Professora Gellars Tavares ano 2012 63


CURSO: SISTEMAS DE INFORMAO
DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

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

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

real NOTAS[10][5]; 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 1 2 3 4

Algoritmos Professora Gellars Tavares ano 2012 64


CURSO: SISTEMAS DE INFORMAO
DISCIPLINA: ALGORITMOS
PROFESSORA: GELLARS TAVARES

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

NOTAS [4][2] 4.5; 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 1 2 3 4
0
1
2
3
4 4.5
5
6
7
8
9

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

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

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

Potrebbero piacerti anche