Programação em C: Laços de Repetição e Decisão – Parte I

Boa noite à todos!!! Hoje iremos começar uma temática que é de suma importância para todos aqueles que desejam aprender a programar – independente da linguagem de programação que irá seguir ou estudar: Laços de Repetição e Decisão. 

Por se tratar de um tema bastante extensivo iremos dividir em partes, até para que as explicações não fiquem vagas e possamos claro praticar bastante – que é muito importante. Lembrando-se sempre que na programação o importante não é quantidade mas sim a forma como você estuda uma determinada linguagem de programação. Às vezes vale muito mais a pena perder 2 horas num programa, por exemplo, de if-else e tentar entendê-lo do que passar adiante. Pois ao fazer isso, você futuro programador(a) ou desenvolvedor(a) estará enganando a si mesmo. Podes ter certeza disso. Então, por conta disso, vamos estudar com calma e procurando entender o que cada programa quer nos informar! Não vamos mais perder tempo e aqui vamos! 😉

  • O comando if/else
  • E exercícios em C com comando if/else;

Qualquer linguagem de programação, mesmo a extremamente complicada Assembly, dispõe de meio para tomar decisões ou repetir trechos/linhas de códigos. Devemos entender por tomar decisões a capacidade de o programa efetuar um teste e executar uma ou outra tarefa de acordo com o resultado obtido.

De qualquer forma, esses dois recursos são a essência de um programa, pois o tornam mais inteligente. Especificamente na linguagem C/C++, esses comandos de decisão e de repetição são muito poderosos e ricos em flexibilidade.

1. O comando if

O primeiro comando de controle de fluxo de programa que estudaremos é o if. Essencialmente, ele efetua um teste comparativo utilizando uma expressão lógica e dependendo do resultado (verdadeiro ou falso), executa uma determinada ação. Essa ação pode ser constituída por uma ou mais linhas de instruções. A sintaxe básica desse comando é a seguinte:

if (<expressão>)

<instrução>;

Em <expressão> teremos uma expressão de teste válida. Na realidade podemos ter várias expressões de teste conectadas por operadores lógicos. Já <instrução>  representa a linha de comando que deve ser executada caso a <expressão> resulte num valor verdadeiro. Em C/C++, um valor verdadeiro é representado por 1, e o valor falso é indicado por 0. Isso significa que a avaliação de <expressão> retorna sempre 0 ou 1 (falso ou verdadeiro).

No caso de ser necessário executar várias linhas de código, então devemos envolvê-las com chaves da seguinte maneira:


if (<expressão>)

{

<instrução1>;

<instrução2>;

<instrução3>;
}

Um comando que faz par com if é o else. Com ele podemos forçar o programa a executar uma tarefa caso o teste resulte em falso, ou seja, é uma segunda opção de decisão. O if pode vir sem o else, mas o contrário (else sem if) não pode ocorrer. Veja a sintaxe para o uso da cláusula else.

if(<expressão>)

<instrução1>;

else

<instrução2>;

Para um bloco de linhas, temos a seguinte sintaxe:

if (<expressão>)

{

<instrução1>;

<instrução2>;

<instrução3>;

}

else

{

<instrução4>;

<instrução5>;

<instrução6>;

}

Vejamos isso na prática. Abra o seu codeblocks ou DevCpp para que possamos programar o código abaixo:


#include<stdio.h>
#include<stdlib.h>

main()
{
int idade;

printf("Entre com a sua idade...: ");
scanf("%d",&idade);
if(idade < 18)
printf("\nVoce eh menor de idade!\nNao pode dirigir.....");
else
printf("\nVoce eh maior de idade!\nPode dirigir....\n");

}

O que esse programa faz é armazenar a entrada do usuário na variável idade e depois compará-la com 18. Caso seja menor, executa o comando printf(“\nVoce eh menor de idade!\nNao pode dirigir…..”), senão executa a linha de comando após a cláusula else.

Lembrando dois pontos muito importantes ao fazer uso do laço if. Ao final de cada instrução nunca se esqueça de colocar o ; (ponto e vírgula) , senão o programa não irá ser executado.

Outro ponto que é muito importante é indentação do programa. Para que fique bem claro o que está sendo escrito pelo programador para que no futuro, caso ele precise modificar algo fique fácil a leitura do programa. Caso não saiba o que é indentação e como fazer uso, dêem uma pesquisada por aqui –>> http://pt.wikipedia.org/wiki/Indenta%C3%A7%C3%A3o <<—

