Sunteți pe pagina 1din 36

Algoritmia

Conceitos Bsicos

Hlio Vilas
Braga Junho de 2014

Algoritmia Conceitos Bsicos

Indce
Cap 1.

ALGORITMIA ............................................................................................................................................4

1.1. O que um Algoritmo? ................................................................................................................................4


1.2. O Mtodo Top-Down ...................................................................................................................................5
1.3. Tipos de Dados .............................................................................................................................................6
1.3.1. Variveis, Constantes e Identificadores ................................................................................................6
1.3.2. Regras para a construo de Identificadores ........................................................................................6
1.3.3. Classificao dos Tipos de Dados ..........................................................................................................7
1.4. Operadores, Operaes Elementares e Expresses ....................................................................................8
1.4.1. Operadores Aritmticos ........................................................................................................................8
1.4.2. Operadores Relacionais (de comparao) ............................................................................................8
1.4.3. Operadores Lgicos ...............................................................................................................................9
1.4.4. Operadores de Cadeias de Caracteres ..................................................................................................9
1.4.5. Operadores Funcionais ou Funes. .....................................................................................................9
1.4.6. Expresses: Escrita comum e em Programao .................................................................................10
1.4.7. Prioridade dos Operadores .................................................................................................................10
1.5. Noes de Lgica ........................................................................................................................................11
1.5.1. Negao (NOT) ....................................................................................................................................11
1.5.2. Conjuno (AND) .................................................................................................................................11
1.5.3. Disjuno (Or) ......................................................................................................................................11
1.6. Atribuio, Entrada e Sada de dados ........................................................................................................12
1.6.1. Atribuio ............................................................................................................................................12
1.6.2. Entrada de dados.................................................................................................................................12
1.6.3. Sada de dados.....................................................................................................................................12
1.7. Traagem de algoritmos .............................................................................................................................14
1.8. Fluxogramas ...............................................................................................................................................15
1.9. Exerccios Propostos...................................................................................................................................16
Cap 2.

ESTRUTURAS DE CONTROLO .................................................................................................................17

2.1. Estrutura Sequencial ..................................................................................................................................17


2.2. Estruturas Condicionais ..............................................................................................................................18
2.2.1. Estrutura Condicional Simples (Se .. Ento) ........................................................................................18

Hlio Vilas

Pgina 2

Algoritmia Conceitos Bsicos

2.2.2. Estrutura Condicional Dupla (Se .. Ento .. Seno) .............................................................................19


2.2.3. Estrutura Condicional Mltipla (Caso .. Seja) ......................................................................................19
2.3. Estrutura Repetitivas (ou Cclicas) ..............................................................................................................20
2.3.1. Estrutura Enquanto .. Fazer .................................................................................................................21
2.3.2. Estrutura Repetir .. At........................................................................................................................22
2.3.3. Estrutura Para .. Fazer .........................................................................................................................24
2.4. Exerccios Propostos...................................................................................................................................26
Cap 3.

ESTRUTURAS DE DADOS ........................................................................................................................27

3.1. Vetores e Matrizes Arrays .......................................................................................................................27


3.1.1. Operaes sobre Vetores ....................................................................................................................28
3.1.2. Pesquisa de um elemento num Vetor.................................................................................................29
3.1.3. Ordenao dos elementos de um Vetor .............................................................................................29
3.1.4. Matrizes Arrays Multidimensionais..................................................................................................30
3.2. Cadeias de Caracteres strings..................................................................................................................32
3.2.1. Vetores de Cadeias de Caracteres Arrays de Caracteres .................................................................34
3.3. Exerccios Propostos...................................................................................................................................36

Hlio Vilas

Pgina 3

Algoritmia Conceitos Bsicos

CAP 1. ALGORITMIA
1.1. O que um Algoritmo?
Definio: Algoritmo a palavra usada para designar o conjunto de fases de pormenor por que
preciso passar para chegar soluo de um problema (do Latim Algorithmu).

Em Informtica o seu significado similar, i.e., Algoritmo o conjunto ordenado de passos (ou
instrues) para a resoluo sequencial de um problema.
Um computador uma mquina sequencial (executa instrues sequencialmente), pois s inicia a
execuo de uma instruo aps ter terminado a anterior, assim, um algoritmo pode ser visto como a
descrio numa linguagem quase natural (chamada linguagem algortmica, pseudocdigo ou ainda
Portugus estruturado) da sequncia de instrues a ser executada pelo computador para a resoluo
de um problema.

Dado um problema, a sua resoluo num computador ser objeto de um conjunto de fases at se obter
a soluo final. Podemos considerar as trs fases seguintes:
1-

Anlise do problema que implica a compreenso e real definio do problema, o que


realmente se pretende, que dados so fornecidos, desses, quais os necessrios e que outros
teremos que considerar, que resultados iremos obter;

2-

Elaborao do Algoritmo (e/ou Fluxograma) recorrendo ao mtodo de anlise Top-Down e s


estruturas algortmicas adequadas (apresentadas mais frente).

3-

Implementao do Algoritmo obtido numa Linguagem de Programao (no nosso caso a


linguagem Pascal), e sucessivos testes e correes da implementao at se obter a soluo final
ou programa .

Nota:
Sendo o mbito deste curso a formao de tcnicos de informtica, cujas funes podero ser, entre outras, a
de programador, ser importante realar que um programador tem como funo resolver problemas que lhe
so propostos (i.. a prestao de um servio).
Nesta tica, a especificidade da implementao de um problema dever ser transparente para o utilizador final
pois a ele s interessam a entrada de dados (input) e a sada de resultados (output) devendo estas operaes
ser suficientemente claras e objetivas.

Hlio Vilas

Pgina 4

Algoritmia Conceitos Bsicos

1.2. O Mtodo Top-Down


A abordagem de um problema segundo uma conceo descendente, em ingls top-down, um mtodo
de tratamento de problemas do geral para o particular, em que se parte dos pontos mais gerais e por
simplificao (anlise) se chega aos aspetos mais particulares. Diz-se ento que o mtodo Top-Down
consiste na diviso de um problema em problemas cada vez mais pequenos at se obter um nvel de
especificao considerado aceitvel (dividir para reinar).
Poder-se- afirmar que se atingiu um nvel de especificao considerado aceitvel sempre que as
operaes encontradas na anlise top-down possam ser implementadas diretamente usando as
instrues da linguagem algortmica (nvel da linguagem algortmica).
Um problema a ser resolvido num computador, poder sempre ser dividido em pelo menos trs
subproblemas: 1- entrada de dados, 2- clculos e 3- apresentao de resultados. Haver ainda um
quarto que diz respeito terminao do programa e que dever existir em todos os algoritmos. Para
uma melhor compreenso do mtodo top-down observe-se o seguinte exemplo:

Exemplo:
Problema: Dados os valores de dois operandos, calcular a sua soma.
Na anlise do problema constatamos que o utilizador do programa ter que introduzir os dois valores
(quaisquer) dos operandos (entrada de dados) dos quais pretende obter a soma, o computador assimila
esses valores e realiza as operaes necessrias ao clculo do resultado.
Note-se que no enunciado no feita qualquer referncia sada de resultados, no entanto esta ter
que existir para que o resultado da operao possa ser visualizado pelo utilizador.
Aplicando o mtodo top-down o problema fica com o

Algoritmo Soma
1 [Entrada de dados]

seguinte especto:

Leitura dos dois operandos;

Note que numerados e entre parnteses rictos temos


a descrio dos vrios blocos ou subproblemas
obtidos. Faltam especificar as operaes a realizar
nos blocos 1, 2 e 3, no entanto estas operaes
podero

ser

implementadas

diretamente

em

Linguagem Algortmica atravs de instrues simples

