Você está na página 1de 50

Linguagem C

Agradecimentos

T CNICAS DE P ROGRAMAO I

Prof.John Hebert da Silva Felix


johnfelix@unilab.edu.br

Universidade da Integrao Internacional da Lusofonia Afro-Brasiliera Curso de Engenharia de Energias


Redeno-CE, Brasil
30 outubro 2012

Prof. John Hebert S. Felix Tcnicas de Programao I

1/11

UNILAB

Linguagem C

Agradecimentos

ndice da Apresentao

Linguagem C Linguagem C

Prof. John Hebert S. Felix Tcnicas de Programao I

2/11

UNILAB

Linguagem C

Agradecimentos

L INGUAGEM C

Prof. John Hebert S. Felix Tcnicas de Programao I

3/11

UNILAB

Linguagem C

Agradecimentos

Linguagem C
1 2 3 4 5 6 7 8 9 10 11 12

Introduo; A Biblioteca-padro e as Palavras Reservadas em C; Tipos de Dados e Variveis; Operadores e Expresses; Entrada e Sada E/S pelo Console; Estruturas de Controles; Funes; Arrays e Strings; Ponteiros; Estruturas, Unies e Enumeraes; Arquivos e Streams; Estruturas de dados: Listas lineares (Filas, Pilhas e Listas Encadeadas). Ordenao e Pesquisa.
4/11 UNILAB

Prof. John Hebert S. Felix Tcnicas de Programao I

Linguagem C

Agradecimentos

Introduo

Introduo
A linguagem C foi desenvolvida por Dennis Ritchie no Bell Laboratories, a partir de outras duas linguagens mais antigas a BCPL e a B; C uma linguagem de programao que permite uma abordagem estruturada e disciplinada para a escrita de programas; Os cdigos escritos em C so portveis, i.e, podem ser adaptados ao outros computadores com pouca ou nenhuma modico nos cdigos.

Prof. John Hebert S. Felix Tcnicas de Programao I

5/11

UNILAB

Linguagem C

Agradecimentos

Introduo

Introduo
A linguagem C foi desenvolvida por Dennis Ritchie no Bell Laboratories, a partir de outras duas linguagens mais antigas a BCPL e a B; C uma linguagem de programao que permite uma abordagem estruturada e disciplinada para a escrita de programas; Os cdigos escritos em C so portveis, i.e, podem ser adaptados ao outros computadores com pouca ou nenhuma modico nos cdigos.

Prof. John Hebert S. Felix Tcnicas de Programao I

5/11

UNILAB

Linguagem C

Agradecimentos

Introduo

Introduo
A linguagem C foi desenvolvida por Dennis Ritchie no Bell Laboratories, a partir de outras duas linguagens mais antigas a BCPL e a B; C uma linguagem de programao que permite uma abordagem estruturada e disciplinada para a escrita de programas; Os cdigos escritos em C so portveis, i.e, podem ser adaptados ao outros computadores com pouca ou nenhuma modico nos cdigos.

Prof. John Hebert S. Felix Tcnicas de Programao I

5/11

UNILAB

Linguagem C

Agradecimentos

Introduo

Introduo
A linguagem C foi desenvolvida por Dennis Ritchie no Bell Laboratories, a partir de outras duas linguagens mais antigas a BCPL e a B; C uma linguagem de programao que permite uma abordagem estruturada e disciplinada para a escrita de programas; Os cdigos escritos em C so portveis, i.e, podem ser adaptados ao outros computadores com pouca ou nenhuma modico nos cdigos.

Prof. John Hebert S. Felix Tcnicas de Programao I

5/11

UNILAB

Linguagem C

Agradecimentos

A biblioteca-padro e as palavras reservadas em C


