Você está na página 1de 2

Colegiado de Engenharia da Computação

Universidade Federal do Vale do São Francisco

CCMP0016 - Algoritmo e Programação


Aula de Laboratório 05

Tópicos:
1. Aplicações das estruturas em programas-fonte C
2. Aplicações com algoritmos básicos.
3. Dicionário de dados
4. Plano de teste
5. Descrição linha a linha
6. Imagens da execução de programas
7. Fluxograma.
8. Relatório 5.
Livro Texto: Fundamentos da Programação de Computadores
Capítulo 3 – Estrutura sequencial
Capítulo 4 – Estrutura condicional
Capítulo 5 – Estrutura de repetição
Exemplos

Mudanças e Variações

Antônio tem 1,50 m e cresce 2 cm por ano, enquanto José tem 1,30 m e cresce 4 cm por
ano. Faça um programa para calcular e imprimir quantos anos são necessários para que José
seja maior do que Antônio.

Dicionário de Dados

Processo
Variável Descrição Tipo de Dado Valor Inicial
(E/P/S)
AlturaAntonio Altura de Antônio float 1.50 E, P
VarAltAntonio Crescimento Anual de Antônio float 0.02 E
AlturaJose Altura de José float 1.30 E, P

VarAltJose Crescimento Anual de José float 0.04 E

Ano Ano int 0 P, S

Plano de Teste

AlturaAntonio AlturaJose Ano


1,50 1,30 0
1,52 1,34 1
1,54 1,38 2
1,56 1,42 3
1,58 1,46 4
1,60 1,50 5
1,62 1,54 6
1,64 1,58 7
1,66 1,62 8
1,68 1,66 9
1,70 1,70 10
1,72 1,74 11

Programa-fonte

#include <stdio.h>

#define VarAltAntonio 0.02


#define VarAltJose 0.04

int main( void ){


int Ano = 0;
float AlturaAntonio = 1.50,
AlturaJose = 1.30;

while( AlturaAntonio > AlturaJose ){


AlturaAntonio = AlturaAntonio + VarAltAntonio;
AlturaJose = AlturaJose + VarAltJose;
Ano = Ano + 1;
}
printf( "\n José fica maior do que Antônio no ano %d: ", Ano );
return 0;
}
Solução com abreviações:
#include <stdio.h>
#define VarAltAntonio 0.02
#define VarAltJose 0.04
int main( void ){
int Ano = 0;
float AlturaAntonio = 1.50,
AlturaJose = 1.30;
while( AlturaAntonio > AlturaJose ){
AlturaAntonio += VarAltAntonio;
AlturaJose += VarAltJose;
Ano++;
}
printf( "\n José fica maior do que Antônio no ano %d: ", Ano );
return 0;
}

Execute este programa no C Tutor e compreenda o seu fluxo de controle.

Lendo do Teclado

Faça um programa que leia um número não determinado de pares de valores [m,n], todos
inteiros e positivos, um par de cada vez, e que mostre todos os números inteiros entre m e n
(inclusive). A digitação de pares terminará quando m for maior do que n.

Dicionário de Dados

Processo
Variável Descrição Tipo de Dado Valor Inicial
(E/P/S)
m Valor de m int input E, P
n Valor de n int input E, P
i Variável auxiliar int - P

Plano de Teste

m n Saída
1 5 2345
2 8 345678
0 9 123456789
1 1
4 5 5
5 4

Programa-fonte

#include <stdio.h>

int main( void ){


int m, n;

printf( "Digite os valores de m e n: " );


scanf("%d %d", &m, &n );

while( m <= n ){
int i = m + 1;
printf( "\n Valores entre %d e %d: ", m, n );
while( i <= n ){
printf( " %d ", i );
i++;
}
printf( "\n\n Digite os valores de m e n: " );
scanf("%d %d", &m, &n );
}
return 0;
}

Refaça este programa usando a estrutura for.

Somando Parcelas
6
xi
Elabore um programa que calcule e informe o valor da série S=∑ , para x = 2. O
i=1 i
programa deve ainda indicar quantos termos da série foram usados.

Dicionário de Dados

