Windows Vista - Curso Completo - 1476 páginas Windows Server 2003 - Curso Completo SQL Server 2005 - Curso Completo 1500 Tutoriais de Informática Windows Vista - Curso Completo - 1476 páginas Curso Completo de Access Certificações Microsoft
 
Comprar Cursos e Vídeo-Aulas Cursos Online com Certificado Comprar Livros Foruns de Discussao

Você está aqui: Principal » Lista Completa de Tutoriais

Sobre este Tutorial

Autor: Kátia Duarte
Data: 05-09-2005
Categoria: Programação
Assunto: C - BÁSICO
Visitas: 44873
E-mail: katchuskaduarte@yahoo.com.br
Site:
Avaliação: (47 votos)
1 2 3 4 5
Comentários: Ler / Escrever

Linguagem C – Controle de Fluxo

 

Objetivos

Estudar os diversos tipos de controles de fluxo disponíveis na linguagem C.

 

Pré-requisitos

É necessário que o leitor tenha acompanhado o artigo anterior, pois os artigos obedecem a uma seqüência.

 

Nota: Este artigo faz parte do curso de “Linguagem C – Básico”.

 

Controle de Fluxo

 

Os comandos de controle de fluxo podem ser divididos em três grupos: Instruções condicionais, estrutura de repetição e os desvios incondicionais que serão apresentados a seguir.

 

Instruções Condicionais

 

As instruções condicionais existentes no padrão ANSI são: if, switch e o operador ternário (?).

 

Instrução If

 

Esta instrução obedece à sintaxe:

 

if (condição) instrução para condição verdadeira ;

else instrução para condição falsa;

 

Pode-se utilizar uma ou mais instruções verdadeiras e falsas no if. Caso seja mais de uma deve-se colocar entre chaves. Se a condição é verdadeira serão executadas apenas as instruções localizadas após a instrução if. Caso contrario somente as instruções após o else serão executadas. O else é opcional conforme mostra o exemplo abaixo que efetua a soma de dois números e avisa ao usuário quando o resultado obtido for um número par.

 

#include<stdio.h>

 

void main()

{

int num1,num2,soma;

 

printf("Digite o primeiro valor inteiro a ser somado:");

scanf("%d",&num1);

 

printf("Digite o segundo valor inteiro a ser somado:");

scanf("%d",&num2);

 

soma=num1+num2;

printf("Soma: %d ",soma);

 

if((soma%2)==0)

printf(" - numero par\n");

 

}

 

No programa acima é usada a instrução scanf que será ensinada num próximo artigo. O importante agora é saber que ela é a responsável pela entrada de dados pelo console. Abaixo pode ser visto a entrada do usuário e saída do programa.

 

Digite o primeiro valor inteiro a ser somado: 2

Digite o segundo valor inteiro a ser somado: 4

Soma:6 – numero par

 

Esse mesmo programa pode ser reescrito para que avise também ao usuário quando o resultado é um numero impar.

 

#include<stdio.h>

 

void main()

{

int num1,num2,soma;

 

printf("Digite o primeiro valor inteiro a ser somado:");

scanf("%d",&num1);

 

printf("Digite o segundo valor inteiro a ser somado:");

scanf("%d",&num2);

 

soma=num1+num2;

printf("Soma: %d ",soma);

 

if((soma%2)==0)

printf(" - numero par\n");

else

printf(" - numero impar\n");

}

 

Isto é feito acrescentando o else a instrução if. Desta forma, o programa verifica se o resto da soma dividido por dois é igual a 0, caso seja será impresso na tela que o valor é par. Caso contrario será impresso que a soma se trata de um numero impar.

 

A linguagem C padrão também permite o uso de ifs alinhados, obedecendo à forma:

 

If(condição)

Instrução;

Else

If(condição)

Instrução;

Else

If(condição)

Instrução;

.

.

.

Else

Instrução;

 

Para entender melhor veja o próximo exemplo:

 

#include<stdio.h>

 

void main()

{

float nota;

 

printf("Digite o valor da nota(numero):");

scanf("%f",&nota);

 

if((nota>=8)&&(nota<=9))

printf("Nota correspondente a A!!!\n");

else

if((nota>=6)&&(nota<=7))

printf("Nota correspondente a B!!!\n");

else

if((nota>=4)&&(nota<=5))

printf("Nota correspondente a C!!!\n");

else

if((nota>=2)&&(nota<=3))

printf("Nota correspondente a D!!!\n");

else

if((nota>=0)&&(nota<=1))

printf("Nota correspondente a E!!!\n");

else

printf("Nota invalida!!!\n");

}

 

