Você está na página 1de 42

Neste Manual está presente a Matéria

Teórica das duas UCFC’s principais na


iniciação das Linguagens de Programação.
Contém exercícios propostos

Manual
UFCD 6051
e 6052
Curso Técnico de Eletrónica,
Automação e Computadores


Professora Ana Reis

0
Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Índice
1. OS COMPUTADORES E AS LINGUAGENS DE PROGRAMAÇÃO .................................. 3
1.1. Linguagens de Programação ........................................................................................ 3
1.2. Classificação das Linguagens de Programação ............................................................. 3
1.3. Programas ................................................................................................................... 3
1.3.1. Fases de Elaboração de um Programa....................................................................................... 4
1.3.2. Programas Tradutores ............................................................................................................... 4

1.4. Estruturas de Informação ............................................................................................ 5


1.4.1. Classificação dos Dados ............................................................................................................. 5

1.5. Operadores ................................................................................................................. 6


1.5.1. Prioridade dos Operadores........................................................................................................ 7

1.6. Expressões .................................................................................................................. 7


1.7. Identificadores, Variáveis e Constantes ....................................................................... 8
Exercícios ........................................................................................................................... 8

2. ALGORITMOS - FORMULAÇÃO DE SOLUÇÕES ......................................................... 9


2.1. Algoritmo .................................................................................................................. 10
2.1.1. Características De Um Bom Algoritmo .................................................................................... 10

2.2. Representação De Algoritmos ................................................................................... 10


2.2.1. Fluxogramas ............................................................................................................................ 10
2.2.2. Pseudocódigo .......................................................................................................................... 12

2.3. Estruturas de Controlo .............................................................................................. 12


2.3.1. Estrutura Sequencial................................................................................................................ 13
2.3.2. Estruturas De Decisão Ou Seleção ........................................................................................... 13
2.3.3. Estruturas De Repetição Ou Ciclos .......................................................................................... 19
2.3.3.1. Estruturas Baseadas Numa Condição ................................................................................... 20

Exercícios Resolvidos ....................................................................................................... 24


Exercícios Para Resolver:.................................................................................................. 29

3. ESTRUTURAS DE DADOS....................................................................................... 30
3.1. Vetores e Matrizes .................................................................................................... 30
3.1.1. Operações Com Matrizes ........................................................................................................ 32

3.2. Cadeias De Caracteres ............................................................................................... 34


3.3. Ficheiros ................................................................................................................... 35
3.3.1. Caracterização Dos Ficheiros ................................................................................................... 35
3.3.2. Organização De Ficheiros ........................................................................................................ 35
3.3.3. Escolha da Organização de Um Ficheiro .................................................................................. 36
3.3.4. Modo De Acesso A Ficheiros ................................................................................................... 36

Exercícios ......................................................................................................................... 37
4.1. CADEIAS DE CARACTERES – STRING ........................................................................... 38

UFCD 6051 e 6052 – Professora Ana Reis 1


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

4.1.1. Cadeias De Caracteres Constantes .......................................................................................... 39


4.1.2. Expressões Com Cadeias De Caracteres .................................................................................. 40

4.2. Exercícios Propostos.................................................................................................. 41

UFCD 6051 e 6052 – Professora Ana Reis 2


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

1. OS COMPUTADORES E AS LINGUAGENS DE PROGRAMAÇÃO

1.1. Linguagens de Programação - O que é uma linguagem de programação?

Não são mais do que um conjunto de palavras utilizadas na escrita de programas, de acordo com
léxico próprio sujeito a uma determinada estrutura. Tal como a linguagem escrita que nós
utilizamos diariamente, como por exemplo este texto, que obedece a uma determinada sintaxe,
de forma a ser compreendido por quem o lê.

Inicialmente, as linguagens de programação aproximavam-se bastante das instruções do


processador, tornando-as muito complexas e de difícil utilização, no entanto, esta situação
evoluiu rapidamente. Desde então, apareceram linguagens aproximadas da linguagem natural,
existindo atualmente um número infindável, vocacionada para uma gama vastíssima de
assuntos, sendo estas cada vez mais simples e com interfaces mais agradáveis.

As linguagens de programação têm como objetivo permitir a escrita de programas utilizados


pelo computador, tais como:
- Processadores de texto;
- Folhas de cálculo;
- Sistemas operativos;
- Programas de tratamento de imagem e gráficos;
- Jogos;

Exemplos de linguagens de programação: Pascal, Fortran, Cobol, C, ADA, APL, Lisp, Basic, PL/1,
Assembly.
Pascal – É uma linguagem estruturada, permite criar bons hábitos de programação, bem como
desenvolver programas claros, concisos e estruturados.

1.2. Classificação das Linguagens de Programação

Nível Linguagens
Alto Cobol, PL/1, Basic, Logo, ADA, RPG, Lisp, …
Baixo Assembly, C, Algol, Fortran …

Esta classificação é feita de acordo com a aproximação que têm ou não, com a nossa linguagem,
entenda-se linguagem humana. Sendo assim, uma linguagem de baixo nível é aquela que se
aproxima da linguagem-máquina ou das instruções do processador. Enquanto as linguagens de
alto nível aproximam-se da linguagem corrente.

1.3. Programas
Programa – Conjunto de instruções organizadas de uma forma lógica e previamente
estabelecida. Permitindo ao computador executar as tarefas que lhe são pedidas.

UFCD 6051 e 6052 – Professora Ana Reis 3


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

• Programa Fonte – É o texto que escrevemos numa linguagem de programação.


• Programa Objeto – É o programa que se obtém após se ter traduzido o programa-fonte.

1.3.1. Fases de Elaboração de um Programa


Quando se pretende desenvolver um programa são necessárias várias etapas até que esteja
disponível ao utilizador, para que este possa processar os seus dados. Sendo consideradas as
seguintes etapas:
1. Apresentação e análise do problema
2. Formulação e representação de um algoritmo
3. Codificação do algoritmo numa linguagem de programação
4. Compilação e interpretação do programa-fonte
5. Testes do programa de forma a verificar erros de lógica

1.3.2. Programas Tradutores


Os programas são escritos em linguagens de programação. Para que o computador possa
entender esses programas é necessário traduzi-los para linguagem-máquina, ou seja, uma
sequência de zeros e uns – binário.
A tradução do programa-fonte para linguagem máquina é feita utilizando outros programas
designados por interpretadores e compiladores.
Apesar da função destes programas ser idêntica, existem, no entanto, algumas diferenças.
Enquanto os interpretadores traduzem linha-a-linha qualquer programa fonte, escrito numa
dada linguagem de programação e, sempre que se queira executar o programa é necessário
traduzi-lo de novo. Os compiladores por sua vez, fazem uma total tradução do programa fonte,
gerando um novo programa (programa objeto), escrito em linguagem máquina e apto a ser
utilizado pelo computador em qualquer altura, sem que seja necessário traduzi-lo de novo.