Processo
Variável Descrição Tipo de Dado Valor Inicial
(E/P/S)
i contador int 1 P,S
x Constante da série double 2.0 E
parcela parcela = pow(x,i)/i double - P
S Acumulador double 0.0 P,S

Plano de Teste

i x parcela S
2.0 0.000000
1 parcela = pow(2,1)/1 = 2.000000 S = 0.000000 + 2.000000 = 2.000000
2 parcela = pow(2,2)/2 = 2.000000 S = 2.000000 + 2.000000 = 4.000000
3 parcela = pow(2,3)/3 = 2.666667 S = 4.000000 + 2.666667 = 6.666667
4 parcela = pow(2,4)/4 = 4.000000 S = 6.666667 + 4.000000 = 10.666667
5 parcela = pow(2,5)/5 = 6.400000 S = 10.666667 + 6.400000 = 17.066667
6 parcela = pow(2,6)/6 = 10.666667 S = 17.066667 + 10.666667 = 27.733333

Programa-fonte

#include <stdio.h>
#include <math.h> // pow

int main( void ){


int i;
double x = 2.0, parcela, S = 0.0;

for( i = 1; i <= 6; i++ ){


parcela = pow(x,i)/i;
S += parcela;
}
printf( "\n i = %d S = %lf", i-1, S );
return 0;
}

Imagem da execução

Refaça este programa usando a estrutura while e o tipo float.

Execute este programa no C Tutor e avalie o Plano de Teste.

Prevendo o Salário

Um funcionário de uma empresa recebe aumento salarial anualmente. Faça um programa


que determine o salário atual desse funcionário sabendo que:

• esse funcionário foi contratado em 2015, com salário inicial de $ 5.000,00


• em 2016, ele recebeu o aumento de 1,5% sobre seu salário inicial
• a partir de 2017 (inclusive), os aumentos salariais sempre corresponderam ao dobro
do percentual do ano anterior.

Dicionário de Dados

Processo
Variável Descrição Tipo de Dado Valor Inicial
(E/P/S)
Ano Ano int 2016 (for) P
Salario Salario float 5000,00 P, S
Aumento Aumento = 2*Aumento float 1.5/100 P

Plano de Teste

Ano Aumento Salário


2015 5.000,00
2016 1,5/100 5.000,00 * (1+0,015) = 5.075,00
2017 3,0/100 5.075,00 * (1+0,030) = 5.227,25
2018 6,0/100 5.227,25 * (1+0,060) = 5.540,88
2019 12,0/100 5.540,88 * (1+0,120) = 6.205,79
2020 24,0/100 6.205,79 * (1+0,240) = 7.695,18
2021 48,0/100 7.695,18 * (1+0,480) = 11.388,87
2022 96,0/100 11.388,87 * (1+0,960) = 22.322,18
2023 1,92/100 22.322,18 * (1+1,920) = 65.180,77

#include <stdio.h>

int main( void ){


int Ano;
float Salario, Aumento;

Ano = 2015;
Salario = 5000.00;
Aumento = 1.5/100.0;

printf( "\n Ano Salário($) " );


printf( "\n -----------------" );
printf( "\n %4d %9.2f", Ano, Salario );
for( Ano = 2016; Ano < 2022; Ano++ ){
Salario = Salario * ( 1.0 + Aumento );
Aumento *= 2.0;
printf( "\n %4d %9.2f", Ano, Salario );
}
printf( "\n -----------------" );

return 0;
}

Imagem da execução

Desenhando Padrões

A solução geral para desenhar o padrão abaixo:

#####################
########## ##########
######### #########
######## ########
####### #######
###### ######
##### #####
#### ####
### ###
## ##
# #

Pensamento Computacional

A solução geral é para qualquer número de linhas e qualquer número de colunas. Sejam NL
(número de linhas) e NC (número de linhas), neste caso NL = 10 e NC = 20.
Pode-se observar a simetria em relação à coluna central NC/2.

Caracteres '#' e espaço em branco ' '