2 [Clculos]
Clculo da soma;
3 [Apresentao de resultados]
Apresentao da soma ao utilizador;
4 [Terminar]
Sair (do programa);

tal como veremos mais adiante.

Hlio Vilas

Pgina 5

Algoritmia Conceitos Bsicos

1.3. Tipos de Dados


1.3.1. Variveis, Constantes e Identificadores
O objetivo principal da utilizao de um computador a manipulao de dados1 ou informao2. Os
dados num programa podem ser usados sob a forma de constantes ou variveis:
Constantes so valores que se mantm inalterados durante a execuo de um programa;
Variveis so entidades que podem assumir diferentes valores ao longo da execuo de um
programa.

As constantes podem ser escritas sob a forma de valores diretos ou associadas a identificadores. As
variveis so sempre associadas a identificadores (que por sua vez esto associados a tipos de dados).
Os identificadores so nomes que se atribuem a constantes, variveis ou outros elementos usados
dentro de um programa.

Nota:
De uma forma simplista, uma varivel, pode ser vista como um recetculo onde armazenado um dado valor.

1.3.2. Regras para a construo de Identificadores


Os identificadores (nomes de variveis ou constantes) tm que obedecer s seguintes regras:
1. O primeiro carcter tem que ser uma letra (a..z, A..Z);
2. Os restantes caracteres podem ser letras, algarismos ou o carcter de ligao _ ;
3. O nome no pode conter espaos;
4. As palavras reservadas das linguagens de programao no podem ser usadas;
5. No podem ser usados caracteres acentuados (ex.: , , , , , etc.).
Combinando variveis, constantes e operadores obtm-se expresses. As variveis e constantes esto
sujeitas s operaes possveis de acordo com os seus tipos de dados.

- Dados so elementos primrios, designaes ou representaes simblicas de factos ou medidas.

- Informao so dados estruturados ou organizados entre si em conjuntos significativos.

Hlio Vilas

Pgina 6

Algoritmia Conceitos Bsicos

Exemplos:
Identificadores Vlidos

Identificadores Invlidos

nome

Joo

Var

Max_Min

W52

B3#C

Begin

EB110

soma

!cont

Va lor1

Contador

idade

Read

3soma

1.3.3. Classificao dos Tipos de Dados


Consideram-se os seguintes tipos de dados:

Tipos de Dados

Simples

Em Pascal

1- Inteiro

- Integer

-32768 a 32 767

2- Real

- Real

2,9E-39 a 1,7E38

3- Carcter

- Char

Todos os caracteres ASCII

4- Booleano (Lgico)

- Boolean

Cadeia de Caracteres

Estruturados

Gama de Valores

String
1- Matriz ou Vetor

- Array

2- Registo

- Record

3- Conjunto

- Set

4- Ficheiro

- File

True (V) ou False (F)


1 a 255 caracteres ASCII
A ver mais frente
neste manual
(Captulo 3 e seguintes)

A gama de valores em cada tipo de dados pode ainda variar consoante a linguagem de programao
utilizada.
Exemplos
325 Inteiro

a Carcter

-3457 Inteiro

Carcter (espao)

34574 Real (ultrapassa a gama dos inteiros)

Falso Lgico

2,45E12 Real

bota gel Cadeia de caracteres

2,3*10E-3 Invlido

Bracara Augusta Cadeia de caracteres

Hlio Vilas

Pgina 7

Algoritmia Conceitos Bsicos

1.4. Operadores, Operaes Elementares e Expresses


Os operadores dividem-se em 5 grupos:
1 Aritmticos;
2 Relacionais (ou de comparao);

4 de Cadeias de Caracteres;

3 Lgicos;

5 Funcionais.

1.4.1. Operadores Aritmticos


Designao

Operador

Multiplicao (asterisco)

Diviso (barra slash)

Adio

Subtrao

Diviso Inteira (Truncada)

DIV

Resto da Diviso

MOD

As operaes entre dados do tipo inteiro apresentam resultados inteiros exceo da diviso de dois
inteiros cujo resultado pode ser um real. Os resultados de operaes entre valores reais so sempre
valores reais.

1.4.2. Operadores Relacionais (de comparao)


Designao

Operador

Igual

Diferente

<>

Menor

<

Menor ou igual

<=

Maior

>

Maior ou igual

>=

Todos os tipos de dados podem ser sujeitos a operaes relacionais (ou de comparao), o resultado
assume sempre um de dois valores possveis: verdadeiro (V) ou Falso (F).

Hlio Vilas

Pgina 8

Algoritmia Conceitos Bsicos

1.4.3. Operadores Lgicos


Designao

Operador

Negao

NOT

Conjuno (e lgico)

AND

Disjuno (ou lgico)

OR

Tal como nas operaes relacionais, o resultado das operaes lgicas assume sempre um de dois
valores possveis: verdadeiro (V) ou Falso (F).

1.4.4. Operadores de Cadeias de Caracteres


Designao

Operador

Concatenao

Todos os Relacionais

=, <>, <, <=, >, >=

Exemplos
Infor + mtica = Informtica

Boa Noite < Bom dia (Verdadeiro)

Al + ca + chofra = Alcachofra

Ol < Oi (Falso)

Nota:
Nas operaes de comparao de cadeias de caracteres so utilizados os seguintes critrios:
1 a ordem alfabtica, 2 a quantidade de caracteres e 3 valor do cdigo ASCII (apenas em
algumas linguagens de programao).

1.4.5. Operadores Funcionais ou Funes.


Designao

Operador

Quadrado (Square)

SQR( )

Raiz Quadrada (Square Root)

SQRT( )

Mdulo (valor absoluto)

ABS( )

Seno

SIN( )

Concatenao de duas strings

CONCAT( )

Os operadores funcionais fazem parte da linguagem Pascal e encontram-se reunidos em unidades


(Units bibliotecas de funes ou procedimentos) consoante o assunto a que dizem respeito, por
exemplo a Unit Dos engloba funes e procedimentos relativos ao sistema operativo.
Hlio Vilas

Pgina 9

Algoritmia Conceitos Bsicos

Algumas funes e procedimentos de mbito geral no esto includas em nenhuma biblioteca em


particular fazendo parte da prpria linguagem.

1.4.6. Expresses: Escrita comum e em Programao


Na escrita corrente de expresses vulgar omitirem-se os operadores por serem considerados
implcitos (alis isso mesmo ensinado na matemtica), em programao todos os operadores tm de
ser explicitados ou ocorrero situaes de erro inesperadas. Ento vejamos, a expresso matemtica
2ab2 em programao ser escrita da forma: 2*a*b*b.
Exemplo
Escrita Comum

em programao

3(2a+b2)
3c 2a

3*(2*a+b*b)/(3*c-2*a)

1.4.7. Prioridade dos Operadores


Quando numa expresso figuram variados operadores, torna-se necessrio conhecer as regras de
prioridade (ou precedncia) na execuo das operaes de forma a obter resultados esperados. As
regras de prioridade dos operadores nas Linguagens de Programao so as mesmas que na
Matemtica, primeiro os parnteses e depois conforme a tabela seguinte:

Mais Alta

Mais Baixa

Not

(Operadores Unrios)

Div

Or

<>

<

Mod

>

<=

And

>=

H ainda que considerar duas regras:


1 quando aparecem dois ou mais operadores com igual precedncia, as operaes devem ser
executadas pela ordem apresentada, da esquerda para a direita;
2 Os parnteses alteram a ordem das operaes, funcionando dentro dos parnteses a regra
anterior.

Hlio Vilas

Pgina 10

Algoritmia Conceitos Bsicos

1.5. Noes de Lgica