A Biblioteca-Padro C
Em 1983, foi estabelecido um comit, pelo o ANSI (American National Standards Institute), com o objetivo de padronizar a linguagem C; Este comit deniu o contedo e a forma padro para a biblioteca C que cou conhecido como padro C ANSI; A biblioteca-padro formda por uma coleo de funes suportadas pelos compiladores ANSI; Uma biblioteca armazena um arquivo que tem o nome de cada funo, o cdigo-objeto e as infrmaes para o processo de ligar (visto em compiladores x interpretadores); Os arquivos de cabealho que relacionam as funes da biblioteca so incluidos pela diretiva #include; A biblioteca-padro contm os prottipos de funes que esto relacionados com os arquivos de cabealho.

Prof. John Hebert S. Felix Tcnicas de Programao I

6/11

UNILAB

Linguagem C

Agradecimentos

A biblioteca-padro e as palavras reservadas em C


A Biblioteca-Padro C
Arquivo de Cabealho assert.h ctype.h errno.h oat.h limits.h locale.h math.h Finalidade Dene macros que auxiliam na depurao de programas. Dene prottipos de funo para funes utilizadas na manipulao de caracteres Dene macros utilizadas na apresentao de erros. Dene os valores de tamanho de ponto utuante do sistema. Dene os valores de tamanho de inteiros do sistema. Contm prottipos de funes e outras informaes que suportam a localizao. Contm prottipos de funo para funes utilizadas na biblioteca de matemttica.

Prof. John Hebert S. Felix Tcnicas de Programao I

6/11

UNILAB

Linguagem C

Agradecimentos

A biblioteca-padro e as palavras reservadas em C


A Biblioteca-Padro C
Arquivo de Cabealho setjmp.h signal.h stdarg.h stddef.h stdio.h stdlib.h Finalidade Contm prottipos de funo para funes utilizadas para evitar sequncia normal de chamada e de retorno de funo. Contm prottipos de funo e macros que suportam a manipulao de sinais. Dene macros que suportam lista de argumentos de comprimentos varivel. Dene tipos comuns normalmente utilizados em C. Contm prottipos de funo para funes de entrada e sada. Contm prottipos de funo para converses de nmero em texto e vice-versada, alocao de memria, nmeros aleatrios e funes utilitrias. Contm prottipos de funo para funes de processamento de strings. Contm prottipos de funo e tipo para manipular data e hora.

string.h time.h

Prof. John Hebert S. Felix Tcnicas de Programao I

6/11

UNILAB

Linguagem C

Agradecimentos

A biblioteca-padro e as palavras reservadas em C

Palavras reservadas em C
auto break case char const continue default do double else enum extern oat for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

Prof. John Hebert S. Felix Tcnicas de Programao I

6/11

UNILAB

Linguagem C

Agradecimentos

Tipos de Dados e Variveis


Tipos de Dados
Um tipo de dado em C, dene um conjunto de valores possveis de serem armazenados em variaveis, bem como as diversas e operaes que podem ser realizadas com tais variaveis. Em C h cinco tipos de dados primitivos, a saber:
char: caractere simples. Tamanho de 1 byte (8 bits). Faixa de 127 a 127; int: valores inteiros. Tamanho de 2 bytes. Faixa de 32.767 a 32.767; oat: nmeros reais (ponto utuante). Tamanho de 4 bytes. Faixa de 3, 4 1038 ; double: nmeros reais (ponto utuante duplo). Tamanho de 8 bytes. Faixa de 1, 7 10308 ; void: tipo de dado que indica vazio.

Em C, o tipo de dado lgico obtido pela utilizao do valor 0 (zero) para falso (false) e 1 (um) ou qualquer valor diferente de zero para verdadeiro (true).
Prof. John Hebert S. Felix Tcnicas de Programao I 7/11 UNILAB

Linguagem C

Agradecimentos

Tipos de Dados e Variveis

Tipos de Dados - modicadores


Um modicador utilizado para alterar um tipo de dado. Os modicadores em C so: signed, unsigned, long e short; Os modicadores podem ser aplicados aos tipos de dados bsicos int e char. O long tambm pode ser aplicado a double; No C ANSI o long oat foi retirado, devido este ter o mesmo signicado do double. Exemplos: unsigned char: 1 byte (8 bits). Faixa de 0 a 127; unsigned short int: 2 bytes. Faixa de 0 a 65.535; long int: 4 bytes. Faixa de 2.147.483.647 a 2.147.483.647; unsigned long int: 4 bytes. Faixa de 4.294.967.295.

