Mudanças entre as edições de "MCO18703 2017 2 AULA03"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(9 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
 +
=Objetivos=
 +
 +
*Utilizar os operadores relacionais e lógicos na programação C.
 +
*Utilizar o comando de decisão ''if else''.
 +
 +
 +
=Operadores Relacionais e Lógicos=
 +
 +
Os operadores relacionais e lógicos são os mesmos vistos na aula anterior.
 +
 +
;Relacionais
 +
{| border="1" cellpadding="5" cellspacing="0"
 +
! style="background: #FFD700;" | Operador
 +
! style="background: #FFD700;" | Significado
 +
|-
 +
!style="text-align: center;" | >
 +
| maior que
 +
|-
 +
!style="text-align: center;" | >=
 +
|maior ou igual que
 +
|-
 +
!style="text-align: center;" | <
 +
|menor que
 +
|-
 +
!style="text-align: center;" | <=
 +
|menor ou igual que
 +
|-
 +
!style="text-align: center;" | ==
 +
|igual a
 +
|-
 +
!style="text-align: center;" | !=
 +
|diferente de
 +
|}
 +
 +
 +
;Lógicos
 +
{| border="1" cellpadding="5" cellspacing="0"
 +
! style="background: #FFD700;" | Operador
 +
! style="background: #FFD700;" | Significado
 +
|-
 +
!style="text-align: center;" |&&
 +
|AND (E)
 +
|-
 +
!style="text-align: center;" |<nowiki>||</nowiki>
 +
|OR (OU)
 +
|-
 +
!style="text-align: center;" |!
 +
|NOT (NÃO)
 +
|}
 +
 +
Ver [http://www.ead.cpdee.ufmg.br/cursos/C/c.html Operadores Relacionais e Lógicos]
 +
 +
= Comandos de decisão ''if()'' e ''if() else'' =
 +
 +
Estes comandos são também chamados de <b>Comandos de controle de fluxo</b>.<br>
 +
Possibilitam ao programador alterar a sequência de execução de um programa.<br>
 +
 +
O comando <b>if</b> representa uma tomada de decisão do tipo '''"SE isto ENTÃO aquilo"'''.<br>
 +
 +
Sua forma geral é:
 +
 +
<pre>
 +
 +
if (condição) declaração;
 +
 +
</pre>
 +
 +
ou
 +
<pre>
 +
 +
if (condição)
 +
{
 +
  declaração1;
 +
  declaração2;
 +
}
 +
else
 +
{
 +
  declaração3;
 +
  declaração4;
 +
};
 +
 +
</pre>
 +
 +
Note o uso das chaves sempre que houver mais de uma declaração e a utilização de identação (tecla TAB no teclado).
 +
 +
<syntaxhighlight lang=c>
 +
 +
#include <stdio.h>
 +
 +
main()
 +
{
 +
 +
  int x; /* declaração de uma variável inteira */
 +
  int y;  /* declaração de uma variável inteira */
 +
 +
  printf ("Entre com o valor de x ");
 +
  scanf("%d",&x);
 +
 +
  printf ("Entre com o valor de y ");
 +
  scanf("%d",&y);
 +
 +
  if (y>x)
 +
    printf("MSG1:y é maior que x\n");
 +
 +
 +
  if (y>x)
 +
    printf("MSG2:y é maior que x\n");
 +
  else
 +
    printf("MSG3:y é igual ou menor que x\n");
 +
 +
}
 +
 +
</syntaxhighlight>
 +
 +
Outro exemplo, usando blocos:
 +
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 +
main()
 +
{
 +
 +
  int x,y,z; /* declaração de uma variável inteira */
 +
 +
  printf ("Entre com o valor de x ");
 +
  scanf("%d",&x);
 +
 +
  printf ("Entre com o valor de y ");
 +
  scanf("%d",&y);
 +
 +
  if (y>x)
 +
  {
 +
    printf("MSG1: y é maior que x\n");
 +
    z = y-x;
 +
    printf("MSG2: Neste caso z =  %d\n", z);
 +
  }
 +
  else
 +
  {
 +
    printf("MSG3: y é igual ou menor que x\n");
 +
    z = x-y;
 +
    printf("MSG4: Neste caso z =  %d\n", z);
 +
  }
 +
 +
}
 +
</syntaxhighlight>
 +
 +
No C, qualquer expressão que resulta em 0 é considerada FALSA e qualquer expressão com valor diferente de 0 é VERDADEIRA.
 +
 +
Exemplo:
 +
<syntaxhighlight lang=c>
 +
  if (2)
 +
      printf("expressão sempre VERDADEIRA");
 +
  if ('2')
 +
      printf("expressão sempre VERDADEIRA");     
 +
  if (1-1)
 +
      printf("expressão sempre FALSA");
 +
  if (x=1) /* um erro comum - sinal de atribuição no lugar de == */
 +
      printf("expressão sempre VERDADEIRA");
 +
</syntaxhighlight>
 +
 +
==Indentação==
 +
 +
É um recuo aplicado ao código fonte de um programa para ressaltar ou definir a estrutura do programa.
 +
 +
 +
==Exemplo 1==
 +
 +
(sala de aula)
 +
 +
Um funcionário irá receber um aumento de acordo com o seu plano de trabalho (A,B,C e D). <br>
 +
A tabela abaixo mostra o plano e o percentual de aumento:
 +
 +
{| border="1" cellpadding="5" cellspacing="0"
 +
! style="background: #FFD700;" | Plano
 +
! style="background: #FFD700;" | Percentual
 +
|-
 +
!style="text-align: center;" | A
 +
!style="text-align: center;" | 5%
 +
|-
 +
!style="text-align: center;" | B
 +
!style="text-align: center;" | 10%
 +
|-
 +
!style="text-align: center;" | C
 +
!style="text-align: center;" | 15%
 +
|-
 +
!style="text-align: center;" | D
 +
!style="text-align: center;" | 20%
 +
|}
 +
 +
Faça um programa que leia o plano de trabalho e o salário atual de um funcionário<br>
 +
em seguida calcule e imprima o seu novo salário. Use o comando ''switch''.
 +
 +
 +
==Exemplo 2==
 +
 +
(sala de aula)
 +
 +
Suponha que você atrasou uma conta. A cada mês que você deixa de pagar, será cobrado 1% de juros no valor inicial.
 +
Ou seja, se você atrasar um mês, irá pagar 1%. Se atrasar 3 meses, irá pagar 3%.
 +
Vamos supor que você pode atrasar, no máximo, 5 meses.
 +
 +
O programa pede, como entrada, dois valores:
 +
- um float: com o valor de sua dívida inicial (valor_i)
 +
- um inteiro: de 0 até 5, que são o número de meses de atraso.
 +
 +
Faça um programa em C que calcule os juros (simples) de atraso.
 +
 +
=Exercícios propostos=
 +
 +
<!--
 +
#Implementar um programa C que converte temperaturas de graus Fahrenheit para Celsius.
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
float converter_fahreiheit_para_celsius (float temp_fahr)
 +
{
 +
  /* melhorar - retornar -1000 se o valor do parâmetro for inválido */
 +
  return ((temp_fahr-32)/1.8);
 +
}
 +
 +
main()
 +
{
 +
  float temperatura_fahre, resultado_celsius;
 +
  printf("Entre com graus Fahrenheit -> ");
 +
  scanf ("%f", &temperatura_fahre);
 +
  resultado_celsius = converter_fahreiheit_para_celsius(temperatura_fahre);
 +
  printf("Conversao = %f\n", resultado_celsius);
 +
}
 +
</syntaxhighlight>
 +
-->
 +
#Implementar um programa que lê um número inteiro e imprime se o número é par ou ímpar. SUGESTÃO: Usar o operador de módulo da divisão.
 +
#Implementar um programa em C para ler dois números inteiros e imprimir uma mensagem indicando se os números lidos são iguais ou diferentes. Caso sejam diferentes, computar a média dos mesmos.
 +
<!--
 +
<syntaxhighlight lang=c>
 +
main()
 +
{
 +
  int x,y;
 +
  float media;
 +
 +
  printf("Entre com x\n");
 +
  scanf("%d",&x);
 +
  printf("Entre com y\n");
 +
  scanf("%d",&y);
 +
  if (x==y)
 +
    printf("números iguais\n");
 +
  else {
 +
    printf("números diferentes\n");
 +
    media = (x+y)/2.0;
 +
  }
 +
}
 +
</syntaxhighlight>
 +
-->
 +
#Implementar um programa para ler 4 números inteiros e imprimir uma mensagem se a soma dos dois primeiros for igual ou menor a soma dos dois últimos.
 +
<!--<syntaxhighlight lang=c>
 +
main()
 +
{
 +
  int num1,num2,num3,num4;
 +
  int soma1,soma2;
 +
 +
  printf("Entre com num1\n");
 +
  scanf("%d", &num1);
 +
  printf("Entre com num2\n");
 +
  scanf("%d", &num2);
 +
  printf("Entre com num3\n");
 +
  scanf("%d", &num3);
 +
  printf("Entre com num4\n");
 +
  scanf("%d", &num4);
 +
 +
  soma1 = num1+num2;
 +
  soma2 = num3+num4;
 +
 
 +
  if(soma1<=soma2)
 +
      printf("Soma dos dois primeiros <= que a soma dos dois últimos\n");
 +
}
 +
</syntaxhighlight>
 +
-->
 +
#Implementar um programa para ler dois números reais e, na sequência, um número inteiro. Se o número inteiro for 1 os dois números iniciais deverão ser somados, se for 2 eles serão subtraídos, se for 3 eles serão multiplicados e se for 4 serão divididos. Mostrar mensagem de erro se o número inteiro não estiver na faixa de 1 a 4. Mostrar mensagem caso a divisão não seja possível.
 +
<!--
 +
<syntaxhighlight lang=c>
 +
main()
 +
{
 +
  float num1,num2;
 +
  int operacao;
 +
 +
  printf("Entre com num1\n");
 +
  scanf("%f", &num1);
 +
  printf("Entre com num2\n");
 +
  scanf("%f", &num2);
 +
 +
  printf("Entre com a operacao\n");
 +
  scanf("%d", &operacao); 
 +
 +
  /* Esta solução pode ser otimizada - veremos
 +
      mais tarde */
 +
  if (operacao>=1 && operacao <=4) {
 +
      if (operacao==1)
 +
        resultado = num1 + num2;
 +
      if (operacao==3)
 +
        resultado = num1 - num2;
 +
      if (operacao==3)
 +
        resultado = num1 * num2;
 +
      if (operacao==4) {
 +
        if (num2!=0)
 +
            resultado = num1 / num2;
 +
        else
 +
            printf("Divisao por zero\n");
 +
      }
 +
      printf("O resultado da operacao %d é %f\n",operacao,resultado);
 +
  } else {
 +
      printf("Operacao inválida");
 +
  }
 +
}
 +
</syntaxhighlight>
 +
-->
 +
#Um estudo sobre sensibilidade de pessoas a temperaturas da água identificou que a maioria das pessoas considera fria a água com temperaturas abaixo de 25 graus, morna entre 25 e 30 graus, e quente acima de 30 graus. Escreva um algoritmo na forma de fluxograma que mostre as palavras "fria", "morna" ou "quente" dependendo da temperatura da água que for informada. Implemente um programa C.
 +
#Implementar um programa C para converter um ângulo em radianos para graus.
 +
  
  
  
 
-----
 
-----
[[Imagem:icone_voltar.png|link=MCO18703_2017_2_AULA02#Aulas]]
+
[[Imagem:icone_voltar.png|link=MCO18703_2017_2_AULA02]]
 
[[Imagem:icone_menu.png|link=MCO18703_2017_2#Aulas]]
 
[[Imagem:icone_menu.png|link=MCO18703_2017_2#Aulas]]
 
[[Imagem:icone_prox.png|link=MCO18703_2017_2_AULA04]]
 
[[Imagem:icone_prox.png|link=MCO18703_2017_2_AULA04]]

Edição atual tal como às 15h03min de 24 de outubro de 2017

Objetivos

  • Utilizar os operadores relacionais e lógicos na programação C.
  • Utilizar o comando de decisão if else.


Operadores Relacionais e Lógicos

Os operadores relacionais e lógicos são os mesmos vistos na aula anterior.

Relacionais
Operador Significado
> maior que
>= maior ou igual que
< menor que
<= menor ou igual que
== igual a
!= diferente de


Lógicos
Operador Significado
&& AND (E)
|| OR (OU)
! NOT (NÃO)

Ver Operadores Relacionais e Lógicos

Comandos de decisão if() e if() else

Estes comandos são também chamados de Comandos de controle de fluxo.
Possibilitam ao programador alterar a sequência de execução de um programa.

O comando if representa uma tomada de decisão do tipo "SE isto ENTÃO aquilo".

Sua forma geral é:


if (condição) declaração;

ou


if (condição)
{
   declaração1;
   declaração2;
}
else
{
   declaração3;
   declaração4;
};

Note o uso das chaves sempre que houver mais de uma declaração e a utilização de identação (tecla TAB no teclado).

 

#include <stdio.h>

main()
{
 
  int x; /* declaração de uma variável inteira */
  int y;  /* declaração de uma variável inteira */

  printf ("Entre com o valor de x ");
  scanf("%d",&x);

  printf ("Entre com o valor de y ");
  scanf("%d",&y);

  if (y>x)
     printf("MSG1:y é maior que x\n");


  if (y>x)
     printf("MSG2:y é maior que x\n");
  else
     printf("MSG3:y é igual ou menor que x\n");
 
}

Outro exemplo, usando blocos:

 
#include <stdio.h>

main()
{
 
  int x,y,z; /* declaração de uma variável inteira */

  printf ("Entre com o valor de x ");
  scanf("%d",&x);

  printf ("Entre com o valor de y ");
  scanf("%d",&y);

  if (y>x) 
  {
     printf("MSG1: y é maior que x\n");
     z = y-x;
     printf("MSG2: Neste caso z =  %d\n", z);
  } 
  else 
  {
     printf("MSG3: y é igual ou menor que x\n");
     z = x-y;
     printf("MSG4: Neste caso z =  %d\n", z);
  }
 
}

No C, qualquer expressão que resulta em 0 é considerada FALSA e qualquer expressão com valor diferente de 0 é VERDADEIRA.

Exemplo:

  if (2)
      printf("expressão sempre VERDADEIRA");
  if ('2')
      printf("expressão sempre VERDADEIRA");      
  if (1-1)
      printf("expressão sempre FALSA");
  if (x=1) /* um erro comum - sinal de atribuição no lugar de == */
      printf("expressão sempre VERDADEIRA");

Indentação

É um recuo aplicado ao código fonte de um programa para ressaltar ou definir a estrutura do programa.


Exemplo 1

(sala de aula)

Um funcionário irá receber um aumento de acordo com o seu plano de trabalho (A,B,C e D).
A tabela abaixo mostra o plano e o percentual de aumento:

Plano Percentual
A 5%
B 10%
C 15%
D 20%

Faça um programa que leia o plano de trabalho e o salário atual de um funcionário
em seguida calcule e imprima o seu novo salário. Use o comando switch.


Exemplo 2

(sala de aula)

Suponha que você atrasou uma conta. A cada mês que você deixa de pagar, será cobrado 1% de juros no valor inicial. Ou seja, se você atrasar um mês, irá pagar 1%. Se atrasar 3 meses, irá pagar 3%. Vamos supor que você pode atrasar, no máximo, 5 meses.

O programa pede, como entrada, dois valores: - um float: com o valor de sua dívida inicial (valor_i) - um inteiro: de 0 até 5, que são o número de meses de atraso.

Faça um programa em C que calcule os juros (simples) de atraso.

Exercícios propostos

  1. Implementar um programa que lê um número inteiro e imprime se o número é par ou ímpar. SUGESTÃO: Usar o operador de módulo da divisão.
  2. Implementar um programa em C para ler dois números inteiros e imprimir uma mensagem indicando se os números lidos são iguais ou diferentes. Caso sejam diferentes, computar a média dos mesmos.
  3. Implementar um programa para ler 4 números inteiros e imprimir uma mensagem se a soma dos dois primeiros for igual ou menor a soma dos dois últimos.
  4. Implementar um programa para ler dois números reais e, na sequência, um número inteiro. Se o número inteiro for 1 os dois números iniciais deverão ser somados, se for 2 eles serão subtraídos, se for 3 eles serão multiplicados e se for 4 serão divididos. Mostrar mensagem de erro se o número inteiro não estiver na faixa de 1 a 4. Mostrar mensagem caso a divisão não seja possível.
  5. Um estudo sobre sensibilidade de pessoas a temperaturas da água identificou que a maioria das pessoas considera fria a água com temperaturas abaixo de 25 graus, morna entre 25 e 30 graus, e quente acima de 30 graus. Escreva um algoritmo na forma de fluxograma que mostre as palavras "fria", "morna" ou "quente" dependendo da temperatura da água que for informada. Implemente um programa C.
  6. Implementar um programa C para converter um ângulo em radianos para graus.




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