Os operadores lgicos estabelecem uma relao entre os operandos, tendo como resultado um valor
lgico que ou verdadeiro ou falso.

1.5.1. Negao (NOT)


A negao um operador unrio que opera sobre um valor lgico e d o seu valor negado.
Vejamos a Tabela de Verdade da Negao:
Para designar o operador negao so tambm utilizados
os smbolos: ~ , e

~a

Propriedade da negao:
~(~(a)) = a

1.5.2. Conjuno (AND)


A conjuno um operador lgico binrio (opera sobre dois

ab

operandos) que s d resultado verdadeiro quando os dois

operandos tiverem valor verdadeiro.

Para designar o operador conjuno so tambm utilizados

os smbolos: e

Propriedades da Conjuno:
i) a b = b a (Comutativa)
ii) (a b) c = a (b c) (Associativa)

iv) a 0 = 0 a = 0 (Elemento Absorvente)

iii) a 1 = 1 a = a (Elemento Neutro)

v) a a = a (Idempotncia)

1.5.3. Disjuno (Or)


A disjuno um operador binrio que s d resultado Falso
quando os dois operandos tiverem valor Falso.
Para designar o operador disjuno so tambm utilizados

a+b

os smbolos: + e V

Hlio Vilas

Pgina 11

Algoritmia Conceitos Bsicos

Propriedades da Disjuno:
i) a + b = b + a (Comutativa)
ii) (a + b) + c = a + (b + c) (Associativa)

iv) a + 1 = 1 + a = 1 (Elemento Absorvente)

iii) a + 0 = 0 + a = a (Elemento Neutro)

v) a + a = a (Idempotncia)

1.6. Atribuio, Entrada e Sada de dados


1.6.1. Atribuio
A operao de atribuio consiste em atribuir a uma varivel um valor. Este pode ser um valor
constante ou uma expresso. Esta operao representa-se em Algoritmia pelo smbolo .
Supondo que uma varivel j contem um valor, ao ser-lhe atribudo um outro valor, o segundo vai
sobrepor-se ao primeiro ficando armazenado na varivel o segundo valor. Assim o valor armazenado
numa varivel ser sempre o ltimo valor atribudo a essa varivel.
Z 4, significa que a varivel Z possui a partir deste momento o valor 4. Se tivermos agora cubo Z *
Z * Z, a execuo ser a seguinte: primeiro calculado o valor da expresso (64) e em seguida
atribudo varivel cubo, ou seja, primeiro calculado o segundo membro e s depois efetuada a
atribuio.

1.6.2. Entrada de dados


Outra forma de atribuir valores a variveis pela entrada de dados atravs dos perifricos de entrada
sendo o mais utilizado o Teclado. Quando num programa so introduzidos dados estes tm que ser
armazenados em variveis (endereos de memria) para poderem ser processados. A funo Ler() da
linguagem algortmica, atribui a uma varivel o valor lido de um perifrico de entrada. Esta funo
funciona tal como a atribuio, de forma destrutiva para os valores que as variveis a ler possuam.

1.6.3. Sada de dados


Para visualizar dados ou resultados no exterior, eles tero que ser enviados para um dos perifricos de
sada sada de dados, vulgarmente Monitor e/ou Impressora. A funo algortmica Escrever( )
permite realizar essa ao. Pode-se assim, mostrar os valores que as variveis possuem em
determinado instante ou alertar o utilizador para determinado facto atravs do envio de uma

Hlio Vilas

Pgina 12

Algoritmia Conceitos Bsicos

mensagem (constante do tipo cadeia de caracteres). Observemos um exemplo para melhor


compreenso.
Exemplo
Escrever(Quais as notas dos dois testes)
escrita no ecr a mensagem (cadeia de caracteres) avisando o utilizador sobre introduo de
valores
Ler(nota1, nota2)
O computador fica espera que sejam fornecidos dois valores que guarda nas variveis
Med (nota1+ nota2)/2
Somam-se os valores das variveis, o resultado dividido por 2 e guardado na varivel Med
Escrever(A mdia :, Med)
Escreve no monitor a mensagem (cadeia de caracteres) e o valor da varivel Med

Obs. As funes Ler e Escrever podem manipular um conjunto de uma ou mais variveis (separadas
por vrgulas) tal como se pode ver nas instrues seguintes:
Ler(a)

lida uma varivel;

Ler(b, c)

so lidas duas variveis (os seus valores);

Escrever(a, b)

so apresentados os valores de duas variveis

Escreve(valor de, c)

apresentado o valor de uma varivel.


Algoritmo Soma2

Estamos agora em condies de rescrever o

1 [Entrada de dados]

algoritmo visto atrs (exemplo da soma de dois

Escrever(Primeiro operando:)

nmeros)

Ler(Op1)

usando

as instrues algortmicas

adequadas e segundo o mtodo de anlise top-

Escrever(Segundo operando:)

down.

Ler(Op2)
2 [Clculo da Soma]

Nota:

Soma Op1 + Op2;

Repare na alterao do nome do algoritmo para


Soma2, pois no podem existir identificadores

3 [Apresentao de Resultados]
Escrever(A Soma :, Soma)

repetidos, o nome da varivel e nome do


algoritmo (neste caso).

4 [Terminar]
Sair

Hlio Vilas

Pgina 13

Algoritmia Conceitos Bsicos

1.7. Traagem de algoritmos


Como sabe um algoritmo uma sequncia de instrues (aes) a serem executadas numa ordem bem
definida, sendo cada instruo clara e sem ambiguidades.
Um algoritmo constitudo por um nome (ttulo) que seja sugestivo em relao funo que ele
implementa, a sequncia de aes que resolvem o problema (ver exemplo anterior, algoritmo Soma2),
cada passo deve ter uma descrio e caso tenha mais que uma instruo elas sero executadas pela
ordem que aparecem. O algoritmo termina com a palavra sair.
Pe-se ento a questo: como saber se o algoritmo resolve o que se pretende?
Uma forma de verificar sem a implementao do algoritmo em nenhuma linguagem de programao
ser execut-lo manualmente atravs da simulao das instrues constituintes.
Este processo designa-se por traagem (do ingls dry running).
A traagem consiste na construo de uma tabela com os seguintes elementos por colunas: Passo,
Iterao (a ver no prximo captulo), Variveis e a Sada.
Arbitrando valores de entrada para dos quais se sabe a sada a obter, inicia-se a execuo do algoritmo
sequencialmente registando em cada linha da tabela os valores: o passo, a iterao, os valores das
variveis e atribuies, a(s) sada(s)

que vo acontecendo at se atingir o final do algoritmo,

verificando-se assim se resolveu ou no o problema.


Voltemos a analisar o algoritmo Soma2 e realizando a respetiva traagem tomando 15 e 23 para valores
dos operandos.
Algoritmo Soma2
1 [Entrada de dados]
Escrever(Primeiro operando:)
Ler(Op1)
Escrever(Segundo operando:)
Ler(Op2)
2 [Clculo da Soma]
Soma Op1 + Op2;
3 [Apresentao de Resultados]
Escrever(A Soma :, Soma)
4 [Terminar]
Sair

Obs. O valor esperado para a sada 38, dado que a soma


dos dois operandos 38. Analisemos:
Traagem
Passo

Op1

Op2

Soma

15

23

38

Sada

A Soma : 38

No passo 1 foram lidos os valores dos operandos, no passo 2 e na coluna correspondente foi colocado o
carcter para designar que os valores dos operandos se mantm, ou seja, se pretendesse-mos usar
alguma dessas variveis noutra operao o valor seria o que foi atribudo no passo 1. O passo 4, Sair,
no registado na traagem.

Hlio Vilas

Pgina 14

Algoritmia Conceitos Bsicos