Prof. John Hebert S. Felix Tcnicas de Programao I

7/11

UNILAB

Linguagem C

Agradecimentos

Tipos de Dados e Variveis


Variveis e Constantes As variveis so posies nomeadas de memria utilizadas para armazenar os dados, que podem ser modicados durante a execuo do programa; As variveis podem ser declaradas dentro de funes (variveis locais), na denio de parmetros (parmetros formais) e localizadas foras das funes (variveis globais); As variveis locais so alocadas e desalocadas dentro de funes; Os parmetros formais so os argumentos, i.e., variveis delcaradas para receber os valores de argumentos de uma funo; As variveis globais podem ser utilizadas por qualquer parte do programa.

Prof. John Hebert S. Felix Tcnicas de Programao I

7/11

UNILAB

Linguagem C

Agradecimentos

Tipos de Dados e Variveis


Sintaxe da Declarao de Variveis
Em C, a declarao de variveis tem a seguinte sintaxe. tipo_de_dado identicador; tipo_de_dado lista_de_identicadores (separados por vrgula);

Identicadores Vlidos
Em C, os nomes ou identicadores das variveis devem atender as seguintes regras:
1 2 3 4 5

O identicador deve comear com um caractere alfabtico ou _(underline); O identicador pode ter caracteres numricos, desde que atenda a regra 1; O identicador no pode conter caracteres especiais; Utilizar nomes signicativos para representar as variveis do programa; C faz distino entre letras minsculas e maisculas,e.g., Nome e nome so variveis diferentes; Ex.:identicadores vlidos: numero, conta, _nome, idade, B13, C2; Ex.:identicadores invlidos: _av!15, entre..par, a-b, c&h, 1car.
7/11 UNILAB

6 7

Prof. John Hebert S. Felix Tcnicas de Programao I

Linguagem C

Agradecimentos

Tipos de Dados e Variveis


Programa em C - declarao de variveis
//Bibliotecas no padro C ANSI #include <stdio.h> #include <stdlib.h> //Funo principal do programa int main (void){ //Declarao de variveis unsigned short int numConta; unsigned char tipConta; oat saldoConta; /* Corpo do programa Aes a serem executadas */ return 0;//Indica o m do programa com sucesso } //Fim da funo principal do programa

Prof. John Hebert S. Felix Tcnicas de Programao I

7/11

UNILAB

Linguagem C

Agradecimentos

Tipos de Dados e Variveis


Variveis e Constantes As constantes so variveis com valores xos, que no podem ser modicados pelo programa;
Ex.: int cont = 0;

A constantes string suportada por C. Uma string correponde a um conjunto de caracteres entre aspas dupla, e.g., Hoje a noite tem festa. C suporta constantes de barra invetida que insere caracteres especiais como constantes.
Cdigos de barra invetida Cdigo \n \t Descrio Nova linha. Insere o curso da tela no comeo de uma nova linha Tabulao horizontal. Movimenta o curso da tela para a prxima posio de tabulao horizontal Aspas duplas. Insere aspas duplas Aspas simples. Insere aspas simples Nulo. Indica o m de uma string Barra invertida. Insere um caractere de barra invetida em uma string Tabulao vertical Alerta (beep). Emite o sinal sonoro do sistema

\" \ \0 \\ \v \a Prof. John Hebert S. Felix Tcnicas de Programao I

7/11

UNILAB

Linguagem C

Agradecimentos

