Want to create interactive content? It’s easy in Genially!

Get started free

AED-2.pdf

Liliana Pinheiro

Created on October 6, 2025

Start designing with a free template

Discover more than 1500 professional designs like these:

Interactive Bingo

Interactive Hangman

Secret Code

Branching Scenario: Academic Ethics and AI Use

The Fortune Ball

Repeat the Sequence Game

Pixel Challenge

Transcript

ALGORITMOS E ESTRUTURAS DE DADOS

ALGORITMOS E ESTRUTURAS DE DADOS Resolução de Problemas

Enunciado: Considere a metodologia de avaliação definida para esta unidade

curricular. Componente Prática = 50% da nota final Componente Teórica = 50% da nota final Primeira Avaliação Teórica = 50% da componente teórica Segunda Avaliação Teórica = 50% da componente teórica

- -

- -

(a) Diga quais são: (a.1) os dados do problema; (a.2) os resultados do problema; (a.3) as relações do problema. (b) Elabore um fluxograma para o algoritmo; (c) Transcreva, para pseudocódigo, o algoritmo correspondente.

ALGORITMOS E ESTRUTURAS DE DADOS Resolução de Problemas

(a.1) Dados do problema: Nota do Projeto; Nota do 1.º Teste; Nota do 2.º Teste.

• • •

(a.2) Resultados do problema: Indicação que está APROVADO ou REPROVADO; Indicação da Nota Final (no caso de estar aprovado).

• •

ALGORITMOS E ESTRUTURAS DE DADOS Resolução de Problemas

(a.3) Relações do problema: Nota teórica = 50% da nota do 1.º Teste + 50% da nota do 2.º Teste Nota prática = Nota do Projeto Nota final = 50% da nota do teórica + 50% da nota prática Se nota teórica < 9 então REPROVADO Senão, Se nota prática < 9 então REPROVADO Senão, Se nota final < 10 então REPROVADO

• • • • • •

Senão, APROVADO

ALGORITMOS E ESTRUTURAS DE DADOS Resolução de Problemas – Fluxograma

Início

Ler notaProj

Ler notaT1

Ler notaT2

NotaF ← (notaProj + notaT) / 2

NotaT ← (notaT1 + notaT2) / 2

notaProj<9

notaT<9

notaF<10

Escrever “REPROVADO”

Escrever “REPROVADO”

Escrever “REPROVADO”

Escrever “APROVADO com” NotaF

Fim

ALGORITMOS E ESTRUTURAS DE DADOS Resolução de Problemas – Pseudocódigo

Algoritmo NotaFinal Variáveis: notaT1, notaT2: Real notaProj, notaT, notaF: Real

Se notaProj < 9 Então escrever(“REPROVADO”)

Senão Se notaT < 9 Então escrever(“REPROVADO”)

Início

Senão Se notaF < 10 Então escrever(“REPROVADO”)

ler(notaProj) ler(notaT1) ler(notaT2) notaT ← (notaT1 + notaT2) / 2 notaF ← (notaProj + notaT) / 2

Senão

escrever(“APROVADO com”, notaF)

Fim_se Fim_se

Fim_se

Fim

ALGORITMOS E ESTRUTURAS DE DADOS Variáveis

Na programação, uma variável é um objecto ou uma posição, frequentemente localizada na memória, capaz de reter e representar um

valor ou expressão.

As variáveis só existem em tempo de execução, e são associadas a identificadores,

nomes, desenvolvimento.

chamados

de

durante

tempo

de

Quando nos referimos à variável, do ponto de vista da programação de computadores, estamos a indicar uma “região de memória previamente identificada, cuja finalidade é armazenar os dados ou informações de um programa por um determinado espaço de tempo.”

Adaptado da Wikipedia

ALGORITMOS E ESTRUTURAS DE DADOS Variáveis, Identificadores e Tipos de Dados

Variáveis

Os simbólica de um valor:

objectos

que

utilizamos

são

uma

representação

x ← 2

Pode-se ler como:

atribua o valor 2 ao objecto x

Assim, o valor 2 fica associado ao objecto x.

Torna-se mais fácil utilizar este valor ao longo do algoritmo.

O nome de um objecto não se altera, enquanto o valor a ele

associado pode mudar.

ALGORITMOS E ESTRUTURAS DE DADOS Variáveis, Identificadores e Tipos de Dados

Variáveis

Representam um espaço em memória; Permitem guardar um valor (por variável) durante a execução; São referenciadas através de um identificador; Têm um tipo de dados associado.

• • • •

Identificador

É uma sequência de caracteres; Sequência apenas composta por letras, números e sublinhado; Não podem começar por um número.

• • •

Tipos de Dados

Definem o tipo de valores que a variável pode albergar; Variam de acordo com a linguagem de programação.

• •

ALGORITMOS E ESTRUTURAS DE DADOS Variáveis, Identificadores e Tipos de Dados

Tipos de Dados

Os tipos de dados podem variar de uma linguagem para outra. No entanto, existem dois tipos básicos:

Tipos simples; Tipos compostos/estruturados (que vamos estudar mais adiante).

• •

10

ALGORITMOS E ESTRUTURAS DE DADOS Variáveis, Identificadores e Tipos de Dados

Tipos de Dados Simples

Os tipos de dados numéricos são divididos basicamente em

dois grandes conjuntos: Inteiros; Reais. Os inteiros podem ser positivos, negativos ou nulos, mas não possuem um componente decimal. Os inteiros são compatíveis com os reais, mas os reais não são compatíveis com os inteiros. Assim, um objecto (variável) real pode receber um valor inteiro, mas um objecto inteiro não pode receber um valor real.

• •

Linguagem Algorítmica: Linguagem C:

Inteiro

int

11

ALGORITMOS E ESTRUTURAS DE DADOS Variáveis, Identificadores e Tipos de Dados

Ospossuem um componente decimal.

reiais

podem

ser

positivos,

negativos

ou

• Tipos de Dados Simples

nulos,

Exemplos: 1.34 -0.01201

Como já vimos, os números reais podem consumir mais espaço de armazenamento em memória que os inteiros.

Linguagem Algorítmica: Linguagem C:

Real float double

12

ALGORITMOS E ESTRUTURAS DE DADOS Variáveis, Identificadores e Tipos de Dados

O carácter é um tipo de dados não numérico que possibilita o

• Tipos de Dados Simples

armazenamento de letras (de especiais (~,.;?!<>*+…).

e de

) e carateres

Linguagem Algorítmica: Linguagem C:

Carácter char

13

ALGORITMOS E ESTRUTURAS DE DADOS Variáveis, Identificadores e Tipos de Dados

O possibilidades: Verdadeiro; Falso. Este tipo de dados pode ser utilizado no controlo do fluxo

tipo de dados

lógico

pode assumir

uma de

duas

• Tipos de Dados Simples

• •

lógico do algoritmo.

Linguagem Algoritmica: Linguagem C:

Lógico

Em alternativa pode-se utilizar, por exemplo, o tipo lógico FALSO corresponde o valor decimal 0 (zero) e ao valor lógico

int

onde ao valor

14

VERDADEIRO corresponde o valor decimal 1 (um).

15

ALGORITMOS E ESTRUTURAS DE DADOS Tipos de Dados em C

Nome char int float double

Descrição Representa um carácter Valores inteiros [-2147483648, +2147483647] Valores reais c/ precisão de 6 dígitos decimais

Tamanho 1 byte 4 bytes 4 bytes 8 bytes

Valores reais c/ precisão de 15 dígitos decimais

char letra1, letra2; idade; Declaração de Uma Variável

int

letra1= 'A'; letra2 = '1'; idade = 32; Atribuição de Valores

ALGORITMOS E ESTRUTURAS DE DADOS Números vs. Caracteres