Uma variação nteressante de if/else é o encadeamento de ambos. Com esse recurso podemos efetuar vários testes de forma sequencial, um após o outro. A sintaxe para esse tipo de construção é a seguinte:


if(<expressão2>)

<instrução1>;

else if (expressão2)

<instrução2>;

else if (expressão3)

<instrução3>;

else if (expressão4)

<instrução4>;

else

<instrução5>;

Assim que uma condição é satisfeita, o programa executa os comandos relacionados a ela. A cláusula else força a execução de um comando caso nenhuma das condições anteriores seja verdadeira. É como se fosse a condição padrão.

Outra o forma muito comum de encontrar é a utilização de comandos if aninhados, nos quais um if dentro de outro, como no pequeno fragmento de código mostrado em seguida:


if  (caractere != '   ')

if (caractere == ' S ')

Mensagem();

Esse tipo de construção, por outro lado, às vezes gera alguma confusão quando se utiliza a cláusula else, como no seguinte exemplo:


if (caractere != '    ' )

if (caractere == ' S ' )

MensagemSim();

else

MensagemNao();

 

A qual comando if o else está ligado? Neste caso a linguagem C/C++ assume que o else se refere ao último if, que ainda não possua um else associado. Se você desejar fazer com que o else seja associado a outro if, então deve utilizar as chaves, como no seguinte exemplo:


if (caractere ! = '   ' )

{

if (caractere == ' S ' )

Mensagem();

}

else

printf ("Digite um caractere!");

Os programadores que são iniciantes em C/C++ geralmente se deparam com um problema relacionado ao fato de podermos usar qualquer expressão que resulte num valor verdadeiro [1] ou falso [0]. No pequeno fragmento de código mostrado em seguida, temos um exemplo em que é pedido ao usuário para digitar dois valores e depois divide um pelo outro. Caso o segundo número informado for zero, então o programa não efetua o cálculo, já que não é possível um divisão por zero.


#include<stdio.h>
#include<stdlib.h>

main()
{
int dividendo, divisor;
printf("Digite o dividendo e o divisor [nessa sequencia]...: ");
scanf("%d%d", &dividendo,&divisor);
if(divisor)
printf("Quociente eh...: %d",dividendo/divisor);
else
printf("Nao eh possivel divisao por zero!!!\n");
}

Note que em vez de utilizarmos a expressão if (divisor != 0) usamos apenas if (divisor), uma vez que se o valor da variável divisor for zero, então o teste avaliará em falso. Essa forma, por sinal, é mais eficiente, pois o computador não precisa efetuar uma comparação entre o valor da variável e uma constante. Ele apenas verifica o valor armazenado na variável, resultando num consumo menor de tempo do processador.

2. Exercícios: if/else:

Bom …agora é a hora de colocarmos todo o conhecimento adquirido até aqui sobre o laço if/else. Vamos programar?

Programa 1:


/*Faça um programa em C que receba o nome e as 3 notas de um aluno, ao final
exiba o seu nome, a sua respectiva média aritmética e o seu resultado (aprovado se a
média for acima ou igual a 7, senão reprovado)*/

#include<stdio.h>
#include<stdlib.h>

main()
{
 float nota1, nota2, nota3, media;
 char nome[10];
 printf("Digite o nome do Aluno[a]...: ");
 gets(nome);
 printf("Digite as 3 notas...: ");
 scanf("%f%f%f",&nota1,&nota2,&nota3);

 media = (nota1+nota2+nota3)/3;

 printf("Aluno...: ");
 puts(nome);
 printf("A media do aluno eh...: %.f/n",media);
 if(media >= 7)
 printf("Aprovado");
 else
 printf("Reprovado");
}

 

Vamos aumentar o nível de dificuldade, porém seguindo o mesmo estilo do programa acima….hehehehehe =D

Programa 2:


/*Faça um programa em C que receba o nome e as 3 notas de um aluno, ao final
exiba o seu nome, a sua respectiva média aritmética e o seu resultado será
aprovado, senão será recebida a sua nota de recuperação e em seguida o seu resultado
final (aprovado se a nota for acima ou igual a 7, senão reprovado)*/

#include<stdio.h>
#include<stdlib.h>