1.8. Fluxogramas
Os Fluxogramas, tambm chamados de diagramas de fluxo, so uma representao grfica de um
algoritmo, descrevendo-o de forma simples e fcil de entender. Esta representao, que utiliza um
conjunto de smbolos, conhecida universalmente, tambm uma das mais antigas e mais utilizadas
embora o seu uso tenha diminudo significativamente com o aparecimento das linguagens de
programao estruturadas.
No desenho de fluxogramas usa-se um conjunto de smbolos dos quais se apresentam apenas os
principais (com interesse a este nvel):
Funo

Smbolo

Incio
Retorno .................................................................................
Retorno
Entrada e Sada de dados .....................................................

Processamento de dados ......................................................

Caixa de Deciso ...................................................................

Vejamos agora o fluxograma correspondente ao nosso, j clebre, algoritmo Soma2.


Inicio

Temos assim o nosso fluxograma constitudo por


cinco smbolos:
1 Incio do fluxograma

Escrever(Primeiro operando:)
Ler(Op1)
Escrever(Segundo operando:)
Ler(Op2)

2 Entrada de dados
3 Processamento
4 Sada de resultados

Soma Op1 + Op2


Escrever(A Soma :, soma)

Fim

5 Fim do fluxograma
Nota:
Repare que no 2 smbolo podiam omitir-se as
instrues Escrever(), ficariam s as instrues
Ler(Op1) e Ler(Op2).

Hlio Vilas

Pgina 15

Algoritmia Conceitos Bsicos

1.9. Exerccios Propostos


1 Identifique o tipo de cada um dos seguintes dados:
Maria dos Prazeres

Falso

8,7345E22

- 2345

3.500$00

45340

2 Qual o resultado de cada uma das seguintes operaes?


34 Mod 10

18 > 14,5

15 <= -27

23 Div 4

3,437 = 422

7*4

3 Transforme as expresses de modo a poderem ser usadas em programao.


3x2 + 7

7(ab2 +1)

52 x 2ab

(x-2)2

ab2

a+b2

4 Diga o que entende por:


a)

Algoritmo;

b)

Mtodo Top-Down;

5 Para os problemas seguintes desenvolva: o algoritmo, fluxograma e traagem (arbitrando, neste


ltimo, valores que lhe paream aceitveis):
a)

Dada a medida do lado de um quadrado, calcular a rea (rea = l x l = l2)

b)

Para um aluno, dadas as notas dos trs perodos calcular a mdia final do ano;

c)

Calcular a rea e permetro de um retngulo, dadas as medidas do comprimento e da largura


(rea = comp x larg e Permetro = 2 x comp + 2 x larg);

d)

Calcular a rea do tringulo dada a medida da base e a altura (rea = b x h /2);

e)

Calcular a rea e o permetro de um crculo (rea = Pi x r2 e Permetro = 2 x Pi x r);

f)

Dados dois operandos calcular a Soma e o Produto;

g)

Calcular a rea do trapzio dadas as medidas das bases e a altura (rea = (B + b)/2 x h);

Hlio Vilas

Pgina 16

Algoritmia Conceitos Bsicos

CAP 2. ESTRUTURAS DE CONTROLO


Na resoluo de um problema frequente surgirem situaes que vo alm do uso sequencial de
instrues. Como por exemplo:
1 - Analisar uma condio ou condies de forma a determinar qual ou quais as aes a executar;
2 - Repetir um conjunto de instrues um determinado nmero de vezes, ou at que se verifique
uma condio ou ainda enquanto se verificar uma condio;
3 - Conjuntos de instrues que se repetem em diversos pontos do programa, havendo interesse em
transforma-las num subprograma, por forma a ser invocado apenas pelo nome e parmetros
respetivos (a tratar posteriormente neste manual).
Temos assim apresentadas as estruturas de controlo usadas em programao. Para melhor
compreenso vejamos o quadro seguinte:

Sequencial ordenao sequencial de instrues


Simples

Estruturas
Condicionais

De
Controlo

Dupla
Mltipla

Repetitivas
(ou Cclicas)

Se ... Ento
Se ... Ento
Seno
Caso ... Seja

Repetir ... At
Enquanto ... Fazer
Para ... Fazer

2.1. Estrutura Sequencial

Inicio

A estrutura de controlo sequencial, consiste na ordenao das instrues de um

Aco 1

algoritmo de modo a que sejam executadas em sequncia sem possibilidade de


omitir nenhuma. Ao lado encontra-se o Fluxograma tpico desta estrutura.

Aco n

Exemplos deste tipo de estrutura so todos os algoritmos vistos at aqui dado que
todas as instrues so executadas sequencialmente.

Hlio Vilas

Fim

Pgina 17

Algoritmia Conceitos Bsicos

2.2. Estruturas Condicionais


As estruturas condicionais realizam uma instruo ou conjunto de instrues (aes) dependendo do
cumprimento ou no de uma condio ou instruo booleana, i.., consoante o valor da condio
verdadeiro (V) ou falso (F).
Existem trs tipos bsicos de estruturas condicionais: simples, dupla e mltipla.

2.2.1. Estrutura Condicional Simples (Se .. Ento)


Esta estrutura caracterizada pela avaliao ou teste de uma condio, i.:
se a condio verdadeira executa uma ao ou conjunto de aes;
se a condio falsa, no efetua qualquer ao e sai do bloco (passa ao seguinte).
apresentado em seguida o fluxograma genrico desta estrutura bem como o algoritmo contemplando
a situao de termos uma instruo ou um conjunto de instrues.
Algoritmo (Sintaxe )
Uma Instruo
Conjunto de Instrues
...

F
Cond
V
Aco 1

Aco n

...

Se (cond) Ento
Inicio
Aco1
...
Aco n
Fim

Se (cond) Ento
Ao
...
...

Nota:
Repare na utilizao dos delimitadores incio e fim quando a estrutura engloba um conjunto de aes
a realizar, situao comum a todas as estruturas exceo da Repetir At(cond).
Exemplo: dados dois nmeros calcular o maior.
Algoritmo Maior
1- [Leitura de dados]
Escrever(Primeiro nmero:)
Ler(a)
Escrever(Segundo nmero:)
Ler(b)

Se (a < b) Ento
Escrever(O maior :, b)
Se (a = b) Ento
Escrever(Os nmeros so iguais)
3- [Terminar]
Sair

2- [Clculo e apresentao do maior]


Se (a > b) Ento
Escrever(O maior :, a)

Hlio Vilas

Pgina 18

Algoritmia Conceitos Bsicos

2.2.2. Estrutura Condicional Dupla (Se .. Ento .. Seno)


Esta estrutura caracterizada pela avaliao ou teste de uma condio, i.:
se a condio verdadeira executa uma ao ou conjunto de aes;
se a condio falsa, executa uma outra ao ou conjunto de aes.
apresentado em seguida o fluxograma genrico desta estrutura bem como o algoritmo contemplando
a situao de termos uma instruo ou um conjunto de instrues.
Algoritmo (Sintaxe )
F

Uma Instruo

Cond
V

...
Se (cond) Ento
Inicio
Aco1
Aco n
Fim
Seno
Inicio
Aco i
Aco x
Fim
...

...

Aco 1

Aco i

Aco n

Aco x

Conjunto de Instrues

Se (cond) Ento
Aco1
Seno
Aco x
...

Exemplo: dado um nmero verificar se positivo, negativo ou zero.


Algoritmo Sinal
Seno
Se (a > 0) Ento
Escrever(O nmero positivo)
Seno
Escrever(O nmero negativo)

1- [Leitura de dados]
Escrever(Qual o nmero:)
Ler(x)
2- [Verificao do sinal]

3- [Terminar]

Se (a = 0) Ento
Escrever(O nmero zero)