Operadores e Expresses
Operador de Atribuio Em C, o operador ou comando de atribuio representado por =. A sintaxe deste operador mostrado a seguir: varivel = dado_atribudo; varivel = expresso; ou varivel1 = varivel2 = variveln = expresso;
A atribuio em C, pode ocorrer durante a declarao de variveis conforme mostrado a seguir. Atribuio de Valores em Variveis #include <stdio.h> #include <stdlib.h> int main (void){ unsigned short int numConta = 1200013; unsigned char tipConta = F; //F - pessoa Fsica e J - pessoa Jurdica oat saldoConta = 2750.92; /* Corpo do programa - Aes a serem executadas */ return 0; }
Prof. John Hebert S. Felix Tcnicas de Programao I 8/11 UNILAB

Linguagem C

Agradecimentos

Operadores e Expresses
Converso de tipos de dados por atribuio Em C, a atribuio de valores a tipos diferentes pode converte o seu tipo de dado, e.g., a vari de destino recebe o valor da expresso e adequa tal valor a seu tipo de dado.
Ex.: Converso de tipo por atribuio #include <stdio.h> #include <stdlib.h> int main (void){ int inum; char ctex; oat fvr; ctex = inum; /* ctex recebe os 8 bits menos signicativos de inum, se inum for de 0 a 256, ctex tem valor semelhante ao de inum */ inum = fvr; /* inum recebe a parte inteira de fvr */ fvr = ctex; /* fvr converte o valor de ctex para ponto utuante */ fvr = inum; /* fvr converte o valor de inum para utuante */ return 0; }

Prof. John Hebert S. Felix Tcnicas de Programao I

8/11

UNILAB

Linguagem C

Agradecimentos

Operadores e Expresses

Operadores Aritmticos Operador + * / % ++ Funo Adio Subtrao (ou menos unrio) Multiplicao Diviso Resto Decremento Incremento Exemplo c=a+b c=ab c=a*b c=a/b c=a%4 a (pr-decremento) ou a (ps-decremento) ++a (pr-incremento) ou a++ (ps-incremento)

Prof. John Hebert S. Felix Tcnicas de Programao I

8/11

UNILAB

Linguagem C

Agradecimentos

Operadores e Expresses
Operadores Lgicos Operador && || ! Funo AND OR NOT Exemplo f && v = f f || v = v !f = v

Tabela verdade dos operadores lgicos &&, || e ! a 0 0 1 1 b 0 1 0 1 a && b 0 0 0 1 a || b 0 1 1 1 !a 1 1 0 0

Prof. John Hebert S. Felix Tcnicas de Programao I

8/11

UNILAB

Linguagem C

Agradecimentos

Operadores e Expresses

Operadores Relacionais Operador == > < >= <= != Funo Igual a Maior que Menor que Maior ou igual a Menor ou igual a Diferente Exemplo c == a a>b a<b c >= a c <= a c != a

Prof. John Hebert S. Felix Tcnicas de Programao I

8/11

UNILAB

Linguagem C

Agradecimentos

Operadores e Expresses
Operadores Bit a Bit Operador & ! Funo AND OR OR exclusivo (XOR) Complemento de um Deslocamento esquerda Deslocamento direita Exemplo Equivante a && Equivante a || a (inverte os bits, 1 == 0 e 0 ==1) a = b2; b = a1;

Tabela verdade dos operador lgico XOR a 0 0 1 1


Prof. John Hebert S. Felix Tcnicas de Programao I

b 0 1 0 1
8/11

ab 0 1 1 0
UNILAB

Linguagem C

Agradecimentos

Operadores e Expresses
Ex.: Incremento e deslocamento de bits #include <stdio.h> int main (void){ int a = 3, b = 3; printf(Mostra o valor de a: %d\n", a); /* Realiza o pr-incremento */ printf(Realiza o pr-incremento: %d\n, ++a); printf(Mostra o valor de a com pr-incremento:%d\n, a); a = 3; printf(Mostra o valor de a: %d\n", a); /* Realiza o ps-incremento */ printf(Realiza o ps-incremento: %d\n, a++); printf(Mostra o valor de a com ps-incremento:%d\n, a); /* Realiza o deslocamento esquerda */ printf(Realiza o deslocamento esquerda:%d:%d:%d\n, b, b1, b2); b = 3; /* Realiza o deslocamento direita */ printf(Realiza o deslocamento direita:%d:%d:%d\n, b, b1, b2); return 0; }
Prof. John Hebert S. Felix Tcnicas de Programao I 8/11 UNILAB