Como identifico uma variável como A, para armazenar um inteiro? Como é que armazenamos a quantidade 8 (oito) numa variável? Como é que armazenamos o carácter ‘8’ numa variável? Como é que armazenamos o carácter ‘A’ numa variável?

Para diferenciar um carácter (símbolo), de um identificador de uma variável, ou de um valor numérico, são utilizados apóstrofes:

• 8 é um dado numérico; • ‘8’ é um carácter; • A é um identificad• ‘A’ é um carácter.

or;

16

ALGORITMOS E ESTRUTURAS DE DADOS Números vs. Caracteres

char letra;

Internamente, um carácter é um inteiro!

letra = ‘A’;

É equivalente a:

letra = 65;

Como se pode verificar pela tabela ASCII:

17

ALGORITMOS E ESTRUTURAS DE DADOS Números vs. Caracteres

Mas como armazenamos uma sequência de carateres? Como por exemplo o nome de uma rua?

Para armazenar uma sequência de carateres (um tipo de dados estruturado:

string

) será utilizado

“ABC” é uma sequência de carateres (

string

).

Note que neste caso utilizamos aspas (“”) para delimitar a

string

Será então possível atribuir a uma

string

apenas um único carácter?

Ex: “A” Não deveria ser ‘A’?

18

ALGORITMOS E ESTRUTURAS DE DADOS Números Inteiros vs. Números Reais

A escolha do tipo de dados deve ter em consideração os detalhes do problema em causa:

Exemplos de inteiros: Número de pessoas; Número par ou ímpar; Idade de uma pessoa; Quantidade de objectos.

• • • •

Exemplos de reais: Peso de uma pessoa; Nota de uma avaliação;

• • • •

Média; Preço de um produto.

19

ALGORITMOS E ESTRUTURAS DE DADOS Algoritmos de Sequência Simples

Variáveis

As variáveis, e o seu respetivo tipo, devem ser referidas no

início dos programas.

Em pseudocódigo:

Em linguagem C:

Algoritmo: NomeDoAlgoritmo

int main(void)

Variáveis:

int var1, var2; float var3; char var4;

var1var3var4

, : Real : Carácter

var2

: Inteiro

alternativa

int var5;

var5

: Lógico

… return 0;

Início

20

Fim

ALGORITMOS E ESTRUTURAS DE DADOS Leitura/Escrita (Input/Output)

A interacção com uma máquina é efectuada através de: Sensores (que recolhem informação); Actuadores (agem ou apresentam informação).

• •

No caso concreto de um computador, a interação típica é realizada: Utilizando o teclado para recolha de informação; Utilizando o monitor para apresentar informação.

• •

ALGORITMOS E ESTRUTURAS DE DADOS Leitura/Escrita (Input/Output)

Note, no entanto, que esta é uma visão simplificada dos I/O de um

computador.

Uma visão mais realista, seria:

22

ALGORITMOS E ESTRUTURAS DE DADOS Escrita de Informação (Output)

É possível apresentar no ecrã: informação estática, definida durante o processo de programação; informação dinâmica, ou seja, o conteúdo de variáveis.

• •

Vejamos alguns exemplos destes dois tipos de informação:

Em pseudocódigo iremos escrever: escrever(“mensagem estática”) escrever(“O valor da variável v é: ”, v)

Informação dinâmica

Na linguagem C, usa-se: printf(“mensagem estática”); printf(“O valor da variável v é: %d”, v);

Informação estática

23

ALGORITMOS E ESTRUTURAS DE DADOS Formatos dos Dados (Output)

As funções printf e scanf (entre outras), usam formatos de dados que servem para indicar a posição e tipos das variáveis numa

string

estática.

De entre os vários tipos existentes:

%c %d %f %lf %%

- Permite colocar um carácter - Permite colocar um inteiro - Permite colocar um real (float) - Permite colocar um real (double) - Permite colocar o símbolo %

24

ALGORITMOS E ESTRUTURAS DE DADOS Leitura de Informação (Input)

É possível obter informação a partir do teclado. Esta informação deverá, no entanto, ter um tipo associado.