O operador ternário (?)

 

O operador ? é muito utilizado no lugar da instrução if. Este operador requer três operando e pode ser escrito da seguinte forma:

 

Exp1? Exp2: Exp3

 

Neste exemplo o usuário entra com o valor de x, se o valor de x for menor ou igual a 0 então o valor de x é incrementado de 1 é atribuído a y. De outra forma o y terá o valor de x decrementado de 1.

 

#include<stdio.h>

 

void main()

{

int x,y;

 

printf("digite um numero inteiro:\n");

scanf("%d",&x);

 

y=x<=0 ? x+1 : x-1;

printf("y:%d\n",y);

 

}

 

Switch

 

Sua sintaxe é:

 

switch(expressão){

case constante1:

seqüência de comandos

break;

case constante2:

seqüência de comandos

break;

case constante3:

seqüência de comandos

break;

 

.

.

.

default:

seqüência de comandos

}

 

Esta instrução compara a expressão com todas as constantes caso seja verdadeira ela executa as seqüências de comandos daquela constante. Caso todas as alternativas sejam falsas o comando default é executado. A instrução break demonstrada acima é opcional, é ela que para a execução do switch case. O Padrão ANSI permite usar 257 comandos case. O comando switch compara apenas igualdades, enquanto que o if comparar qualquer expressão lógica ou relacional. Como exemplo será criado um menu para que o usuário escolha entre fazer a soma de dois números ou calcular a media.

 

#include<stdio.h>

void main()

{

int entrada;

 

printf("Digite 1 para calcular a soma de dois numeros\n");

printf("Digite 2 para calcular a media\n");

scanf("%d",&entrada);

 

switch(entrada){

case 1:

printf("Vc escolheu a opcao de somar dois numeros");

case 2:

printf("Vc escolheu a opcao de calcular a media");

default:

printf("Nenhuma das opcoes foi selecionada");

}

 

}

 

Estrutura de repetição

 

As estruturas de repetição são utilizadas para que um conjunto de instruções seja executado até que ocorra uma certa condição. O laço for diferencia dos restantes( while e do-while) por ter condições pré-definidas, ou seja, o numero de vezes a ser executada já é conhecido.

 

Laço for

 

Sintaxe do laço:

 

For(inicialização; condição ; incremento) comando;

 

Na inicialização é atribuído um valor para variavel que controla o laço, a condição determina quando o laço deve ser encerrado e por ultimo temos o quanto a variável controladora é incrementada. Exemplo simples:

 

#include<stdio.h

 

void main()

{

int n;

for(n=1; n<=10; n++)

printf("n=%d\n",n);

}

 

No programa acima o for iniciamos a variável n com o valor, a instrução que escreve o valor de n será executada enquanto n for menor ou igual a 10, sendo que n é incrementada de 1 em iteração. Sendo assim a saída do programa será:

 

n=1

n=2

n=3

n=4

n=5

n=6

n=7

n=8

n=9

n=10

 

Laço While

 

Sua forma geral é:

 

while (condição) Instrução;

 

Este laço executa a instrução até que a condição se torne falsa (qualquer valor diferente de zero).

 

#include<stdio.h>

 

void main()

{

int n1,n2,soma,resposta;

resposta=1;

while(resposta==1)

{

printf("Digite valor de n1(inteiro):\n");

scanf("%d",&n1);

printf("Digite valor de n2(inteiro):\n");

scanf("%d",&n2);

soma=n1+n2;

printf("Soma:%d\n",soma);

printf("Deseja continuar? (1 - sim / 2 - nao)\n");

scanf("%d",&resposta);

 

while((resposta!=1) && (resposta!=2))

{

printf("Digite 1 para sim ou 2 para nao !!\n");

scanf("%d",&resposta);

}/*fim_while*/

}/*fim_while*/

}

 

Nesse programa foram executados dois laços while, o primeiro executa a soma de dois números até que a resposta seja igual a 1. E o segundo que pede um valor valido, ou seja, 1 para continuar calculando a soma de outros números ou 2 para terminar o programa.

 

Laço do-while

 

A grande diferença entre o laço do-while e os vistos anteriormente é que ele analisa a condição no final do laço. Dessa forma todas as instruções localizadas dentro do do-while será executada pelo menos uma vez. O laço termina quando a condição se torna falsa. Sintaxe:

 

Do{

Instrução;

}while(condição)

 

O programa anterior também pode ser escrito da seguinte forma:

 

#include<stdio.h>

void main()