Linguagem C

Agradecimentos

Operadores e Expresses
Operadores: ternrio ? e ponteiros & e O operador ternrio ? pode substituir a estrutura de seleo if-then-else; A forma do operador ternrio ? : expresso1 ? expresso2 : expresso3 ; Ex.: a = c > 5 ? 10 : 30; Se a expresso1 (c > 5) verdadeira, a = 10, caso contrrio, a = 30;
Operadores: ternrio ? e ponteiros & e Um endereo de uma varivel na memria chamado de ponteiro; Os operadores & e so unrios. O primeiro operador & retorna o endereo na memria de seu operando. O segundo operador o complemento de & e retorno o valor da varivel localizada no endereo que o segue.

Prof. John Hebert S. Felix Tcnicas de Programao I

8/11

UNILAB

Linguagem C

Agradecimentos

Operadores e Expresses

Ex.: Ponteiros #include <stdio.h> int main (void){ int valor, aux; int *endereco; aux = 7; endereco = &aux; valor = *endereco; printf(O endereo :%d\n, endereco); printf(O valor :%d\n, valor); return 0; }

Prof. John Hebert S. Felix Tcnicas de Programao I

8/11

UNILAB

Linguagem C

Agradecimentos

Operadores e Expresses
Operadores: vgula (,), ponto (.) e seta (->) O operador vgula (,) utilizado para fazer o encadeamento de expresso, e.g., a = (b = 5, b + 2); Os operadores ponto (.) e seta (->) so utilizados no referenciamento de estruturas e unies. Estes so tipos de dados compostos referenciado por um mesmo nome (identicador); Operadores: parnteses () e colchetes [] O operador parnteses () aumenta a precedncia entre das operaes que esto no seu interior; O operador colchetes [] permite indexar arrays unidimensionais (vetores) e arrays bidimensionais (tabelas), e.g., char texto[10];

Prof. John Hebert S. Felix Tcnicas de Programao I

8/11

UNILAB

Linguagem C

Agradecimentos

Operadores e Expresses
Precedcia entre os operadores em C Operadores ( ) [ ] -> + ++ ! * & (tipo) */% + < <= > >= == != & | && || ?: = += = *= /= Associatividade esquerda para direita direita para esquerda esquerda para direita esquerda para direita esquerda para direita esquerda para direita esquerda para direita esquerda para direita esquerda para direita esquerda para direita esquerda para direita esquerda para direita esquerda para direita Tipo maior unrio multiplicativo aditivo relacional igualdade/diferena AND lgico XOR lgico lgico lgico lgico condicional atribuio

Prof. John Hebert S. Felix Tcnicas de Programao I

8/11

UNILAB

Linguagem C

Agradecimentos

Operadores e Expresses
Expresses e Blocos de Comandos Em C, uma expresso uma combinao vlida de operadores, constantes e variaveis; Converter uma expresso a mudar para um determindado tipo de dado denomindado de cast. A forma do cast (tipo)expresso. Ex.: (double) var1/10; C reduzido consiste em simplicar a codicao de operadores de atribuio. A forma do C reduzido varivel operador = expresso correponde a forma normal varivel = varivel operador expresso. Ex.: a = a + 5; na forma simplicada ca a+ = 5; Os blocos de comandos so conjuntos ou grupos de comandos relacionados, que so tratados como unidade. Em C, um bloco de comando estar entre chaves { comandos }, i.e, o incio indicado por { e o m por }.

Prof. John Hebert S. Felix Tcnicas de Programao I

8/11

UNILAB

Linguagem C

Agradecimentos

Entrada e Sada E/S pelo Console