UFCD 6051 e 6052 – Professora Ana Reis 4


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Vantagens Desvantagens
- Execução mais rápida; - Várias etapas de tradução;
- Permite estruturas de - Programa final é maior, necessitando
programas mais de
Compilador
completos; mais memória para ser executado;
- Permite otimização do - Processo de correção de erros e
programa-fonte. depuração é mais demorado.
- A depuração do programa
é
- Execução do programa é mais lenta;
mais simples;
- Estrutura de dados mais simples;
Interpretador - Consome menos memória;
- É necessário fornecer o programa-fonte
- Resultado imediato do
ao utilizador
programa ou rotina
desenvolvida.

1.4. Estruturas de Informação

• Dados – São a representação de tudo aquilo que nos rodeia: dos objetos, dos seres, dos
fenómenos, etc.
• Informação – Os dados depois de sujeitos a um tratamento adequado, podendo a
informação obtida, ser origem para nova informação.

1.4.1. Classificação dos Dados


• Dados Quantitativos – Exprimem quantidades e por isso, normalmente, servem de base
para cálculos aritméticos (por exemplo numa fatura: o preço unitário, o total pago por
artigo, o total da fatura, etc.)
• Dados Classificativos – Descrevem ou especificam os elementos envolvidos e
quantitativos. Normalmente servem de complemento aos dados quantitativos,
identificando pessoas, objetos, etc. Não servem, portanto, para cálculos (por exemplo
numa fatura: o nome do cliente, a morada, o código dos artigos e a descrição…).
• Dados Referenciais – Permitem controlar e referenciar os elementos tratados.
Normalmente estes dados só têm significado para quem efetua o processamento, pois
permite-lhe controlar o trajeto dos dados durante o processamento, aumentando a sua
eficácia (por exemplo numa fatura: o número da fatura e a data).

UFCD 6051 e 6052 – Professora Ana Reis 5


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

A distinção entre tipos de dados também pode ser feita da seguinte forma:
Tipo de dados Exemplo
Numéricos 78, 45, …
Alfabéticos Escola, Turma, Alunos, …
Alfanuméricos RS232, LPT1, V60c, …
Lógicos Verdadeiro / Falso, 1 / 0

1.5. Operadores
Existem vários tipos de operadores, aos quais recorremos no nosso dia-a-dia, por exemplo,
quando queremos fazer cálculos utilizamos operadores aritméticos:

Operadores Aritméticos
+ Adição
- Subtração
X Multiplicação
/ Divisão
MOD * Resto da Divisão
DIV * Divisão inteira
* Só com números inteiros

Exemplos:
5 X 3 = 15
8 MOD 2 = 0
8 DIV 2 = 4
1 / 2 = 0,5
Quando estamos a comparar dois ou mais objetos, por exemplo, utilizamos operadores
relacionais:
Operadores Relacionais
= Igual
> Maior
< Menor
>= Maior ou Igual
<= Menor ou Igual
<> Diferente
Exemplos:
1<4
O João é MAIOR que o António
15 >= 2
A aula de matemática É DIFERENTE da aula de inglês
4+5=5+4
Como resultado de uma comparação entre dois objetos, dois factos, duas proposições ou duas
afirmações obtém-se sempre um valor lógico ( Verdadeiro / Falso ).
Por vezes, termos necessidade de efetuar comparações múltiplas, como a que se segue:
O João é MAIOR que o António E que o Nuno.

UFCD 6051 e 6052 – Professora Ana Reis 6


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Para tal, além dos operadores atrás citados, utilizamos também operadores lógicos ou
booleanos:
Operadores Lógicos
E (and) Conjunção
OU (or) Disjunção
Negação (not) Negação

Exemplo do modo de utilização destes operadores:


Proposições Resultado da operação lógica
A B not A A and B A or B
V V F V V
V F F F V
F V V F V
F F V F F

1.5.1. Prioridade dos Operadores


É comum, as expressões terem mais que um operador, tendo uma prioridade sobre os outros,
independentemente de se encontrarem mais à esquerda ou mais à direita na expressão.

Apresenta-se a seguinte tabela com a prioridade dos operadores:


Prioridade Operadores
1 (Maior) NOT
2 / DIV MOD AND
3 + - OR
4 (Menor) = <> < <= > >=
As operações sucessivas dentro de um grupo efetuam-se da esquerda para a direita. A
prioridade destes operadores pode ser alterada utilizando parênteses, sendo as operações
delimitadas pelos parênteses realizadas primeiro.

1.6. Expressões

Tipo Significado Exemplo


São aquelas em que se
Numéricas utilizam apenas operadores 2a + b * c
aritméticos
É uma expressão em que se
utiliza operadores relacionais
Lógicas e/ou lógicos e, das quais se X > 20 E x<=10
espera obter um resultado
lógico

UFCD 6051 e 6052 – Professora Ana Reis 7


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

1.7. Identificadores, Variáveis e Constantes

Entende-se por identificador o nome dado aos programas,


variáveis, constantes, funções, procedimentos. Por exemplo: nome
Identificador
do aluno, número, turma, podem ser identificadores para
variáveis.
Entende-se por variável uma entidade que pode assumir vários /
Variável
diferentes valores ao longo da execução de um programa.
Consideram-se valores que se mantêm inalterados dentro de um
Constante
programa.

Exercícios
1. Explique a utilidade das linguagens de programação.
2. Explique a diferença entre uma linguagem de alto nível e uma linguagem de baixo nível,
apresentando exemplos de cada uma.
3. Indique, caso exista, a diferença entre interpretador e compilador.
4. Que operadores lógicos conhece?
5. Que operadores lógicos aritméticos?
6. Que operadores lógicos relacionais?
7. Numa expressão qual a prioridade dos operadores?
8. Indique as fases da elaboração de um programa, desde a análise do problema até ao programa
acabado.
9. Diga o que entende por programa-fonte e programa-objeto.
10. Distinga constante de variável.
11. Diga o que entende por identificador.

UFCD 6051 e 6052 – Professora Ana Reis 8


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

2. ALGORITMOS - FORMULAÇÃO DE SOLUÇÕES

No nosso dia-a-dia somos confrontados com trabalhos, mais ou menos complicados, que temos
de realizar. Para tal, executamos determinadas ações com o objetivo de as terminar. Não
implicando que as ações por nós realizadas, bem como a sua ordem, sejam a única forma de as
concluir. Pois pode muito bem outra pessoa, executar outras ações, ou por outra ordem, que
conduzam também à conclusão das mesmas.
No século XIX viveu na Alemanha um grande matemático: Gauss.
Aos cinco anos, Gauss andava na escola primária. Um dia, o professor deu, a todos os alunos,
um problema longo e aborrecido.
Calculem a soma dos 100 primeiros números inteiros.
Os alunos começaram o cálculo lento e laborioso.
Mas, poucos minutos depois, Gauss apresentou o resultado final:
E, perante o professor admirado, explicou o seu raciocínio:
É fácil. Escrevi os números inteiros de 1 a 100… E depois reparei que a soma de 0 com 100 dava
100… e que a soma (1 + 99) também dava 100… e 2 + 98 = 100 e 3 + 97 = 100… e assim
sucessivamente até 49 + 51 = 100.
Ao todo, há só destas somas ficando o número 50 por somar.
O resultado final é, pois: 50 X 100 + 50.
E não é que está certo?

UFCD 6051 e 6052 – Professora Ana Reis 9


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

- preencher um impresso
- trabalhar com eletrodomésticos
- indicação de uma rua
- instalação de um programa

