Escolar Documentos
Profissional Documentos
Cultura Documentos
4 - Albert Einstein -
Comandos
de Decisão
Sumário:
4.1- Motivação
4.2- Comando Condicional Simples
4.3- Comando Condicional Composto
4.4- Comando Condicional Encadeado
4.5- Condições Compostas
4.6- Regras de Conversão
4.7- Comando Selectivo
4.8- Indentação de Programas
4.9- Exercicios Resolvidos
4.10- Exercícios Propostos
4.11-Trabalhos de Programação
55
Fundamentos de Programação em C: Uma Abordagem Algorítmica
4.1- Motivação
Vamos mais uma vez analisar o algoritmo não numérico visto no primeiro
capítulo, que consiste em mudar o pneu de um carro.
56
Fundamentos de Programação em C: Uma Abordagem Algorítmica
if (expressão)
Bloco de comandos;
e caracteriza-se por:
Versão 1
1- ler as três notas de frequência;
2- calcular a média do aluno;
3- imprimir a média do aluno e a mensagem;
Versão 2
1- declarar nota1, nota2, nota3, mediaAluno;
2- ler(nota1, nota2, nota3);
3- calcular a média do aluno;
57
Fundamentos de Programação em C: Uma Abordagem Algorítmica
No próximo passo, vamos escrever com mais rigor, a fórmula para calcular a
média, a impressão do seu valor.
Versão 3
1- declarar nota1, nota2, nota3, mediaAluno;
2- ler(nota1, nota2, nota3);
3- calcular mediaAluno = ( nota1 + nota2 + nota3)/3;
4- imprimir(mediaAluno);
5- imprimir a mensagem;
Versão 4
1- declarar nota1, nota2, nota3, mediaAluno;
2- ler(nota1, nota2, nota3);
3- calcular mediaAluno = ( nota1 + nota2 + nota3)/3;
4- imprimir(mediaAluno);
5- se mediaAluno >= 10 então
6- imprimir("aprovado");
58
Fundamentos de Programação em C: Uma Abordagem Algorítmica
Sempre que tivermos de executar mais do que uma acção devemos utilizar o
conceito de bloco.
59
Fundamentos de Programação em C: Uma Abordagem Algorítmica
Versão 1
1- ler os números;
2- determinar o maior elemento;
3- imprimir o resultado;
int a, b;
Versão 2
1- declarar a, b;
2- ler (a,b);
3- comparar a com b para definir o maior;
4- imprimir o maior;
No próximo passo vamos descrever com maior rigor um método para calcular o
maior elemento. Este método baseia-se nas seguintes comparações:
se a > b então
armazenar na variável max o valor de a;
se b > a então
armazenar na variável max o valor de b;
onde max é uma variável auxiliar do tipo inteiro. Então, o algoritmo será
descrito pelos seguintes passos.
Versão 3
1- declarar a, b, max;
2- ler (a,b);
3- se a > b então
4- armazenar na variável max o valor a;
5- se b > a então
6- armazenar na variável max o valor b;
4- imprimir (max);
if (expressão)
Bloco de comandos1;
else
Blocos de comandos2;
e carateriza-se por:
Uma solução eficiente consiste em avaliar uma e apenas uma vez a expressão
relacional. Em função do valor lógico, o programa imprime a correspondente
mensagem. Vejamos a implementação dessa estratégia.
Versão 2
1- declarar nota1, nota2, nota3, mediaAluno;
2- ler(nota1, nota2, nota3);
3- calcular mediaAluno = (nota1 + nota2 + nota3) / 3;
4- imprimir a média e a mensagem;
Versão 3
Vamos analisar com muito cuidado esta versão. Ela está de facto correcto. Mas
a acção para imprimir a média do aluno está repetida. Ela é executada quando
a expressão mediaAluno >= 10 for verdadeira ou falsa.
63
Fundamentos de Programação em C: Uma Abordagem Algorítmica
Versão 4
1- declarar nota1, nota2, nota3, mediaAluno;
2- ler(nota1, nota2, nota3);
3- calcular mediaAluno = (nota1 + nota2 + nota3) / 3;
4- imprimir(mediaAluno);
5- se mediaAluno >= 10 então
6- imprimir( "Aprovado");
7- senão
8- imprimir( "Reprovado");
{
int a, b;
printf(" \n Entre com um numero inteiro : "); scanf(" %d", &a);
printf(" \n Entre com outro numero inteiro : "); scanf(" %d", &b);
if (a == b)
printf(" \n ERRO: Valores iguais ");
if (a > b)
printf(" \n Valor maximo = %d ",a);
else
printf(" \n Valor maximo = %d ",b);
system("PAUSE");
return 0;
}
Vamos mais uma vez, consolidar esse conceito com uma generalização de um
exemplo estudado na secção anterior. Agora, queremos que a mensagem
"Aprovado" e a correspondente média sejam impressas, se o estudante tiver
uma média positiva e nenhuma a nota inferior a oito valores nas frequências.
Tendo em conta o desenvolvimento desse algoritmo na secção anterior, a
segunda versão é descrita por:
Versão 2
1- declarar nota1, nota2, nota3, mediaAluno;
2- ler(nota1, nota2, nota3);
3- calcular à média do aluno;
4- imprimir média do aluno e a mensagem;
Versão 3
1- declarar nota1, nota2, nota3, mediaAluno;
2- ler(nota1, nota2, nota3);
3- se nota1 > 8 e nota2 > 8 e nota3 > 8 então
4- inicio
65
Fundamentos de Programação em C: Uma Abordagem Algorítmica
Versão 4
1- declarar nota1, nota2, nota3, mediaAluno;
2- ler(nota1, nota2, nota3);
3- se nota1 > 8 e nota2 > 8 e nota3 > 8 então
4- inicio
5- calcular mediaAluno = ( nota1 + nota2 + nota3)/3.0;
6- se mediaAluno >= 10 então
7- inicio
8- imprimir (mediaAluno);
9- imprimir("Aprovado");
10- fim
11- fim
Média Classificação
≤8 Reprovado
> 8 e ≤ 12 Vai a Exame
> 12 e ≤ 14 Dispensado ao Exame
> 14 Defesa de Nota
Esta solução é eficiente? Claro que não. Para provar essa afirmação, vamos
analisar o comportamento do programa com um exemplo. Suponhamos que o
estudante tenha uma média igual a dezaseis valores. Inicialmente o programa
verifica se a média é superior a catorze. Como o resultado dessa comparação
é verdadeiro o programa mostra a classificação na tela. Mas, em seguida volta
a executar as restantes comparações. Isso é um absurdo.
Este programa é eficiente? Mais uma vez dizemos que não, e como prova
dessa afirmação, vamos analisar o seu comportamento com um exemplo.
Suponhamos que o estudante tenha uma média igual a treze valores.
Inicialmente o programa verifica se a média é superior a catorze valores. Como
essa comparação é falsa, o programa vai verificar se a média é superior a doze
valores e inferior ou igual a catorze valores. Mas nessa altura já sabemos que a
média é inferior ou igual a catorze valores, logo esta comparação é
desnecessária. Isto é uma prova que o programa não é eficiente.
69
Fundamentos de Programação em C: Uma Abordagem Algorítmica
else
bonus = 30000;
printf("Novo salario = %.2f",salarioBase + bonus);
system ("PAUSE");
return 0;
}
salario < 1000 faltas < 2 salario < 1000 e faltas < 2 Aumento
1 1 1 10%
1 0 0 5%
0 1 0 5%
0 0 0 5%
73
Fundamentos de Programação em C: Uma Abordagem Algorítmica
switch (expressão)
{
case rotulo1 :
comandos1;
74
Fundamentos de Programação em C: Uma Abordagem Algorítmica
break;
case rotulo2 :
comandos2;
break;
.
.
case rotulon :
comandosn;
break;
default:
comandos;
}
Versão 1
1- ler a operação e os operandos;
2- em função da operação
3- calcular o resultado;
4- imprimir o resultado;
Pelo enunciado, temos como dados de entrada dois números inteiros que são
os operandos e um caracter que é a operação. Como informação de saída
temos o resultado de uma operação. Sejam numero1, numero2, resultado e
operação as variáveis que representam esses valores. Vamos associa-las aos
seus tipos de dados.
Versão 2
1- declarar numero1, numero2, resultado, operacao;
2- ler(numero1, operacao, numero2);
3- em função da operação
4- calcular o resultado;
4- imprimir (resultado);
No próximo passo, vamos escrever com mais rigor, um método para calcular o
resultado em função da operação. Como estamos em presença de um conjunto
de quatro operações mutuamente exclusivas, vamos modelar essa acção com
o comando selectivo.
Versão 3
1- declarar numero1, numero2, resultado, operacao;
2- ler(numero1, operacao, numero2);
3- caso operacao seja
'+' : calcular resultado = numero1 + numero2;
' -' : calcular resultado = numero1 - numero2;
'*' : calcular resultado = numero1 * numero2;
'/' : calcular resultado = numero1 / numero2;
4- imprimir (resultado);
76
Fundamentos de Programação em C: Uma Abordagem Algorítmica
esse caracter a variável resultado não recebe nenhum valor. Para corrigir esse
erro devemos utilizar a clausúla senão do comando selectivo.
Versão 4
1- declarar numero1, numero2, resultado, operacao;
2- ler(numero1, operacao, numero2);
3- caso operacao seja
'+' : imprimir (numero1 + numero2);
' -' : imprimir (numero1 - numero2);
'*' : imprimir (numero1 * numero2);
'/' : imprimir (numero1 / numero2);
caso contrário
imprimir( "ERRO: operador inválido");
77
Fundamentos de Programação em C: Uma Abordagem Algorítmica
break;
default :
printf(" \ n ERRO: mes invalido" );
}
system("PAUSE");
return 0;
}
if (x > 0) if (x > 0)
printf("x é positivo"); printf(" x é positivo");
else else
printf("x é negativo"); printf("x é negativo");
O segmento de código.
int temp;
79
Fundamentos de Programação em C: Uma Abordagem Algorítmica
int temp;
printf(" Digite a temperatura:");scanf(" %d",&temp);
if (temp < 30)
{
if (temp > 20)
printf(" \nTemperatura agradavel");
}
else
printf(" \n Temperatura muito quente");
Uma indentação correcta ajuda a tornar o código mais claro e legível, mas não
determina como o ele será executado.
80
Fundamentos de Programação em C: Uma Abordagem Algorítmica
Versão 1
1- ler os três números;
2- calcular o maior;
3- imprimir o maior;
Pelo enunciado fazem parte dos dados de entradas três números inteiros
diferentes e dos dados de saída o maior deles. Vamos associar as variáveis
que representam esses números aos teus tipos de dados:
int a, b, c, max;
Versão 2
1- declarar a, b, c, max;
2- ler (a,b,c);
3- armazenar o maior valor na variável max;
4- imprimir (max);
Versão 3
1- declarar a, b, c, max;
2- ler (a,b,c);
3- se a > b então
4- armazenar na variável max o conteudo de a;
5- senão
6- armazenar na variável max o conteudo de b;
7- se c > max então
8- armazenar na variável max o conteudo de c;
9- imprimir(max);
Como todas as linhas do nosso algoritmo são claras e precisas, vamos traduzi-
lo para um programa em C.
/*--------------------------------------------------------------------------------------------------------
Objectivo: Calcular o valor máximo de três inteiros diferentes
Entrada : Três números diferentes
Saida : Maior
81
Fundamentos de Programação em C: Uma Abordagem Algorítmica
-------------------------------------------------------------------------------------------------------*/
#include <stdio.h> /* incluir as funções scanf() e printf() */
#include <stdlib.h> /* incluir a função system() */
int main()
{
int a, b, c, max;
printf(" \n Entre com o primeiro numero inteiro : "); scanf("%d",&a);
printf(" \n Entre com o segundo numero inteiro :"); scanf("%d",&b);
printf(" \n Entre com o terceiro numero inteiro :"); scanf("%d",&c);
if ( a > b)
max = a;
else
max = b;
if ( c > max)
max = c;
printf(" \n Maior valor = %d ", max);
system("PAUSE");
return 0;
}
/*--------------------------------------------------------------------------------------------------------
Objectivo: Calcular o valor máximo de três números inteiros
Entrada : Três números diferentes
Saida : Maior elemento
--------------------------------------------------------------------------------------------------------*/
#include <stdio.h> /* incluir as funções scanf() e printf() */
#include <stdlib.h> /* incluir a função system() */
int main()
{
int a, b, c, max;
printf(" \n Entre com o primeiro numero inteiro : "); scanf("%d",&a);
printf(" \n Entre com o segundo numero inteiro :"); scanf("%d",&b);
printf(" \n Entre com o terceiro numero inteiro :"); scanf("%d",&c);
if (a > b)
if (a > c)
max = a;
else
max = c;
else if (b > c)
max = b;
82
Fundamentos de Programação em C: Uma Abordagem Algorítmica
else
max = c;
printf(" \n Maior Valor = %d ",max);
system("PAUSE");
return 0;
}
/*--------------------------------------------------------------------------------------------------------
Objectivo: Calcular o valor máximo de três números inteiros
Entrada : Três números diferentes
Saida : Maior elemento
--------------------------------------------------------------------------------------------------------*/
#include <stdio.h> /* incluir as funções scanf() e printf() */
#include <stdlib.h> /* incluir a função system() */
int main()
{
int a, b, c, max;
printf(" \n Entre com o primeiro numero inteiro : "); scanf("%d",&a);
printf(" \n Entre com o segundo numero inteiro :"); scanf("%d",&b);
printf(" \n Entre com o terceiro numero inteiro :"); scanf("%d",&c);
if ((a > b) && (a > c)) max = a;
if ((b > c) && ( b > a)) max = b;
if ((c > a) && ( c > b)) max = c;
system("PAUSE");
return 0;
}
−𝑏 ∓ √𝑏𝑏−4𝑎𝑐
X=
2𝑎
para
Numa primeira abordagem, a solução deste problema pode ser descrita pelos
seguintes passos:
Versão 1
1- ler os dados;
2- calcular as raízes da solução;
3- imprimir os resultados;
int a, b, c;
float x1, x2;
Versão 2
1- declarar a, b, c, ,x1, x2;
2- ler (a,b,c);
3- calcular as raizes reias da solução;
4- imprimir(x1,x2);
Versão 3
1- declarar a, b, c, ,x1, ,x2;
2- ler (a,b,c);
3- calcular o valor do discriminante;
4- se discri ≥ 0 então
5- calcular as raízes reais;
6- senão
7- imprimir( "O problema não tem solução");
8- imprimir(x1,x2);
Versão 4
1- declarar a, b, c , x1, x2, descri;
2- ler (a,b,c);
3- calcular descri = b*b - 4*a*c;
4- se discri ≥ 0 então
5- calcular as raízes reais;
6- senão
84
Fundamentos de Programação em C: Uma Abordagem Algorítmica
No próximo passo vamos descrever com mais rigor a impressão das soluções.
As raizes só devem ser impressas se tivermos a certeza que o descriminante é
maior ou igual a zeros. Queremos com isso dizer que essa acção deve estar
contida, no bloco de acções, subordinado a condição de verdadeira dessa
compração.
Versão 5
1- declarar a, b, c , x1, x2, descri;
2- ler (a,b,c);
3- calcular descri = b*b - 4*a*c;
4- se discri ≥ 0 então
5- inicio
6- calcular as raízes reais;
7- imprimir(x1,x2);
8- fim
9- senão
10- imprimir(" Erro: Raizes complexas ");
Versão 6
1- declarar a, b, c , x1, x2, descri;
2- ler (a,b,c);
3- calcular descri = b*b - 4*a*c;
4- se discri ≥ 0 então
5- inicio
6- calcular x1 = - b - srqt(b*b - 4*a*c);
7- calcular x1 = -b + srqt(b*b - 4*a+c);
8- imprimir(x1,x2);
9- fim
10- senão
11- imprimir(" Erro: Raizes complexas ");
Como todas as linhas do nosso algoritmo são claras e precisas, vamos traduzi-
lo para um programa em C.
/*--------------------------------------------------------------------------------------------------------
Objectivo: Resolução de uma equação do 2º grau
Entrada : Três números inteiros
Saida : Raízes da equação de 2º grau
--------------------------------------------------------------------------------------------------------*/
#include <stdio.h> /* incluir as funções scanf() e printf() */
#include <stdlib.h> /* incluir a função system() */
85
Fundamentos de Programação em C: Uma Abordagem Algorítmica
Versão 1
1- ler os dados;
2- calcular o aumento;
3- imprimir os resultados;
char sexo;
float salarioBase, salarioFinal;
int numeroFilhos, codigo;
Versão 2
1- declarar sexo;
2- declarar salarioBase, salarioFinal;
3- declarar numeroFilhos, codigo;
4- ler (codigo, sexo, numeroFilhos, salarioBase);
5- calcular aumento salarial;
6- imprimir (codigo, salarioFinal);
87
Fundamentos de Programação em C: Uma Abordagem Algorítmica
essas variáveis.
Versão 3
1- declarar sexo;
2- declarar salarioBase, salarioFinal, aumentoBase, aumentoPorFilho;
3- declarar numeroFilhos, codigo;
4- ler (codigo, sexo, numeroFilhos, salarioBase);
5- se sexo = ‘F’ então
6- inicio
7- calcular o aumento de base;
8- calcular o aumento por filhos;
9- fim
10- senão
11- inicio
12- armazenar zeros no aumento de base;
13- armazenar zeros no aumento por filhos;
14- fim
15- calcular o salario final;
16- imprimir(salarioFinal);
Versão 4
1- declarar sexo;
2- declarar salarioBase, aumentoBase, aumentoPorFilho, salarioFinal;
3- declarar numeroFilhos, codigo;
4- ler (codigo, sexo, numeroFilhos, salarioBase);
5- se sexo = ‘F’ então
6- inicio
7- calcular o aumento de base;
8- se numeroFilhos > 0 então
9- calcular o aumento por filhos;
10- senão
11- armazenar zeros no aumento por filhos;
12- fim
13- senão
14- inicio
15- armazenar zeros no aumento de base;
16- armazenar zeros no aumento por filhos;
88
Fundamentos de Programação em C: Uma Abordagem Algorítmica
17- fim
18- calcular o salário final
19- imprimir (salarioFinal);
Versão 5
1- declarar sexo;
2- declarar salarioBase, aumentoBase, aumentoPorFilhos, salarioFinal;
3- declarar numeroFilhos, codigo;
4- ler (codigo, sexo, numeroFilhos, salarioBase);
5- se sexo = ‘F’ então
6- inicio
7- calcular aumentoBase = salarioBase * 0.7;
8- se numeroFilhos > 0 então
9- calcular aumentoPorFilho = 0.09*numeroFilhos*salarioBase;
10- senão
11- calcular aumentoPorFilho = 0;
12- fim
13- senão
14- inicio
15- calcular aumentoBase = 0;
16- calcular aumentoPorFilho = 0;
17- fim
18- calcular salarioFinal=salarioBase+aumentoBase+aumentoPorFilho;
19- imprimir (salarioFinal);
Como todas as linhas do nosso algoritmo são claras e precisas, vamos traduzi-
lo para um programa em C.
/*--------------------------------------------------------------------------------------------------------
Objectivo: Calcular o aumento salarial dos funcionarios do sexo feminino
Entrada : Salário de base, número de filhos, número do trabalhador e sexo
Saida : Número do trabalhador e salário final
-------------------------------------------------------------------------------------------------------*/
#include <stdio.h> /* incluir as funções scanf() e printf() */
#include <stdlib.h> /* incluir a função system() */
#include <ctype.h> /* incluir a função toupper() */
int main()
{
const char FEMININO = ‘F’;
char sexo;
float salarioBase, aumentoBase, aumentoPorFilho,salarioFinal;
int numeroFilhos, codigo;
printf("\n Entre com o numero do trabalhador:"); scanf("%d",&codigo);
printf("\n Entre com o sexo do Trabalhador :");scanf("%c",&sexo);
printf("\n Entre com o numero de Filhos :"); scanf("%d",&numeroFilhos);
89
Fundamentos de Programação em C: Uma Abordagem Algorítmica
/*--------------------------------------------------------------------------------------------------------
Objectivo: Calcular o aumento salarial dos funcionarios do sexo feminino
Entrada : Salário de base, número de filhos, número do trabalhador e sexo
Saida : Número do trabalhador e salário final
-------------------------------------------------------------------------------------------------------*/
#include <stdio.h> /* incluir as funções scanf() e printf() */
#include <stdlib.h> /* incluir a função system() */
#include <ctype.h> /* incluir a função toupper() */
int main()
{
const char FEMININO = ‘F’;
char sexo;
float salarioBase, aumentoBase=0.0, aumentoPorFilho= 0.0, salarioFinal;
int numeroFilhos, codigo;
printf("\n Entre com o numero do trabalhador:"); scanf("%d",&codigo);
printf("\n Entre com o sexo do Trabalhador :");scanf("%c",&sexo);
printf("\n Entre com o numero de Filhos :"); scanf("%d",&numeroFilhos);
90
Fundamentos de Programação em C: Uma Abordagem Algorítmica
Vamos analisar o programa mais uma vez. Será que não conseguimos
simplifica-lo? É claro que sim. Basta entender que o comando condicional
if (numeroFilhos > 0)
aumentoPorFilho = 0.09 * numeroFilhos*salarioBase;
/*--------------------------------------------------------------------------------------------------------
Objectivo: Calcular o aumento salarial dos funcionarios do sexo feminino
Entrada : Salário de base, número de filhos, número do trabalhador e sexo
Saida : Número do trabalhador e salário final
-------------------------------------------------------------------------------------------------------*/
#include <stdio.h> /* incluir as funções scanf() e printf() */
#include <stdlib.h> /* incluir a função system() */
#include <ctype.h> /* incluir a função toupper() */
int main()
{
const char FEMININO = ‘F’;
char sexo;
float salarioBase, aumentoBase=0.0, aumentoPorFilho= 0.0, salarioFinal;
int numeroFilhos, codigo;
printf("\n Entre com o numero do trabalhador:"); scanf("%d",&codigo);
printf("\n Entre com o sexo do Trabalhador :");scanf("%c",&sexo);
printf("\n Entre com o numero de Filhos :"); scanf("%d",&numeroFilhos);
printf("\n Entre com o Salario de Base :"); scanf("%f",&salarioBase);
if (toupper(sexo) == FEMININO)
{
aumentoBase = salarioBase * 0.7;
aumentoPorFilho = 0.09 * numeroFilhos*salarioBase;
}
salarioFinal = salarioBase + aumentoBase + aumentoPorFilho;
91
Fundamentos de Programação em C: Uma Abordagem Algorítmica
Versão 1
1- ler os dados do trabalhador;
2- calcular o valor do prémio;
3- imprimir dados do trabalhador e o valor do prémio;
Versão 2
1- declarar passe, horasExtras, horasFalta;
2- declarar salarioBase, premio;
3- ler( passe, horasExtras, horasFalta);
4- calcular o valor do prémio;
5- imprimir (passe,premio);
92
Fundamentos de Programação em C: Uma Abordagem Algorítmica
quatros das horas de faltas, por outro, do intervalo de horas apuradas. Seja
float horasPremio uma variável auxiliar que irá armazenar as horas apuradas.
Então, essa expanção deve ser modelada por um comando condicional.
Versão 3
1- declarar passe, horasExtras, horasFalta, horasPremio;
2- declarar salario, premio;
3- ler( passe, horasExtras, horasFalta);
4- calcular horasPremio;
5- se hora de prémio estão num determinado intervalo então
6- calcular o valor do prémio;
7- imprimir(passe,premio);
Versão 4
1- declarar passe, horasExtras, horasFalta, horasPremio;
2- declarar salario, premio;
3- ler( passe, horasExtras, horasFalta);
4- calcular horasPremio;
5- se horasPremio > 40 então
6- calcular o valor do prémio;
7- senao se horasPremio > 30 então
8- calcular o valor do prémio;
9- senão se horasPremio > 20 então
10- calcular o valor do prémio;
11- senão se horasPremio > 10 então
12- calcular o valor do prémio;
13- senão
14- calcular o valor do prémio;
15- imprimir (passe, premio);
Versão 5
1- declarar passe, horasExtras, horasFalta, horasPremio;
2- declarar salario, premio;
3- ler( passe, horasExtras, horasFalta);
4- calcular horaspremio= horasExtra - 3/4 *horasFalta;
5- se horasPremio > 40 então
6- calcular premio = salario * 0.5;
7- senao se horasPremio > 30 então
8- calcular premio = salario * 0.4;
9- senão se horasPremio > 20 então
93
Fundamentos de Programação em C: Uma Abordagem Algorítmica
/*--------------------------------------------------------------------------------------------------------
Objectivo: Calcular o bónus de salário pelas horas de trabalho
Entrada : Passe, horas extraordinárias, horas de faltas e salário base
Saida : Valor do prémio
--------------------------------------------------------------------------------------------------------*/
#include <stdio.h> /* incluir as funções scanf() e printf() */
#include <stdlib.h> /* incluir a função system() */
int main()
{
int passe, horasPremio, horasExtras, horasFalta;
float salario, premio;
printf("\n Entre com o numero do trabalhador:"); scanf("%d",&passe);
printf("\n Entre com as Horas Extras :");scanf("%d",&horasExtras);
printf("\n Entre com as Horas de Falta :"); scanf("%d",&horasFalta);
printf("\n Entre com o valor do Salario :"); scanf("%f",&salario);
horasPremio = (int)horasExtras – 3.0/4.0*horasFalta;
if (horasPremio > 40)
premio = salario * 0.50;
else if (horasPremio >30)
premio = salario * 0.40;
else if (horasPremio > 20)
premio = salario * 0.30;
else if (horasPremio > 10)
premio = salario *0.20;
else
premio = salario * 0.10;
printf(" \n Numero do trabalhador %d ",passe);
printf(" \n Valor do premio %.2f ", premio);
system("PAUSE");
return 0;
}
94
Fundamentos de Programação em C: Uma Abordagem Algorítmica
Iniciados : 5 a 10 anos;
Juvenil A: 11 a 13 anos;
Junior: 14 a 17 anos;
Sênior: maiores de 18 anos.
96
Fundamentos de Programação em C: Uma Abordagem Algorítmica
#include <stdio.h>
int main()
{
int a,b,q,r;
printf("Inserir um inteiro positivo\n"); scanf("%d",&a);
printf("Inserir outro inteiro positivo\n"); scanf("%d",&b);
q = a/b;
r = a-b*q;
if (r == 0)
printf("%d = %d * %d\nPortanto, %d divide %d\n",a,b,q,b,a);
else
printf("%d = %d * %d + %d\n",a,b,q,r);
return 0;
}
97
Fundamentos de Programação em C: Uma Abordagem Algorítmica
Sabe-se que um litro de gasolina custa 75,00 Kz, um litro de gasóleo custa
25,00 Kz e um litro de petroleo iluminante custa 15,00 Kz. Desenvolva um
programa que dado o número de litros vendidos e o tipo de combustível,
imprimir o correspondente talão para o cliente.
4.10.21-Uma frutaria está a fazer uma promoção de duas frutas tropicais, com
base na seguinte tabela:
98
Fundamentos de Programação em C: Uma Abordagem Algorítmica
Sabe-se ainda que cada vendedor tem um desconto de 7% sobre o seu salário
fixo para segurança social. Se o seu salário total for superior ou igual a
800.000,00 Kz o vendedor sofrerá um desconto de 2% sobre esse salário,
relativo ao imposto de rendimento de trabalho. Desenvolva um programa que
dados o salário fixo de um vendedor, o número de televisores vendidos LCD e
a cores, imprimir o salário bruto e líquido. Faça um relatório perceptível ao
vendedor.
IMC Situação
Menos de 20 Desnutrido
𝑝𝑒𝑠𝑜 De 20 até 25 Normal
IMC =
𝐴𝑙𝑡𝑢𝑟𝑎 𝑥 𝐴𝑙𝑡𝑢𝑟𝑎 De 25 até 30 Excesso de peso
De 30 até 40 Obesidade leve
Acima de 40 Obesidade grave
101
Fundamentos de Programação em C: Uma Abordagem Algorítmica
4.10.36-Uma loja do tipo preço único possui artigos de três e cinco Kwanzas. A
menor venda possível sem troco é obrigatóriamente oito Kwanzas. Desenvolva
um programa que mostre como fazer uma compra superior a oito Kwanzas sem
receber o troco.
Signo Intervalo
Aquário 21 de Janeiro a 19 de Fevereiro
Peixes 20 de Fevereiro a 20 de Março
Áries 21 de Março a 20 de Abril
102
Fundamentos de Programação em C: Uma Abordagem Algorítmica
Escreva um programa que compara duas viaturas. São dados a marca, o ano
de fabrico, a cilindrada, a quantidade de quilômetros rodados e a quantidade de
litros consumidos.
Peso:
Até 1 Kg 100,00 Kz
De 1kg à 5 Kg 150,00 Kz
Acima de 5 Kg 150 KZ mais 50,00 KZ por cada KG em excesso
Tipo encomenda:
Normal Adicionar 70,00 Kz
Rápida Adicionar 150,00 Kz
Expresso Adicionar 300,00 Kz
Região:
Norte Adicionar 500,00 Kz Este Adicionar 1000,00 Kz
Sul Adicionar 450,00 Kz Oeste Adicionar 1250,00 Kz
103
Fundamentos de Programação em C: Uma Abordagem Algorítmica
Nota Peso
Trabalho laboratório 2
Avaliação semestral 3
Exame final 5
13.5 a 15.4 B
11.5 a 13.4 C
9.5 a 11.4 D
0 a 9.4 E
4.11.4-Dado uma senha com quatro algarismos. Dizemos que ela é válida,
quando não possui algarismos repetidos ou algarismos consecutivos em ordem
crescente ou decrescente. Por exemplo: a senha 1123 é inválida porque
contém algarismos consecutivos (123) repetidos; a senha 1635 válida e a
senha 5935 é inválida porque o algarismo 5 repete-se.
Por exemplo:
2 1 6 1 0 8
X X X X X X
1 2 1 2 1 2
temos:
2 + 2 + 6 + 2 + 0 + 1+ 6 = 19
216108 – 1
105
Fundamentos de Programação em C: Uma Abordagem Algorítmica
106