Comandos de entrada e sada A entrada de dados em C realizada pelo comando scanf(); A sada de dados executada pelo comando printf(); Estes comandos podem realizar a entrada e sada formadas, i.e., ler e escrever nos diversos tipos de dados.
Sintaxe dos comandos de entrada e sada scanf(Texto / formato de dado, var1 ); scanf(Texto / formatos de dados,var1 , var2 ,. . . , varn ); printf(Texto / formato de dado, result1 ); printf(Texto / formatos de dados, result1 , result2 ,. . . , resultn );

Exemplos para os comandos de entrada e sada scanf (%c %d %f, tipoConta, numConta, valorConta); printf (%c %d %f, tipoConta, numConta, valorConta);

Prof. John Hebert S. Felix Tcnicas de Programao I

9/11

UNILAB

Linguagem C

Agradecimentos

Entrada e Sada E/S pelo Console


Especicadores de formato de scanf() Cdigo %c %d %i %e %f %g %o %p %n %s %u %x %[] Descrio de formato de leitura caractere nico inteiros decimal valor em ponto utuante valor em octal ponteiro recebe um valor inteiro igual ao nmero de caracteres lidos at esse ponto string inteiros sem sinal valor em hexadecimal procura um conjunto de caractere %

Prof. John Hebert S. Felix Tcnicas de Programao I

9/11

UNILAB

Linguagem C

Agradecimentos

Entrada e Sada E/S pelo Console


Especicadores de formato de printf() Cdigo %c %d %i %e %E %f %g %G %o %p %n %s %u %x %X %%
Prof. John Hebert S. Felix Tcnicas de Programao I

Descrio caractere inteiros decimais com sinal notao cientca (minsculo e maisculo) ponto utuante decimal utiliza %e ou %f, o que for mais curto utiliza %E ou %F, o que for mais curto octal sem sinal mostra um ponteiro mostra o nmero de caracteres escritos at esse ponto string inteiros decimais sem sinal hexadecimal sem sinal (minsculo e maisculo) mostra o smbolo %
9/11 UNILAB

Linguagem C

Agradecimentos

Entrada e Sada E/S pelo Console


Especicador de largura mnima e de preciso O especicador de largura mnima, que correponde a um nmero entre o smbolo % e o especicador de formato (e.g, %4c) limita o tamanho de preencimento de uma varivel; O especicador de preciso acompanha o anteriro e especica o nmero de casas decimais (e.g, %4.8s, mostra uma string que tenha entre 4 e 8 caracteres); Exemplo:
#include <stdio.h> int main (void){ double num1 = 11.123456; printf(%f\n, num1); printf(%2.3f\n, num1); printf(%010.5f\n, num1); printf(%8.26s\n, Quando aplicado a um texto limita o seu tamanho); return 0; }

Prof. John Hebert S. Felix Tcnicas de Programao I

9/11

UNILAB

Linguagem C

Agradecimentos

Estruturas de controle

Estruturas de controle As estruturas ou comandos de controle podem ser divididos em: seleo, iterao e desvios. Seleo ou condicional: fazem parte os comandos if e switch; Iterao ou lao: fazem parte os comandos while, for e do-while; Desvio ou salto: fazem parte os comandos break, continue, return e goto;

Prof. John Hebert S. Felix Tcnicas de Programao I

10/11

UNILAB

Linguagem C

Agradecimentos

Estruturas de controle
Estrutura de seleo O comando de seleo if executa uma ao ou um bloco de aes, quando uma condio verdadeira, caso contrrio a ao ou um bloco de aes do else (se existir) executado.

Sintaxe - if-else - comando simples if (expresso) comando; else comando;

Sintaxe - if-else - bloco de comandos if (expresso){ Bloco de Comandos; } else { Bloco de Comandos; }

Prof. John Hebert S. Felix Tcnicas de Programao I

10/11

UNILAB

Linguagem C

Agradecimentos

Estruturas de controle

Sintaxe - if-else aninhados comando nico if (expresso) Comando; else if (expresso) Comando; else if (expresso) Comando;

Sintaxe - if-else aninhados - bloco de comandos if (expresso) { Bloco de Comandos; } else if (expresso) { Bloco de Comandos; } else if (expresso) { Bloco de Comandos; }