Receita culinária: Ingredientes + Modo de preparação.

2.1. Algoritmo
É uma sequência finita de ações que descrevem um modo ou forma de resolução de um
problema.

2.1.1. Características De Um Bom Algoritmo


As ações a desenvolver devem ser
apresentadas de uma forma clara
Deve ser corretamente definido
abrangendo a maior quantidade de
informações
Como resultado de falta de informação ou
Deve estar isento de ambiguidades
duplicação desta
Deve resolver o problema,
independentemente da situação, de uma
Deve ser eficaz forma isenta de erros e qualquer falha. Se por
ventura existem exceções estas devem ser
devidamente especificadas e tratadas
Deve ter capacidade de resolver o problema
Deve ser eficiente
com o mínimo de recursos

2.2. Representação De Algoritmos


Há várias técnicas de representação de algoritmos. Cada uma delas com vantagens e
desvantagens, devendo ser escolhida aquela que melhor se adapte à situação e aquela que
dominamos melhor. Dentro das referidas técnicas as mais populares são os fluxogramas, o
pseudocódigo e os diagramas.

2.2.1. Fluxogramas
São diagramas que representam os fluxos das ações contidas num programa, utilizando para
tal símbolos. Estes representam os diversos tipos de ações e o seu inter-relacionamento na
sequência de um programa.

UFCD 6051 e 6052 – Professora Ana Reis 10


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

2.2.1.1. Símbolos utilizados

Exemplo:
Pretende-se obter a soma de dois valores lidos a partir do teclado.

UFCD 6051 e 6052 – Professora Ana Reis 11


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Vantagens:
- Como são baseados numa representação gráfica é mais fácil e agradável de visualizar, em
termos de estrutura geral, do que em pseudocódigo;
- Os símbolos utilizados são normalizados e universais;
- Como os símbolos têm implícito um significado, simplificam a resolução de um problema em
termos de estrutura geral;
- São fáceis de testar, permitem uma rápida deteção e correção de erros de lógica.

Desvantagens:
- Caso se tenham que efetuar alterações são pouco práticos;
- Os dados têm que ser definidos à parte, pois, os fluxogramas não permitem representar a
estrutura dos dados;
- Quando os programas são muito grandes, os fluxogramas, para os esquematizar, também se
tornam grandes e complexos.

2.2.2. Pseudocódigo
É uma forma de representar os algoritmos utilizando a linguagem escrita como se usam termos
convencionais para representar as ações a desenvolver por um programa. Os termos utilizados
são normalmente uma mistura da linguagem corrente com notações e palavras inerentes às
linguagens de programação.
Exemplo;
Início
ler (A);
ler (b);
CßA+B
escrever (C)
fim

Vantagens:
- Como é baseado na linguagem corrente é fácil de elaborar;
- Pode atingir vários níveis de complexidade conforme o detalhe com que se escrever;
- Permite acompanhar o tratamento dos dados facilitando o teste do programa;
- Permite implementar as estruturas elementares da programação estruturada;
- Serve de base à própria documentação.

Desvantagens:
- Não possui regras padrão pois depende do estilo de escrita de cada programador;
- Não permite uma rápida visualização de pormenores, porque utiliza a linguagem escrita, o que
obriga à sua leitura geral;
- Para problemas mais complicados, a linguagem pode tornar-se muito complexa e de difícil
compreensão.

2.3. Estruturas de Controlo


São de vital importância na programação, para se elaborarem programas organizados, flexíveis,
que permitam ser alterados com facilidade, que façam um tratamento correto dos dados e de

UFCD 6051 e 6052 – Professora Ana Reis 12


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

uma forma eficiente. Pode dizer-se que, não se consegue obter programas estruturados sem o
seu uso.

2.3.1. Estrutura Sequencial


É a estrutura de controlo mais simples e consiste na especificação das instruções a serem
executadas pela sequência definida.

2.3.2. Estruturas De Decisão Ou Seleção


Podemos solucionar problemas utilizando só a estrutura de controlo sequencial.
Contudo apenas podemos solucionar problemas simples e limitados: à leitura de valores,
atribuição de valores, cálculos e escrever resultados. Não podendo ser exercido qualquer
controlo sobre a ordem de execução das instruções, pois estas são executadas sequencialmente
e apenas uma vez.
Para solucionar problemas complexos é importante que possamos decidir se uma instrução ou
grupo de instruções devem ou não ser executadas, dependendo de um valor ou de uma
expressão. Assim, dispomos de duas estruturas de decisão ou seleção.

UFCD 6051 e 6052 – Professora Ana Reis 13


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

2.3.2.1. Estrutura SE…

Permite a seleção entre duas alternativas dependendo de uma dada condição / expressão. A
semântica desta estrutura é definida do seguinte modo:

• A estrutura pode ser definida das seguintes formas:


1. SE … ENTÃO
2. SE … ENTÃO … SENÃO
Como se depreende a cláusula SENÃO não é obrigatória.

• Caso a estrutura esteja definida da forma SE … ENTÃO … SENÃO, é avaliada a condição


/ expressão, se o seu valor for verdadeiro é executado apenas o primeiro bloco de
instruções. Se o valor da condição é falso é executado apenas o segundo bloco de
instruções.

UFCD 6051 e 6052 – Professora Ana Reis 14


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

• Caso a estrutura esteja definida da forma SE … ENTÃO, é avaliada a condição /


expressão, se o seu valor for verdadeiro é executado o bloco de instruções. Se o valor
da condição é falso o bloco de instruções não é executado.

• Se um dos blocos incluir mais que uma instrução é necessária delimitá-las com as
instruções de início e fim.

Apresentam-se os seguintes exemplos de aplicação desta estrutura:

1. Ler um valor e enviar para o ecrã uma mensagem se o valor for negativo.

2. Pretende-se saber qual o maior de dois valores introduzidos a partir do teclado.

UFCD 6051 e 6052 – Professora Ana Reis 15


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

2.3.2.2. Estrutura CASO …

Esta estrutura permite a escolha entre várias alternativas. É selecionada uma instrução ou blocos
de instruções com base num valor ou numa expressão designada seletor. Pode-se obter o
mesmo resultado utilizando uma estrutura SE encadeada. No entanto, quando se utilizam vários
níveis de encadeamento, pode conduzir a instruções difíceis de compreender.
Tal como na estrutura SE a cláusula SENÃO não é obrigatória e também se um dos blocos incluir
mais que uma instrução é necessária delimitá-los com as instruções de início e fim.
A estrutura CASE adequa-se melhor a seleções baseadas em variáveis que têm valores discretos,
por sua vez a estrutura Se … ENTÃO … SENÃO adequa-se mais a seleções baseadas em
expressões com valores lógicos.
Exemplificando, supondo que introduzíamos um valor compreendido entre 1 e 6,
correspondente aos meses do primeiro semestre do ano, e pretendemos apresentar no ecrã por
extenso o mês correspondente.

UFCD 6051 e 6052 – Professora Ana Reis 16


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Início
Ler (valor);
Caso valor
1: Escrever (‘Janeiro’);
2: Escrever (‘Fevereiro’)
3: Escrever (‘Março’);
4: Escrever (‘Abril’);
5: Escrever (‘Maio’);
6: Escrever (‘Junho’);
Senão
Escrever (‘Valor não permitido’);
Fim.