Sair

2.2.3. Estrutura Condicional Mltipla (Caso .. Seja)


A estrutura condicional mltipla caracterizada pela avaliao do valor de uma varivel que pode ter
como resultado n (finito) valores distintos (1, 2, 3, ... n) seguindo-se a execuo de uma das n
sequncias de aes distintas.
Sintaxe de uma estrutura refere-se forma que essa estrutura pode tomar (ou algoritmo genrico).

Hlio Vilas

Pgina 19

Algoritmia Conceitos Bsicos

Embora no contemplado por alguns autores ser importante realar que esta estrutura pode conter
um clusula Seno que ser executada quando o valor da varivel no coincidir com nenhum dos n
valores (constantes) possveis.
apresentado em seguida o fluxograma genrico desta estrutura bem como o algoritmo com e sem a
clusula Seno.
Algoritmo (Sintaxe)
Sem Seno

Var
=1

S1

=2

S2

=n

Sn

Seno

Caso (Var) Seja

Sx

Com Seno
Caso (Var) Seja

1: S1

1: S1

2: S2

2: S2

n: Sn

n: Sn
Seno Sx
fim

fim

Var uma varivel e S1, S2, Sn e Sx representam uma instruo ou conjunto de instrues.
A estrutura Caso embora no use delimitador incio necessita ter delimitador fim.
Exemplo: Ler um dia da semana de 1 a 7 e apresentar o respetivo nome.
Algoritmo Dias
1- [Leitura de dados]

5: Escrever(Quinta)
6: Escrever(Sexta)
7: Escrever(Sbado)
Seno
Escrever(Dia Errado!!!)
fim

Escrever(Qual o dia:)
Ler(dia)
2- [Apresentao do nome do dia]
Caso (dia) Seja
1: Escrever(Domingo)
2: Escrever(Segunda)
3: Escrever(Tera)
4: Escrever(Quarta)

3- [Terminar]
Sair

2.3. Estrutura Repetitivas (ou Cclicas)


As estruturas repetitivas (tambm chamadas de cclicas ou iterativas) so indicadas quando existem
tarefas com carcter repetitivo, aplicando tratamento idntico a conjuntos homogneos de dados.
Basta indicar uma vez a sequncia de operaes (aes a realizar) e repeti-las as vezes necessrias.

Hlio Vilas

Pgina 20

Algoritmia Conceitos Bsicos

de extrema importncia a correta definio do controlo do ciclo (nmero de iteraes a efetuar)


podendo mesmo ocorrer um nmero de iteraes diferente do previsto originando naturalmente
resultados errados.
A cada ciclo est associada uma condio cujo valor permitir, ou no, terminar a repetio de aes. O
valor lgico da condio de controlo do ciclo deve ser suscetvel de alterar no decorrer do
processamento, permitindo a paragem (fim do ciclo) caso contrrio estaremos perante um ciclo infinito
que executar um nmero infinito de vezes.

2.3.1. Estrutura Enquanto .. Fazer


Esta estrutura caracteriza-se pela execuo repetida de um processo (ao ou conjunto de aes)
enquanto se verifica o valor lgico verdadeiro de uma condio. Quando o valor lgico for falso
terminar o processamento iterativo. Pode ainda acontecer que a sequncia de aes nunca seja
executada caso a condio seja falsa partida. O teste da condio feito no incio do ciclo. Apresentase a seguir o fluxograma e algoritmo respetivo:
Algoritmo (Sintaxe)

Uma Instruo

Cond
V
Aco 1

Conjunto de Instrues
...
Enq (cond) Fazer

...

Inicio
Aco1

Enq (cond) Fazer


Aco1

Aco n

Aco n
Fim

...
...

Exemplo: Dado um inteiro positivo, calcular a soma de todos os nmeros at esse nmero.
Algoritmo SomaSeq
1- [Inicializaes]
Soma 0
I1
2- [Leitura do nmero]
Escrever(Um nmero positivo:)
Ler(N)

3- [Clculo da Soma]
Enq (I < N) Fazer
Incio
Soma Soma + I
I I +1
fim
4- [Apresentao da Soma]
Escrever(A Soma :, Soma)
5- [Terminar]
Sair
Hlio Vilas

Pgina 21

Algoritmia Conceitos Bsicos

2.3.2. Estrutura Repetir .. At


Esta estrutura permite que um conjunto de aes se repita at que uma determinada condio se
verifique (seja verdadeira). Como o conjunto de aes executado antes do teste da condio, ser
executado pelo menos uma vez. Esta estrutura a aconselhada sempre que se quer fazer a validao de
uma entrada de dados (por exemplo: um nmero positivo).
Fluxograma e algoritmo respetivo:
Algoritmo (Sintaxe)
Uma Instruo
Aco 1

...

...

Repetir

Repetir

Aco n

Conjunto de Instrues

Aco1

Aco1

Aco n

At (cond)

Cond
F

At (cond)

...

...

Nota:
Esta estrutura mesmo quando engloba um conjunto de aes no usa incio e fim.
Exemplo1: Dada uma sequncia de n inteiros positivos, calcular o mximo e a sua posio.

Algoritmo MaxSeq
1- [Inicializaes]
Max 0
I1
2- [Leitura do n de elementos da sequncia]
Repetir
Escrever(N de elementos da seq:)
Ler(N)
At (N > 0)
3- [Leitura da seq. e clculo do mximo]
Repetir
Repetir
Escrever(I, elemento:)
Ler(x)
At (x > 0)

Se (x > Max) Ento


incio
Max x
Pos I
fim
II+1
At (I > N)
4- [Apresentao do Mximo]
Escrever(O Mximo :, Max)
5- [Terminar]
Sair

Hlio Vilas

Pgina 22

Algoritmia Conceitos Bsicos

Repare na necessidade de inicializar o mximo com um valor suficientemente pequeno de forma que o
primeiro nmero lido (positivo) seja superior a ele.

Vejamos outro exemplo, usando agora as estruturas repetir e enquanto com o Fluxograma respetivo:
Exemplo2: Ler um inteiro positivo e escrever os seus algarismos por ordem inversa.
(Ex. 123 > algarismos: 3, 2 e 1).

Algoritmo DaAlgarismos

Fluxograma

1- [Leitura do nmero]

Incio

Repetir
Escrever(Qual o nmero:)

Ler(x)

Ler(x)
At (x > 0)
F

2- [Decomposio e apresentao do n em algarismos]

V
V

Enq (x > 0) Fazer

x>0

x>0

incio

Resto x Mod 10

Resto x Mod 10

Escrever(Resto)
x x Div 10
fim

Escrever(Resto)

3- [Terminar]

x x Div 10

Sair
Fim

Ainda o mesmo exemplo mas transformando o nmero num outro escrito por ordem inversa dos seus
algarismos

Hlio Vilas

Pgina 23

Algoritmia Conceitos Bsicos

Exemplo3: o nmero 123 d o nmero 321.

Algoritmo InvNum
1- [Inicializaes]

Enq (x > 0) Fazer


incio
Resto x Mod 10
Inv Inv * 10 + Resto
x x Div 10
fim

Inv 0
2- [Leitura do nmero]
Repetir
Escrever(Qual o nmero:)
Ler(x)

4- [Apresentao do n invertido]
Escrever(O n invertido :, Inv)

At (x > 0)

5- [Terminar]
Sair

3- [Decomposio do n e clculo do invertido]

2.3.3. Estrutura Para .. Fazer


