Mudanças entre as edições de "PR1022804 2024 1 AULA04"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(Criou página com '=Introdução a linguagem C = ;OBJETIVOS :O aluno será capaz de: :* Descrever o processo de compilação; :* Diferenciar código fonte, objeto e executável; :* Compilar,...')
 
 
(6 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
=Introdução a linguagem C =
+
=Lista de Exercícios para AT1=
  
;OBJETIVOS
 
  
:O aluno será capaz de:
+
;INTRODUÇÃO: A lista de exercícios para Avaliação Teórica 1 (AT1) está dividida em quatro partes: Algoritmos, Operadores Relacionais e Lógicos, Estruturas de decisão e repetição e Introdução a linguagem C. Lembrando que em cada aula existe vários exercícios propostos. Esses exercícios servirão de base para nossa avaliação online. Não há necessidade de entregar os exercícios e todos os são feitos com base no material de aula da wiki. Na parte final, terão 31 exercícios de algoritmos que poderão ser utilizados na preparação para AT1 ou entregues como exercícios complementares.
  
:* Descrever o processo de compilação;
+
==Parte I - Algoritmos==
:* Diferenciar código fonte, objeto e executável;
 
:* Compilar, executar pequenos programa em C usando o gcc/CodeBlocks;
 
:* Declarar e usar variáveis locais inteiras e reais; e
 
:* Usar as funções de entrada e saída: ''scanf()'' e ''printf()''.
 
  
 +
[1] O que é um algoritmo e para que serve?
  
;METODOLOGIA
+
[2] Qual a diferença entre pseudocódigo e fluxograma?
  
:A aula será expositiva e dialogada, utilizando apresentação de texto base na Internet, onde serão mostrados exemplos testados programas no microcomputador do laboratório de informática.  
+
[3] Cite as seis etapas para a construção de um algoritmo.
  
 +
[4] Quais os pontos fortes e fracos na construção de fluxogramas?
  
;INTRODUÇÃO
+
[5] Para que serve um "teste de mesa"?
  
:A linguagem C foi criada por Dennis Ritchie, em 1972, no centro de Pesquisas da Bell Laboratories. Sua primeira utilização importante foi a reescrita do Sistema Operacional UNIX, que até então era escrito em assembly. Em meados de 1970 o UNIX saiu do laboratório para ser liberado às universidades. Foi o suficiente para que o sucesso da linguagem atingisse proporções tais que, por volta de 1980, já existiam várias versões de compiladores C oferecidas por diversas empresas, não sendo mais restritas apenas ao ambiente UNIX, como também compatível a outros sistemas operacionais. O C é uma linguagem de propósito geral, sendo adequada à programação estruturada. No entanto é mais utilizada para escrever compiladores, analisadores léxicos, bancos de dados, editores de texto, e <b>sistemas embarcados</b>.
+
[6] Qual a diferença entre constantes e variáveis?
  
:A linguagem C pertence a uma família de linguagens cujas características são: portabilidade, modularidade, compilação separada, recursos de baixo nível, geração de código eficiente, confiabilidade, regularidade, simplicidade e facilidade de uso.
+
[7] O que são as expressões e para que servem?
  
:Fonte: [ftp://ftp.unicamp.br/pub/apoio/treinamentos/linguagens/c.pdf] - Centro de Computação - UNICAMP
+
[8] Explique os operadores: %, ++ e --.
  
:*[http://pt.wikipedia.org/wiki/C_%28linguagem_de_programa%C3%A7%C3%A3o%29#Hist.C3.B3ria Histórico Completo]
+
[9] Faça um algoritmo na forma de pseudocódigo que encontre o ponto médio de uma reta dados os pontos A e B dessa reta.
:*[http://pt.wikipedia.org/wiki/C_%28linguagem_de_programa%C3%A7%C3%A3o%29#Vis.C3.A3o_geral Características da Linguagem]
 
:*O C K&R (uma especificação informal da linguagem) e o [http://www.ansi.org/ ANSI] C
 
:*Linguagem [http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_imperativa imperativa] e [http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_procedural procedural].
 
  
 +
[10] Faça um algoritmo na forma de fluxograma que encontre o ponto médio da metade final de uma reta dados os pontos A e B dessa reta, ou seja, entre M e B, onde M é o ponto médio.
  
 +
==Parte II - Operadores Lógicos e Relacionais==
  
==Algumas linguagens de programação==
+
[11] Analise as expressões abaixo e coloque como resultado: 0 para falso e 1 para verdadeiro:
  
Na prática, é inviável desenvolver programas complexos em <b>LINGUAGEM DE MÁQUINA</b>. Em geral, utilizamos linguagens de <b>ALTO NÍVEL</b> que podem, de alguma forma, serem traduzidas (compiladas) para a linguagem de baixo nível ou interpretadas em tempo de execução.
+
;Considerando: A=3, B=-1 e C=2
  
;EXEMPLOS
+
{| class="wikitable" style="background-color:#ffffff; text-align: center;"
 +
! style="background:#808080; color:white;" | Expressão
 +
! style="background:#808080; color:white;" | Resultado
 +
|-
 +
!style="text-align: center;" |A>B
 +
|
 +
|-
 +
!style="text-align: center;" |C>=A
 +
|
 +
|-
 +
!style="text-align: center;" |B<(C-A)
 +
|
 +
|-
 +
!style="text-align: center;" |C<=A
 +
|
 +
|-
 +
!style="text-align: center;" |A==(C+B)
 +
|
 +
|-
 +
!style="text-align: center;" |A!=3
 +
|
 +
|-
 +
!style="text-align: center;" |B=1
 +
|
 +
|}
  
* Linguagem C
+
[12] Analise as expressões abaixo e coloque como resultado: 0 para falso e 1 para verdadeiro:
* Fortran
 
* Basic
 
* C++
 
* Pascal
 
* Java
 
* Python
 
* PHP
 
 
 
 
 
<blockquote style="background:#E6E6FA; border: 2px solid #8A2BE2; margin-left: 0px; margin-right: 0px; padding: 1em; width:500px">
 
<b>Por que utilizaremos a linguagem C?</b><br>
 
É uma linguagem muito usada na implementação de produtos <br>
 
eletrônicos, incluindo àqueles voltados às Engenharias. <br>
 
</blockquote>
 
 
 
=Visão geral do processo de compilação com gcc =
 
 
 
 
 
* Linguagens compiladas (ex: C, Pascal) versus linguagens interpretadas (ex: PHP, Basic)
 
 
 
 
 
[[imagem:prog1_graduacao_fluxograma1.png|540px|center|border]]
 
<center>
 
Figura 1 - Processo de compilação de um programa em linguagem C.
 
</center>
 
 
 
 
 
<blockquote style="background:#E6E6FA; border: 2px solid #8A2BE2; margin-left: 0px; margin-right: 0px; padding: 1em; width:500px">
 
<b>Funcionamento:</b>
 
:Quando o <b>gcc</b> é chamado, ele normalmente realiza<br>
 
:quatro etapas para gerar o código executável:<br>
 
:pré-processamento, compilação, montagem e ligação.<br>
 
:Sempre nesta ordem.<br>
 
:Os primeiros três estágios são feitos com base no<br>
 
:arquivo fonte de entrada. No quarto estágio ele <br>
 
:produz um arquivo objeto.<br>
 
 
 
</blockquote>
 
 
 
 
 
<!-- [[imagem:ProcessoCompilacao.jpg|700px|center]] -->
 
 
 
== Compilando um  programa C==
 
 
 
Poderíamos usar o compilador da coleção [http://en.wikipedia.org/wiki/GNU_Compiler_Collection gcc] do [http://en.wikipedia.org/wiki/GNU_Project projeto GNU].<br>
 
O manual completo do gcc pode ser encontrado [http://gcc.gnu.org/ aqui].
 
 
 
:Vamos utilizar o CodeBlocks para ser utilizado nos computadores com Windows.
 
 
 
::[https://www.ime.usp.br/~jose/codeblocks/codeblocksintro.html Introdução ao CodeBlocks]
 
 
 
:Também pode ser utilizado um GCC on line:
 
 
 
:: https://www.onlinegdb.com/
 
 
 
O processo de desenvolvimento do programa, independente do SO, envolve:
 
 
 
*Editar o programa com um editor de texto tal como o ''vi'' ou ''gedit''.
 
*Salvar o programa com a terminação ".c" (ou ".h" se for um cabeçalho).
 
 
 
 
 
<b>NOTA (linux)</b>: crie um diretório para trabalhar nos exercícios que se seguem:
 
 
 
<pre>
 
$ mkdir Exercicios
 
$ cd Exercicios
 
</pre>
 
 
 
;EXEMPLO: Digite o código abaixo e salve em um arquivo com o nome "teste.c".
 
 
 
<syntaxhighlight lang=c>
 
#include <stdio.h>
 
 
 
void main()
 
{
 
  printf("Alo Mundo\n");
 
}
 
 
 
</syntaxhighlight>
 
 
 
<b>Compilar:</b> Gerar executável do programa usando o gcc:
 
 
 
<pre>
 
$ gcc teste.c -o teste
 
</pre>
 
 
 
<b>Testar o programa:</b>
 
 
 
<pre>
 
$ ./teste
 
</pre>
 
 
 
:Nota: o atributo <b>-o</b> permite que se forneça um nome para o executável diferente de <b>a.out</b>
 
 
 
É possível somente compilar (gerar código objeto):
 
 
 
<pre>
 
$  gcc -c teste.c
 
</pre>
 
 
 
 
 
Observe os subprodutos listando com detalhes:
 
 
 
<pre>
 
$  ls -l
 
</pre>
 
 
 
==Estrutura do Programa em C==
 
 
 
 
 
Um programa em C pode ser visto como um conjunto de uma ou mais funções:
 
 
 
<syntaxhighlight lang=c>
 
#include <stdio.h>
 
 
 
void main()
 
{
 
  printf("Alo Mundo\n");
 
}
 
 
 
</syntaxhighlight>
 
 
 
No programa acima temos uma única função: a função ''main()''
 
Uma função é um pedaço de código delimitado por chaves e com um nome.<br>
 
Todo programa C bem comportado deve ter um função ''main''.<br>
 
A primeira instrução desta função é o ponto de entrada do código do usuário.<br>
 
A primeira instrução do programa acima é uma chamada a uma função da biblioteca: o ''printf()''.<br>
 
Esta função permite mostrar dados no terminal.<br>
 
 
 
:Nota: Não é possível colocar instruções fora de funções!
 
 
 
Vamos ver algumas variações do Alo Mundo:
 
 
 
<syntaxhighlight lang=c>
 
#include <stdio.h>
 
 
void main()
 
{
 
  printf("Alo Mundo 1\n");
 
  printf("Alo Mundo 2\n");
 
  printf("Alo Mundo 3\n");
 
  printf("Alo Mundo 4\n");
 
  printf("Alo Mundo 5\n");
 
}
 
</syntaxhighlight>
 
 
 
e
 
 
 
<syntaxhighlight lang=c>
 
#include <stdio.h>
 
 
 
void main()
 
{
 
  printf("Alo Mundo 1");
 
  printf("Alo Mundo 2\n");
 
  printf("Alo Mundo 3\n\n");
 
  printf("Alo Mundo 4\n");
 
  printf("Alo Mundo 5\n");
 
}
 
</syntaxhighlight>
 
 
 
==Elementos definidos pela linguagem C==
 
 
 
;IDENTIFICADORES: Um identificador é um símbolo definido pelo usuário que pode ser um rótulo (label), uma constante, um tipo, uma variável, um nome de programa ou subprograma (procedimento ou função). Normalmente devem começar com um caractere alfabético e não podem conter espaços em branco, podendo ter no máximo 32 caracteres, não havendo distinção entre maiúsculas e minúsculas.
 
 
 
:Pode-se utilizar:
 
 
 
:*Letras (alfanuméricas) Aa até Zz;
 
:*Dígitos (numéricos) - 0 até 9;
 
:*Operadores ('+', '-', '/', '*', '%');
 
:*Tipos de dados (int, char, float).
 
 
 
;COMENTÁRIOS: Os comentários no programa fonte não têm função nenhuma para o compilador e serve apenas para aumentar a legibilidade e clareza do programa, podem ser inseridos com “//” que valem de onde começam até o fim da linha ou com “/*” e “*/”, sendo considerado comentário tudo entre “/*” e “*/”.
 
 
 
;ENDENTAÇÃO: A endentação também não tem nenhuma função para o compilador e serve para tornar a listagem do programa mais claro dando hierarquia e estrutura ao programa.
 
 
 
;CONSTANTES: Constantes são valores declarados no início do programa e que não se alteram na execução do programa. Podem ser expressas em qualquer base numérica.
 
 
 
;VARIÁVEIS: Uma declaração de variável consiste do nome do tipo de dado seguido do nome da variável. Todas as variáveis devem ser declaradas antes de serem usadas. As variáveis devem ser declaradas no início de cada função, procedimento ou início do programa.
 
 
 
 
 
Observe nestes exemplos a ordem de execução das instruções e o uso do caracter de nova linha.
 
 
 
=Declarando variáveis inteiras e reais locais=
 
 
 
 
 
No "c" temos que declarar as variáveis que serão utilizadas no programa.<br>
 
Se estas variáveis forem declaradas DENTRO da função elas serão "vistas" somente localmente <br>
 
(escopo local). Este conceito será estendido para blocos de códigos posteriormente.<br>
 
 
 
<syntaxhighlight lang=c>
 
#include <stdio.h>
 
 
 
void main()
 
{
 
  /* aqui começam as declarações de variáveis */
 
  int x; /* declaração de uma variável inteira */
 
  float y;  /* declaração de uma variável real */
 
 
 
  /* aqui começam as instruções do programa principal */
 
  x=5;  /* atribuindo o valor 5 (constante) a variável x */
 
  y=6.5;
 
  printf("Soma=%f",x+y);
 
}
 
</syntaxhighlight>
 
 
 
No exemplo anterior criamos duas variáveis : ''x'' e ''y''. <br>
 
Lembrando que variáveis podem ser vistas como um lugar que pode armazenar um valor. <br>
 
Para simplificar ainda mais, podemos imaginar a variável como uma CAIXA onde podemos armazenar um valor.<br>
 
A CAIXA possui um nome e um tipo. O nome IDENTIFICA a CAIXA enquanto o tipo da variável determina a <br>
 
natureza dos valores que podemos armazenar na CAIXA:
 
 
 
  +-----+
 
  <nowiki>|</nowiki> 5  |  x
 
  +-----+
 
 
 
A variável ''x'' é do tipo ''int'' e, portanto, está apta a armazenar valores inteiros. <br>
 
Já a variável y é do tipo float e está apta a receber valores reais.
 
 
 
  +-----+
 
  <nowiki>|</nowiki> 6.5 |  y
 
  +-----+
 
 
 
Observe que as instruções de atribuição acima envolvem constantes também.
 
 
 
==Funções de entrada e saída de dados==
 
 
 
 
 
No 'C' não existe instrução especialmente para leitura ou saída de dados.<br>
 
Este procedimento é realizado através de funções da biblioteca.<br>
 
Na sequência são mostradas duas funções "clássicas" de entrada e saída <br>
 
de dados: o ''printf()'' - já apresentado - e o ''scanf()''. <br>
 
Esta última função permite entrada de dados.<br>
 
  
 +
;Considerando: A=-1, B=1, C=0 e D=2
  
 +
{| class="wikitable" style="background-color:#ffffff; text-align: center;"
 +
! style="background:#808080; color:white;" | Expressão
 +
! style="background:#808080; color:white;" | Resultado
 +
|-
 +
!style="text-align: center;" |(A>B) && (C>D)
 +
|
 +
|-
 +
!style="text-align: center;" |(A<B) && !(C>D)
 +
|
 +
|-
 +
!style="text-align: center;" |(A<=B) &#124;&#124; (C<1)
 +
|
 +
|-
 +
!style="text-align: center;" |A>=B &#124;&#124; ((C>=D) && (D<=A))
 +
|
 +
|-
 +
!style="text-align: center;" |!A==B) && !(C!=D)
 +
|
 +
|-
 +
!style="text-align: center;" |((A==B) &#124;&#124; (B<30)) && (C>=D)
 +
|
 +
|-
 +
!style="text-align: center;" |(A>B>C>D) |& (B<C<A<D)
 +
|
 +
|}
  
<syntaxhighlight lang=c>
+
==Parte III - Estruturas de decisão e repetição==
#include <stdio.h>
 
  
void main()
+
[13] Faça um algoritmo na forma de fluxograma utilizando estrutura de repetição que imprima os 100 primeiros números pares.
{
 
 
  int x; /* declaração de uma variável inteira */
 
  float y;  /* declaração de uma variável real */
 
  
  printf ("Entre com o valor de x ");
+
[14] Faça um algoritmo na forma de pseudocódigo utilizando estrutura de repetição que imprima todos os anos bissextos a partir de 1900 até 2030.
  scanf("%d",&x);
 
  
  printf ("Entre com o valor de y ");
+
==Parte IV - Introdução a linguagem C==
  scanf("%f",&y);
 
  
  printf ("O valor de x é %d\n",x);
+
[15] Descreva o processo de compilação de um programa em linguagem C.
  printf ("O valor de y é %f\n",y);
 
}
 
  
</syntaxhighlight>
+
[16] O que é código fonte, código objeto e arquivo executável?
  
;A função <b>printf()</b> tem a seguinte forma geral
+
[17] Qual a diferença entre variáveis inteiras e reais?
  
 +
[18] Pra que servem as funções printf() e scanf()?
  
::<i>printf(string_de controle,lista_de_argumentos)</i>;
+
[20] Pra que servem e onde são utilizados os símbolos abaixo:
  
 
+
{| class="wikitable" style="background-color:#ffffff; text-align: left;"
{| class="wikitable" style="background-color:#ffffff; text-align: center;"
+
! style="background:#808080; color:white;" | Código
! style="background:#8A2BE2; color:white;" | Código
+
! style="background:#808080; color:white;" | Significado
! style="background:#8A2BE2; color:white;" | Significado
 
 
|-
 
|-
 
! style="text-align: center;" | %d
 
! style="text-align: center;" | %d
|Interio
+
|
 
|-
 
|-
 
! style="text-align: center;" | %f
 
! style="text-align: center;" | %f
|Float
+
|
 
|-
 
|-
 
! style="text-align: center;" | %c
 
! style="text-align: center;" | %c
|Caractere
+
|
 
|-
 
|-
 
! style="text-align: center;" | %%
 
! style="text-align: center;" | %%
|Coloca um % na tela
+
|
 
 
 
|}
 
|}
  
 +
[21] Qual o resultado de para as expressões abaixo?
  
;A função <b>scanf()</b> tem a seguinte forma geral
+
;Considerando: S, A=1,B=3,C=7: Inteiros;
 
 
 
 
::<i>scanf(string_de controle,lista_de_argumentos)</i>;
 
 
 
 
 
Uma variação do uso do ''printf'' neste exemplo é:
 
 
 
<syntaxhighlight lang=c>
 
#include <stdio.h>
 
 
void main()
 
{
 
 
  int x; /* declaração de uma variável inteira */
 
  float y;  /* declaração de uma variável real */
 
 
  printf ("Entre com o valor de x ");
 
  scanf("%d",&x);
 
 
  printf ("Entre com o valor de y ");
 
  scanf("%f",&y);
 
 
  printf ("O valor de x é %d e o valor de y é %f\n",x, y);
 
}
 
</syntaxhighlight>
 
 
 
==Construindo expressões no C==
 
 
 
 
 
;Operador de Atribuição
 
 
 
O operador de atribuição ''='' é utilizado para atribuir valores para variáveis.<br>
 
Veja o exemplo abaixo. Dois números do tipo float são lidos para as variáveis ''x'' e ''y'' e <br>
 
a média é calculada e colocada na variável média.
 
 
 
<syntaxhighlight lang=c>
 
#include <stdio.h>
 
 
 
void main()
 
{
 
  float x,y;
 
  float media;
 
 
 
  printf("Entre com x\n");
 
  scanf("%f", &x);
 
  printf("Entre com y\n");
 
  scanf("%f", &y);
 
  media = (x+y)/2;
 
  printf("Valor de media = %f\n",media);
 
}
 
</syntaxhighlight>
 
 
 
Um diferencial do C com relação a outras linguagens é que a atribuição pode ser realizada várias vezes dentro de uma mesma instrução. <br>
 
Veja o exemplo:
 
 
 
<syntaxhighlight lang=c>
 
#include <stdio.h>
 
 
 
void main()
 
{
 
  int x,y,w;
 
 
 
  x=1;
 
  w=y=x+1;
 
  printf("x=%d y=%d w=%d\n", x,y,w);
 
 
 
  w=2*y=x+1;
 
  printf("x=%d y=%d w=%d\n", x,y,w);
 
 
 
}
 
</syntaxhighlight>
 
 
 
NOTE que o código:
 
  w=2*y=x+1;
 
produz um erro de compilação:
 
erro: ''lvalue required as left operand of assignment''
 
  
Ver conceito de lvalue e rvalue [http://en.wikipedia.org/wiki/Value_%28computer_science%29 aqui].
 
  
O problema é que A ESQUERDA do sinal de atribuição sempre deve existir uma referência a uma área de memória (normalmente uma variável).<br>
 
A semântica da atribuição é copiar o valor computado a direita PARA a área referenciada a esquerda.<br>
 
  
;Operadores aritméticos
+
{| class="wikitable" style="background-color:#ffffff; text-align: left;"
 
+
! style="background:#808080; color:white;" | Expressão
Os operadores aritméticos básicos são àqueles apresentados na aula anterior.
+
! style="background:#808080; color:white;" | Resultado de S
 
 
{| class="wikitable" style="background-color:#ffffff; text-align: center;"
 
! style="background:#8A2BE2; color:white;" | Operador
 
! style="background:#8A2BE2; color:white;" | Significado
 
 
|-
 
|-
! style="text-align: center;" | +
+
! style="text-align: left;" | S=A+B-(C-10)
|adição
+
|
 
|-
 
|-
! style="text-align: center;" | -
+
! style="text-align: left;" | S=C/B*(C-A)
|subtração
+
|
 
|-
 
|-
! style="text-align: center;" | *
+
! style="text-align: left;" | S=A--
|multiplicação
+
|
 
|-
 
|-
! style="text-align: center;" | /
+
! style="text-align: left;" | S=B++
|divisão
+
|
 
|-
 
|-
! style="text-align: center;" | %
+
! style="text-align: left;" | S=C/B/A
|módulo
+
|
 
|-
 
|-
! style="text-align: center;" | ++
+
! style="text-align: left;" | S=(C%B)-11%3
|incremento
+
|
|-
+
|}
! style="text-align: center;" | --
 
|decremento
 
  
|}
+
=Lista de Exercícios de Algoritmos=
  
=Usando o gdb para depurar programas=
+
;ORIENTAÇÕES
  
 +
*A tarefa consiste na realização de 5 algoritmos '''diferentes''' e, necessariamente, a escolha de apenas um algoritmo por intervalo. Intervalos: de 1 a 6, de 7 a 13, de 14 a 20, de 21 a 26 e de 27 a 31.
 +
*Você deve fazer 5 algoritmos. Podendo ser 2 ou 3 fluxogramas e/ou 2 ou 3 pseudocódigos de diferentes problemas.
 +
*Vocês terão 2 semanas para fazer os algoritmos e deverão entregar em um arquivo no formato PDF pelo SIGAA na tarefa a ser aberta para esse fim.
 +
*A nota vai ser de 1,0 a 10,0 e quem não entregar vai ser atribuída nota 0,0 (zero). Lembrando que a AT1 terá peso 9 e a tarefa peso 1 na nota da unidade 1.
  
;O que é o depurador?
 
:Em geral, o depurador (''debugger'') é um utilitário que executa o programa de destino em um ambiente controlado, onde você pode controlar a execução do programa e ver o estado do programa quando o programa é pausado.  O GDB é esse depurador, que é usado para depurar programas C / C ++.
 
  
Vamos trazer um exemplo de uso do depurador no Linux e no GDB online. Também é possível utilizá-lo no Codebloks e em outros compiladores.
+
;ALGORITMOS
  
 +
1. Construa um algoritmo que, tendo como dados de entrada dois pontos quaisquer no plano, P(x1,y1) e P(x2,y2), escreva a distância entre eles. A fórmula que efetua tal cálculo é:
  
==Linux==
+
:<math> d=\sqrt{(x2-x1)^2 + (y2-y1)^2 } </math>
  
A GNU desenvolveu o ''debugger gdb'' que é hoje amplamente utilizado por desenvolvedores.
+
2. Escreva um algoritmo que leia três números inteiros e positivos (A, B, C) e calcule a seguinte expressão:
  
[http://www.gnu.org/software/gdb/documentation/ Documentação do GDB]
+
:<math> D=\frac{R+S}{2}</math>, onde R=(A+B)²  e S=(B+C)²
  
Seja o programa armazenado no arquivo teste.c:<syntaxhighlight lang=c>
+
3. Faça um algoritmo que leia a idade de uma pessoa expressa em anos, meses e dias e mostre-a expressa apenas em dias.
#include <stdio.h>
 
  
void main()
+
4. Faça um algoritmo que leia a idade de uma pessoa expressa em dias e mostre-a expressa em anos, meses e dias.
{
 
  int x,y;
 
 
 
  x = 2;
 
  y = 0;
 
  while (y<5)
 
    x++;
 
  printf ("Valor de x = %d\n",x);
 
}
 
</syntaxhighlight>
 
  
Para que um programa possa ser depurado, devemos compilá-lo da forma:
+
5. Faça um algoritmo que leia as 3 notas de um aluno e calcule a média final deste aluno. Considerar que a média é ponderada e que o peso das notas é: 2,3 e 5, respectivamente.
  
  $ gcc -g teste.c -o teste
+
6. Faça um algoritmo que leia o tempo de duração de um evento em uma fábrica expressa em segundos e mostre-o expresso em horas, minutos e segundos.
  
 +
7. O custo ao consumidor de um carro novo é a soma do custo de fábrica com a porcentagem do distribuidor e dos impostos (aplicados ao custo de fábrica). Supondo que a porcentagem do distribuidor seja de 28% e os impostos de 45%, escrever um algoritmo que leia o custo de fábrica de um carro e escreva o custo ao consumidor.
  
O flag <b>-g</b> garante que seja incorporada informação simbólica e textual para a depuração.
+
8. Um sistema de equações lineares do tipo:
  
O gdb pode então ser chamado da forma:
+
:<math> ax+by=c </math>
 +
:<math> dx+ey=f </math>, pode ser resolvido segundo mostrado abaixo:
  
  $ gdb teste
+
:<math>x=\frac{ce-bf}{ae-bd}</math>
  
Um breakpoint pode ser colocado em qualquer linha ou entrada de função do programa. Para colocar
+
:<math>y=\frac{af-cd}{ae-bd}</math>
um breakpoint na entrada da função pode-se fazer:
 
  
(gdb) b main
+
:Escreva um algoritmo que lê os coeficientes a,b,c,d,e e f e calcula e mostra os valores de x e y.
  
Para executar o programa basta fazer o comando run:
+
9. Calcule a média aritmética das 3 notas de um aluno e mostre, além do valor da média, uma mensagem de "Aprovado", caso a média seja igual ou superior a 6, ou a mensagem "reprovado", caso contrário.
  
(gdb) r
+
10. Elaborar um algoritmo que lê 3 valores a,b,c e os escreve. A seguir, encontre o maior dos 3 valores e o escreva com a mensagem : "É o maior ".
  
A execução para no ''breakpoint''. A instrução mostrada ainda vai ser executada.
+
a + b + | a - b |
 +
 +
Maior de a e b = ------------------
  
Para acompanhar o valor de variáveis pode-se colocá-las em display:
+
11. Elaborar um algoritmo que lê 2 valores a e b e os escreve com a mensagem: "São múltiplos" ou "Não são múltiplos".
 +
 
 +
12. Elabore um algoritmo que dada a idade de um nadador classifica-o em uma das seguintes categorias:
 +
 +
infantil A = 5-7 anos
 +
 +
infantil B = 8-10 anos
 +
 +
juvenil A = 11-13 anos
 +
 +
juvenil B = 14-17 anos
 +
 +
adulto = maiores de 18 anos
  
(gdb) display x
+
13. Escreva um algoritmo que leia 3 números inteiros e mostre o maior deles.
(gdb) display y
 
  
 +
14. Escreva um algoritmo que leia o código de um aluno e suas três notas. Calcule a média ponderada do aluno, considerando que o peso para a maior nota seja 4 e para as duas restantes, 3. Mostre o código do aluno, suas três notas, a média calculada e uma mensagem "APROVADO" se a média for maior ou igual a 5 e "REPROVADO" se a média for menor que 5.
  
Para execução passo a passo pode-se utilizar o comando next:
+
15. Faça um algoritmo que leia um número inteiro e mostre uma mensagem indicando se este número é par ou ímpar, e se é positivo ou negativo.
  
(gdb) n
+
16. O cardápio de uma lancheria é o seguinte:
  
 +
:{| class="wikitable" style="text-align:center;"
 +
|- style="font-weight:bold;"
 +
! style="text-align:left;" | Especificação
 +
! Código
 +
! Preço
 +
|-
 +
| style="text-align:left;" | Cachorro quente
 +
| 100
 +
| 10,20
 +
|-
 +
| style="text-align:left;" | Bauru simples
 +
| 101
 +
| 10,30
 +
|-
 +
| style="text-align:left;" | Bauru com ovo
 +
| 102
 +
| 10,50
 +
|-
 +
| style="text-align:left;" | Hambúrger
 +
| 103
 +
| 10,20
 +
|-
 +
| style="text-align:left;" | Cheeseburguer
 +
| 104
 +
| 10,30
 +
|-
 +
| style="text-align:left;" | Refrigerante
 +
| 105
 +
| 10,00
 +
|}
  
Para ver o conteúdo de uma variável pode-se ainda fazer o comando print:
+
:Escrever um algoritmo que leia o código do item pedido, a quantidade e calcule o valor a ser pago por aquele lanche. Considere que a cada execução somente será calculado um item.
  
(gdb) print x
+
17. Tendo como dados de entrada a altura e o sexo de uma pessoa (?M? masculino e ?F? feminino), construa um algoritmo que calcule seu peso ideal, utilizando as seguintes fórmulas:
  
Podemos setar também o valor das variáveis com o comando <b>set variable</b> da seguinte maneira:
+
- para homens: (72.7*h)-58
  
  (gdb) set variable y=10
+
  - para mulheres: (62.1*h)-44.7
  
Para sair do gdb:
+
18. Um banco concederá um crédito especial aos seus clientes, variável com o saldo médio no último ano. Faça um algoritmo que leia o saldo médio de um cliente e calcule o valor do crédito de acordo com a tabela abaixo. Mostre uma mensagem informando o saldo médio e o valor do crédito. (use o comando caso-de e não faça repetições) 
  
(gdb) q
+
:{| class="wikitable"
 +
|- style="font-weight:bold;"
 +
! Saldo médio
 +
! Percentual
 +
|-
 +
| de 0 a 200
 +
| nenhum crédito
 +
|-
 +
| de 201 a 400
 +
| 20% do valor do saldo médio
 +
|-
 +
| de 401 a 600
 +
| 30% do valor do saldo médio
 +
|-
 +
| acima de 601
 +
| 40% do valor do saldo médio
 +
|}
  
Confirme com ''Yes''.
+
19. Um usuário deseja um algoritmo onde possa escolher que tipo de média deseja calcular a partir de 3 notas. Faça um algoritmo que leia as notas, a opção escolhida pelo usuário e calcule a média.
  
==GDB online==
+
1 -aritmética
 +
2 -ponderada (3,3,4)
 +
3 -harmônica
  
Para você é que novo no mundo da programação explicaremos resumidamente o uso do depurador (''debugger''') do GDB online, sendo que esta ferramenta fornece uma interface para usar GDB em ambiente de nuvem de seu navegador.
+
20. Um vendedor necessita de um algoritmo que calcule o preço total devido por um cliente. O algoritmo deve receber o código de um produto e a quantidade comprada e calcular o preço total, usando a tabela abaixo:
   
 
;Como posso controlar a execução do programa?
 
:Podemos dizer ao depurador quando pausar um programa definindo pontos de interrupção. Para definir um ponto de interrupção, clique na área em branco vista no lado esquerdo do número da linha no editor. Quando você clica nela, ela deve exibir um círculo vermelho; o que significa que o ponto de interrupção foi definido nesse número de linha. A Figura 2 mostra de como fica definido os break.
 
  
[[imagem:Fig010_PR1022804.png|center]]
+
:{| class="wikitable" style="text-align:center;"
<center>
+
|- style="font-weight:bold;"
Figura 2 - Uso do ''breakpoint''.
+
! Código do Produto
</center>
+
! Preço unitário
 +
|-
 +
| 1001
 +
| 5,32
 +
|-
 +
| 1324
 +
| 6,45
 +
|-
 +
| 6548
 +
| 2,37
 +
|-
 +
| 0987
 +
| 5,32
 +
|-
 +
| 7623
 +
| 6,45
 +
|}
  
Você deve clicar na frente do número da linha para criar um ''breakpoint''. Perceba que na frente da linha 10 apareceu uma "bolinha vermelha". Depois de definir o ponto de interrupção, ao iniciar o programa no modo de depuração, ele pausará a execução quando o programa atingir a linha onde o ponto de interrupção foi definido.
+
21. Um vendedor precisa de um algoritmo que calcule o preço total devido por um cliente. O algoritmo deve receber o código de um produto e a quantidade comprada e calcular o preço total, usando a tabela abaixo. Mostre uma mensagem no caso de código inválido.
  
[[imagem:Fig011_PR1022804.png|center]]
+
:{| class="wikitable" style="text-align:center;"
<center>
+
|- style="font-weight:bold;"
Figura 3 - ''Breakpoint'' na linha 10 e programa pausado.
+
! Código
</center>
+
! Preço unitário
 +
|-
 +
| 'ABCD'
 +
| R$ 5,30
 +
|-
 +
| 'XYPK'
 +
| R$ 6,00
 +
|-
 +
| 'KLMP'
 +
| R$ 3,20
 +
|-
 +
| 'QRST'
 +
| R$ 2,50
 +
|}
  
;Passo 1: Agora podemos usar os comandos passo a passo para executar o programa linha a linha. Ao invés de clicar no botão '''Run''' clique no botão '''Debug'''.
+
22. Uma empresa concederá um aumento de salário aos seus funcionários, variável de acordo com o cargo, conforme a tabela abaixo. Faça um algoritmo que leia o salário e o cargo de um funcionário e calcule o novo salário. Se o cargo do funcionário não estiver na tabela, ele deverá, então, receber 40% de aumento. Mostre o salário antigo, o novo salário e a diferença.  
  
[[imagem:Fig012_PR1022804.png|center]]
+
:{| class="wikitable" style="text-align:center;"
<center>
+
|- style="font-weight:bold;"
Figura 4 - Área do depurador na parte de baixo da tela do programa.
+
! Código
</center>
+
! style="text-align:left;" | Cargo
 +
! Percentual
 +
|-
 +
| 101
 +
| style="text-align:left;" | Gerente
 +
| 10%
 +
|-
 +
| 102
 +
| style="text-align:left;" | Engenheiro
 +
| 20%
 +
|-
 +
| 103
 +
| style="text-align:left;" | Técnico
 +
| 30%
 +
|}
  
;Passo 2
+
23. Elaborar um algoritmo que lê 3 valores a,b,c e verifica se eles formam ou não um triângulo. Supor que os valores lidos são inteiros e positivos. Caso os valores formem um triângulo, calcular e escrever a área deste triângulo. Se não formam triângulo escrever os valores lidos. ( se a > b + c não formam triângulo algum, se a é o maior).
# start – Executa o programa até o primeiro ponto de interrupção;
 
# continue – Retoma a execução do programa até que o próximo ponto de interrupção seja alcançado;
 
# step over – Executa o programa linha por linha, mas não entrar na chamada de função (se houver);
 
# step into – Executa o programa linha a linha entrando na função (se houver);
 
# step out – Retomar a execução do programa até que a função atual (se houver) seja concluída.
 
  
;O que posso ver quando o programa é pausado?
+
24. Escrever um algoritmo que a hora de início de um jogo e a hora do final do jogo (considerando apenas horas inteiras) e calcula a duração do jogo em horas, sabendo-se que o tempo máximo de duração do jogo é de 24 horas e que o jogo pode iniciar em um dia e terminar no dia seguinte.
:Você pode ver a pilha de chamadas e os valores das variáveis ​​locais da função atual. A pilha de chamadas mostra a cadeia de chamadas de função. Como pode ser visto na imagem abaixo, a função “principal” main().
 
  
[[imagem:Fig013_PR1022804.png|center]]
+
25. Escrever um algoritmo que lê um conjunto de 4 valores i, a, b, c, onde i é um valor inteiro e positivo e a, b, c, são quaisquer valores reais e os escreva. A seguir:
<center>
 
Figura 5 - ''Call Stack - Local Variables - Display Expressions - Breakpoints and Watchpoints''.
 
</center>
 
  
A janela de variáveis ​​locais (''Local Variables'') mostra os valores das variáveis ​​locais da função atual. Conforme mostrado na Figura 5, o valor de “x” é 2, “y” é 0.
+
a) Se i=1 escrever os três valores a, b, c em ordem crescente.
 +
b) Se i=2 escrever os três valores a, b, c em ordem decrescente.
 +
c) Se i=3 escrever os três valores a, b, c de forma que o maior entre a, b, c fique dentre os dois.
  
;Passo 3
+
26. Escrever um algoritmo que lê um valor em reais e calcula qual o menor número possível de notas de 100, 50, 10, 5 e 1 em que o valor lido pode ser decomposto. Escrever o valor lido e a relação de notas necessárias.
  
Clicando uma vez em '''continue''' o valor de “x” passa para 3, “y” não é alterado e continua 0. E assim por diante.
+
27. Escrever um algoritmo que lê:
  
Agora temos controle e olho na execução do programa, para que possamos inspecionar o fluxo de execução do programa. Pontos de interrupção, comandos de revisão e exibições de variáveis ​​são recursos básicos do depurador.
+
- a porcentagem do IPI a ser acrescido no valor das peças
 +
- o código da peça 1, valor unitário da peça 1, quantidade de peças 1
 +
- o código da peça 2, valor unitário da peça 2, quantidade de peças 2
  
;Resumo:
+
O algoritmo deve calcular o valor total a ser pago e apresentar o resultado.
  
#colocar o ''breakpoint''
+
Fórmula : (valor1*quant1 + valor2*quant2)*(IPI/100 + 1)
#clicar em ''Debug''
 
#clicar em ''Start''
 
#acompanhar o valor das variáveis
 
#clicar em ''continue'' (voltar para etapa anterior)
 
#clicar em ''stop''
 
  
;Lembrando: Que esse programa está em ''loop'' infinito.
+
28. Escrever um algoritmo que lê a hora de início e hora de término de um jogo, ambas subdivididas em dois valores distintos : horas e minutos. Calcular e escrever a duração do jogo, também em horas e minutos, considerando que o tempo máximo de duração de um jogo é de 24 horas e que o jogo pode iniciar em um dia e terminar no dia seguinte.
  
=Exercícios=
+
29. Escrever um algoritmo que lê o número de identificação, as 3 notas obtidas por um aluno nas 3 verificações e a média dos exercícios que fazem parte da avaliação. Calcular a média de aproveitamento, usando a fórmula:
  
;Implementar um programa em C para:
+
MA = (Nota1 + Nota2 x 2 + Nota3 x 3 + ME )/7
 +
 +
:A atribuição de conceitos obedece a tabela abaixo:
  
#Receber a resistência em ohms de 2 resistores e então calcular a resistência série e paralela dos mesmos.
+
:{| class="wikitable" style="text-align:center;"
#Ler dois números inteiros para dentro de duas variáveis alfa e beta. O programa deve trocar  os conteúdos destas variáveis (o que estiver em alfa para beta e vice-versa).
+
|- style="font-weight:bold;"
#Converter graus Farenheit em Celsius.
+
! Média de Aproveitamento
#Ler dois números inteiros e imprimir o resto da média entre os dois.
+
! Conceito
#Calcular a área e comprimento de uma circunferência dado o raio.
+
|-
 +
| 9,0
 +
| A
 +
|-
 +
| 7,5 e < 9,0
 +
| B
 +
|-
 +
| 6,0 e < 7,5
 +
| C
 +
|-
 +
| 4,0 e < 6,0
 +
| D
 +
|-
 +
| < 4,0
 +
| E
 +
|}
  
{{collapse top|bg=#E6E6FA| Resposta: 1}}
+
O algoritmo deve escrever o número do aluno, suas notas, a média dos exercícios, a média de aproveitamento, o conceito correspondente e a mensagem: APROVADO se o conceito for A,B ou C e REPROVADO se o conceito for D ou E.
<syntaxhighlight lang=c>
 
#include <stdio.h>
 
  
void main()
+
30. O departamento que controla o índice de poluição do meio ambiente mantém 3 grupos de indústrias que são altamente poluentes do meio ambiente. O índice de poluição aceitável varia de 0,05 até 0,25. Se o índice sobe para 0,3 as indústrias do 1o grupo são intimadas a suspenderem suas atividades, se o índice cresce para 0,4 as do 1o e 2o grupo são intimadas a suspenderem suas atividades e se o índice atingir 0,5 todos os 3 grupos devem ser notificados a paralisarem suas atividades. Escrever um algoritmo que lê o índice de poluição medido e emite a notificação adequada aos diferentes grupos de empresas.
{
 
  float R1,R2;
 
  float Req;
 
  
  printf("\nDigite a valor de R1: ");
+
31. Escrever um algoritmo que calcule os sucessivos valores de E usando a série abaixo e considerando primeiro 3 termos, depois 4 termos e, por fim, 5 termos:
  scanf("%f",&R1);
+
E = 1 + 1 / 1! + 1 / 2! + 1 / 3! + 1 / 4!
  printf("\nDigite a valor de R2: ");
 
  scanf("%f",&R2);
 
  Req=(R1*R2)/(R1+R2);
 
  printf("\nResistencia equivalente=%f",Req);
 
}
 
</syntaxhighlight>
 
{{collapse bottom}}
 
  
{{collapse top|bg=#E6E6FA| Resposta: 4}}
+
=Referências=
<syntaxhighlight lang=c>
 
#include <stdio.h>
 
  
void main()
+
[1] ''Compilado de exercícios:  Profa Sílvia Moraes e organizado por Stewart Unger.''
{
 
  int a,b,resto;
 
  
  printf("\nDigite a valor de a: ");
+
[2] https://mundoeducacao.uol.com.br/matematica/area-triangulo.htm
  scanf("%d",&a);
 
  printf("\nDigite a valor de b: ");
 
  scanf("%d",&b);
 
  resto=(a+b)%2;
 
  printf("\nResto da media de dois numeros=%d\n",resto);
 
}
 
</syntaxhighlight>
 
{{collapse bottom}}
 
  
{{collapse top|bg=#E6E6FA| Resposta: 5}}
+
<!--
<syntaxhighlight lang=c>
 
 
#include <stdio.h>
 
#include <stdio.h>
  
void main()
+
int main()
 
{
 
{
float area,raio;
+
    int hi=8,mi=00,ht=7,mt=59; // exemplo: início 08:00 e término 06:03 relógio 24h
const float pi=3.1415;
+
    int jm,jh; // total de horas jogadas considerando horario válido
 
+
    if (ht<hi)
printf("Digite o valor do raio: ");
+
        ht=ht+24;
scanf("%f",&raio);
+
    jh=ht-hi;
 
+
    if (mt<mi){
area=pi*raio*raio;
+
        mt=mt+60;
 
+
        if (ht>hi)
printf("O valor da área da circunferencia eh: %f",area);
+
            jh=jh-1;
 +
    }
 +
    jm=mt-mi;
 +
    printf("%02d:%02d",jh,jm);
 +
   
 +
    return 0;
 
}
 
}
 
+
-->
 
 
</syntaxhighlight>
 
{{collapse bottom}}
 
 
 
=Referências=
 
 
 
[1] https://www.ime.usp.br/~jose/codeblocks/codeblocksintro.html
 
 
 
[2] https://www.lucidchart.com/
 
 
 
[3] https://programacaodescomplicada.files.wordpress.com/2013/04/debugger.pdf
 
 
 
  
  

Edição atual tal como às 16h14min de 1 de março de 2024

Lista de Exercícios para AT1

INTRODUÇÃO
A lista de exercícios para Avaliação Teórica 1 (AT1) está dividida em quatro partes: Algoritmos, Operadores Relacionais e Lógicos, Estruturas de decisão e repetição e Introdução a linguagem C. Lembrando que em cada aula existe vários exercícios propostos. Esses exercícios servirão de base para nossa avaliação online. Não há necessidade de entregar os exercícios e todos os são feitos com base no material de aula da wiki. Na parte final, terão 31 exercícios de algoritmos que poderão ser utilizados na preparação para AT1 ou entregues como exercícios complementares.

Parte I - Algoritmos

[1] O que é um algoritmo e para que serve?

[2] Qual a diferença entre pseudocódigo e fluxograma?

[3] Cite as seis etapas para a construção de um algoritmo.

[4] Quais os pontos fortes e fracos na construção de fluxogramas?

[5] Para que serve um "teste de mesa"?

[6] Qual a diferença entre constantes e variáveis?

[7] O que são as expressões e para que servem?

[8] Explique os operadores: %, ++ e --.

[9] Faça um algoritmo na forma de pseudocódigo que encontre o ponto médio de uma reta dados os pontos A e B dessa reta.

[10] Faça um algoritmo na forma de fluxograma que encontre o ponto médio da metade final de uma reta dados os pontos A e B dessa reta, ou seja, entre M e B, onde M é o ponto médio.

Parte II - Operadores Lógicos e Relacionais

[11] Analise as expressões abaixo e coloque como resultado: 0 para falso e 1 para verdadeiro:

Considerando
A=3, B=-1 e C=2
Expressão Resultado
A>B
C>=A
B<(C-A)
C<=A
A==(C+B)
A!=3
B=1

[12] Analise as expressões abaixo e coloque como resultado: 0 para falso e 1 para verdadeiro:

Considerando
A=-1, B=1, C=0 e D=2
Expressão Resultado
(A>B) && (C>D)
(A<B) && !(C>D)
(A<=B) || (C<1)
A>=B || ((C>=D) && (D<=A))
!A==B) && !(C!=D)
((A==B) || (B<30)) && (C>=D)
(A>B>C>D) |& (B<C<A<D)

Parte III - Estruturas de decisão e repetição

[13] Faça um algoritmo na forma de fluxograma utilizando estrutura de repetição que imprima os 100 primeiros números pares.

[14] Faça um algoritmo na forma de pseudocódigo utilizando estrutura de repetição que imprima todos os anos bissextos a partir de 1900 até 2030.

Parte IV - Introdução a linguagem C

[15] Descreva o processo de compilação de um programa em linguagem C.

[16] O que é código fonte, código objeto e arquivo executável?

[17] Qual a diferença entre variáveis inteiras e reais?

[18] Pra que servem as funções printf() e scanf()?

[20] Pra que servem e onde são utilizados os símbolos abaixo:

Código Significado
%d
%f
%c
%%

[21] Qual o resultado de para as expressões abaixo?

Considerando
S, A=1,B=3,C=7: Inteiros;


Expressão Resultado de S
S=A+B-(C-10)
S=C/B*(C-A)
S=A--
S=B++
S=C/B/A
S=(C%B)-11%3

Lista de Exercícios de Algoritmos

ORIENTAÇÕES
  • A tarefa consiste na realização de 5 algoritmos diferentes e, necessariamente, a escolha de apenas um algoritmo por intervalo. Intervalos: de 1 a 6, de 7 a 13, de 14 a 20, de 21 a 26 e de 27 a 31.
  • Você deve fazer 5 algoritmos. Podendo ser 2 ou 3 fluxogramas e/ou 2 ou 3 pseudocódigos de diferentes problemas.
  • Vocês terão 2 semanas para fazer os algoritmos e deverão entregar em um arquivo no formato PDF pelo SIGAA na tarefa a ser aberta para esse fim.
  • A nota vai ser de 1,0 a 10,0 e quem não entregar vai ser atribuída nota 0,0 (zero). Lembrando que a AT1 terá peso 9 e a tarefa peso 1 na nota da unidade 1.


ALGORITMOS

1. Construa um algoritmo que, tendo como dados de entrada dois pontos quaisquer no plano, P(x1,y1) e P(x2,y2), escreva a distância entre eles. A fórmula que efetua tal cálculo é:

2. Escreva um algoritmo que leia três números inteiros e positivos (A, B, C) e calcule a seguinte expressão:

, onde R=(A+B)² e S=(B+C)²

3. Faça um algoritmo que leia a idade de uma pessoa expressa em anos, meses e dias e mostre-a expressa apenas em dias.

4. Faça um algoritmo que leia a idade de uma pessoa expressa em dias e mostre-a expressa em anos, meses e dias.

5. Faça um algoritmo que leia as 3 notas de um aluno e calcule a média final deste aluno. Considerar que a média é ponderada e que o peso das notas é: 2,3 e 5, respectivamente.

6. Faça um algoritmo que leia o tempo de duração de um evento em uma fábrica expressa em segundos e mostre-o expresso em horas, minutos e segundos.

7. O custo ao consumidor de um carro novo é a soma do custo de fábrica com a porcentagem do distribuidor e dos impostos (aplicados ao custo de fábrica). Supondo que a porcentagem do distribuidor seja de 28% e os impostos de 45%, escrever um algoritmo que leia o custo de fábrica de um carro e escreva o custo ao consumidor.

8. Um sistema de equações lineares do tipo:

, pode ser resolvido segundo mostrado abaixo:
Escreva um algoritmo que lê os coeficientes a,b,c,d,e e f e calcula e mostra os valores de x e y.

9. Calcule a média aritmética das 3 notas de um aluno e mostre, além do valor da média, uma mensagem de "Aprovado", caso a média seja igual ou superior a 6, ou a mensagem "reprovado", caso contrário.

10. Elaborar um algoritmo que lê 3 valores a,b,c e os escreve. A seguir, encontre o maior dos 3 valores e o escreva com a mensagem : "É o maior ".

a + b + | a - b |

Maior de a e b = ------------------

11. Elaborar um algoritmo que lê 2 valores a e b e os escreve com a mensagem: "São múltiplos" ou "Não são múltiplos".

12. Elabore um algoritmo que dada a idade de um nadador classifica-o em uma das seguintes categorias:

infantil A = 5-7 anos

infantil B = 8-10 anos

juvenil A = 11-13 anos

juvenil B = 14-17 anos

adulto = maiores de 18 anos

13. Escreva um algoritmo que leia 3 números inteiros e mostre o maior deles.

14. Escreva um algoritmo que leia o código de um aluno e suas três notas. Calcule a média ponderada do aluno, considerando que o peso para a maior nota seja 4 e para as duas restantes, 3. Mostre o código do aluno, suas três notas, a média calculada e uma mensagem "APROVADO" se a média for maior ou igual a 5 e "REPROVADO" se a média for menor que 5.

15. Faça um algoritmo que leia um número inteiro e mostre uma mensagem indicando se este número é par ou ímpar, e se é positivo ou negativo.

16. O cardápio de uma lancheria é o seguinte:

Especificação Código Preço
Cachorro quente 100 10,20
Bauru simples 101 10,30
Bauru com ovo 102 10,50
Hambúrger 103 10,20
Cheeseburguer 104 10,30
Refrigerante 105 10,00
Escrever um algoritmo que leia o código do item pedido, a quantidade e calcule o valor a ser pago por aquele lanche. Considere que a cada execução somente será calculado um item.

17. Tendo como dados de entrada a altura e o sexo de uma pessoa (?M? masculino e ?F? feminino), construa um algoritmo que calcule seu peso ideal, utilizando as seguintes fórmulas:

- para homens: (72.7*h)-58
- para mulheres: (62.1*h)-44.7

18. Um banco concederá um crédito especial aos seus clientes, variável com o saldo médio no último ano. Faça um algoritmo que leia o saldo médio de um cliente e calcule o valor do crédito de acordo com a tabela abaixo. Mostre uma mensagem informando o saldo médio e o valor do crédito. (use o comando caso-de e não faça repetições)

Saldo médio Percentual
de 0 a 200 nenhum crédito
de 201 a 400 20% do valor do saldo médio
de 401 a 600 30% do valor do saldo médio
acima de 601 40% do valor do saldo médio

19. Um usuário deseja um algoritmo onde possa escolher que tipo de média deseja calcular a partir de 3 notas. Faça um algoritmo que leia as notas, a opção escolhida pelo usuário e calcule a média.

1 -aritmética
2 -ponderada (3,3,4)
3 -harmônica

20. Um vendedor necessita de um algoritmo que calcule o preço total devido por um cliente. O algoritmo deve receber o código de um produto e a quantidade comprada e calcular o preço total, usando a tabela abaixo:

Código do Produto Preço unitário
1001 5,32
1324 6,45
6548 2,37
0987 5,32
7623 6,45

21. Um vendedor precisa de um algoritmo que calcule o preço total devido por um cliente. O algoritmo deve receber o código de um produto e a quantidade comprada e calcular o preço total, usando a tabela abaixo. Mostre uma mensagem no caso de código inválido.

Código Preço unitário
'ABCD' R$ 5,30
'XYPK' R$ 6,00
'KLMP' R$ 3,20
'QRST' R$ 2,50

22. Uma empresa concederá um aumento de salário aos seus funcionários, variável de acordo com o cargo, conforme a tabela abaixo. Faça um algoritmo que leia o salário e o cargo de um funcionário e calcule o novo salário. Se o cargo do funcionário não estiver na tabela, ele deverá, então, receber 40% de aumento. Mostre o salário antigo, o novo salário e a diferença.

Código Cargo Percentual
101 Gerente 10%
102 Engenheiro 20%
103 Técnico 30%

23. Elaborar um algoritmo que lê 3 valores a,b,c e verifica se eles formam ou não um triângulo. Supor que os valores lidos são inteiros e positivos. Caso os valores formem um triângulo, calcular e escrever a área deste triângulo. Se não formam triângulo escrever os valores lidos. ( se a > b + c não formam triângulo algum, se a é o maior).

24. Escrever um algoritmo que lê a hora de início de um jogo e a hora do final do jogo (considerando apenas horas inteiras) e calcula a duração do jogo em horas, sabendo-se que o tempo máximo de duração do jogo é de 24 horas e que o jogo pode iniciar em um dia e terminar no dia seguinte.

25. Escrever um algoritmo que lê um conjunto de 4 valores i, a, b, c, onde i é um valor inteiro e positivo e a, b, c, são quaisquer valores reais e os escreva. A seguir:

a) Se i=1 escrever os três valores a, b, c em ordem crescente.
b) Se i=2 escrever os três valores a, b, c em ordem decrescente.
c) Se i=3 escrever os três valores a, b, c de forma que o maior entre a, b, c fique dentre os dois.

26. Escrever um algoritmo que lê um valor em reais e calcula qual o menor número possível de notas de 100, 50, 10, 5 e 1 em que o valor lido pode ser decomposto. Escrever o valor lido e a relação de notas necessárias.

27. Escrever um algoritmo que lê:

- a porcentagem do IPI a ser acrescido no valor das peças
- o código da peça 1, valor unitário da peça 1, quantidade de peças 1
- o código da peça 2, valor unitário da peça 2, quantidade de peças 2

O algoritmo deve calcular o valor total a ser pago e apresentar o resultado.

Fórmula : (valor1*quant1 + valor2*quant2)*(IPI/100 + 1)

28. Escrever um algoritmo que lê a hora de início e hora de término de um jogo, ambas subdivididas em dois valores distintos : horas e minutos. Calcular e escrever a duração do jogo, também em horas e minutos, considerando que o tempo máximo de duração de um jogo é de 24 horas e que o jogo pode iniciar em um dia e terminar no dia seguinte.

29. Escrever um algoritmo que lê o número de identificação, as 3 notas obtidas por um aluno nas 3 verificações e a média dos exercícios que fazem parte da avaliação. Calcular a média de aproveitamento, usando a fórmula:

MA = (Nota1 + Nota2 x 2 + Nota3 x 3 + ME )/7

A atribuição de conceitos obedece a tabela abaixo:
Média de Aproveitamento Conceito
9,0 A
7,5 e < 9,0 B
6,0 e < 7,5 C
4,0 e < 6,0 D
< 4,0 E

O algoritmo deve escrever o número do aluno, suas notas, a média dos exercícios, a média de aproveitamento, o conceito correspondente e a mensagem: APROVADO se o conceito for A,B ou C e REPROVADO se o conceito for D ou E.

30. O departamento que controla o índice de poluição do meio ambiente mantém 3 grupos de indústrias que são altamente poluentes do meio ambiente. O índice de poluição aceitável varia de 0,05 até 0,25. Se o índice sobe para 0,3 as indústrias do 1o grupo são intimadas a suspenderem suas atividades, se o índice cresce para 0,4 as do 1o e 2o grupo são intimadas a suspenderem suas atividades e se o índice atingir 0,5 todos os 3 grupos devem ser notificados a paralisarem suas atividades. Escrever um algoritmo que lê o índice de poluição medido e emite a notificação adequada aos diferentes grupos de empresas.

31. Escrever um algoritmo que calcule os sucessivos valores de E usando a série abaixo e considerando primeiro 3 termos, depois 4 termos e, por fim, 5 termos:

E = 1 + 1 / 1! + 1 / 2! + 1 / 3! + 1 / 4!

Referências

[1] Compilado de exercícios: Profa Sílvia Moraes e organizado por Stewart Unger.

[2] https://mundoeducacao.uol.com.br/matematica/area-triangulo.htm




Icone voltar.png Icone menu.png Icone prox.png