main()
{
 float nota1, nota2, nota3, media, recuperacao;
 char nome[10];
 printf("Digite o nome do Aluno[a]...: ");
 gets(nome);
 printf("Digite as 3 notas...: ");
 scanf("%f%f%f",&nota1,&nota2,&nota3);

media = (nota1+nota2+nota3)/3;

printf("Aluno...: ");
 puts(nome);
 printf("A media do aluno eh...: %.f/n",media);
 if(media >= 7)
 {
 printf("Aprovado");
 }
 else
 {
 printf("Digite a nota de recuperacao....: \n");
 scanf("%f",recuperacao);
 }
 if (recuperacao >= 7)
 {
 printf("Aprovado");
 }
 else
 {
 printf("Reprovado");
 }
}

Parece difícil né….mas nada melhor do que praticar….vocês acham que termina por aqui? Claro que não. Vejamos mais programas!!!

Programa 3


/*Elabore um programa em C que receba dois salários e o valor do salário mínimo,
ao final, se a média destes salários for maior ou igual ao salário mínimo exiba a mensagem Correto,
senão exiba a mensagem Ladrão.*/

#include<stdio.h>
#include<conio.h>

main()
{
 float salario1, salario2, salMin, media;

printf("Digite o primeiro salario: R$ ");
 scanf("%f",&salario1);
 printf("Digite o segundo salario: R$ ");
 scanf("%f",&salario2);
 printf("Digite o valor do salario minimo: R$ ");
 scanf("%f",&salMin);

media = (salario1+salario2)/2;

if(media>=salMin)
 {
 printf("Correto\n");
 }
 else{
 printf("Ladrao\n");
 }
}

Vamos agora um famoso e clássico programa com mostra com clareza a utilização do if/else!!!

Programa 4


/*Elabore um programa em C receba 2 números
inteiros e mostre o maior deles, caso os números sejam iguais mostre a mensagem: "São iguais".*/

#include<stdio.h>
#include<conio.h>

main()
{
 int num1, num2;

printf("Digite o primeiro numero: ");
 scanf("%d",&num1);
 printf("Digite o segundo numero: ");
 scanf("%d",&num2);

if(num1==num2)
 {
 printf("Os numeros sao iguais!\n");
 }
 else
 {
 if(num1>num2)
 {
 printf("O numero Maior eh: %d\n",num1);
 }
 else
 {
 printf("O numero Menor eh: %d\n",num2);
 }
 }
}

Programa 5


/*Elabore um programa em C que receba 3 números inteiros
e mostre o maior deles. Os números informados não poderão ser iguais.*/

#include<stdio.h>
#include<conio.h>

main()
{
 int num1,num2,num3;

printf("Digite o primeiro numero: ");
 scanf("%d",&num1);
 printf("Digite o segundo numero: ");
 scanf("%d",&num2);
 printf("Digite o terceiro numero: ");
 scanf("%d",&num3);

if(num1>num2 && num1>num3)
 {
 printf("O maior numero eh: %d",num1);
 }
 else
 {
 if(num2>num1 && num2>num3)
 {
 printf("O maior numero eh: %d",num2);
 }
 else
 {
 printf("O maior numero eh: %d",num3);
 }
 }
 }

Programa 6:


/*Elabore um programa em C que receba 3 números e mostre o menor deles.*/

#include<stdio.h>
#include<conio.h>

int main()
{
float num1,num2,num3,menor;

// gotoxy(30,2);
printf("DESCOBRINDO O MENOR VALOR!!\n");
// gotoxy(20,5);
printf("Digite o primeiro valor: ");
scanf("%f",&num1);
//gotoxy(20,7);
printf("Digite o segundo valor: ");
scanf("%f",&num2);
//gotoxy(20,9);
printf("Digite o terceiro valor: ");
scanf("%f",&num3);

if(num1<num2)
{
menor=num1;
}
else
{
menor=num2;
}
if(num3<menor)
{
menor=num3;
}
//gotoxy(20,15);
printf("O menor valor eh: %.f\n",menor);
//gotoxy(40,23);
printf("Aperte alguma tecla para sair.......");
}

Por hoje chega né…. pratiquem, pratiquem e pratiquem…procurem

apostilas e livros para poder se aprofundar mais no assunto.

Pois só assim você fixará todo o seu conhecimento – que será de grande ajuda no futuro! Bons estudos e até a próxima 😉

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s