Programação
Folha Prática 3
Lab. 3
Departamento de Informática
Universidade da Beira Interior
Portugal
2015
Copyright © 2010 All rights reserved.
LAB. 3
3ª semana
EXPRESSÕES E INSTRUÇÕES
1. Revisão de conceitos fundamentais sobre expressões e instruções
2. Objectivos
3. Exercícios
Nota: Os exercícios 3.6 e seguintes serão em parte tratados na aula teórica.
Lab. 3
EXPRESSÕES E INSTRUÇÕES
1.
Revisão
1. Arquitectura de Von-Newman: E/S + CPU + Memória
2. Instrução de atribuição: =
3. Operadores Aritméticos: +, -, *, /, %
4. Operadores Relacionais: <, >, <=, >=, ==, !=
5. Operadores Lógicos: &&, ||, !
6. Tipos de expressões: aritméticas, relacionais e lógicas.
7. Regras precedência de operadores em expressões.
8. Operadores de incrementação e decrementação: ++x, x++, --x, x-9. Operador de conversão explícita de tipo de dados (casting): (novo_tipo) tipo
10. Operador sizeof
11. Operador condicional: condicao ? expressão : expressão
12. Regras de precedência a associatividade entre expressões.
13. Ciclo básico de Desenvolvimento de Programas:
- Edição àCompilação à Execução
- Edição: gedit nome_programa.c
- Compilação: cc –o nome_programa.exe nome_programa.c
2.
Objectivos
No final deste módulo prático, o aluno deve ser capaz de dominar os conceitos de expressão e de
instrução. Além disso, deve ser capaz de:
1. Usar variáveis, expressões e instruções em programas.
2. Usar funções matemáticas definidas no ficheiro math.h.
3. Atribuir valores a variáveis inteiras e reais.
4. Atribuir valores a variáveis lógicas.
5. Escrever expressões sintática e semanticamente correctas.
6. Aplicar regras de precedência de operadores em expressões.
7. Prever o resultado do cálculo de expressões.
3.
Exercícios
Exercício 3.1
Escreva um programa que converta o tempo em ss no tempo em hh.mm.ss, em que ss representa os
segundos, mm representa os minutos, e hh representa as horas.
O algoritmo é:
1. Pedir o tempo em segundos.
2. Ler o tempo em ss (segundos).
3. Calcular as horas hh existentes na quantidade ss.
4. Calcular os minutos mm nos segundos restantes (após retirar as horas hh a ss);
5. Calcular os segundos restantes após retirar as horas e os minutos a ss;
6. Escreva no ecrã o valor das horas (hh), dos minutos (mm) e dos segundos restantes (ss).
Exercício 3.2
Escreva um programa que determine a parte inteira e a parte fraccionária dum número real.
O algoritmo é:
1. Pedir um número real.
2. Ler um número real.
3. Determinar a parte inteira do número real.
4. Determinar a parte fraccionária do número real;
5. Escreva para o ecrã a parte inteira e parte fraccionária do número real.
Exercício 3.3
Escreva um programa que leia um número decimal de três dígitos a partir do teclado e que escreva no
ecrã a correspondente expansão na base 10. Por exemplo, o número 937 terá a seguinte saída no ecrã:
937 = 7 * 1 + 3 * 10 + 9 * 100.
Nota: Para extrair o dígito 3, obtemos 93 através da divisão inteira de 930 por 10. Tendo o resultado
93, o usamos o resto da divisão inteira de 93 por 10 para obter o digito pretendido.
Exercício 3.4
Escreva um programa que converta um valor real em graus Fahreneit num valor em graus Celsius.
O algoritmo é:
1. Pedir ao utilizador um valor real em graus Fahreneit;
2. Calcular o respectivo valor em graus Celsius;
3. Escrever no ecrã o valor em graus Celsius.
9
5
Nota: A fórmula de conversão é F = C + 32 , em que C é uma variável com valor real em graus Celsius e
F é uma variável com valor real em graus Fahreneit.
Exercício 3.5
Escreva um programa que calcule o valor da seguinte função matemática:
F(x,y)=2 sin(x) + cos(y) - tan(x+y)
Nota: A utilização das funções matemáticas sin, cos e tan requer a inclusão da directiva
#include<math.h> no programa e a opção de compilação –lm de modo a permitir juntar o código da
biblioteca matemática ao ficheiro executável.
Exercício 3.6 (atribuição a variáveis inteiras e reais)
Escreva uma instrução de atribuição para cada uma das seguintes acções:
a) A variável I é incrementada de uma unidade.
b) M é uma cópia do valor de X.
c) Q é o valor da divisão inteira dos inteiros I e J.
d) X é o valor da divisão real dos inteiros I e J.
e) I é o valor arredondado do real X.
f) I é o maior inteiro inferior ou igual a X positivo.
g) M é o inteiro mais próximo da média dos reais A e B.
h) A variável t20 toma o valor da tangente de 20 graus.
i)
Dado n inteiro não nulo, a variável inteira SINAL toma o valor 1 se n for positivo e –1 se n for
negativo.
j)
U toma o valor do algarismo das unidades do real X.
k) R toma o valor de x se x for não negativo, ou de -x no caso contrário.
l)
Z toma o valor do módulo de Y elevado a X.
m) ALFA é o ângulo (em graus) cuja tangente é x.
n) y toma o valor da expressão y+4x+3x2 +2x3 +x4 .
o) z toma o valor da expressão log7(3x2+6) .
p) A variável inteira PAR vale 1 se N for par e 2 se N for ímpar.
q) A variável inteira ALTR toma o valor de (-1)N com N inteiro.
Escreva programas que lhe permitam verificar a correcção das acções anteriores.
Exercício 3.7 (atribuição a variáveis lógicas)
Escreva uma instrução de atribuição para cada uma das seguintes acções:
a. A variável lógica L é verdadeira se e só se L1 e L2 forem ambas falsas.
b. A variável lógica VALOR é verdadeira se e só se X é maior que Y.
c. A variável lógica L é verdadeira se e só se L1 é verdadeira mas não L2.
d. BOOL é verdadeira se e só se os inteiros I e J forem iguais em valor absoluto.
e. LOGIC é verdadeira se e só se M for o dobro de N.
f.
CONSOANTE é verdadeira se e só se a variável carácter LETRA for uma consoante minúscula.
g. XOR é verdadeira se e só se apenas uma das variáveis B1 ou B2 for verdadeira.
h. PAR é verdadeira se e só se o inteiro N for par.
i.
BISSEXTO é verdadeira se e só se a variável inteira ANO for divisível por 4 mas não por 100 ou
então for divisível por 400.
j.
NULL é verdadeira se e só se I for múltiplo de J (ambos inteiros).
k. VOGAL é verdadeira se e só se a variável carácter CAR for uma vogal.
l.
COMPLEX é verdadeira se e só se a equação ax2+bx+c=0 tem raízes complexas.
m. DIGITO é verdadeira se e só se a variável carácter CAR representa um algarismo decimal.
Escreva programas que lhe permitam verificar a correcção das acções anteriores.
Exercício 3.8 (escrita de expressões)
Escreva uma expressão em linguagem C para cada uma das seguintes condições:
a) x é maior que 56.
b) z não é 9.
c) y é no máximo 100.
d) x é divisível por 2.
e) x está entre 0 e 10 inclusivamente.
f) x ou y é 20.
g) x é maior que y, o qual é maior que z.
h) A soma de x e y é negativa.
i)
y tem o valor 73.
j)
Metade de z é pelo menos 20.
k) x e y são ambos positivos.
l)
x é maior que 5 e menor que –5.
m) x não é igual a 0 e y não é negativo.
Exercício 3.9 (regras de precedência)
Coloque parênteses nas seguintes expressões por forma a indicar a ordem de execução das operações
nelas incluídas:
a) x % 10 == 5
b) x < 15 || !y > 0
c) x != z <= 3
d) x >= y && z == 3
e) x = y>0
f) x || y && !z
Exercício 3.10 (cálculo de expressões)
Supondo que x=5, y=3 e z=8, determine o valor das seguintes expressões:
a) x == 5
b) x = 7
c) x == z
d) x = z
e) x < y && y < z
f) z < x && x < y
g) x = y< z
h) !(x > y)
i)
x > z && z < y
Exercício 3.11 (cálculo do máximo de dois números reais)
Escreva um programa que calcule o máximo de dois valores reais.
Dica: Utilize o operador condicional:
(http://www.learnconline.com/2010/03/conditional-operator-in-c-programming-language.html)
Exercício 3.12 (par ou ímpar)
Escreva um programa que determine se um número inteiro é par ou ímpar.
Dica: Utilize o operador condicional:
(http://www.learnconline.com/2010/03/conditional-operator-in-c-programming-language.html)
Exercício 3.13 (classificador de produtos)
Escreva um programa que resolva o seguinte problema. Antes de mais, a tabela abaixo indicada deverá
ser escrita no ecrã. Depois, o restante código do programa deverá implementar um classificador de
produtos que identifique um produto num universo de 3 produtos possíveis, medindo a concentração de 3
elementos constituintes, A, B e C, de acordo com as concentrações dadas na seguinte tabela:
Produto 1
Produto 2
Produto 3
Produto 4
Produto 5
A
0.1
0.1
0.2
0.2
0.2
B
0.5
0.3
0.5
0.3
0.5
C
0.6
0.7
0.7
0.1
0.6
Se as concentrações fornecidas pelo utilizador não corresponderem a nenhum produto da tabela, o
classificador deverá escrever: “Produto desconhecido”. Caso contrário, deverá escrever o número do
produto identificado; por exemplo, se o produto calculado for o terceiro, deverá escrever-se no ecrã o
seguinte: “Produto 3”.
Exercício 3.14 (cálculo de indicadores corporais)
Desenhe um algoritmo que resolva o seguinte problema. O índice de massa corporal (IMC) relaciona a
altura com o peso duma pessoa através da fórmula IMC=peso/altura 2 ; a unidade de peso é o kg
(quilograma) e a unidade de altura é o m (metro). A tabela de classificação é a seguinte:
IMC<19
19<= IMC<=25
25< IMC <=30
30< IMC >=40
> 40
Categoria
Magreza
Normal
Excesso de peso
Obesidade
Obesidade Mórbida
Pretende-se uma aplicação que calcule os seguintes indicadores corporais:
• IMC
• Categoria
• Peso mínimo (PMI=19× altura 2 ) para que uma pessoal pertença à categoria normal.
• Peso máximo (PMA=25× altura 2 ) para que uma pessoal pertença à categoria normal.
A aplicação deverá fornecer depois estes dados ao utilizador.
Exercício 3.15 (cálculo do nº de bytes)
Escreva um programa que escreva no écrã o número de bytes ocupados em memória por um carácter
(char), um número inteiro (int), um número real (float), e um número real de precisão dupla (double).
Dica: Utilize o operador sizeof:
(http://www.c4learn.com/c-programming/sizeof-operator/)
Download

Expressões e Instruções - Departamento de Informática da