Prof. John Hebert S. Felix Tcnicas de Programao I

10/11

UNILAB

Linguagem C

Agradecimentos

Estruturas de controle
Exemplo de estrutura de seleo composta.
Mdia aritmtica indicando aprovado e reprovado #include <stdio.h> int main (void){ oat nota1, nota2, nota3, media; printf(Digite as 3 notas\n); scanf(%f\n%f\n%f, &nota1, &nota2, &nota3); media = (nota1 + nota2 + nota3)/3; if (media>=7) { printf(Aluno aprovado\n); printf(A sua mdia : %f\n, media); } else { printf(Aluno reprovado\n); printf(A sua mdia : %f\n, media); } return 0; }
Prof. John Hebert S. Felix Tcnicas de Programao I 10/11 UNILAB

Linguagem C

Agradecimentos

Estruturas de controle

Seleo de mltipla escolha - switch A estrutura de seleo switch seleciona uma dentre um conjunto de condies associadas a uma sequncia de valores.

Prof. John Hebert S. Felix Tcnicas de Programao I

10/11

UNILAB

Linguagem C

Agradecimentos

Estruturas de controle
Sintaxe - switch switch(expresso) { case Valor1 : Sequncia de comandos; break; /*comando que desvia a excuo do programa para outra linha do cdigo*/ case Valor2 : Sequncia de comandos; break; . . . default: Sequncia de comandos; break; }
Ex.: Calculadora com 4 operaes #include <stdio.h> int main (void){ oat numa, numb; char oper; printf(Digite o 1o nmero o operador e o 2o nmero\n); scanf(%f%c%f, &numa, &oper, &numb); switch(oper) { case +: printf(A adio : %2.2f\n, numa + numb); break; case : printf(A subtrao : %2.2f\n, numa numb); break; case *: printf(A multiplicao : %2.2f\n, numa * numb); break; case /: printf(A diviso : %2.2f\n, numa / numb); break; default: printf(Operao invlida!\n); break; } return 0; 10/11 }

Prof. John Hebert S. Felix Tcnicas de Programao I

UNILAB

Linguagem C

Agradecimentos

Estruturas de controle
Estrutura de Iterao ou lao - for Controla o uxo de execuo, por meio de uma quantidade de repeties predenidas.

Sintaxe - lao for for(inicializao; condio; incremento) { Sequncia de comandos; } Se houver apenas um comando, o bloco representado por { }, pode ser retirado.

Em que: inicializao: atribui um valor a varivel de controle; condio: indica uma expresso relacional que determina o m do lao; incremento: deni a forma de variao da varivel de controle a cada iterao.

Prof. John Hebert S. Felix Tcnicas de Programao I

10/11

UNILAB

Linguagem C

Agradecimentos

Estruturas de controle

Ex.: Mdia geral da turma #include <stdio.h> int main (void){ oat mAno, mAnoTur, acum; int i; printf(Digite a mdia da turma de 36 alunos\n); for(i=1;i<=36;i++){ scanf(%f,&mAno); acum = aum + mAno; } mAnoTur = acum/36; printf(A mdia anual da turma : %2.2f\n, mAnoTur); return 0; }

Ex.: Lao innito #include <stdio.h> int main (void){ char letra; printf(Digite a letra L para sair do lao\n); for( ; ; ){ scanf(%f,&mAno); letra = getchar(); if (letra == L) break; /*sai do lao*/ } return 0; }

Prof. John Hebert S. Felix Tcnicas de Programao I

10/11

UNILAB

Linguagem C

Agradecimentos

Estruturas de controle

Estrutura de Iterao ou lao - while Controla o uxo de execuo, repetindo vrias vezes uma mesma parte ou bloco de um programa. Sintaxe - lao while while(condio) { Sequncia de comandos; }

Prof. John Hebert S. Felix Tcnicas de Programao I

10/11

UNILAB

Linguagem C

Agradecimentos

Estruturas de controle

Mdia geral da turma