Resolvendo o mesmo problema, mas com a utilização da estrutura de Ses encadeados:

UFCD 6051 e 6052 – Professora Ana Reis 17


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Início
Ler(valor)
Se valor = 1 Então
Escrever(‘Janeiro’)
Senão
Se valor = 2 Então
Escrever(‘Fevereiro’)
Senão
Se valor = 3 Então
Escrever(‘Março’)
Senão
Se valor = 4 Então
Escrever(‘Abril’)
Senão
Se valor = 5 Então
Escrever(‘Maio’)
Senão
Se valor = 6 Então
Escrever(‘Junho’)
Senão
Escrever(‘Valor não permitido’);
Fim.

UFCD 6051 e 6052 – Professora Ana Reis 18


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Como é fácil constatar, nesta situação, a utilização de uma estrutura CASO apresenta um
algoritmo mais simples e mais legível.
É possível definir intervalos para os valores assumidos pelo seletor, por exemplo:

Início
Ler(Num)
Caso Num
1 ..100 : escrever (‘Número compreendido de 1 a 100’);
101 …200: Escrever (‘Número compreendido de 101 a 200’)
201 …50: Escrever (‘Número compreendido de 201 a 500’);
Fim;
Fim

Início
Ler(Num);
Caso Num
‘A’ .. ‘D’ : escrever (‘ABCD’);
‘E’ .. ‘H’ : escrever (‘EFGH’);
‘I’ .. ‘K’ : escrever (‘IJKL’);
Fim;
Fim

Como se pode ver por estes exemplos para definir o intervalo deve-se indicar o valor inicial
deste, seguido de dois pontos e o valor final do limite. Caso se tratem de valores do tipo caracter
é necessário delimitá-los por dois apóstrofos (por exemplo ‘R’).
O tipo de valores possíveis para seletor são do tipo ordinal.

2.3.3. Estruturas De Repetição Ou Ciclos

As estruturas até agora estudadas possibilitam-nos elaborar algoritmos em que podemos


escolher as instruções a serem executadas, mas cada instrução só pode ser executada uma vez.

UFCD 6051 e 6052 – Professora Ana Reis 19


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Por vezes é necessário ter que repetir uma instrução ou um bloco de instruções. Para esse efeito,
temos à disposição as estruturas de repetição ou também designadas por ciclos.

Um ciclo é constituído por uma sequência de instruções – corpo do ciclo – e, por uma estrutura
que controla a execução dessas instruções, especificando o número de vezes que o corpo do
ciclo é executado. As instruções incluídas no corpo do ciclo podem ser executadas qualquer
número de vezes, mas esse número tem que ser finito.
Dispomos das seguintes estruturas de repetição ou ciclos.

2.3.3.1. Estruturas Baseadas Numa Condição

2.3.3.1.1. Estrutura ENQUANTO…

ENQUANTO condição FAZER


Início
Instrução 1
… Corpo do Ciclo
Instrução
Fim

A estrutura ENQUANTO possibilita repetir a execução de uma ou várias instruções, enquanto


uma determinada condição / expressão, do tipo lógico, tiver valor verdadeiro.
Quando se utiliza esta estrutura, o computador verifica se o valor da condição / expressão é
verdadeiro, então, o corpo do ciclo é executado uma vez. Em seguida, volta a verificar o valor da
condição / expressão e assim sucessivamente enquanto o valor for verdadeiro. Quando o valor
for falso a execução do ciclo termina. Para que o ciclo termine é necessário que o valor da
condição / expressão seja alterado durante a execução desse ciclo, caso contrário, o ciclo entra
em loop infinito.
Quando o corpo do ciclo incluir várias instruções é necessário delimitá-las com as instruções de
início e fim de bloco.

Há ainda a salientar dois aspetos:

UFCD 6051 e 6052 – Professora Ana Reis 20


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

1. O corpo do ciclo pode não ser executado nenhuma vez, caso o valor da condição /
expressão seja falso, visto essa condição / expressão ser verificada antes que se inicie o
ciclo.
2. Normalmente não é possível determinar, à partida, o número de vezes que o corpo
de ciclo é executado, porque o valor da condição que especifica o término do ciclo é
alterado durante a execução desse ciclo, não se sabendo que valor lhe vai ser
atribuído. Para melhor compreensão, apresenta-se o pseudocódigo:

Início
Ler (Numero)
Enquanto Numero > 0 Fazer
Inicio
Escrever (‘O número é maior que zero’);
Ler (Numero);
Fim
Fim.

Como se pode observar, o corpo do ciclo é executado enquanto o valor da variável Número for
maior que zero. Mas não é possível dizer qual o número de vezes que o corpo do ciclo é
executado, tanto pode ser nenhuma como uma infinidade de vezes.

2.3.3.1.2. Estrutura Repetir

REPETIR
Instrução1
… Corpo do Ciclo
Instrução n
ATÉ condição

Esta estrutura permite repetir uma ou várias instruções, até que uma determinada
condição/expressão, do tipo lógico, tenha valor verdadeiro.

UFCD 6051 e 6052 – Professora Ana Reis 21


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Ao contrário da estrutura ENQUANTO são executadas as instruções incluídas no corpo do ciclo


e, só depois é verificada a condição / expressão. Se o valor for falso o corpo do ciclo é de novo
executado, e terminando a execução apenas quando esse valor for verdadeiro. Assim, o corpo
do ciclo é executado pelo menos uma vez.
Tal como na estrutura ENQUANTO não é possível determinar, à partida, o número de vezes que
o corpo do ciclo é executado.
Quando se utiliza esta estrutura não é necessário delimitar o corpo do ciclo.

Como exemplo de aplicação desta estrutura, propõem-se os seguintes problemas:

1. Ler continuamente números a partir do teclado, até que seja digitado o valor 1.

2. Calcular a soma de cinco valores lidos a partir do teclado.

Início
Contador ‘’ 1;
Soma 0;
Repetir
Ler (Valor);
Soma ß Soma + Valor;
Contador ß Contador + 1;
Até Contador > 5;
Escrever (Soma);
Fim

2.3.3.2. Utilizando Um Contador


2.3.3.2.1. Estrutura PARA
PARA variável ß Valor Inicial ATÉ Valor Final FAZER

Início
Instrução1

Instrução
Fim

UFCD 6051 e 6052 – Professora Ana Reis 22


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

A estrutura PARA é utilizada para efetuar ciclos incondicionais ao contrário das outras estruturas
de repetição estudadas. A execução das instruções, do corpo do ciclo, é controlada por uma
variável – variável de controlo, que tem que ser um tipo enumerável. O corpo do ciclo é
executado para uma sequência de valores da variável de controlo.
Quando o computador encontra uma estrutura PARA inicializa a variável de controlo com o
primeiro valor da sequência. Se seguida executa as instruções incluídas no corpo do ciclo, depois
atualiza a variável de controlo com o próximo valor da sequência. A execução do ciclo termina
com o último valor da sequência.
Antes de o ciclo ser executado já se sabe qual o número de vezes que este irá ser executado, ao
contrário das outras estruturas de repetição.
Como exemplificação desta estrutura, apresenta-se o seguinte problema:

Pretende-se mostrar no ecrã os números inteiros compreendidos entre 20 e 200.

Início
Para Numero ß 20 ATÉ 200 FAZER
Escrever (Numero);
Fim.

Como termo de comparação apresenta-se a resolução utilizando as outras estruturas de


repetição.

Início Início
Numero <<- 20 Numero ß20;
Enquanto Numero <= 200 fazer Repetir
Início Escrever (Numero)
Escrever (Numero); Numero ß Numero + 1;
Numero ß Numero + 1; Até Numero > 200
Fim Fim
Fim Fim
Nesta situação, a utilização de estrutura PARA conduz à solução mais simples. Pois, a variável é
inicializada na declaração da estrutura e não é necessário incrementá-la, como é característica
desta estrutura. O incremento da variável é sempre de uma unidade.

O valor inicial da sequência deve ser menor que o valor final, caso contrário o corpo do ciclo não
é executado. Algumas linguagens de programação, por exemplo a linguagem PASCAL, permitem
que o valor inicial seja maior que o final, havendo necessidade de alterar uma das cláusulas da
estrutura. Exemplifica-se utilizando o problema anterior.

For Numero:= 200 To 200 Do

Se pretendêssemos mostrar os números pela ordem inversa ou decrescente, declarava-se a


estrutura da seguinte forma:

For Numero:= 200 Down to 20 Do

UFCD 6051 e 6052 – Professora Ana Reis 23


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Como Escolher Um Estrutura de Repetição


Devemos ter em conta vários aspetos na escolha da estrutura de repetição a utilizar: optando
por uma estrutura de controlo que não seja a mais adequada pode dar origem a uma solução
difícil de resolver, de ler e de modificar-se. Se estivermos perante uma situação em que haja
necessidades de um ciclo contando, a estrutura PARA adequa-se melhor. Caso a situação não
seja referida, podemos optar pela estrutura ENQUANTO ou pela estrutura REPETIR, tendo em
consideração que o corpo do ciclo da última é executado pelo menos uma vez. Por outro lado,
normalmente, na estrutura ENQUANTO a variável necessita de ser inicializada antes do começo
do ciclo.

Exercícios Resolvidos
1. Deseja-se saber qual o montante a pagar, no final do mês, relativo ao consumo de
eletricidade. Para tal, deve ser pedido:
• O preço do KWh;
• A quantidade de KWhs consumidos durante o mês.

Resolução:
Início
Ler (Preco);
Ler (Consumo);
TotalPagar ß Preco x Consumo;
Escrever (TotalPagar);
Fim.

2. Calcular o volume de uma esfera, sabendo que o volume é dado pela seguinte fórmula:
4
V = ´p ´ r3
3
Resolução:
Início
Ler (Raio);
Volume ß 4/3 x Raio x Raio x Raio;
Escrever (Volume);
Fim.

3. Sendo dado um número de alunos de uma turma e o número de rapazes, calcular a


percentagem de raparigas e de rapazes.

Resolução:
Início
Ler (NumAlunos);
Ler (NumRapazes);
PercentaRapazes ß NumRapazes / NumAlunos x 100;
PercentaRaparigas <<- 100 – PercentaRapazes;
(ou então: PercentaRaparigas ß (NumAlunos – NumRapazes) / NumAlunos x 100;)

UFCD 6051 e 6052 – Professora Ana Reis 24


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Fim.

4. Introduzir um valor, correspondente a segundos e, apresente no ecrã o seu valor em horas,


minutos e segundos.

Resolução:

Início
Ler (Num);
Horas ß Num DIV 3600;
Num ß Num MOD 3600;
Minutos ß Num DIV 60;
Num ß Num MOD 60;
Escrever (Horas);
Escrever (Minutos);
Escrever (Num);
Fim.

5. Pretende-se obter o valor da soma, dos números pares compreendidos entre 100 e 200
(inclusive).

Resolução:

Início
Soma ß 0;
NumPar ß 100;
Repetir
Soma ß Soma + NumPar;
NumPar ß NumPar + 2;
Até NumPar > 200;
Escrever (Soma);
Fim.

6. Mostrar no ecrã o quadrado dos números compreendidos entre 1 e 20.


Resolução:

Início
Quadrado ß 0;
Para Num ß 1 Até 20 Fazer
Início
Quadrado ß Num x Num;
Escrever (Quadrado);
Fim
Fim
6.1. Resolva o mesmo exercício utilizando outra estrutura.

UFCD 6051 e 6052 – Professora Ana Reis 25


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

7. Pedir ao utilizador dez números e no final mostrar no ecrã o maior e o menor número digitado.

Resolução:

Início
NumMaior ß 0;
NumMenor ß 0;
Para Contador ß 1 Até 10 Fazer
Início
Ler (Numero);
Se Numero > NumMaior Então
NumMaior ß Numero;
Se Numero < NumMenor Então
NumMenor ß Numero;
Fim
Escrever (Maior);
Escrever (Menor);
Fim

7.1. Resolva o mesmo exercício utilizando outra estrutura.

8. Calcular a média de uma série de valores pedidos ao utilizador. Deverá ser pedido também o
número de valores.

Resolução:

Início
Contador ß 0;
Soma ß 0;
Media ß 0;
Ler (NumValores);
Enquanto Contador < NumValores Fazer
Início
Ler (Valor);
Soma ß Soma + Valor;
Contador <- Contador + 1;
Fim
Media ß Soma / NumValores;
Escrever (Media);
Fim

9. Numa loja de eletrodomésticos são vendidos televisores. O vendedor recebe o salário mais
uma comissão pelo número de aparelhos vendidos mensalmente, segundo a seguinte tabela:

UFCD 6051 e 6052 – Professora Ana Reis 26


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Número de televisores vendidos Comissão


Mais de 6 5%
4a6 3%
1a3 1%

Apresentar no ecrã o vencimento mensal do vendedor.

Resolução:

Início
Ler (Salario);
Ler (NumTv);
Se NumTv > 6 Então
Vencimento ß Salario + Salario x 0,05
Senão
Se (Num >= 4) E (Num <= 6) Então
Vencimento ß Salario + salario x 0,03
Senão
Se (Num >= 1) E (Num <= 4) Então
Vencimento ß Salario + Salario x 0,01
Senão
Vencimento ß Salario;
Escrever (Salario);
Fim.

9.1. Alterar o algoritmo obtido de forma a apresentar também o valor das comissões recebidas.

10. Supondo que o dia da semana é representado por 1, se for domingo; 2 se for segunda e
assim sucessivamente. Pedir ao utilizador que digite um valor e apresentar no ecrã o dia da
semana correspondente.

Resolução:

Início
Ler (Dia);
Caso Dia
1: Escrever (‘Domingo’);
2: Escrever (‘Segunda’);
3: Escrever (‘Terça’);
4: Escrever (‘Quarta’);
5: Escrever (‘Quinta’);
6: Escrever (‘Sexta’);
7: Escrever (‘Sábado’);
Senão
Escrever (‘Não existe dia da semana para esse valor’);

UFCD 6051 e 6052 – Professora Ana Reis 27


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Fim.

11. Calcular a variação de volume de um cubo, sabendo que o volume é dado pela fórmula:

A3
A aresta varia entre 10 e 100 cm.

Resolução:

Início
Para A ß 10 Até 100 Fazer
Início
Volume ß A x A x A;
Escrever (Volume);
Fim;
Fim.

12. Ler um número, diferente de zero, e escrever no ecrã POS ou NEG consoante se trate de um
número positivo ou negativo respectivamente.

Resolução:

Início
Ler (Numero);
Se Numero > 0 Então
Escrever (‘Positivo’)
Senão
Escrever (‘Negativo’)
Fim.

13. Dado uma série de valores representando as notas de alunos, elabore um algoritmo que
determine quantos tiveram nota positiva.
Resolução:

Início
Ler (NumNotas);
Para índice ß 1 Até NumNotas Fazer
Início
Ler (Nota);
Se Nota >= 10 Então
ContaPositivas ß ContaPositivas + 1;
Fim;
Fim.

UFCD 6051 e 6052 – Professora Ana Reis 28


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Exercícios Para Resolver:

1. Elabore um algoritmo que calcule e escreva o valor da seguinte série:


1 3 5 7 99
+ + + + ... +
1 2 3 4 50

2. escreva um programa que peça uma série de números, ao utilizador, até que a soma desses
números atinja ou ultrapasse um limite máximo, indicado também pelo utilizador.

3. Calcular e apresentar no ecrã, o número de grãos de trigo que se podem colocar num tabuleiro
de xadrez. Se fosse colocado 1 na primeira casa, 2 na segunda, 4 na terceira, 8 na quarta e, assim
sucessivamente. Sabendo ainda que um tabuleiro de xadrez tem 63 casas.

4. Ler uma série de valores, a partir do teclado, até que seja digitado um valor compreendido
entre 1 e 10.

5. Elabore um algoritmo que converta notas quantitativas em qualitativas.

6. Calcular a massa de ar de um pneu, sabendo que:


P ´V
m=
0,37 ´ (T + 460 )
Onde:
M – Massa
P – Pressão
V – Volume
T – Temperatura

7. Escreva um algoritmo que receba uma quantia em euros, inferior a 500€, e determine o
número de moedas de 2€, 1€, 50 cêntimos, 20 cêntimos, 10 cêntimos, 5 cêntimos, 2 cêntimos e
1 cêntimo necessárias para perfazer esse valor. Devem ser sempre utilizadas as moedas de maior
valor.

8. Um número primo é um número que apenas é divisível por ele próprio e pela unidade. Escreva
um algoritmo que receba um número e determine se ele é um número primo.
8.1. Utilizando o algoritmo da alínea anterior, escreva um algoritmo que receba um número e
calcule todos os números primos menores que ele próprio.

UFCD 6051 e 6052 – Professora Ana Reis 29


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

3. ESTRUTURAS DE DADOS

Até agora, nos algoritmos desenvolvidos, só foram utilizados dados do tipo simples – dados
padrão. As utilizações sós deste tipo de dados limitam a resolução de problemas.
Todos os dados do tipo simples têm a característica comum de cada variável representar um
único valor. Os dados do tipo estruturado têm a característica comum de um único identificador
poder representar vários elementos, e os seus elementos serem acedidos rapidamente. Os
elementos do tipo estruturado podem ser manipulados coletivamente ou individualmente,
dependendo dos requisitos do problema.
Nesta unidade irá ser feita uma abordagem exaustiva de todos eles.

3.1. Vetores e Matrizes


Podemos definir matriz como um conjunto de elementos, todos do mesmo tipo, organizados
por linhas e colunas – com m linhas e n colunas. O número de elementos é obtido multiplicando
o número de linhas pelo número de colunas (m x n).
Como exemplo, apresenta-se uma matriz de 2 x 3, com 2 linhas e 3 colunas e com seis elementos.
11 4 15
8 2 30

Para referenciar um elemento da tabela utilizamos o identificador da matriz seguido de dois


índices – valores do tipo inteiro. O primeiro representa a linha, o segundo representa a coluna.

A13 – elemento da 1ª linha e 3ª coluna (no caso do exemplo A13 = 15);


A22 – elemento da 2ª linha e 2ª coluna (no caso do exemplo; A22 = 2);

UFCD 6051 e 6052 – Professora Ana Reis 30


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Tal como em linguagem Pascal, para distinguir os índices, utilizamos a mesma notação,
colocamo-los entre parênteses retos.

A[2,1] = 8

Um outro aspeto é a designação dada às matrizes de acordo com a relação entre o número de
linha e colunas, podendo salientar-se as seguintes:

• Quando uma matriz tem o número de linhas diferente do número de colunas, designa-
se por matriz RECTANGULAR.

11 12 13
21 22 23

• Quando uma matriz tem o número de linhas igual ao número de colunas, designa-se por
matriz QUADRADA.

11 12 13
21 22 23
31 32 33

• Se a matriz só tiver uma linha e várias colunas chama-se matriz LINHA.


• Se a matriz só tiver várias linhas e uma coluna chama-se matriz COLUNA.
• Estas duas últimas designam-se por matriz VECTOR. Para referenciarmos um elemento
deste tipo de matrizes não é necessário utilizar dois índices. Daqui ressalta um outro
aspeto, a dimensão de uma matriz.

Unidimensional ou vetor; bidimensional, tridimensional…

Atribuição de Valores
A atribuição é feita como para qualquer variável, por exemplo:
MatrizA[3,1] ß 77
Ao elemento da linha 3 coluna 1, da MatrizA é atribuído o valor 77.

Leitura de Valores
A leitura de uma matriz é feita como qualquer variável, tendo também que se referenciar o
elemento que se pretende ler. Por exemplo:
Ler (Matriz[2,1]);
Ler (Vector[5]);

Escrita de Valores

UFCD 6051 e 6052 – Professora Ana Reis 31


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Tal como na leitura de valores, além da instrução de escrita, é necessário referenciar o elemento.
Por exemplo:
Escrever (Matriz[2,1]);
Escrever (Vetor[5]);

As matrizes são variáveis que permitem guardar vários valores, para que o processo de escrita
e leitura de dados não tenha uma infinidade de instruções. Normalmente utilizam-se estruturas
de repetição para esse fim. Supondo que tínhamos uma matriz, de inteiros, com 3 linhas e 2
colunas e pretendíamos escrever o seu conteúdo. Se não utilizássemos nenhuma estrutura de
repetição teríamos qualquer coisa como:

Início
Escrever (Matriz[1,1]);
Escrever (Matriz[1,2]);
Escrever (Matriz[2,1]);
Escrever (Matriz[2,2]);
Escrever (Matriz[3,1]);
Escrever (Matriz[3,2]);
Fim.

De outra forma teríamos:


Início
Para i ß 1 Até 3 Fazer
Para j ß 1 até 2 Fazer
Escrever (Matriz[i,j]);
Fim.

3.1.1. Operações Com Matrizes


Adição de Matrizes
Para ser possível somar matrizes é necessário que tenham o mesmo número de linhas e colunas.
Somam-se duas matrizes somando os elementos homólogos dessas matrizes.

Exemplo:
Dadas as matrizes A e B

é a11 a12 a 13 ù éb11 b12 b 13 ù