Esta estrutura realiza a repetio da execuo de um conjunto de aes, sendo controlado
automaticamente o nmero de vezes que o ciclo vai executar. a estrutura adequada sempre que se
conhece previamente o nmero de vezes que o ciclo vai executar (o nmero de iteraes).
Para o referido controlo automtico necessrio definir uma varivel numrica, o seu valor inicial e
final (o incremento fixo e realizado pela prpria estrutura). O ciclo termina quando o valor da varivel
ultrapassar o valor final previamente definido. A condio avaliada no incio de cada iterao.
Vejamos o Algoritmo e respetivo fluxograma.

Algoritmo (Sintaxe)
i 1
at n
V

Aco 1

Uma Instruo

...
Para i 1 at n Fazer
Aco1

Aco n

...

Conjunto de Instrues
...
Para i 1 at n Fazer
Incio
Aco1
Aco n
fim
...

Nota:

Para i 1 at n Fazer, deve ler-se: para i igual a (ou, a tomar o valor) 1 at n fazer.

Hlio Vilas

Pgina 24

Algoritmia Conceitos Bsicos

Toda a estrutura Para .. Fazer pode ser convertida numa Enq .. Fazer. O inverso s verdadeiro se a
condio de sada da estrutura Enq .. Fazer for expressa por uma varivel numrica de incremento
constante (unitrio). Caso se transforme uma estrutura Para .. Fazer numa Enq .. Fazer necessrio
inicializar a varivel de controlo e efetuar o incremento.
Exemplo: Dado um inteiro positivo, calcular a soma de todos os nmeros de 1 at esse nmero.
Algoritmo SomaSeq

3- [Clculo da Soma]
Para i 1 at x Fazer
Soma Soma + I

1- [Inicializaes]
Soma 0
2- [Leitura do nmero]

4- [Apresentao da Soma]

Repetir
Escrever(Um nmero positivo:)
Ler(x)
At (x > 1)

Escrever(A Soma :, Soma)


5- [Terminar]
Sair

Obs. Este exerccio foi resolvido atrs quando da apresentao da estrutura Enq .. Fazer.
Traagem do algoritmo anterior. Valores 0, -1 e 5.
Passo

Iterao

Soma

0
-1
5

1
2

1
2
3
1
2
3
4

1
2
3
4

1
3
6
10

15

Sada

A Soma : 15

Caso a varivel de controlo de um ciclo comece em 1 com incrementos unitrios verificamos que o
valor da varivel coincide com o valor da iterao parecendo esta coluna desnecessria, isto porm,
nem sempre acontece.

Hlio Vilas

Pgina 25

Algoritmia Conceitos Bsicos

2.4. Exerccios Propostos


Para os problemas seguintes desenvolva: o algoritmo, fluxograma e traagem (arbitrando valores que
lhe paream aceitveis):

1-

Dados trs nmeros calcular o maior (se forem iguais deve avisar para esse facto);

2-

Dados dois operandos e uma operao (+, -, / e *) implementar uma calculadora de quatro
operaes (0/n = Erro, sugesto: estrutura caso ... seja);

3-

Ler um nmero inteiro positivo N e escrever todos os nmeros mpares inferiores a N;

4-

Calcular a soma e mdia de uma sequncia de n nmeros (fim = 0);

5-

Dada uma sequncia de n nmeros inteiros contar o nmero de zeros, pares e mpares;

6-

Calcular o valor de uma potncia dados a base e o expoente pertencentes a Z;

7-

Ler um nmero na base 10 e convert-lo para base 2;

8-

Ler um nmero na base 2 e convert-lo para base 10;

9-

Ler um nmero inteiro positivo e verificar se primo;

10 -

Dado um nmero inteiro N calcule todos os nmeros primos inferiores a N.


Nota: um nmero primo se no tiver divisores entre 2 e

Hlio Vilas

n.

Pgina 26

Algoritmia Conceitos Bsicos

CAP 3. ESTRUTURAS DE DADOS


At aqui, apenas se tem falado e trabalhado com dados de tipos simples (inteiro, real, carcter e
booleano ou lgico), ou seja, dados em que cada varivel opera apenas com um determinado valor de
cada vez. No entanto, possvel agrupar um conjunto de dados numa mesma varivel, estando assim
na presena de dados estruturados.
Uma estrutura de dados um conjunto caracterizado pela sua organizao e pelas operaes que se
podem executar sobre a referida estrutura.
Os dados estruturados sobre os quais vai incidir o nosso estudo so os seguintes:
Algoritmia

Pascal

1- Matriz ou Vetor

1- Array

2- Cadeia de Caracteres
3- Registo
4- Conjunto
5- Ficheiro

2- String
3- Record
4- Set
5- File

O tipo cadeia de caracteres pode tambm ser considerado um tipo de dados estruturados pois um
construdo custa de um conjunto de dados do tipo carcter (1 a 255 caracteres ASCII).
Neste captulo vo ser abordados apenas os tipos Matriz e Cadeia de Caracteres (os restantes sero
abordados no Captulo 5 e seguintes)

3.1. Vetores e Matrizes Arrays


Este tipo de dados estruturado o mais comum. Na traduo para portugus pode ser designado como
vetor ou matriz.
Um array (vetor ou matriz) um tipo de dados que agrupa numa mesma varivel um conjunto de
valores do mesmo tipo (inteiro, real, booleano, carcter, cadeia de caracteres, array ou registo).
Pode ser definido como sendo uma estrutura de armazenamento de dados (em memria logo voltil),
ou ainda, um conjunto finito e ordenado de elementos homogneos (do mesmo tipo). Quando se refere
ordenado significa que possvel identificar qualquer um dos seus elementos, i., o 1, 2, 3, etc.

Hlio Vilas

Pgina 27

Algoritmia Conceitos Bsicos

Entende-se por vetor, um array unidimensional que constitudo por uma lista de dados ordenados
segundo um ndice, ndice esse que identifica o nmero de ordem ou posio que cada elemento ocupa
na lista.
O seu armazenamento na memria do computador feito em posies ordenadas e adjacentes,
podendo assim, cada elemento ser considerado como uma varivel simples atribuda a uma posio de
memria.
Exemplo: Vejamos o array Num de n posies.
7

15

-2

...

22

Num[1]

Num[2]

Num[3]

Num[...]

Num[n]

Por exemplo: o valor do array Num na posio 2 referenciado como Num[2] e igual a 15.

3.1.1. Operaes sobre Vetores


Sobre vetores podem realizar-se as seguintes operaes:
1. Atribuio
Fazendo: Num[2] 0 e Num[n] -11 passamos a ter:
7

-2

...

-11

Num[1]

Num[2]

Num[3]

Num[...]

Num[n]

2. Leitura/Escrita
Escrever(Insira o 5 elemento do Array:)
Ler(Num[5]); Na posio 5 do array ficar armazenado o valor introduzido pelo utilizador.
Escrever (Num[1]) apresentar no monitor o valor: 7
Escrever (Num[2]) apresentar no monitor o valor: 15
3. Atualizao: insero, alterao e eliminao de elementos
As operaes de insero, alterao e eliminao podem ser efetuadas atravs da leitura ou
atribuio de valores s posies do array.
4. Pesquisa de um elemento

5. Ordenao dos elementos


As operaes de pesquisa e de ordenao so efetuadas atravs de um conjunto de aes e de
algoritmos prprios, como se descreve nas pginas seguintes.

Hlio Vilas

Pgina 28

Algoritmia Conceitos Bsicos

3.1.2. Pesquisa de um elemento num Vetor


O algoritmo seguinte permite ler os n (n valor genrico) elementos de um vetor A e em seguida l um
outro elemento que ser pesquisado no vetor, i.., verifica se ele existe.

Algoritmo Pesquisa
1- [Inicializaes]
Enc Falso
k1
2- [Leitura do Array]
Para i 1 at n Fazer
incio
Escrever(i, elemento:)
Ler(A[i])
fim