Em pseudocódigo iremos escrever:

ler(

idade

Na linguagem C, usa-se: scanf(“%d”, &idade);

25

ALGORITMOS E ESTRUTURAS DE DADOS Atribuições e Operações

Antes de realizar uma operação, deve-se: Verificar se os operandos têm tipos de dados adequados; Verificar que a variável que armazenará o resultado tem o tipo

• •

de dados adequado.

As atribuições serão representadas em pseudocódigo como: ← 2019 –

idade

ano_nascimento

Na linguagem C usa-se:

idade = 2019 – ano_nascimento;

26

ALGORITMOS E ESTRUTURAS DE DADOS Operadores e Precedências

Os operadores aritméticos são os convencionais; Seguem as regras de precedência convencionais; É possível o uso de parêntesis para forçar a precedência.

• • •

Operador

Operador em C

Descrição Soma Subtracção Multiplicação Divisão Real (atenção ao denominador!) Divisão Inteira Resto da divisão

+ - * / DIV MOD

+ - * / / %

inteira

27

ALGORITMOS E ESTRUTURAS DE DADOS Operadores e Precedências

Exemplos:

x ← 11 DIV 4

(x = 2)

j ← 11 / 4

(j = 2.75)

y ← 11 MOD 4

(y = 3)

z ← 6 DIV 3

(z = 2)

k ← 6 MOD 3

(k = 0)

28

ALGORITMOS E ESTRUTURAS DE DADOS Operadores e Precedências

Exemplo:

int x, y, soma, sub; float resto, div, mult;

x = 69; y = 24;

Resultados das operações:

soma = x + y; sub = x – y; mult = (float) (x * y); div = ((float) x) / ((float) y); resto = x % y;

soma = 93 sub = 45 mult = 1656.0 div = 2.875 resto = 21.0

29

ALGORITMOS E ESTRUTURAS DE DADOS Exercício

Enunciado

Dado o ano de nascimento de uma pessoa, verifique se tem idade para tirar carta de condução. Caso não tenha, deve ser indicado quantos anos são necessários

para que o possa fazer.

Dados: Ano de nascimento

• •

Resultado: Indicação que é possível tirar a carta; Indicação que não é possível, e número de anos em falta.

- - Relações: idade = 2019 – ano_de_nascimento

- -

Se idade < 18, número de anos é 18 - idade Se idade ≥ 18, é possível tirar a carta;

30

ALGORITMOS E ESTRUTURAS DE DADOS Exercício – Fluxograma

2019

31

ALGORITMOS E ESTRUTURAS DE DADOS Exercício – Pseudocódigo

2019

32

ALGORITMOS E ESTRUTURAS DE DADOS Exercício – Implementação em Linguagem C

2019

33

ALGORITMOS E ESTRUTURAS DE DADOS Exercícios

Área e Perímetro

Desenvolva um algoritmo e implemente-o que, recebendo a largura de um quadrado, calcule o seu perímetro e a sua área.

Número de Segundos

Desenvolva um algoritmo e a respectiva aplicação que leia do teclado uma informação horária válida, composta por horas, minutos e segundos, e imprima o tempo total em segundos.

Teorema de Pitágoras

Especifique uma aplicação que receba as coordenadas de dois pontos cartesianos (dois pares (x, y)) e devolva a distância real entre eles (teorema de Pitágoras).

34

ALGORITMOS E ESTRUTURAS DE DADOS Exercícios

Raízes de uma Parábola

Faça uma algoritmo e apresente uma implementação para calcular as raízes reais de uma equação do segundo grau do tipo:

ax

+ bx + c = 0

Troca (

Swap

Prepare um algoritmo para a tarefa de trocar os valores armazenados em duas variáveis (colocar o valor da variável

em

, e o valor de

em

).

Graus Fahrenheit

Especifique um algoritmo e faça a sua implementação, para converter uma temperatura fornecida em graus Fahrenheit para

graus Celsius, sabendo que:

C = 5 / 9 * (F - 32)

35

36