A=ê ú B=ê ú
ë a21 a22 a23 û ëb21 b22 b23 û

Sendo C = A + B, a matriz C será

é a11 + b11 a12 + b12 a13 + b13 ù


C=ê ú
ë a21 + b21 a22 + b2 a23 + b23 û

UFCD 6051 e 6052 – Professora Ana Reis 32


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Exemplo prático:
Dadas as matrizes A e B

é1 2 ù é5 6 ù
A=ê ú B = ê ú Calcular A + B
ë3 4 û ë 7 8û
Então será:

é1 + 5 2 + 6ù é 6 8 ù
A+ B = ê ú=ê ú
ë3 + 7 4 + 8 û ë10 12û

A subtração de matrizes é definida de forma similar à adição

Multiplicação De Um Escalar Por Uma Matriz


Multiplica-se um escalar (número) por uma matriz, multiplicando o escalar por cada um dos
elementos da matriz. Por exemplo:

é1 2 ù é 2 ´1 2 ´ 2 ù é 2 4ù
2´ ê ú = ê ú=ê ú
ë3 4 û ë 2 ´ 3 2 ´ 4 û ë 6 8 û

Inversamente, divide-se uma matriz por um escalar, dividindo todos os elementos da matriz por
esse escalar.

Multiplicação De Matrizes
Multiplicam-se linhas por colunas, sendo necessário que o número de linhas da primeira matriz
seja igual ao número de colunas da segunda matriz.

Considerando as matrizes A e B
éb11 b12 ù
é a11 a12 a 13 ù
A=ê ú B = êêb21 b22 úú
ë a21 a22 a23 û êëb31 b32 úû

Sendo C = A ´ B , a matriz C será

é a11 ´ b11 + a12 ´ b21 + a13 ´ b31 a11 ´ b12 + a12 ´ b12 + a13 ´ b32 ù
C=ê
ë a21 ´ b11 + a22 ´ b21 + a23 ´ b31 a21 ´ b12 + a22 ´ b22 + a23 ´ b32 úû

Como se vê, cada elemento de C é igual à soma dos produtos dos elementos de uma linha de
A , pelos correspondentes elementos de uma coluna de B .

Exemplo:

UFCD 6051 e 6052 – Professora Ana Reis 33


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Sendo:

é1 2ù é5 6ù
A=ê B=ê Calcular A ´ B
ë3 4úû ë7 8úû

Então será:

é1´ 5 + 2 ´ 7 1´ 6 + 2 ´ 8 ù é19 22 ù
C=ê =
ë3 ´ 5 + 4 ´ 7 3 ´ 6 + 4 ´ 8úû êë43 50 úû

Matriz Transposta
Determinar a transposta de uma matriz é reescrevê-la de forma que suas linhas e colunas
troquem de posições ordenadamente, isto é, a primeira linha é reescrita como a primeira coluna,
a segunda linha é reescrita como a segunda coluna e assim por diante, até que se termine de
reescrever todas as linhas na forma de coluna.

Exemplo:
Determinar a matriz transposta da matriz A dada a seguir:

é1 3ù
A = êê 2 5úú
êë -4 0úû

Temos três linhas na matriz dada, a linha 1, composta pelos números 1 e 3, a linha 2, composta
pelos números 2 e 5 e a linha 3 composta pelos números -4 e 0.

Para escrever a transposta da matriz A reescreveremos a matriz A com as linhas 1, 2 e 3 como


colunas 1, 2 e 3, obtendo então a transposta de A , isto é AT :

é1 2 - 4ù
AT = ê
ë3 5 0 úû

3.2. Cadeias De Caracteres


Estão associadas à informação do tipo caracter. É um tipo de dado estruturado constituindo uma
sequência de caracteres. Como exemplo desta estrutura:
‘Esta frase é uma cadeia de caracteres’
Algumas linguagens de programação não incluem esta estrutura de dados, como é o caso da
linguagem C, definindo esta estrutura como um vetor em que o tipo de dados é do tipo caracter.

As operações sobre cadeias de caracteres:


• Comparação de cadeias de caracteres, determinando se são iguais ou qual a sua ordem
alfabética;
• Divisão de uma cadeia de caracteres em várias;
• Procura de um elemento dentro da cadeia de caracteres;
• Junção de duas cadeias de caracteres numa só.

UFCD 6051 e 6052 – Professora Ana Reis 34


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

3.3. Ficheiros
São conjuntos de registos, do mesmo tipo, contexto e, geralmente, do mesmo formato.
Exemplo:
• Ficheiro de alunos;
• Ficheiro de turmas;
• Ficheiro de notas;
• …

3.3.1. Caracterização Dos Ficheiros


Os ficheiros podem ser caracterizados segundo o:
• Tipo:
o Permanentes / mestres
o Temporários
o Movimentos
o Controlo
o Segurança
o Comprimento
o Fixo
o Variável.

3.3.2. Organização De Ficheiros


Os ficheiros poderão ter uma das seguintes organizações:
• Sequencial – os registos estão organizados pela ordem em que foram gravados;

• Relativa – os registos são identificados segundo aposição em que se encontram


relativamente ao primeiro registo do ficheiro;

• Indexada – Nos ficheiros que tenham este tipo de organização, os ficheiros estão
organizados segundo um ou mais campos. Campos esses que constituem a chave de
indexação, que se encontra armazenada numa tabela separada do ficheiro. Os registos
desta tabela estão relacionados com os registos do ficheiro.

UFCD 6051 e 6052 – Professora Ana Reis 35


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

3.3.3. Escolha da Organização de Um Ficheiro


Devem considerar-se alguns pontos na escolha da organização de um ficheiro, pois a
rendibilidade do sistema poderá ser diretamente afetada pela escolha:
• Tipo de ficheiros;
• Taxa de utilização
• Suporte físico

RELAÇÃO ENTRE A ORGANIZAÇÃO E O MODO DE ACESSO


Organização Organização Organização
Sequencial Relativa Indexada
Sequencial; Sequencial;
Modo de Acesso Sequencial Direto; Direto;
Dinâmico. Dinâmico.
Discos;
Disquetes;
Discos; Discos;
Bandas Magnéticas;
Suporte Físico Disquetes; Disquetes;
Fita perfurada;
Discos Óticos. Discos Óticos.
Cartões;

3.3.4. Modo De Acesso A Ficheiros


O modo de acesso aos registos de um ficheiro poderá ser:
• Sequencial – A leitura é feita sequencialmente, ou seja, pela ordem em que foram
gravados. Para ler um determinado registo é necessário ler todos os anteriores.
• Direto – random – O registo é localizado automaticamente num ficheiro sem que seja
necessário ler os anteriores.

UFCD 6051 e 6052 – Professora Ana Reis 36


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

• Dinâmico – Este modo de acesso é uma mistura de acesso direto e sequencial.

Exercícios
1. Dadas as matrizes
é2 1 ù é4 3ù
A=ê ú B=ê ú
ë4 2û ë -5 9û
Mostre que A + B = B + A

2. Dadas as matrizes
é1 ù é5 ù
A = êê3 úú B = êê 4 úú C = [ 2 6 8]
êë 4 úû êë3 úû
Determine:
a) A + B
b) A ´ B
c) C T
3. Determine para as seguintes matrizes
é2 - 5ù é1 0ù
A=ê B=ê
ë9 8 úû ë4 - 5úû
a) A´ B
b) B´ A
c) A+ B
d) B- A