Para se realizar uma ordenao Descendente ou


decrescente basta trocar o operador relacional na
condio do Se de > para <.
Numa traagem com 6 elementos:
7, -2, 0, 150, 18 e 92 obtm-se as seguintes
sequncias at sequncia final (a sombreado)

3- [Leitura do elemento a pesquisar]

Iteraes j

Iteraes i

Escrever(Elemento a pesquisar:)
Ler(x)
4- [Pesquisa]
Enq (( ~ Enc) ( k <= n)) Fazer
incio
Se (x = A[k]) Ento
incio
Enc Verdadeiro
Pos k
fim
kk+1
fim

-2

150

18

92

-2

150

18

92

-2

150

18

92

-2

18

150

92

-2

18

92

150

5- [Apresentao do resultado da pesquisa]


Se (Enc) Ento
Escrever(Elemento encontra-se na posio:, Pos)
Seno
Escrever(O elemento, x ,no existe no array!!!)
6- [Terminar]
Sair

3.1.3. Ordenao dos elementos de um Vetor


Veremos agora como ordenar de forma ascendente ou descendente os elementos de um vetor,
supondo o vetor j preenchido com os respetivos valores.
Hlio Vilas

Pgina 29

Algoritmia Conceitos Bsicos

Algoritmo Ordena (ordenao Ascendente ou Crescente)


1- [Ordenao do vetor]
Para i 1 at n-1 Fazer
Para j i + 1 at n Fazer
Se (A[i] > A[j]) Ento
incio
Aux A[i]
A[i] A[j]
A[j] Aux
fim
2- [Apresentao do vetor ordenado]
Para i 1 at n Fazer
Escrever(A[i])
3- [Terminar]
Sair

3.1.4. Matrizes Arrays Multidimensionais


At ao momento temos tratado de arrays unidimensionais ou vetores, mas pode haver necessidade de
usar arrays bidimensionais ou mesmo multidimensionais.
Os arrays bidimensionais (tabelas) possuem os seus elementos dispostos como se v a seguir e so
identificados por dois ndices, podemos mesmo considerar uma tabela como sendo um vetor de
vetores.
Aspeto genrico de uma matriz:

Esta matriz diz-se que uma matriz de


ordem n x m (ler n por m), i., tem n
linhas e m colunas

A[1,1]

A[1,2]

A[1,3]

A[1,4]

...

A[1,m]

A[2,1]

A[2,2]

A[2,3]

A[2,4]

...

A[2,m]

A[3,1]

A[3,2]

A[3,3]

A[3,4]

...

A[3,m]

A[4,1]

A[4,2]

A[4,3]

A[4,4]

...

A[4,m]

...

...

...

...

...

...

A[n,1]

A[n,2]

A[n,3]

A[n,4]

...

A[n,m]

Em que A[i,j] se refere ao elemento que se encontra matriz A na linha i e na coluna j.


Para a matriz X podemos afirmar:

-5

14

X[1,1]= 7 X[1,2]= -5 X[1,3]= 14

18

X[2,1]= 2 X[2,2]= 0

-1

X[2,3]= 18 e por a adiante.

Hlio Vilas

Pgina 30

Algoritmia Conceitos Bsicos

Exemplo de um problema envolvendo Matrizes.


Problema: Pretende-se um algoritmo que dadas duas matrizes Anxm e Bnxm da mesma ordem (mesmo
n de linhas e o mesmo n de colunas) calcule a matriz Cnxm = Anxm + Bnxm.

Algoritmo SomaMat
1- [Leitura das Matrizes A e B]
Para i 1 at n Fazer
Para j 1 at m Fazer
incio
Escrever(Elemento a,i,j,: )
Ler(A[i,j])
fim
Para i 1 at n Fazer
Para j 1 at m Fazer
incio
Escrever(Elemento b,i,j,: )
Ler(B[i,j])
fim
2- [Clculo da matriz C]
Para i 1 at n Fazer
Para j 1 at m Fazer
C[i,j] A[i,j] + B[i,j]
3- [Apresentao da matriz C]
Para i 1 at n Fazer
Para j 1 at m Fazer
Escrever(C[i,j])
4- [Terminar]
Sair

Nota:
As

matrizes

bidimensionais

so

sempre

processadas por linhas (o mesmo acontecendo


com o seu armazenamento em memria).
Assim, e por exemplo, para a leitura dos
elementos de uma matriz Anxm (n linhas e m
colunas)

temos

dois

ciclos

Para..Fazer

encaixado.
O ciclo exterior percorre a matriz por linhas
(de 1 at n).
O ciclo interior percorre todos os elementos de
uma linha (que igual ao nmero de colunas).

A Multiplicao de Matrizes poder ser tema de um trabalho prtico a implementar mais tarde em
linguagem Pascal.

Note que, para multiplicar duas matrizes condio necessria que o nmero de colunas da
primeira matriz seja igual ao nmero de linhas da segunda, i.., se tivermos as matrizes:
Anxm e Bpxm pela multiplicao A x B iremos obter a matriz Cnxm. Poder considerar 100
como valor limite para linhas e colunas (uma matriz A100x100 de inteiros ocupa 20.000 Bytes
de memria)

Hlio Vilas

Pgina 31

Algoritmia Conceitos Bsicos

3.2. Cadeias de Caracteres strings


Uma cadeia de caracteres uma sequncia de caracteres (letras, algarismos e caracteres especiais e de
controlo, incluindo o espao vazio carcter 255 da tabela ASCII), vulgarmente delimitada por
apstrofes (ou plicas). Uma cadeia de caracteres que no possua nenhum carcter, diz-se uma cadeia
vazia.
Ao nmero de caracteres de uma string chama-se comprimento da string. Em Pascal uma string pode
ter comprimento fixo ou varivel, vejamos um exemplo:
Nome1 : String[10]; a declarao em Pascal de uma string com comprimento fixo de 10;
Nome2: String; a declarao de uma string com comprimento varivel, 1 a 255 caracteres; uma
string em Pascal pode tambm ser tratada como um array de caracteres.

