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
AED-2.pdf
Liliana Pinheiro
Created on October 6, 2025
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Interactive Bingo
View
Interactive Hangman
View
Secret Code
View
Branching Scenario: Academic Ethics and AI Use
View
The Fortune Ball
View
Repeat the Sequence Game
View
Pixel Challenge
Explore all templates
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