#include <stdio.h> int main (void){ oat mAno, mAnoTur, acum = 0; int i = 1; printf(Digite a mdia da turma de 36 alunos\n); while(i<=36){ scanf(%f,&mAno); acum = aum + mAno; i++; } mAnoTur = acum/36; printf(A mdia anual da turma : %2.2f\n, mAnoTur); return 0; }

Prof. John Hebert S. Felix Tcnicas de Programao I

10/11

UNILAB

Linguagem C

Agradecimentos

Estruturas de controle

Estrutura de Iterao ou lao - do-while Controla o uxo de execuo, repetindo vrias vezes uma mesma parte ou bloco de um programa, realizando o teste no nal. Sintaxe - lao do-while do { Sequncia de comandos; }while(condio);

Prof. John Hebert S. Felix Tcnicas de Programao I

10/11

UNILAB

Linguagem C

Agradecimentos

Estruturas de controle

Ex. 1: Mdia geral da turma


#include <stdio.h> int main (void){ oat mAno, mAnoTur, acum = 0; int i = 1; printf(Digite a mdia da turma de 36 alunos\n); do { scanf(%f,&mAno); acum = acum + mAno; } while(++i <= 36); mAnoTur = acum/36; printf(A mdia anual da turma : %2.2f\n, mAnoTur); return 0; }
Prof. John Hebert S. Felix Tcnicas de Programao I 10/11

Ex. 2: Especicifacao da porcentagem de vinho O algoritmo apresentado a seguir, especica a porcentagem dos tipos de vinhos: tinto, branco e ros. O algoritmo informa a quantidade de vinho desconhecida e para sair um nalizador

UNILAB

Linguagem C

Agradecimentos

Estruturas de controle

Ex. 2: Especicifacao da porcentagem de vinho


#include <stdio.h> int main (void){ oat pTin, pBra, pRos; //porcentagem de vinhos int conV = 0, conTin = 0, conBra = 0, conRos = 0; char tipV = \0; //tipo de vinho printf (Digite T (p/ tinto), B (p/ branco), R (p/ ros) e S (p/ sair)\n); do{ scanf(%c,&tipV); switch(tipV){ case T: conTin += 1; case B: conBra += 1; case R: conRos += 1; } conV += 1; // incrementa o contador

Ex. 2: continuao
} while(tipV != S); //teste da condio de saida conV = 1; // desconta o nalizador S if(conV) { pTin = (conTin * 100) / conV; pBra = (conBra * 100) / conV; pRos = (conRos * 100) / conV; printf (As % dos vinhos tinto, branco e ros so, respectivamente:%2.2f\n%2.2f\n%2.2f, pTin, pBra, pRos); } else printf (No foi informado nenhum tipo de vinho!\n); }

Prof. John Hebert S. Felix Tcnicas de Programao I

10/11

UNILAB

Linguagem C

Agradecimentos

Estruturas de controle

Comandos de desvio return: utilizado para retornar de uma funo e caso algum valor esteja associado a este comando ser tambm retornado. A sua forma : return expresso; break: pode ser utilizado para nalizar case de um comando switch ou lao. A sua forma : break; continue: realiza a execuo do prximo comando. No caso de um lao faz este realizar a sua prxima iterao. A sua forma : continue;

Prof. John Hebert S. Felix Tcnicas de Programao I

10/11

UNILAB

Linguagem C

Agradecimentos

Estruturas de controle
Comandos de desvio goto: caiu em desuso devido a tendncia de deixar os programas ilegveis. A sua forma :

goto rtulo; . . . rtulo: Em que: rtulo corresponde a um rtulo vlido.


Exemplo de lao com goto:
cont = 1; laco: scanf(%f,&mAno); acum = acum + mAno; cont++; if(cont<=36) goto laco;

Prof. John Hebert S. Felix Tcnicas de Programao I

10/11

UNILAB

Linguagem C

Agradecimentos

Agradecimentos

Agradeo a todos pela ateno!

Prof. John Hebert S. Felix Tcnicas de Programao I

11/11

UNILAB