Mudanças entre as edições de "AULA 6 - Programação 1 - Graduação"
(49 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
===Objetivos=== | ===Objetivos=== | ||
+ | ---- | ||
+ | *Utilizar os operadores relacionais e lógicos na programação C. | ||
+ | *Utilizar o comando de decisão ''if else''. | ||
+ | *Comando ''switch''. | ||
− | + | ===Operadores Relacionais e Lógicos=== | |
− | + | ---- | |
− | |||
− | |||
− | |||
− | |||
Os operadores relacionais e lógicos são os mesmos vistos na aula anterior. | Os operadores relacionais e lógicos são os mesmos vistos na aula anterior. | ||
+ | ;Relacionais | ||
{| border="1" cellpadding="5" cellspacing="0" | {| border="1" cellpadding="5" cellspacing="0" | ||
! style="background: #ffdead;" | Operador | ! style="background: #ffdead;" | Operador | ||
! style="background: #ffdead;" | Significado | ! style="background: #ffdead;" | Significado | ||
|- | |- | ||
− | |> | + | !style="text-align: center;" | > |
− | |maior que | + | | maior que |
|- | |- | ||
− | |>= | + | !style="text-align: center;" | >= |
|maior ou igual que | |maior ou igual que | ||
|- | |- | ||
− | |< | + | !style="text-align: center;" | < |
|menor que | |menor que | ||
|- | |- | ||
− | |<= | + | !style="text-align: center;" | <= |
|menor ou igual que | |menor ou igual que | ||
|- | |- | ||
− | |== | + | !style="text-align: center;" | == |
|igual a | |igual a | ||
|- | |- | ||
− | |!= | + | !style="text-align: center;" | != |
|diferente de | |diferente de | ||
|} | |} | ||
+ | ;Lógicos | ||
{| border="1" cellpadding="5" cellspacing="0" | {| border="1" cellpadding="5" cellspacing="0" | ||
! style="background: #ffdead;" | Operador | ! style="background: #ffdead;" | Operador | ||
! style="background: #ffdead;" | Significado | ! style="background: #ffdead;" | Significado | ||
|- | |- | ||
− | |&& | + | !style="text-align: center;" |&& |
|AND (E) | |AND (E) | ||
|- | |- | ||
− | |<nowiki>||</nowiki> | + | !style="text-align: center;" |<nowiki>||</nowiki> |
|OR (OU) | |OR (OU) | ||
|- | |- | ||
− | |! | + | !style="text-align: center;" |! |
|NOT (NÃO) | |NOT (NÃO) | ||
|} | |} | ||
Linha 50: | Linha 52: | ||
=== Comandos de decisão ''if()'' e ''if() else'' === | === 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 é: | ||
+ | |||
+ | ::<i>if (condição) declaração;</i> | ||
+ | |||
+ | ou | ||
+ | ::<i>if (condição) | ||
+ | ::{ | ||
+ | ::declaração1; | ||
+ | ::declaração2; | ||
+ | ::} | ||
+ | ::else | ||
+ | ::{ | ||
+ | ::declaração3; | ||
+ | ::declaração4; | ||
+ | ::};</i> | ||
+ | |||
+ | Note o uso das chaves sempre que houver mais de uma declaração. | ||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
Linha 96: | Linha 121: | ||
scanf("%d",&y); | scanf("%d",&y); | ||
− | if (y>x) { | + | if (y>x) |
+ | { | ||
printf("MSG1: y é maior que x\n"); | printf("MSG1: y é maior que x\n"); | ||
z = y-x; | z = y-x; | ||
printf("MSG2: Neste caso z = %d\n", z); | printf("MSG2: Neste caso z = %d\n", z); | ||
− | } else { | + | } |
+ | else | ||
+ | { | ||
printf("MSG3: y é igual ou menor que x\n"); | printf("MSG3: y é igual ou menor que x\n"); | ||
z = x-y; | z = x-y; | ||
Linha 109: | Linha 137: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | No C, qualquer expressão que resulta em 0 é considerada FALSA e qualquer expressão com valor diferente de 0 é VERDADEIRA. | |
Exemplo: | Exemplo: | ||
Linha 124: | Linha 152: | ||
===Tipo Char=== | ===Tipo Char=== | ||
+ | ---- | ||
+ | Os caracteres são um tipo de dado chamado de '''char'''. O C trata os caracteres<br> | ||
+ | ('a','b','c',...) como sendo variáveis de um ''byte'' (8 ''bits'').<br> | ||
+ | Um ''bit'' é a menor unidade de informação que pode ser armazenada num <br> | ||
+ | computador. Os inteiros ('''int''') e os reais ('''float''') têm um número de<br> | ||
+ | ''bytes'' maior. Podem ter 2 ''bytes'' (16 ''bits''), 4 ''bytes'' (32 ''bits'') ou<br> | ||
+ | até mais.<br> | ||
− | + | [http://pt.wikipedia.org/wiki/ASCII Consulte a tabela ASCII] | |
− | Exemplo | + | Uma variável do tipo '''caracter''' é tratada como um número inteiro e declarada <br> |
+ | com o tipo ''char'', que na prática é um número inteiro de ''byte''. | ||
+ | |||
+ | ;Exemplo 1 | ||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
Linha 151: | Linha 189: | ||
[http://www.vivaolinux.com.br/dica/Limpando-a-sujeirinha-no-buffer-do-teclado Limpando sujeira do teclado] | [http://www.vivaolinux.com.br/dica/Limpando-a-sujeirinha-no-buffer-do-teclado Limpando sujeira do teclado] | ||
+ | |||
+ | |||
+ | ;Como gerar os caracteres ASCII imprimíveis na Linguagem C | ||
+ | |||
+ | <syntaxhighlight lang=c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | main() | ||
+ | { | ||
+ | int i; | ||
+ | |||
+ | for (i = 32; i <= 126; i++) | ||
+ | { | ||
+ | printf("%c [%d]\n", i, i); | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
===Indentação=== | ===Indentação=== | ||
+ | ---- | ||
[http://pt.wikipedia.org/wiki/Indenta%C3%A7%C3%A3o Indentação] | [http://pt.wikipedia.org/wiki/Indenta%C3%A7%C3%A3o Indentação] | ||
[http://en.wikipedia.org/wiki/Indent_style Estilos] | [http://en.wikipedia.org/wiki/Indent_style Estilos] | ||
===Comando switch=== | ===Comando switch=== | ||
− | + | ---- | |
− | O comando switch permite controlar o fluxo de um programa de forma condicional. O comando testa uma expressão que deve resultar em um número inteiro. Uma sequência de cláusulas case permite executar | + | O comando '''switch''' permite controlar o fluxo de um programa de forma condicional.<br> |
+ | O comando testa uma expressão que deve resultar em um número inteiro.<br> | ||
+ | Uma sequência de cláusulas ''case'' permite executar um conjunto de instruções <br> | ||
+ | conforme o valor da expressão. <br> | ||
+ | Note que esta sequência de instruções pode ser interrompida por um ''break''. | ||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
Linha 194: | Linha 254: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | ;Exemplo 1 | |
− | Implementar um programa de calculadora onde são fornecidos via scanf dois operandos reais e uma operação que pode ser uma das 4 operações. Com auxílio de um switch deve ser computado e mostrado o resultado da operação. Solução: | + | Implementar um programa de calculadora onde são fornecidos via ''scanf'' dois <br> |
+ | operandos reais e uma operação que pode ser uma das 4 operações. <br> | ||
+ | Com auxílio de um ''switch'' deve ser computado e mostrado o resultado da operação.<br> | ||
+ | Solução: | ||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
Linha 240: | Linha 303: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | Elaborar uma função que recebe como parâmetro um número inteiro de 1 a 7. A função deve imprimir Domingo se o número é 1, Segunda se 2 | + | ;Exemplo 2 |
+ | |||
+ | Elaborar uma função que recebe como parâmetro um número inteiro de 1 a 7. <br> | ||
+ | A função deve imprimir Domingo se o número é 1, Segunda se 2, ...<br> | ||
+ | A função deve retornar -1 caso o parâmetro esteja fora da faixa e 0 caso contrário.<br> | ||
Solução: | Solução: | ||
Linha 292: | Linha 358: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Exercício | + | ;Exercício 1 |
− | Um funcionário irá receber um aumento de acordo com o seu plano de trabalho, | + | 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: #ffdead;" | Plano | ||
+ | ! style="background: #ffdead;" | 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''. | ||
− | + | ;Exercício 2 | |
− | + | Faça um programa que leia um número entre 0 e 10, e escreva este número por extenso.<br> | |
+ | Use o comando ''switch''. | ||
+ | ===Exercícios propostos=== | ||
+ | ---- | ||
+ | |||
+ | #Implementar um programa C que converte temperaturas de graus Fahrenheit para Celsius. | ||
<!-- | <!-- | ||
− | |||
− | |||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
#include <stdio.h> | #include <stdio.h> | ||
Linha 323: | Linha 411: | ||
</syntaxhighlight> | </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 | + | #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. | #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. | ||
<!-- | <!-- | ||
Linha 411: | Linha 499: | ||
#Implementar um programa C para converter um ângulo em radianos para graus. | #Implementar um programa C para converter um ângulo em radianos para graus. | ||
#Implementar um programa C que recebe os 3 coeficientes de uma equação do segundo grau e então determina as raízes da mesma. | #Implementar um programa C que recebe os 3 coeficientes de uma equação do segundo grau e então determina as raízes da mesma. | ||
+ | |||
+ | |||
+ | |||
+ | {| border="1" cellpadding="5" cellspacing="0" | ||
+ | ! style="background: #cdc5bf;" | [[AULA 5 - Programação 1 - Graduação | << ]] | ||
+ | ! style="background: #cdc5bf;" | AULA 6 | ||
+ | ! style="background: #cdc5bf;" | [[AULA 7 - Programação 1 - Graduação | >> ]] | ||
+ | |} |
Edição atual tal como às 09h40min de 11 de março de 2015
Objetivos
- Utilizar os operadores relacionais e lógicos na programação C.
- Utilizar o comando de decisão if else.
- Comando switch.
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.
#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");
Tipo Char
Os caracteres são um tipo de dado chamado de char. O C trata os caracteres
('a','b','c',...) como sendo variáveis de um byte (8 bits).
Um bit é a menor unidade de informação que pode ser armazenada num
computador. Os inteiros (int) e os reais (float) têm um número de
bytes maior. Podem ter 2 bytes (16 bits), 4 bytes (32 bits) ou
até mais.
Uma variável do tipo caracter é tratada como um número inteiro e declarada
com o tipo char, que na prática é um número inteiro de byte.
- Exemplo 1
#include <stdio.h>
main ()
{
char x='A',y=65,w=0x41,z;
scanf("%c",&z);
printf("Caracter lido = %c\n",z);
printf("Caracter lido = %d\n",z);
printf("Caracter lido = %x\n",z);
if (z==x)
printf("Iguais 1\n");
if (z==y)
printf("Iguais 2\n");
if (z==w)
printf("Iguais 3\n");
}
- Como gerar os caracteres ASCII imprimíveis na Linguagem C
#include <stdio.h>
main()
{
int i;
for (i = 32; i <= 126; i++)
{
printf("%c [%d]\n", i, i);
}
}
Indentação
Comando switch
O comando switch permite controlar o fluxo de um programa de forma condicional.
O comando testa uma expressão que deve resultar em um número inteiro.
Uma sequência de cláusulas case permite executar um conjunto de instruções
conforme o valor da expressão.
Note que esta sequência de instruções pode ser interrompida por um break.
#include <stdio.h>
int x=1;
main ()
{
int opcao;
printf("Entre com uma opção (número inteiro)\n");
scanf ("%d",&opcao);
switch(opcao) {
case 1:
printf("opcao 1\n");
break; /* o break força o encerramento da instrução*/
case 2:
printf("opcao 2\n");
x++; /* instrução demonstrativa apenas */
printf("Note que pode existir ums lista de instruções\n");
break;
case 3:
printf("opcao 3\n"); /* note o efeito de não ter o break */
case 4:
printf("opcao 4\n");
break;
case 5:
printf("opcao 5\n");
break;
default:
printf("opcao default\n");
break; /* a opção default é opcional */
}
}
- Exemplo 1
Implementar um programa de calculadora onde são fornecidos via scanf dois
operandos reais e uma operação que pode ser uma das 4 operações.
Com auxílio de um switch deve ser computado e mostrado o resultado da operação.
Solução:
#include <stdio.h>
main ()
{
float operando1, operando2, res;
char operador;
printf("Entre com operando 1\n");
scanf ("%f",&operando1);
printf("Entre com operando 2\n");
scanf ("%f",&operando2);
printf("Entre com operador\n");
scanf (" %c",&operador);
switch(operador) {
case '+':
res = operando1 + operando2;
printf("Valor da soma = %f\n", res);
break;
case '-':
res = operando1 - operando2;
printf("Valor da diferença = %f\n", res);
break;
case '*':
res = operando1 * operando2;
printf("Valor da diferença = %f\n", res);
break;
case '/':
if (operando2 != 0) {
res = operando1 / operando2;
printf("Valor da diferença = %f\n", res);
} else
printf("Divisão por zero não permitida!\n");
break;
default:
printf("Operação inválida!\n");
break;
}
}
- Exemplo 2
Elaborar uma função que recebe como parâmetro um número inteiro de 1 a 7.
A função deve imprimir Domingo se o número é 1, Segunda se 2, ...
A função deve retornar -1 caso o parâmetro esteja fora da faixa e 0 caso contrário.
Solução:
/* contribuição do aluno Iago */
#include <stdio.h>
int operar(int x)
{
switch(x) {
case 1:
printf("Domingo\n");
break;
case 2:
printf("Segunda\n");
break;
case 3:
printf("Terça\n");
break;
case 4:
printf("Quarta\n");
break;
case 5:
printf("Quinta\n");
break;
case 6:
printf("Sexta\n");
break;
case 7:
printf("Sábado\n");
break;
default:
printf("-1\n");
return -1;
}
return 0;
}
main()
{
int num;
printf("Entre com um número:\n");
scanf("%d",&num);
num=operar(num);
printf("%d\n",num);
}
- Exercício 1
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.
- Exercício 2
Faça um programa que leia um número entre 0 e 10, e escreva este número por extenso.
Use o comando switch.
Exercícios propostos
- Implementar um programa C que converte temperaturas de graus Fahrenheit para Celsius.
- 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.
- 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.
- 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.
- 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 o algoritmo na forma de um programa C.
- Implementar um programa que recebe três números reais e então o programa testa se estes números podem formar um triângulo EQUILÁTERO, ISÓSCELES, ESCALENO ou NÃO pode ser triângulo. (ver aula anterior).
- Implementar um programa C para converter um ângulo em radianos para graus.
- Implementar um programa C que recebe os 3 coeficientes de uma equação do segundo grau e então determina as raízes da mesma.
<< | AULA 6 | >> |
---|