4. Determine A ´ B e B ´ A para as seguintes matrizes


é 4 0 2ù é5 2ù
A=ê B=ê
ë -1 2 3 úû ë6 1 úû

5. Determine AT , para a seguinte matriz.

é2 4 0ù
A = êê1 0 2 úú
êë3 4 5úû

6. Considerando as seguintes matrizes:

é2 5 1ù
é3 2 ù é0 1 ù
A=ê ú B=ê ú C = êê -3 -1 - 2úú
ë5 1 û ë3 2 û êë3 4 5 úû

UFCD 6051 e 6052 – Professora Ana Reis 37


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

é2 1 2ù é3 ù
D = êê 4 3 4 úú E = êê 2 úú F =[ 4 7 8]
êë6 5 6 úû êë1 úû

Determine:
a) A + B
b) 3A
c) 2 A - 3B
d) 1/ 2 A
e) A + F
f) C - D
g) E T
h) F T
i) DT
j) A ´ B
k) ( A ´ B )
T

l) AT ´ BT
m) C ´ D
n) D ´ C
o) E ´ C
q) A ( A + B )

4.1. CADEIAS DE CARACTERES – STRING

O Pascal fornece o tipo de dados predefinido string, para trabalhar com matrizes de caracteres,
como uma extensão aos tipos existentes. O tipo de dados string é idêntico aos tipos de
sequências de caracteres existentes noutras linguagens de programação. Permite uma fácil
manipulação de sequências de caracteres com tamanho variável.

Declaração:
Type
IdentificadorTipo = String[tamanho];
Var
Identificador : IdentificadorTipo;

Ou

Var
Identificador = String[tamanho];

Exemplo:
Type

UFCD 6051 e 6052 – Professora Ana Reis 38


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Str50 = String[50];
Var
Cadeia : Str50;

O valor delimitado por parêntesis, tamanho, indica o tamanho máximo da sequência. O tamanho
das variáveis string não pode ultrapassar os 255 caracteres, caso contrário, ocorrerá um erro de
compilação. Por outro lado, se o tamanho atribuído à sequência de caracteres exceder o
tamanho declarado, essa sequência será truncada.

Uma sequência de caracteres pode ser entendida como uma matriz, definida da seguinte forma:

Var
Identificador : Array[0..Tamanho] Of Char;

Em que o primeiro elemento da matriz contém o tamanho actual da sequência de caracteres.


Como foi referido, o tamanho máximo reservado para uma variável do tipo string é 255
caracteres. O tipo de dados string é compatível com os tipos char e array of char, podendo
variáveis deste último tipo ser atribuídas a variáveis do tipo string com igual ou maior tamanho.
Os elementos de uma string, os caracteres, podem ser referenciados como os elementos de uma
matriz, utilizando a mesma notação. Por exemplo:

Program ExemploString1;
Var Frase: string[35];
Begin
Frase:= 'ISTO É UMA SEQUÊNCIA DE CARACTERES';
Writeln(Frase); {escreve no ecrã ISTO É UMA SEQUÊNCIA DE
CARACTERES}
Writeln(Frase[3]); {escreve no ecrã a letra T}
Writeln(Frase[6]); {escreve no ecrã a letra É}
Writeln;
Writeln;
Writeln('Digite ENTER para sair do programa');
End.

4.1.1. Cadeias De Caracteres Constantes


O Pascal permite-nos declarar sequências de caracteres como constantes, da seguinte forma:

Const
Mensagem=’Pascal’;

A sequência de caracteres é delimitada por apóstrofos. O Pascal cria uma constante compatível
com o tipo de dados string, mas os seus elementos não poderão ser acedidos individualmente.

UFCD 6051 e 6052 – Professora Ana Reis 39


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

4.1.2. Expressões Com Cadeias De Caracteres


As expressões deste tipo são utilizadas para trabalhar com valores do tipo string. Quando se
utilizam operadores relacionais o resultado é do tipo lógico ou booleano (verdadeiro ou falso).

Program ComparaString1;
Uses
Crt;
Begin
Clrscr;
If ‘Linguagem’ < ‘Linguagem Pascal’ Then
Writeln(‘Verdadeiro’)
Else
Writeln(‘Falso’);
Readln;
End.

Neste exemplo, a sequência de caracteres Linguagem é menor que Linguagem Pascal, porque
é menor em comprimento.

As comparações entre sequências de caracteres são também baseadas em valores individuais


da tabela ASCII e os valores das letras maiúsculas são menores que os das letras minúsculas. No
exemplo seguinte, será exibido no ecrã VERDADEIRO, pois a sequência de caracteres pascal é
menor que a sequência PASCAL.

Program ComparaString2;
Uses
Crt;
Begin
Clrscr;
If ‘pascal’ < ‘PASCAL’ Then
Writeln(‘VERDADEIRO’)
Else
Writeln(‘FALSO’);
Readln;
End.

Se for necessário comparar duas sequências de caracteres e quisermos ignorar se as letras são
maiúsculas ou minúsculas, existe a função upcase() que faz a conversão de minúsculas para
maiúsculas. A utilização desta função é bastante útil, mas obriga a que os elementos de uma
sequência sejam lidos individualmente ou que sejam convertidos individualmente.

UFCD 6051 e 6052 – Professora Ana Reis 40


Escola Profissional Vasconcellos, Lebre
Curso Técnico de Eletrónica, Automação e Comando

Procedimentos para manipulação de cadeias de caracteres


Remove uma sequência de caracteres de uma string, a partir de uma
Delete
posição especificada.
Insere uma determinada sequência de caracteres de uma string, a partir
Insert
de uma posição especificada.
Str Converte um valor numérico para uma variável do tipo string.
Converte uma string contendo valores numéricos para uma variável do
Val
tipo numérico.

Funções para manipulação de cadeias de caracteres


Extrai uma parte de uma sequência de caracteres, a partir de uma
Copy determinada posição, se uma string e retorna-a para a expressão que a
chamou.
Faz a concatenação de duas strings, ou seja, une duas strings. Executa a
Concat
mesma operação que o operador de concatenação + (mais).
Length Devolve o tamanho actual de uma string.
Devolve a posição de uma sequência de caracteres, se existir, dentro de
Pos
uma string.

4.2. Exercícios Propostos


1. Faça um programa que determine, e apresente no ecrã, quantas letras tem uma string,
introduzida pelo utilizador.
2. Escreva uma função que remova os espaços de uma string.
3. Desenvolva um programa que indique o número de ocorrências de um caracter numa string.
4. Faça um programa em que é pedido ao utilizador o seu nome completo e apresente no ecrã
o primeiro e o último nome.
5. Escreva um procedimento que converta letras minúsculas em maiúsculas, sem utilizar a
função upcase.
6. Elabore um programa em que seja pedido ao utilizador que introduza uma frase e de seguida
uma palavra. O programa deve verificar se a palavra faz parte da frase.
7. Escreva um programa que inverta os elementos de uma string.

UFCD 6051 e 6052 – Professora Ana Reis 41