{

int n1,n2,soma,resposta;

do{

printf("Digite valor de n1(inteiro):\n");

scanf("%d",&n1);

printf("Digite valor de n2(inteiro):\n");

scanf("%d",&n2);

soma=n1+n2;

printf("Soma:%d\n",soma);

printf("Deseja continuar? (1 - sim / 2 - nao)\n");

scanf("%d",&resposta);

if((resposta!=1)&& (resposta!=1))

printf("Programa finalizado, este numero nao existe no menu \n");

}while(resposta==1);

}

 

A única diferença é que este programa permite digitar outro número além de 1 e 2, porém será exibida a mensagem “Programa finalizado, este numero não existe no menu”.

 

Desvio incondicional

 

A linguagem C tem como desvio incondicional o comando goto.

 

Comando goto

 

Esta instrução ou comando é muito pouco utilizado, pois tornam os códigos difíceis de se compreender. Por esse motivo não entraremos em muitos detalhes. Veja o exemplo abaixo, ele faz o mesmo do que o exemplo que utilizando o laço for (mostrado anteriormente). Repare que o programa que utiliza o for é muito mais fácil de se entender.

 

#include<stdio.h>

 

void main()

{

int n;

n=1;

loop1: /*rótulo*/

printf("n=%d\n",n);

n++;

if(n<=10) goto loop1; /*caso n seja menor ou igual a 10 volta para o rótulo

acima, executando assim as instruções outra vez

até que a condição do if seja falsa*/

}

 

Conclusão

 

Conclui-se que as o controle de fluxo é essencial nos programas. Portanto não poderia faltar em nosso tutorial de linguagem C. Neste artigo nos aprendemos usa-los através de exemplos fáceis de entender.

 

LISTA DE TODOS OS TUTORIAIS DISPONÍVEIS

 


