Baixe o app para aproveitar ainda mais
Prévia do material em texto
L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados L i n g u a g e m C Linguagem C >> Estruturas de Controle Prof. Isaac Benjamim Benchimol ibench@ifam.edu.br L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 2 Ementa • Introdução • Operadores e Expressões • Funções de E/S • Estruturas de Controle • Vetores e Matrizes • Strings • Ponteiros • Funções • Estruturas • Alocação Dinâmica de Memória • Arquivos L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 3 Estruturas de Controle • Governam o fluxo de execução do programa. Se dividem em três categorias: – Desvios Condicionais: if, operador ternário (?:) e switch. – Loop: while(), do-while(), for() e os comandos continue e break. – Desvio Incondicional: goto. L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 4 if Sintaxe: if (expressão) comando; else comando; onde, comando poder ser um único, um bloco de comandos e, neste caso, usa-se os delimitadores de bloco de comandos ( { } ) ou nenhum comando. A cláusula else é opcional. F if (expressão) comando; else comando; próximo comando; V L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 5 if Exemplo: main() { int a, b; printf(“Digite dois números”); scanf(“%d,%d”,&a,&b); if (b) printf(“%f\n”,(float)a/b); else printf(“divisão por zero\n”); } L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 6 if aninhados Ocorre quando um comando if é um objeto de um outro if ou else. Sintaxe exemplo: if ( i ) { if ( k ) comando1; if ( j ) comando2; else comando3; } else comando4; L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 7 if – else - if Sintaxe exemplo: if (expressão) comando; else if (expressão) comando; else if (expressão) comando; else if (expressão) comando; else comando; Neste caso, as expressões são avaliadas de cima para baixo. Assim que uma expressão for diferente de zero (verdadeira), o comando associado a ela é executado e a estrutura encerrada. Se nenhuma expressão for verdadeira, será executado o comando associado ao último else e, se ele não for declarado, nenhum comando será executado. L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 8 if – else - if main(){ int magico, adivinhacao; randomize(); magico= random(10); printf(“ADIVINHE: ”); scanf(“%d”,&adivinhacao); if (adivinhacao == magico){ printf(“ACERTOU”); printf(“%d é o número mágico\n”, magico); } else if (adivinhacao > magico) printf(“—errado– muito alto\n’); else (“—errado– muito baixo\n’);} L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 9 Operador Ternário main(){ int x = 3, y = 7, max; max = (x>y)?1:0; printf(“max = %d\n”,max); } L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 10 switch O comando de seleção switch é utilizado em caso de seleção múltipla. Ele testa o valor de uma expressão contra uma lista de constantes inteiras ou caracter. Quando o valor é igual, os comandos associados àquela constante são executados. Se nenhuma coincidência for encontrada os comandos de default são executados. switch(expressão) { case constante1: comandos; break; case constante2: comandos; break; . default: comandos; } L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 11 switch O comando break causa a saída imediata do switch. Se não existir um comando break seguindo os comandos de um case, o programa segue executando os comandos dos cases abaixo. Exemplo: void main() { int dia; clrscr(); printf(“Digite um dia da semana: “); scanf(“%d”,&dia); switch(dia) { case 1: printf(“\nDomingo\n”); break; case 2: printf(“\nSegunda\n”); break; . case 7: printf(“\nSábado\n”); break; default: printf(“\nNúmero inválido!!!\n”); }} L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 12 Comandos de repetição O comando de repetição é utilizado nos casos em que queremos repetir determinados comandos. Laço for Sintaxe: for(inicialização;condição;incremento) comando; ou for(inicialização;condição;incremento) { comandos; } L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 13 for Inicialização: é geralmente uma atribuição que determina o valor inicial da variável de controle. Esta declaração pode ser feita antes do laço e, desta forma, não necessita ser declarada no escopo do comando. Condição: é uma expressão que determina o final do laço ou o valor final da variável de controle. Incremento: define como a variável de controle do laço varia cada vez que o laço é repetido. L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 14 for Exemplo: int x; for(x=1;x<=100;x++) printf(“%d”,x); for(x=100;x!=65;x-=5) { z=x*x; printf(“o quadrado de %d é %f”,x,z); } O laço infinito: for( ; ; ) printf(“este laço é infinito\n”); ch=”\0”; for( ; ; ){ ch=getchar(); if (ch==”A”) break; � o comando break causa o término imediato do laço } printf(“Você digitou A”); L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 15 while Sintaxe: while(condição) comando; ou while(condição) { comandos; } A condição pode ser qualquer expressão, e verdadeiro é qualquer valor não-zero. Quando a condição é falsa, o controle do programa passa para o primeiro comando após o bloco de código do comando while. L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 16 while Exemplo: void main(){ int t=1, dia; while(t) { printf(“Digite um dia da semana, ou <99> para encerrar: “); scanf(“%d”,&dia); switch(dia) { case 1: printf(“\nDomingo\n”); break; . case 7: printf(“\nSábado\n”); break; case 99: printf(“\nEncerrando\n”); t=0; break; default: printf(“\nNúmero inválido!!!\n”); } /* fim switch*/ } /* fim while */ } /* fim main() */ L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 17 do-while Ao contrário dos laços for e while, que testam as condições no início, o do-while testa a condição no final. Este laço sempre será executado pelo menos uma vez e repete até que a condição se torne falsa. Sintaxe: do { comando } while (condição); Exemplo: do { scanf(“%d”,&num); }while(num!=99); L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 18 Comandos de desvio São utilizados para realizar desvios dentro de um programa. • break:O comando break tem duas finalidades. A primeira é de terminar um case num comando switch e a segunda é de forçar o término imediato de um laço de repetição. Exemplo: for(t=0;t<100;t++){ print(“%d \n”,t); if(t==10) break; } L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 19 Comandos de desvio • continue: Força a repetição (retorna ao início do laço e testa a condição). Exemplo: for(x=0;x<100;x++){ if (x%2) continue; print(“%d \n”,x); } L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 20 Comandos de desvio • goto: Apesar das linguagens possuírem estruturas de controle eficientes, também é disponibilizado o comando de desvio. Deve-se ter um cuidado muito grande, pois a sua utilização em demasia ou de forma incorreta tende a tornar os programas ilegíveis. A sua utilização é simples, basta declarar um rótulo (identificador aceito pela linguagem C seguido de dois pontos) e, de algum ponto do programa estabelecer o desvio através da declaração goto rótulo; Sintaxe: goto rótulo; rótulo: L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 21 Comandos de desvio Exemplo: int x=1; retorno: printf(“%d”,x); x++; if(x<=100) goto retorno; L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 22 Comandos de desvio • exit(): Assim como o comando break força o término de um laço, a função exit() força o término de execução de um programa, retornando ao sistema operacional. Sintaxe: void exit(código_de_erro); onde código_de_erro é utilizado para indicar o estado de retorno. Quando for zero, indica término normal de execução e outros valores são utilizados para indicar algum tipo de erro (retornado para a variável ERRORLEVEL em arquivos “batch” do DOS). L i n g u a g e m C Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 23 Lista de Exercícios 1. Anacleto tem 1,50 metro e cresce 2 centímetros por ano, enquanto Felisberto tem 1,10 metro e cresce 3 centímetros por ano. Calcule e exiba quantos anos serão necessários para que Felisberto seja maior que Anacleto. 2. Leia 10 números inteiros positivos e imprima se são números perfeitos. Nota: Número perfeito é aquele cuja soma de seus divisores, exceto ele próprio, é igual ao número. Exemplo: 6 é perfeito porque 1 + 2 + 3 = 6. 3. Calcule e apresente o valor de S no seguinte somatório: S = 1/225 – 2/196 + 4/169 – 8/144 + ... + 16384/1
Compartilhar