O tipo String no um tipo standard, est contemplado no Turbo Pascal mas no Pascal Padro
designa-se porque Packed Array, tendo no entanto algumas diferenas.
Caracteres da Tabela ASCII:
Alfabticos (a, b, c, ..., z, A, B, ..., Z);
Numricos (0,1,2,3, ..., 9);
Especiais (+, -, %, $, #, &, ..., <, >, ...);
De Controlo (no se escrevem ou imprimem non printable mas desempenham funes
especiais, por exemplo: 7 Bell, 10 Line Feed, 13 Carriage Return, 27 - Escape).

Exemplo: NovaLinha: String[2] = #13#10; Escrever a string NovaLinha equivalente a


carregar em Enter, pois a string contem 2 caracteres de controlo (13 e 10):
#13 Carriage Return pe o cursor no incio da linha atual (coluna 1);
#10 Line Feed muda o cursor para uma nova linha (mantendo a coluna).

Algumas Operaes possveis sobre cadeias de caracteres:


1 - Atribuio ()
Nome Natasha Marisa dos Prazeres e Morais; atribudo o nome entre plicas varivel
do tipo string Nome.
2 - Entrada/Sada Ler( ) e Escrever( )
Escrever(Escreva o seu apelido:); apresentada a string Escreva o seu apelido:

Hlio Vilas

Pgina 32

Algoritmia Conceitos Bsicos

Ler(Apelido); guardado o nome introduzido na varivel Apelido;


3 - Clculo de Comprimento Comp(str)
Comp(str) d como resultado o nmero de caracteres da string;
Comp(Nome) = 36; Nome a varivel usada em 1.
Comp(Maria) = 5
4 - Comparao (usando os operadores relacionais: =, <>, <, <=, >, >=)
Duas cadeias A e B so iguais se:
tiverem o mesmo comprimento;
os caracteres homlogos so iguais;

Obs. Note que o carcter A (ascii 65) diferente do carcter a (ascii 97).

5 - Concatenao +
Esta operao consiste em reunir duas ou mais cadeias de caracteres numa s, conservando,
no entanto, a ordem dos caracteres no interior de cada uma. O operador atua como um
operador aritmtico adicionando a segunda cadeia primeira de forma adjacente.
A Bora l, B estudar, C TLP,
SA++B++C
Escrever(S);
daria como resultado: Bora l estudar TLP
6 - Extrao de parte(s) de uma cadeia Sub( )
Sub(cadeia, incio, comprimento) d a subcadeia da cadeia de caracteres comeando na
posio incio e com o comprimento estabelecido. Exemplos:
Sub(Algoritmo,1,5); daria como resultado: Algor
Sub(Algoritmo,3,4); daria como resultado: gori
7 - Pesquisa Pos( )
Pos(cadeia1, cadeia2) pesquisa a cadeia2 na cadeia1 e d resultado 0 se no encontrar ou
diferente de zero que ser a posio de incio da cadeia2.
Pos(Algoritmo, algor); daria como resultado: 0
Pos(Algoritmo, Algor); daria como resultado: 1
Pos(O Manel e Maria foram festa, x); daria como resultado: 0
Pos(O Manel e Maria foram festa, foram); daria como resultado: 17

Hlio Vilas

Pgina 33

Algoritmia Conceitos Bsicos

8 - Insero Inserir( )
Inserir(cadeia1, posio, cadeia2) insere a cadeia2 na cadeia1 a partir da posio especificada.
Inserir(Quem tolo,5, d tudo o que tem ); resultado: Quem d tudo que tem tolo
Inserir(Hoje cinema, 5, vou ao ); resultado: Hoje vou ao cinema
9 - Eliminao Apagar( )
Apagar(cadeia, posio, comprimento) apaga o comprimento de caracteres na cadeia a partir
da posio especificada.
Apagar(Penso, logo existo!!,11,7); daria o resultado: Penso, logo!!
10 - Converso Valor( ) e Cadeia( )
Valor(cadeia) converte a cadeia para um valor; em pascal Val(s, v, c);
Cadeia(nmero) converte o nmero numa cadeia; em pascal Str(v, s);
Sendo: s string; v Value; c - code;
Exemplos:
Valor(1234) transforma a string 1234 no valor 1234;
Cadeia(456) transforma o nmero 456 na string 456

3.2.1. Vetores de Cadeias de Caracteres Arrays de Caracteres


Um vetor, como j foi dito anteriormente, pode armazenar dados do tipo, entre outros, carcter ou
cadeia de caracteres. Quando o vetor do tipo carcter, armazena em cada posio um elemento desse
tipo ou seja um carcter ascii de 0 a 255. Porm, se o vetor do tipo cadeia de caracteres armazena em
cada posio uma cadeia de caracteres, podendo tambm ser acedidos individualmente.
Esta particularidade pode, numa primeira abordagem, parecer de pouca mas se pensarmos em termos
da entrada/sada de dados do tipo cadeia de caracteres (ex. nomes, moradas, ...) torna-se mais
percetvel a sua importncia.

Seria razoavelmente desagradvel elaborar um algoritmo (programa) para lidar com entrada/sada de
dados deste tipo fazendo o processamento carcter a carcter, seno vejamos um problema exemplo:
Ler os nomes e idades de n alunos de uma turma e orden-los por ordem ascendente de nome.

Hlio Vilas

Pgina 34

Algoritmia Conceitos Bsicos

Algoritmo NomeIdade

(ordenao Ascendente)

1- [Leitura do nmero de alunos]


Repetir
Escrever(Nmero de alunos da turma: )
Ler(n)
At (n > 0)
Nota:
2- [Leitura dos Nomes e Idades]
Para i 1 at n Fazer

O nome do aluno lido de uma s vez, ou


seja, o vetor Nome aqui tratado como

incio

um vetor de cadeias de caracteres ( lida

Escrever(Nome do Aluno n,i,: )


Ler(Nome[i])

uma cadeia de caracteres de cada vez um

Repetir

nome).

Escrever(Idade do Aluno n,i,: )


Ler(Idade[i])
At ((Idade[i]) > 0) (Idade[i]) < 100))
fim

Se assim no fosse os nomes teriam que


ser lidos carcter a carcter o que alm de
fastidioso

exigiria

um

algoritmo

consideravelmente mais elaborado por

3- [Ordenao dos Nomes e Idades]


Para i 1 at n-1 Fazer
Para j i + 1 at n Fazer

forma a simular esta facilidade.

Se (Nome[i] > Nome[j]) Ento


incio
NomAux Nome[i]
Nome[i] Nome[j]
Nome[j] NomAux

A idade do aluno validada num intervalo

IdadAux Idade[i]
Idade[i] Idade[j]
Idade[j] IdadAux
fim

nome e a respectiva idade, i.., quando

que vai de zero a cem anos (por exemplo).


Repare ainda na ordenao, ordenado o

trocado um nome tem que ser efectuada a


troca na idade respectiva.

4- [Apresentao Nomes e Idades Ordenados]

A apresentao de dados feita numa s

Para i 1 at n Fazer
Escrever(Nome[i],..........., Idade[i])

linha, nome e idade.

5- [Terminar]
Sair

Existe ainda um outro tipo de vetores, os vetores de registos, que sero analisados mais frente neste
Manual quando da apresentao do tipo de dados Registo.

Hlio Vilas

Pgina 35

Algoritmia Conceitos Bsicos

3.3. Exerccios Propostos


Para os problemas seguintes desenvolva: o algoritmo e respetivo fluxograma:
1-

Ler um vetor de 20 elementos e um valor a pesquisar nesse vetor. Efetuar a pesquisa e avisar o
utilizador se o elemento existe ou no no vetor e a sua posio.

2-

Ler o total de vendas mensal (em unidades monetrias) de duas lojas durante seis meses e
verificar qual das lojas teve maior volume de vendas nesse semestre.

3-

Dada uma sequncia de n nmeros calcular: o mximo, o mnimo, a diferena entre o mximo e o
mnimo. Dever ainda contar as ocorrncias de elementos da sequncia iguais a essa diferena;

4-

Num concurso para admisso de empregados administrativos, os 100 candidatos selecionados


tero de prestar uma prova de dactilografia com a durao de 5 minutos. Pretende-se elaborar
um algoritmo que dado o nome, o nmero de palavras e o nmero de erros de cada candidato
determine a pontuao e resultado obtidos sabendo que:
Pontuao = [nmero de palavras (12 x nmero de erros)] / 5
e o resultado do teste tem os seguintes valores:
Pontuao < 45 ........................................................ Reprovado
46 < Pontuao < 52 ............................................... Novo Teste
Pontuao > 52 ....................................................... Aprovado

5-

Ler um texto de no mximo 200 caracteres (palavras separadas por um espao) e contar o
nmero de palavras, de vogais e espaos.

6-

Dados dois vetores V1[] e V2[] com 20 elementos cada, adicionar os elementos de ndice impar
colocando o resultado da operao num terceiro vetor Res[]. Caso o ndice seja par, a operao a
realizar deve ser a subtrao.

7-

Ler os nomes dos 20 alunos de uma turma e as notas dos trs perodos e calcular a mdia final
dando indicao sobre o resultado final, aprovado ou reprovado. Um aluno ter como resultado
aprovado se a mdia for maior ou igual a 9.45.

Hlio Vilas

Pgina 36

S-ar putea să vă placă și