c 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 l
0
# # # # # # # # # # # # # # # # # # # # #
1
# # # # # # # # # # | # # # # # # # # # #
2
# # # # # # # # # | # # # # # # # # #
3
# # # # # # # # | # # # # # # # #
4
# # # # # # # | # # # # # # #
5
# # # # # # | # # # # # #
6
# # # # # | # # # # #
7
# # # # | # # # #
8
# # # | # # #
9
# # | # #
10
# | #

O padrão da esquerda diminui o número de '#' (alinhado à esquerda), de 1 em 1 à medida


que a linha aumenta de 1 em 1. Para linha:
• para l = 0 desenha-se NC/2 '#' seguido 0 ' '
• para l = 1 desenha-se NC/2-1 '#' seguido 1 ' '
• para l = 2 desenha-se NC/2-2 '#' seguido 2 ' '
• …

Pode-se pensar no algoritmo para o padrão da esquerda:

for( l = 0; l < NL; l++ ){


for( c = 0; c < NC; c++ ){
if( c < NC/2-l ) printf("#");
else printf(" ");

O padrão da direita diminui o número de # (alinhado à direita), de 1 em 1 à medida que a


linha aumenta de 1 em 1. Para linha:
• para l = 0 desenha-se NC/2+1 ' ' seguido de NC/2 '#'
• para l = 1 desenha-se NC/2+2 ' ' seguido de NC/2-1 '#'
• para l = 2 desenha-se NC/2+3 ' ' seguido de NC/2-2 '#'
• ...

Pode-se pensar no algoritmo para o padrão da direita:

for( l = 0; l < NL; l++ ){


for( c = 0; c < NC; c++ ){
if( c > l+NC/2-1 ) printf("#");
else printf(" ");

Juntando os dois padrões:

for( l = 0; l < NL; l++ ){


for( c = 0; c < NC; c++ ){
if( c < NC/2-l || c > l+NC/2-1 ) printf("#");
else printf(" ");

Programa-fonte

Número de linhas => NL = 10


Número de colunas => NC = 2*NL

variável para linha => l (l vai varia de 0 (l = 0) a 10 (l < 11)


variável para coluna => c (c vai varia de 0 (c = 0) a 20 (c < 21)

#include <stdio.h>

#define NL 10
#define NC 2*NL

int main( void ){


int l, c;
for( l = 0; l < NL; l++ ){
for( c = 0; c < NC; c++ ){
if( (c < NC/2-l) || (c > l+NC/2-1) ) printf("#");
else printf(" ");
}
printf("\n");
}
return 0;
}

Imagem da execução

Execute este programa no C Tutor e compreenda o seu fluxo de controle.

Refaça este programa usando a estrutura while.

Atividade 1

Visualize os algoritmos dos Exemplos no C Tutor e observe a mudança dos valores das
variáveis a cada ciclo da estrutura de iteração.

Atividade 2

Leia os links abaixo:

C for Loop statement


break and continue
switch case statement
C while Loop statement
https://en.cppreference.com

Estude os exemplos dos links abaixo:

C Program to print fibonacci series


C Program to generate multiplication table
C Program to count number of digits in given number
C Program to reverse number
C Program to find GCD of two numbers, greatest common divisor (GCD)
C Program to find LCM of two numbers, Least Common Multiple (LCM)
C Program to display factors of number
C Program to find minimum numbers from entered numbers
C Program to find maximum numbers from entered numbers

Atividade 3

Estude o Capítulo 5 – Estruturas de repetição


Capítulo 5 → Estude os exercícios resolvidos
Capítulo 5 → Faça os exercícios propostos

Exercícios

Faça o relatório formatado com do programa C que resolve:

• dicionário de dados
• plano de teste
• programa-fonte
• fluxograma
• descrição linha a linha
• saída formatada
• imagem da execução do programa1
• falta de indentação anula o exercício

1. Explique a estrutura de iteração while e seus principais componentes.


2. Explique a estrutura de iteração do-while e seus principais componentes.
3. Explique a estrutura de iteração for e seus principais componentes.
4. Como é definida a condição de parada em a estrutura de iteração while?
5. Como é definida a condição de parada em a estrutura de iteração do-while?
6. Como é definida a condição de parada em a estrutura de iteração for?
7. Crie um algoritmo que use while para imprimir os números entre x e y, x e y lidos do
teclado.
8. Crie um algoritmo que use for para imprimir os números entre x e y, x e y lidos do
teclado.
9. Crie um algoritmo que use while para imprimir a contagem dos números entre x e y, x
e y lidos do teclado.
10. Crie um algoritmo que use for para imprimir a contagem dos números entre x e y, x e
y lidos do teclado.
11. Crie um algoritmo que use while para imprimir os números ímpares entre x e y, x e y
lidos do teclado.
12. Crie um algoritmo que use for para imprimir os números ímpares entre x e y, x e y
lidos do teclado.
13. Crie um algoritmo que use while para imprimir a contagem dos números ímpares
entre x e y, x e y lidos do teclado.
14. Crie um algoritmo que use for para imprimir a contagem dos números ímpares entre x
e y, x e y lidos do teclado.
15. Crie um algoritmo que use while para imprimir os números pares entre x e y, x e y
lidos do teclado.
16. Crie um algoritmo que use for para imprimir os números pares entre x e y, x e y lidos
do teclado.
17. Crie um algoritmo que use while para imprimir a contagem dos números pares entre x
e y, x e y lidos do teclado.
18. Crie um algoritmo que use for para imprimir a contagem dos números pares entre x e
y, x e y lidos do teclado.
19. Crie um algoritmo que use while para imprimir a soma dos números entre x e y, x e y
lidos do teclado.
20. Crie um algoritmo que use for para imprimir a soma dos números entre x e y, x e y
lidos do teclado.
21. Crie um algoritmo que use while para imprimir a soma dos números ímpares entre x e
y, x e y lidos do teclado.
22. Crie um algoritmo que use for para imprimir a soma dos números ímpares entre x e y,
x e y lidos do teclado.
23. Crie um algoritmo que use while para imprimir a soma dos números pares entre x e y,
x e y lidos do teclado.
24. Crie um algoritmo que use for para imprimir a soma dos números pares entre x e y, x
e y lidos do teclado.
25. Escreva um algoritmo que utilize o while para imprimir uma sequência de Fibonacci.
26. Escreva um algoritmo que utilize o for para imprimir uma sequência de Fibonacci.
27. Crie um algoritmo que solicite ao usuário números até que ele digite 0, usando while.
28. Escreva um algoritmo que utilize o while para calcular a média de n números
fornecidos pelo usuário.
29. Crie um algoritmo que verifique se um número é primo utilizando a estrutura while.
30. Crie um algoritmo que peça um número e mostre sua tabuada utilizando while.
31. Escreva um algoritmo que use while para encontrar o primeiro número de Fibonacci
maior que 1000.
32. Desenvolva um algoritmo que imprima uma pirâmide de asteriscos utilizando o laço
while.
33. Crie um algoritmo que peça números ao usuário até que a soma desses números
atinja 100, utilizando while.
34. Crie um algoritmo que calcule a soma dos primeiros n números inteiros positivos
usando for.
35. Crie um algoritmo que calcule a soma dos primeiros n números inteiros positivos
usando while.
36. Construa um algoritmo que calcule a média aritmética de uma lista de números
usando for.
37. Escreva um algoritmo que calcule a soma de todos os números pares de 1 a N usando
for.
38. Escreva um programa que leia valores de raios de círculos, calcule e imprima sua
área, valor de raio nulo encerra o programa.
39. Escreva um programa que leia valores de lados de quadrados, calcule e imprima sua
área, valor de lado nulo encerra o programa.
40. Faça um programa que leia números reais maiores do que zero. Quando for lido o
número zero, o programa deverá imprimir a contagem dos números lidos.
41. Faça um programa que leia números reais maiores do que zero. Quando for lido o
número zero, o programa deverá apresentar a soma dos números lidos.
42. Faça um programa que leia números reais maiores do que zero. Quando for lido o
número zero, o programa deverá apresentar a mádia dos números lidos.
43. Altere o seguinte programa para usar while em vez de for.
#include<stdio.h>
int main( void ){
int numero, guarda_maior, guarda_menor;
int i;
printf( "Digite um numero inteiro: " );
scanf ( "%i", &numero );
guarda_maior = numero;
guarda_menor = numero;
for( i = 1; i < 10; i++ ){
printf("\n Digite um numero inteiro: " );
scanf ( "%d", &numero );
if( numero > guarda_maior) guarda_maior = numero;
else if( numero < guarda_menor ) guarda_menor = numero;
}
printf( "\n O menor numero lido e: %d", guarda_menor );
printf( "\n O maior numero lido e: %d", guarda_maior );
return 0;
}
44. Altere o seguinte programa para usar while em vez de for.
#include<stdio.h>
int main( void ){
int numero, guarda_maior, guarda_menor;
int i;
for( i = 1; i < 10; i++ ){
printf("\n Digite um numero inteiro: " );
scanf ( "%d", &numero );
if( i == 1 ){
guarda_maior = numero;
guarda_menor = numero;
}
if( numero > guarda_maior) guarda_maior = numero;
else if( numero < guarda_menor ) guarda_menor = numero;
}
printf( "\n O menor numero lido e: %d", guarda_menor );
printf( "\n O maior numero lido e: %d", guarda_maior );
return 0;
}
45. Faça um programa que receba uma senha formada de quatro números inteiros,
verifique se a senha está correta e, caso não esteja, solicite novamente a senha. Se a
senha entrada for a correta, deverá ser apresentada a mensagem "Senha Correta",
caso contrário, "Senha Incorreta".
46. Escreva um programa que pergunte ao usuário quantos alunos tem na sala dele. Em
seguida, através de um laço while, pede ao usuário para que entre com as notas de
todos os alunos da sala, um por vez. Por fim, o programa deve mostrar a média,
aritmética, da turma.
47. Escreva um programa em C que solicita 10 números ao usuário, através de um laço
while, e ao final mostre qual destes números é o maior.
48. Escreva um programa em C que solicita 10 números ao usuário, através de um laço
while, e ao final mostre os dois maiores números digitados pelo usuário.
49. Escreva um programa que lê o tamanho do lado de um quadrado e imprime um
quadrado daquele tamanho com asteriscos. Seu programa deve funcionar para
quadrados com lados de todos os tamanhos entre 1 e 20. Por exemplo, para lado igual
a 5:
*****
*****
*****
*****
*****
50. Escreva um programa que lê o tamanho do lado de um quadrado e imprime um
quadrado daquele tamanho com asteriscos e espaços em branco. Seu programa deve
funcionar para quadrados com lados de todos os tamanhos entre 1 e 20. Para lado
igual a 5:
*****
* *
* *
* *
*****
51. Escreva um programa que pergunta um número ao usuário, e mostra sua tabuada
completa (de 1 até 10).
52. Ler 10 números e imprimir quantos são pares e quantos são ímpares.
53. Crie um programa que leia um número do teclado até que encontre um número igual
a zero. No final, mostre a soma dos números digitados.
54. Elaborar um programa C para imprimir os números pares em ordem decrescente (até
atingir 0 inclusive) a partir de um número n fornecido como entrada.
55. Fazer um programa que imprima a média aritmética dos números 8,9 e 7. A media
dos numeros 4, 5 e 6. A soma das duas médias. A media das medias
56. Ler 10 números e imprimir o número lido, seu sucessor e seu antecessor.
57. Ler 10 números e imprimir o número lido, o número lido com reajuste de 10% e o
número lido com desconto de 10%.
58. Ler 10 números e imprimir o número lido, seu quadrado e seu cubo.
59. Ler números inteiros enquanto a soma destes números for menor do 1000. Imprimir a
contagem das leituras.
60. Ler 10 números e imprimir o número lido e se ele é maior que 20, igual a 20 ou menor
que 20.
61. Ler um ano de nascimento e ano atual. Imprimir a idade da pessoa. Encerrar quando
ocorrer idade negativa.
62. Criar um algoritmo que leia os limites inferior e superior de um intervalo e imprimir
todos os números pares no intervalo aberto e seu somatório. Suponha que os dados
digitados são para um intervalo crescente.
63. Apresentar os quadrados dos números inteiros de 15 a 200
64. Apresentar todos os números divisíveis por 4 que sejam menores que 200.
65. Elaborar um programa que efetue a leitura de valores positivos inteiros até que um
valor negativo seja informado. Ao final devem ser apresentados o maior e menor
valores informados pelo usuário.
66. Um comerciante comprou muitos produtos e quer vendê-los com lucro de 45% se o
valor da compra for menor que 20,00; caso contrário, o lucro será de 30%. Entrar com
o valor do produto e imprimir o valor da venda. Zero encerra.
67. Faça um programa que receba o valor de um carro e mostre uma tabela com os
seguintes dados: preço final, quantidade de parcelas e valor da parcela. Considere o
seguinte:
▪ o preço final para compra à vista tem desconto de 20%
▪ o número de parcelas varia de 6 a 60; e
▪ o percentual de acréscimo, em %, é a metade do número de parcelas.
68. Escreva um programa que leia um número inteiro positivo N e em seguida imprima N
linhas do chamado triângulo de Floyd:
1
23
456
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21
69. Escreva um programa que leia um número inteiro positivo N e em seguida imprima N
linhas do chamado triângulo de Floyd invertido:
1
32
654
10 9 8 7
15 14 13 12 11
21 20 19 18 17 16
70. Uma livraria está fazendo uma promoção para pagamento à vista em que o
comprador pode escolher entre dois critérios de desconto. Critério A: $ 0,25 por livro
+ $ 7,50 fixo e Critério B: $ 0,50 por livro + $ 2,50 fixo. Faça um programa em que o
usuário digite a quantidade de livros que deseja comprar e o programa diga qual é a
melhor opção de desconto.
71. Dois automóveis estão distantes 80 km um do outro em uma grande reta. Se um vai
em direção ao outro com velocidades de 50 e 60 km/h, faça um programa para
calcular onde e quanto tempo demoram para se encontrarem.
72. Faça um programa que calcule o saldo de uma conta bancária tendo como entrada o
saldo inicial e dez lançamentos de operações de crédito e/ou débito. A saída são o
total de créditos, o total de débitos, os juros pagos ao banco (5% do total de débitos) e
o saldo final.
73. Faça um programa que receba a idade, a altura e o peso de cinco pessoas, calcule e
mostre a quantidade de pessoas com idade superior a 50 anos e peso maior do que 60
kg.
74. Faça um programa que receba a idade, a altura e o peso de cinco pessoas, calcule e
mostre a quantidade de pessoas com idade superior a 50 anos e peso maior do que 60
kg e altura menor do que 1,85 m.
75. Faça um programa que receba a idade, a altura e o peso de cinco pessoas, calcule e
mostre a média das alturas das pessoas com idade entre 10 e 20 anos.
76. Faça um programa que receba dez idades, pesos e alturas, calcule e mostre a média
das idades das dez pessoas.
77. Faça um programa que receba dez idades, pesos e alturas, calcule e mostre a
quantidade de pessoas com peso superior a 90 kg e altura inferior a 1,50 metro.
78. Faça um programa que receba um conjunto de valores inteiros e positivos, calcule e
mostre o maior e o menor valor do conjunto. Considere que:
▪ para encerrar a entrada de dados, deve ser digitado o valor zero;
▪ para valores negativos, deve ser enviada uma mensagem;
▪ os valores negativos ou iguais a zero não entrarão nos cálculos.
79. Desenvolva uma solução geral (qualquer número de linhas e qualquer número de
colunas) para imprimir o padrão a, da figura abaixo.
80. Desenvolva uma solução geral (qualquer número de linhas e qualquer número de
colunas) para imprimir o padrão b, da figura abaixo.
81. Desenvolva uma solução geral (qualquer número de linhas e qualquer número de
colunas) para imprimir o padrão c, da figura abaixo.
82. Desenvolva uma solução geral (qualquer número de linhas e qualquer número de
colunas) para imprimir o padrão d, da figura abaixo.
83. Desenvolva uma solução geral (qualquer número de linhas e qualquer número de
colunas) para imprimir o padrão e, da figura abaixo.
84. Desenvolva uma solução geral (qualquer número de linhas e qualquer número de
colunas) para imprimir o padrão f, da figura abaixo.
85. Desenvolva uma solução geral (qualquer número de linhas e qualquer número de
colunas) para imprimir o padrão g, da figura abaixo.
86. Desenvolva uma solução geral (qualquer número de linhas e qualquer número de
colunas) para imprimir o padrão h, da figura abaixo.
87. Desenvolva uma solução geral (qualquer número de linhas e qualquer número de
colunas) para imprimir o padrão i, da figura abaixo.
* *************
* * * * * * * * * * *
*** *
* * * * * * * * *
***** *************
* * * * * * * * * * *
******* *
* * * * * * * * *
********* *************
* * * * * * * * * * *
*********** *
* * * * * * * * *
************* *************
(a) (b) (c)
* * *************
** * * *
*** * * * *************
**** * * ***
***** * * * *************
****** * * *****
******* * * * *************
(d) (e) (f)
7 1 2 3 4 5 6 7 *************
7 6 2 3 4 5 6 7 *
7 6 5 3 4 5 6 7 *************
7 6 5 4 4 5 6 7 * *
7 6 5 4 3 5 6 7 *************
7 6 5 4 3 2 6 7 * *
7 6 5 4 3 2 1 7 *************
(g) (h) (i)
12 i
x
88. Faça um programa em C para calcular valores da série S=∑ , para x = 0.1.
i =1 i
50
x 2 i+1
89. Faça um programa em C para calcular valores da série S=∑ (−1)i , para x
i=0 2i+1
= 0.75.
20
x 2i
90. Faça um programa em C para calcular valores da série S=∑ (−1)i , para x =
i =1 2i
0.75.
10
ixi
91. Faça um programa em C para calcular valores da série S=∑ i , para x = 0.5.
i=0 3
22
x i+ 1
92. Faça um programa em C para calcular valores da série S=∑ 2
, para x =
i=0 (i+1)
1.5.
64
93. Faça um programa em C para calcular valores da série S=∑ i x i , para x = 1.5.
i=0

Desafio
1. Uma caixa d’água, de 1000 L está vazia, e começa a recebe água com vazão de 5
L/minuto. Faça um programa que calcule o tempo necessário para enchê–la sabendo
que é feita uma descarga de 50 L a cada 30 minutos, uma lavagem de 100 L a cada 2
horas e que tem um furo que perde água com vazão de 0,01 L/s. Qual a percentagem
de perdas de água? O que mudaria se consertasse o furo?
2. Escreva um programa que escreva todos os pares de números de dois algarismos que
apresentam a seguinte propriedade: o produto dos números não se altera se os dígitos
são invertidos. Por exemplo, 93 x 13 = 39 x 31 = 1209.
3. O número 3025 possui a seguinte característica: 30 + 25 = 55 e 55 2 = 3025. Escreva
um programa que escreva todos os números com quatro algarismos que possuem a
citada característica.
4. Uma empresa de telefonia adotou um sistema de cobrança cujo valor do minuto de
uma ligação varia de acordo com o horário de início:
• das 0h às 9h — 50% de desconto no valor do minuto.
• das 9h01 às 18h — 0% de desconto no valor do minuto.
• das 18h01 às 21h — 30% de desconto no valor do minuto.
• das 21h01 às 23h59 — 40% de desconto no valor do minuto.
Faça um programa que receba o horário inicial (hora e minuto) e o horário final (hora e
minuto), junto com o valor normalmente cobrado pelo minuto de uma ligação. De
acordo com os dados anteriores, aplique corretamente os descontos e mostre o valor
normal a ser cobrado e o valor com o desconto concedido.
Observação: Se a ligação começou em uma faixa de desconto e terminou em outra,
você deverá calcular o desconto de acordo com o período de duração da ligação em
cada faixa. Por exemplo, se uma ligação começou às 8h30 e terminou às 20h, você
deverá conceder 50% de desconto para o período de 8h30 até as 9h, 0% de desconto
para o período de 9h01 até as 18h e 30% de desconto para o período de 18h01 até as
20h
5. Dois números são considerados Amigáveis se um deles corresponder à soma dos
divisores (exceto o próprio número) do outro.
Por exemplo: vamos analisar os números 8 e 10.
• Os divisores de 8 são: 1, 2 e 4, resultando em soma igual a 7.
• Já os divisores de 10 são: 1, 2 e 5, resultando em soma igual a 8.
Assim, como a soma dos divisores de 10 (exceto ele próprio) resulta em 8, pode-se
dizer que os números 10 e 8 são amigáveis.
Criar um programa que receba dois números inteiros quaisquer e determine se são
amigáveis ou não.
Fazer o Fluxograma, o Dicionário de Dados e o Plano de Teste ajuda a elaborar estes
desafios?
Relatório

Faça o relatório formatado dos itens a, b, c e d dos Exercícios. Em que:

a = 1 + (p1 % N), p1 = 5*(5+M+N) + N*D*(D+M)


b = 1 + (p2 % N), p2 = D*(M+5 ) + N*(M+D)
c = 1 + (p3 % N), p3 = M*(D+5 ) + 5*N*M*D
d = 1 + (p4 % N), p4 = 5*D*M + N;

Sendo D e M o dia e o mês do seu aniversário, respectivamente; e N o número de questões


da lista dos correspondentes Exercícios.

Entrega via AVA nos formatos odt e pdf.


LibreOffice 7.6 ou superior.

Relatório 1 2 3 4 5 6 7 8 9 10 11 12 13
Valor 10 10 10 10 10 10 10 10 10 10 10 10 10
Peso 1 2 2 2 3 3 3 4 4 4 5 5 5

Tire suas Dúvidas


Informe sua dúvida para:

E-mail: ccmp0016.0@gmail.com
Assunto: [AP Dúvida]
Envie Sugestões
Envie sugestões para:

E-mail: ccmp0016.0@gmail.com
Assunto: [AP Sugestão]

Estude
Capítulo 1 – Conceitos Básicos
Capítulo 2 – Paradigma de programação
Capítulo 3 – Estrutura sequencial
Capítulo 4 – Estrutura condicional
Capítulo 5 – Estrutura de repetição
Capítulo 6 – Vetor
Capítulo 7 – Matriz
Capítulo 8 – Sub-rotinas
Capítulo 9 – Manipulando cadeias de caracteres
Capítulo 13 – Desafios

Capítulo 1 – Linguagem de Programação C – LPC


Capítulo 2 – Tipos de Dados Básicos
Capítulo 3 – Identificadores, Contantes e Variáveis
Capítulo 4 – Operações de Entrada e Saída (E/S)
Capítulo 5 – Operadores e Expressões
Capítulo 6 – Funções C
Capítulo 7 – Estruturas
Capítulo 8 – Tipos de Dados Derivados
Capítulo 9 – Resolvendo Problemas Usando Computadores
Capítulo 10 – Anexos

Capítulo 1 – Uma Visão Geral de C


Capítulo 2 – Expressões em C
Capítulo 3 – Comandos de Controle do Programa
Capítulo 4 – Matrizes e Strings
Capítulo 6 – Funções
Capítulo 8 – E/S pelo Console
Capítulo 10 – O Pré-processador de C e Comentários
Capítulo 13 – Funções de String e de Caracteres
Capítulo 14 – Funções Matemáticas
Capítulo 19 – Ordenação e Pesquisa

Capítulo 1 – Introdução à Lógica de Programação


Capítulo 2 – Tópicos Preliminares
Capítulo 3 – Estruturas de Controle
Capítulo 4 – Estruturas de Dados
Capítulo 4 – Modularizando Algoritmos

1 imagem da execução do programa exibe o plano de testes formatado

Relatório individual.
Colegiado de Engenharia da Computação
Universidade Federal do Vale do São Francisco

Capítulo 1 – Introdução
Capítulo 2 – Fundamentos
Capítulo 3 – Comandos de Condição
Capítulo 6 – Recursividade
Capítulo 7 – Vetores
Capítulo 4 – Comandos de Repetição

Relatório individual.

Você também pode gostar