Controle de Declarações em C, Parte 1
bem-vindo à próxima parcela de nossa série, os Fundamentos da C.
Controle de declarações nos permitem especificar o fluxo de controle do programa, ou seja, a ordem na qual as instruções em um programa deve ser executado. Eles tornam possível tomar decisões, executar tarefas repetidamente ou pular de uma seção do código para outra.
existem quatro tipos de instruções de controle em C:
- tomada de Decisão demonstrações
- Selecção de instruções
- Iteração demonstrações
- Salto demonstrações
tomada de Decisão Extrato: a Instrução if else
if-else a instrução é usada para a realização de um teste lógico e, em seguida, tomar uma de duas acções possíveis, dependendo do resultado do teste (ou seja, se o resultado é verdadeiro ou falso).
sintaxe:
if (condition){ statements} else{ statements}
se a condição especificada na instrução if for avaliada como true, as instruções dentro do bloco if serão executadas e o controle será transferido para a instrução imediatamente após o bloco if. Mesmo que a condição seja falsa e nenhum outro bloco esteja presente, o controle é transferido para a instrução imediatamente após o bloco if.
a outra parte é necessária apenas se uma certa sequência de instruções precisar ser executada se a condição for avaliada como falsa. É importante notar que a condição é sempre especificada entre parênteses e que é uma boa prática incluir as instruções no bloco if ou no bloco else em Chaves, seja uma única instrução ou uma instrução composta.
o programa a seguir verifica se o número inserido é positivo ou negativo.
#include<stdio.h>int main( ) { int a; printf("n Enter a number:"); scanf("%d", &a); if(a>0) { printf( "n The number %d is positive.",a); } else { printf("n The number %d is negative.",a); } return 0; }
o programa a seguir compara duas strings para verificar se elas são iguais ou não.
#include <stdio.h>#include <string.h>int main( ) { char a , b; printf("n Enter the first string:"); scanf("%s",a); printf("n Enter the second string:"); scanf("%s",b); if((strcmp(a,b)==0)) { printf("nStrings are the same"); } else { printf("nStrings are different"); } return 0; }
o programa acima compara duas strings para verificar se elas são iguais ou não. A função strcmp
é usada para esse fim. É declarado no arquivo string.h
como:
int strcmp(const char *s1, const char *s2);
ele compara a string apontada por s1
com a string apontada por s2
. A função strcmp
retorna um inteiro maior que, igual ou menor que zero, conforme a string apontada por s1
é maior que, igual ou menor que a string apontada por s2
.
portanto, no programa acima , se as duas strings a
e b
forem iguais, a função strcmp
deve retornar um 0. Se retornar um 0, as strings são as mesmas; caso contrário, são diferentes.
aninhado if E if-else declarações
também é possível incorporar ou aninhar if-else declarações um dentro do outro. O aninhamento é útil em situações em que um dos vários cursos de ação diferentes precisa ser selecionado.
o formato geral de uma instrução if-else aninhada é:
if(condition1){// statement(s);}else if(condition2){//statement(s);}....else if (conditionN){//statement(s);}else{//statement(s);}
o acima também é chamado de escada if-else. Durante a execução de uma instrução if-else aninhada, assim que uma condição for encontrada que seja avaliada como verdadeira, as instruções associadas a esse bloco if específico serão executadas e o restante das instruções if-else aninhadas será ignorado. Se nenhuma das condições for verdadeira, o último bloco else é executado ou se o bloco else está ausente, o controle é transferido para a próxima instrução presente imediatamente após a escada else-if.
o programa a seguir faz uso da instrução if-else aninhada para encontrar o maior dos três números.
#include<stdio.h>int main( ) { int a, b,c; a=6,b= 5, c=10; if(a>b) { if(b>c) { printf("nGreatest is: " , a); } else if(c>a) { printf("nGreatest is: ", c); } } else if(b>c) //outermost if-else block { printf("nGreatest is: " , b); } else { printf( "nGreatest is: " , c); } return 0; }
o programa acima compara três quantidades inteiras e imprime as maiores. A primeira instrução if compara os valores de a
e b
. Se a>b
for verdadeiro, o controle do programa é transferido para a instrução if-else aninhada dentro do bloco if, onde b
é comparado a c
. Se b>c
também for verdadeiro, o valor de a
é impresso; caso contrário, o valor de c
e a
é comparado e se c>a
é verdadeiro, o valor de c
é impresso. Depois disso, o resto da escada if-else é contornado.
no Entanto, se a primeira condição a>b
for falsa, o controle é transferido diretamente para o ultraperiféricas else-if bloco, onde o valor de b
é comparado com c
(de a
não é a maior). Se b>c
for verdadeiro, o valor de b
será impresso, caso contrário, o valor de c
será impresso. Observe o aninhamento, o uso de chaves e o recuo. Tudo isso é necessário para manter a clareza.
Declaração De Seleção: a instrução switch-case
uma instrução switch é usada para seleções de várias vias que se ramificarão em diferentes segmentos de código com base no valor de uma variável ou expressão. Essa expressão ou variável deve ser do tipo de dados inteiro.
sintaxe:
switch (expression){ case value1: code segment1; break; case value2: code segment2; break;... case valueN: code segmentN; break; default: default code segment;}
o valor dessa expressão é gerado durante a execução do programa ou lido como entrada do Usuário. O caso cujo valor é o mesmo da expressão é selecionado e executado. O rótulo padrão opcional é usado para especificar o segmento de código a ser executado quando o valor da expressão não corresponder a nenhum dos valores do caso.
a declaração break
está presente no final de cada caso. Se não fosse assim, a execução continuaria no segmento de código do próximo caso sem sequer verificar o valor do caso. Por exemplo, supondo que uma instrução switch
tenha cinco casos e o valor do Terceiro caso corresponda ao valor da expressão. Se nenhuma declaração de quebra estivesse presente no final do Terceiro caso, todos os casos após o caso 3 também seriam executados junto com o caso 3. Se break estiver presente, apenas o caso necessário será selecionado e executado; após o qual o controle será transferido para a próxima instrução imediatamente após a instrução switch. Não há break
após default
porque após o caso padrão, o controle será transferido para a próxima instrução imediatamente após o switch.
exemplo: um programa para imprimir o dia da semana.
#include<stdio.h>int main( ) { int day; printf("nEnter the number of the day:"); scanf("%d",&day); switch(day) { case 1: printf("Sunday"); break; case 2: printf("Monday"); break; case 3: printf("Tuesday"); break; case 4: printf("Wednesday"); break; case 5: printf("Thursday"); break; case 6: printf("Friday"); break; case 7: printf("Saturday"); break; default: printf("Invalid choice"); } return 0; }
este é um programa muito básico que explica o trabalho da construção do switch-case. Dependendo do número inserido pelo usuário, o caso apropriado é selecionado e executado. Por exemplo, se a entrada do usuário for 5, o caso 5 será executado. O break
declaração de presentes, no caso 5 irá pausar a execução da instrução switch, após o caso 5 e o controle será transferido para a próxima instrução depois de mudar, que é:
return 0;
também é possível incorporar composto de instruções dentro de caso de uma instrução switch. Essas declarações compostas podem conter estruturas de controle. Assim, também é possível ter um switch aninhado incorporando-o dentro de uma caixa.
todos os programas escritos usando a instrução switch-case também podem ser escritos usando a instrução if-else. No entanto, faz bom sentido de programação usar a instrução if quando você precisa tomar alguma ação depois de avaliar alguma condição simples ou complexa que pode envolver uma combinação de expressões relacionais e lógicas (por exemplo, (if((a!=0)&&(b>5))
).
se você precisar selecionar entre um grande grupo de Valores, uma instrução switch será executada muito mais rápido do que um conjunto de ifs aninhados. O switch difere do if nesse switch só pode testar a igualdade, enquanto o if pode avaliar qualquer tipo de expressão booleana.
a instrução switch deve ser usada quando for necessário fazer uma escolha entre um determinado conjunto de opções. A instrução switch case é geralmente usada em aplicativos baseados em menu. O uso mais comum de uma instrução switch-case é no tratamento de dados ou processamento de arquivos. A maior parte do manuseio de arquivos envolve as funções comuns: criar um arquivo, Adicionar registros, excluir registros, atualizar registros, imprimir o arquivo inteiro ou alguns registros seletivos. O programa a seguir dá uma ideia de como a instrução switch case pode ser usada no tratamento de dados. Não envolve o código para processamento de arquivos, pois podemos discutir o manuseio de arquivos em C somente depois de aprendermos conceitos avançados como ponteiros, estruturas e uniões.
exemplo: uma instrução switch case usada no processamento de arquivos de dados.
#include<stdio.h>int main() { //create file &set file pointer . int choice; printf("n Please select from the following options:"); printf("n 1. Add a record at the end of the file."); printf("n 2. Add a record at the beginning of the file:"); printf("n 3. Add a record after a particular record:"; printf("nPlease enter your choice:(1/2/3)?"); scanf("%d",&choice); switch(choice) { case 1: //code to add record at the end of the file break; case 2: //code to add record at the beginning of the file break; case 3: //code to add record after a particular record break; default: printf("n Wrong Choice"); } return 0; }
o exemplo acima de switch-case geralmente envolve aninhar a construção switch-case dentro de uma construção de iteração como do-while. Em nossa postagem do nex, discutiremos essas declarações de iteração.
Leave a Reply