CURSOS ONLINE COM CERTIFICADO E SUPORTE
Gerência de Projetos SQL Server 2005 Gerência Financeira Windows Server 2003
MS Project 2007 Photoshop Projeto e Interconexão de Redes LAN Técnico Profissionalizante de Informática
CURSO EM FORMATO DE VÍDEO-AULA
EXEMPLOS PRÁTICOS PASSO A PASSO COM SOM E IMAGEM
Clique no curso para informações detalhadas
Curso Duração Informações
ACCESS
Vídeo-Aula - Access 2007 - Curso Básico 2h01m Clique aqui
Vídeo-aula - Access 2007 - Tudo Sobre Consultas 2h30m Clique aqui
Vídeo-Aula - Curso Avançado de Access 2003 2h48m Clique aqui
Vídeo-Aula - Curso Básico de Access 2003 2h49m Clique aqui
EXCEL
Vídeo-aula - Criando uma Agenda no Excel 40m Clique aqui
Vídeo-aula - Curso de Macros e Programação VBA no Excel - Avançado 11h27m Clique aqui
Vídeo-aula - Curso de Macros e Programação VBA no Excel - Básico e Int... 13h02m Clique aqui
Vídeo-aula - Excel 2003 - Curso Básico 3h03m Clique aqui
Vídeo-Aula - Excel 2007 - Curso Avançado 2h30m Clique aqui
Vídeo-Aula - Excel 2007 - Curso Básico 2h35m Clique aqui
Vídeo-Aula - Tabelas Dinâmicas Avançadas no Excel 2003 2h Clique aqui
Vídeo-aula - Tudo Sobre Funções Matriciais no Excel 2h30m Clique aqui
Vídeo-Aula - Tudo Sobre Gráficos no Excel 9h Clique aqui
Vídeo-aula interativa: Tudo Sobre Tabelas Dinâmicas no Excel 2003 2h30m Clique aqui
WORD
Vídeo-Aula - Curso Básico de Word 2003 2h14m Clique aqui
Vídeo-aula - Word 2003 Avançado 1h34m Clique aqui
Vídeo-aula - Word 2003 Básico 2h14m Clique aqui
Vídeo-Aula - Word 2007 - Curso Básico 2h23m Clique aqui
POWERPOINT
Vídeo-Aula - Curso Básico de PowerPoint 2003 2h22m Clique aqui
WINDOWS
Vídeo-Aula - Curso Básico de Windows XP 2h36m Clique aqui
Vídeo-Aula - Windows XP - Formatação e Instalação 3h47m Clique aqui
Vídeo-Aula - Windows XP Básico + Intermediário + Dicas Práticas 8h Clique aqui
PROGRAMAÇÃO
Vídeo-Aula - CALCULADORA HP 12C - Curso Prático em 80 Lições 02h30m Clique aqui
Vídeo-Aula - CALCULADORAS HP 50G - 49G/G+ - 48 GII -- Clique aqui
Vídeo-Aula - Curso Completo de Lógica de Programação 22h15m Clique aqui
Vídeo-Aula - Lógica de Programação com VB.NET 14h Clique aqui
CONCURSOS PÚBLICOS
Vídeo-aula - Excel Para Concursos Públicos - Simulados e Provas Coment... 2h Clique aqui
Vídeo-Aula - Matemática Básica - Módulo I 22h Clique aqui
Vídeo-aula - Matemática Financeira - Teoria e Prática 9h10m Clique aqui
Vídeo-Aula - Raciocínio Lógico - Curso Completo e Prático 12h Clique aqui
Vídeo-aula - Série Concursos: Inglês ESAF - Simulados e Provas Comenta... 2h Clique aqui
BANCO DE DADOS
Vídeo-Aula - Dominando o ORACLE - Curso Prático 12h Clique aqui
Vídeo-Aula - MySQL - Curso Completo e Prático 11h30m Clique aqui
Vídeo-aula - SQL Server 2005 - Reporting Services 2h30m Clique aqui
WEBDESIGN
Vídeo-Aula - Criação de Sites - Curso Básico 2h53m Clique aqui
Vídeo-Aula - Criando Blogs Profissionais - Curso Completo 45m Clique aqui
Vídeo-Aula - Criando Sites Dinâmicos Avançados com DreamWeaver CS3, PH... 4h54m Clique aqui
Vídeo-Aula - Criando Sites Dinâmicos com DreamWeaver CS3, PHP e MySQL 4h05m Clique aqui
Vídeo-Aula - Criando uma Loja Virtual com PHP e MySQL - Curso Completo 19h Clique aqui
Vídeo-Aula - Curso Completo de PHP + HTML + CSS 27h35m Clique aqui
Vídeo-Aula - DreamWeaver CS4 - Curso Prático 1h53m Clique aqui
Vídeo-aula - Flash CS3 - Básico e Prático 4h45m Clique aqui
Vídeo-Aula - Flash MX - Curso Básico 2h26m Clique aqui
Vídeo-Aula - HTML - Curso Prático 2h40m Clique aqui
Vídeo-Aula - Tableless - Crie Sites 100% nos Padrões Web 4h10m Clique aqui
INTERNET
DVD: Hardware - Curso Básico 58m Clique aqui
Vídeo-Aula - Curso de Microinformática Prática 4h35m Clique aqui
Vídeo-aula - Curso Prático de Internet 40m Clique aqui
Vídeo-aula - Curso Prático de Outlook Express 55m Clique aqui
CAD
Vídeo-Aula - Curso de Autocad 2D 4h Clique aqui
Vídeo-Aula - Curso de Autocad 3D 3h45m Clique aqui
VÍDEO E ÁUDIO
DVD: Conversão de Formatos Digitais: Áudio e Vídeo 1h26m Clique aqui
Vídeo-Aula - Como Criar Vídeo-Aulas - Curso Prático 1h04m Clique aqui
Vídeo-Aula - Curso de Teoria Musical 1h Clique aqui
PROGRAMAS GRÁFICOS
Vídeo-Aula -  Flash CS4 - Curso Prático 2h19m Clique aqui
Vídeo-Aula - Curso de CorelDraw X4 - Módulo I 3h Clique aqui
Vídeo-Aula - Curso Profissional Photoshop 4h20m Clique aqui
Vídeo-Aula - Fireworks CS4 - Curso Prático 1h35m Clique aqui
Vídeo-Aula - Photoshop CS4 - Curso Prático 4h24m Clique aqui
ADMINISTRAÇÃO E NEGÓCIOS
DVD - Curso de Oratória - Falando em Público sem Medo 2h36m Clique aqui
LIVROS CAMPEÕES DE VENDA NO SITE
Dossiê Hacker
Universidade Project
Loja de Livros

© Júlio Battisti, 2001 - 2009. Todos os direitos reservados.
É expressamente proibida a reprodução total ou parcial do conteúdo deste site e dos textos disponíveis, seja através de mídia eletrônica, impressa, ou qualquer outra forma de distribuição. Os infratores serão indiciados e punidos com base na lei nº 9.610 de 19/02/1998. Este tutorial só pode ser publicado no site www.juliobattisti.com.br e no site do Autor do tutorial. Nenhum outro site tem permissão para copiar e publicar este tutorial, mesmo que sejam mantidas todas as referências ao autor e ao site www.juliobattisti.com.br. Não é permitida a publicação deste tutorial em nenhum outro site.