Você está na página 1de 111

CENTRO FEDERAL DE EDUCAO TECNOLGICA DO AMAZONAS CEFET/AM UNIDADE DE ENSINO DESCENTRALIZADA DE MANAUS UNED/MANAUS

Disciplina: Lgica e Linguagem de Programao Assunto: LINGUAGEM C Prof Barbara Kelly da Silva Belota

AULA 1
INTRODUO INTERPRETADORES E COMPILADORES ESTRUTURA DE UM PROGRAMA C AS FUNES MAIN() E PRINTF() CONSTANTES TIPOS DE VARIVEIS NOMES DE VARIVEIS PALAVRAS CHAVES CARACTERES BSICOS

INTRODUO
Em 1960 um comit de cientistas europeus definiu a Linguagem ALGOL Em meados dos Anos 60 pesquisadores da Universidade de Cambridge Desenvolveram a Linguagem BCPL na tentativa de terem um ALGOL simplificado Ainda nos anos 60, DENNIS RITCHIE desenvolveu a linguagem B a partir da BCPL Em 1971 RITCHIE E THOMPSON escreveram a primeira verso da Linguagem C A partir de 1983 a Linguagem C tornou-se popular.

INTRODUO
C uma linguagem vitoriosa como ferramenta na programao de qualquer tipo de sistema (sistemas operacionais, planilhas eletrnicas, processadores de texto, gerenciadores de banco de dados, processadores grficos, sistemas de transmisso de dados, para soluo de problemas de engenharia ou fisica etc.). Como exemplo, o sistema operacional UNIX desenvolvido em C.

CARACTERSTICAS

I/O exclusivamente por funes Todas as operaes de I/O so feitas por rotinas da Bibloteca Muito poderosa, Porttil, pela padronizao dos compiladores existentes e flexvel. Programa mais legvel e documentado. Os programas em C tendem a ser bastante compactos e de execuo rpida. C amiga do programador (estruturada). Programas em C podem ser desenvolvidos em partes separadas por pessoas distintas e depois unidos num produto final, o que significa que bibliotecas de funes podem ser criadas ou usadas sem realmente conhecer o cdigo de cada uma delas. Case Sensitive

INTERPRETADORES E COMPILADORES

Compiladores e Interpretadores so simplesmente programas sofisticados que agem sobre o cdigo-fonte do seu programa, ou seja, depois que o cdigo-fonte de um determinado programa escrito ele submetido um Compilador ou um Interpretador que far com que seja possvel sua execuo em uma determinada mquina. O Interpretador l o cdigo-fonte do seu programa uma linha por vez e executa uma instruo especfica contida naquela linha. O interpretador dever estar presente toda vez que o programa estiver sendo executado, ou seja, necessrio que um interpretador especfico da linguagem utilizada esteja instalado na mquina.

INTERPRETADORES E COMPILADORES

O Compilador l o programa inteiro e converte-o em um cdigo executvel. Uma vez o programa compilado, uma linha de cdigofonte est significativamente distante do cdigo executvel. O compilador no necessrio para executar o programa, desde que ele j esteja compilado, ou seja, neste caso no ser necessrio que se tenha um programa instalado na mquina que reconhea o cdigo em questo.

Aplicaes Escritas em C
Sistema Operacional: UNIX (Sistema Operacional executvel em micro computadores e em mainframes). Montadores: Clipper (O utilitrio de banco de dados mais usado no Brasil). Planilhas: 1,2,3 e Excel (A planilha eletrnica com maior volume de vendas mundial). Banco de Dados: dBase III, IV e Access (o gerenciador de base de dados mais utilizado no mundo). InfoStar: O Editor de Texto mais utilizado nos USA no Sistema Operacional UNIX. Utilitrios: FormTool (Editor de formulrio mais vendido no mundo). Aplicaes Grficas: Efeitos Especiais de filmes com Star Trek e Star War. Linguagens como o Power Builder e o Visual Basic, respectivamente as linguagens mais utilizadas nos EUA e no Brasil. No Brasil utilizada por empresas especializadas na elaborao de vinhetas e outros efeitos especiais.

ESTRUTURA DE UM PROGRAMA EM C

Um programa em Linguagem C formado por uma ou mais funes. Cada funo possui um nome exclusivo e corresponde um bloco de cdigo, delimitado por um par de chaves {}, contendo um conjunto de declaraes, expresses, comandos de controle e chamadas outras funes.

FUNO MAIN()

Uma funo denominada main obrigatria em todos os programas, pois o seu ponto de entrada, isto , o programa comea a ser executado no incio da funo main e termina ao final desta funo. Alm da funo main, o programa pode possuir outras funes, sendo que estas devem ser, direta ou indiretamente, chamadas pela funo main. Se um programa for constitudo de uma nica funo esta ser main ( ).

ESTRUTURA DE UM PROGRAMA C
Todas as instrues devem estar dentro das chaves que iniciam e terminam a funo e so executadas na ordem em que as escrevemos. As instrues C so sempre encerradas por um ponto-e-vrgula O ponto-e-vrgula parte da instruo e no um simples separador.

Estrutura de um programa C
#include <stdio.h> #include <stdlib.h> //Inclui informao sobre biblioteca de comandos int main(){ //Define a funo main. A funo main delimitada por chaves return 0; //A funo main do tipo int. Isso significa que ela dever retornar um nmero inteiro. } OBS.: O programa em C deve ser armazenado em um arquivo texto com a extenso .c

Primeiro Programa em C
/* Seu primeiro programa em linguagem C*/ #include <stdio.h> void main () { printf ("Bem vindo ao mundo da programao em C!!!\n"); getchar(); /* Aguarda pressionar Enter */ }

Como Executar este Programa

Para executar um programa a partir do seu cdigo fonte necessrio compil-lo, gerando cdigo binrio ou executvel. Este pode ser executado como qualquer outro programa de aplicao.

$ gcc primeiro.c -o primeiro $ primeiro


Bem vindo ao mundo da programao em C!!!

A funo printf ( ) uma das funes de E/S (entrada e sada) que podem ser usadas em C. Os parnteses indicam que estamos, realmente, procedendo com uma funo. No interior dos parnteses esto as informaes passadas pelo programa main ( ) a funo printf ( ), isto "Bem vindo ao mundo da programao em C!!!". Esta informao chamada de argumento de printf ( ).

FUNO PRINTF()

printf("expr. de controle", lista de argumentos) ;

EXEMPLO
void main ( ) { printf("Este e' o numero dois: %d",2); }

Este programa imprimir na tela do seu computador: Este e' o numero dois: 2

COMENTRIOS
Os comentrios servem principalmente para documentao do programa e so ignorados pelo compilador, portanto no iro afetar o programa executvel gerado. Os comentrios iniciam com o smbolo /* e se estendem at aparecer o smbolo */. O comentrio que inicia com //, chamado de comentrio de uma nica linha, porque termina no final da linha atual. O comentrio de uma nica linha pode iniciar no meio de uma linha e continuar at o final dessa linha.

Diretiva #include

Toda a diretiva, em C, comea com o smbolo # no incio da linha. A diretiva #include inclui o contedo de um outro programa atual, ou seja, a linha que contm a diretiva substituda pelo contedo do arquivo especificado. Esses arquivos, normalmente, possuem a extenso .h e se encontram em algum diretrio pr definido pelo compilador.

#include

Sempre qe o programa utilizar alguma funo da biblioteca-padro deve ser includo o arquivo correspondente. Apresento alguns dos principais .h da linguagem C.

stdio.h Funes de entrada e sada. string.h Funes de tratamento de string. math.h Funes matemticas ctype.h Funes de teste e tratamento de caracteres stdlib.h Funes de uso genrico

CDIGOS ESPECIAIS
CDIGOS ESPECIAIS SIGNIFICADO \n NOVA LINHA \t TAB \b RETROCESSO \" ASPAS \\ BARRA \f SALTA PGINA DE FORMULRIO \0 NULO

CDIGOS ESPECIAIS
CDlGO printf( ) %c %d %e %f %g %o %s %u %x FORMATO CARACTERE SIMPLES DECIMAL NOTAO CIENTFICA PONTO FLUTUANTE %e OU %f (O MAIS CURTO) OCTAL CADEIA DE CARACTERES DECIMAL SEM SINAL HEXADECIMAL

CONSTANTES E VARIVEIS
Uma constante tem valor fixo e inaltervel
Nos exemplos anteriores, mostramos o uso de constantes numricas, cadeias de caracteres e caracteres em printf( ). Em C uma constante caractere escrita entre aspas simples, uma constante cadeia de caracteres entre aspas duplas e constantes numricas como o nmero propriamente dito. Exemplos de constantes: 'c' "primeiro programa" 8

CONSTANTES E VARIVEIS
As varveis so o aspecto fundamental de qualquer linguagem de computador. Uma varivel em C um espao de memria reservado para armazenar um certo tipo de dado e tendo um nome para reverenciar o seu contedo. O espao de memria de uma varivel pode ser compartilhado por diferentes valores segundo certas circunstncias. Em outras palavras, uma varivel um espao de memria que pode conter, a cada tempo, valores diferentes.

EXEMPLO
void main( ) { int num; num=2; printf("Este e' o numero dois: %d",num); } A execuo deste programa exatamente a mesma que a da verso anterior porm ele cria a varivel num, atribui a ela o valor 2 e imprimem o valor contido nela.

DECLARAO DE VARIVEIS
Uma declarao de varivel uma instruo para reservar uma quantidade de memria apropriada para armazenar o tipo especificado, neste caso int, e indicar que o seu contedo ser reverenciado pelo nome dado, neste caso: num. --> int num; Uma declarao de varivel consiste no nome de um tipo, seguido do nome da varivel. Em C todas as variveis devem ser declaradas. Se voc tiver mais de uma varivel do mesmo tipo, poder declaralas de uma nica vez, separando seus nomes por vrgulas. int aviao, foguete, helicoptero;

POR QUE DECLARAR VARIVEIS

Reunir variveis em um mesmo lugar, dando a elas nomes significativos, facilita ao leitor entender o que o programa faz. Uma seo de declaraes de variveis encoraja o planejamento do programa antes de comear a escrev-lo. Isto , planejar as informaes que devem ser dadas ao programa e quais as que o programa dever nos fornecer. Declarar variveis ajuda a prevenir erros. Por exemplo, se escrevermos 0 (zero) em vez de O: int BOBO; BOBO = 5; o compilador acusar o erro.

POR QUE DECLARAR VARIVEIS


Se os motivos anteriores no convenceram voc, este dever convenc-lo:

C NO TRABALHA SE VOC NO DECLARAR SUAS VARIVEIS.

TIPOS E DADOS
Tipo Char Int Tamanho (em bits) 8 Intervalo -128 a 127

Float double void

16 32 64 0

-32768 a 32767 3,4E-38 a 3,4E+38 1,7E-308 a 1,7E+308 sem val or

TIPOS E DADOS ESPECIAIS


Tipo unsigned char signed char unsigned int signed int short int unsigned short int signed short int long int signed long int unsigned long int long double Tamanho (em bits) 8 8 16 16 16 16 16 32 32 32 80 Intervalo 0 a 255 -128 a 127 0 a 65535 -32768 a 32767 -32768 a 32767 0 a 65535 -32768 a 32767 -2147483648 a 2147483647 -2147483648 a 2147483647 0 a 4294967295 3,4E-4932 a 1,1E+4932

EXEMPLO
main( ) { int evento; char corrida; float tempo; evento=5; corrida='C'; tempo=27.25; printf("0 tempo vitorioso na eliminatoria %c",corrida); printf("\nda competicao %d foi %.2f.",evento,tempo); } A sada ser: O tempo vitorioso na eliminatoria C da competicao 5 foi 27.25. Este programa usa os 3 tipos de variveis mais comuns: int, char e float.

INCIALIZANDO VARIVEIS
#include <stdio.h> main ( ) { int evento=5; char corrida='C' ; float tempo=27.25; printf("O tempo vitorioso na eliminatoria %c",corrida); printf("\nda competicao %d foi %f.",evento,tempo); } A execuo do programa ser exatamente a mesma do da verso anterior.

NOMES DE VARIVEIS
A escolha de nomes significativos para suas variveis pode ajud-lo a entender o que o programa faz e prevenir erros. Voc pode usar quantos caracteres quiser para um nome de varivel com o primeiro sendo obrigatoriamente uma letra ou o caractere de sublinhar e os demais podendo ser letras, nmeros ou caracteres de sublinhar. Uma varivel no pode ter o mesmo nome de uma palavra-chave de C.

PALAVRAS RESERVADAS
auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

EXEMPLOS
main( ) { int reajuste = 10; printf("O reajuste foi de %d%%. \n",reajuste); } A sada ser: O reajuste foi de 10%.

EXEMPLO
main( ) { printf("%4.2f\n",3456.78); printf("%3.2f\n",3456.78); printf("%3.1f\n",3456.78); printf("%10.3f\n",3456.78); } A sada ser:

3456.78 3456.78 3456.8 3456.780

EXEMPLO
main( ) { printf("Os alunos sao %2d.\n",350); printf("Os alunos sao %4d.\n",350); printf("Os alunos sao %6d.\n",350); } A sada ser: Os alunos sao 350. Os alunos sao 350. Os alunos sao 350.

EXEMPLO
main( ) { printf("%.2f %.2f %.2f\n",8.0,15.3,584.13); printf("%.2f %.2f %.2f\n",834.0,1500.55,4890.21); } Sada: 8.00 15.30 584.13 834.00 1500.55 4890.21

REVISO

Todo programa C deve ter uma funo chamada main( ), ela a primeira funo a ser executada. Toda instruo C terminada por um ponto-e-vrgula. A funo printf( ) usada para enviar informaes tela. Os seus argumentos consistem em uma expresso de controle contendo caracteres e cdigos de formatao iniciados pelo caractere %, e tantos argumentos quantos forem os cdigos de formatao colocados na expresso de controle. Os caracteres que no podem ser obtidos diretamente do teclado so escritos com a combinao do caractere \ seguido por outro caractere, segundo a tabela de cdigos especiais.

REVISO
Um programa C deve declarar todas as suas variveis antes de us-las. Os 5 tipos bsicos de variveis C so: char, lnt, float, double e void. Em C, letras maisculas e minsculas so tratadas diferentemente. Um caractere grfico representado em C pela forma \xdd onde dd o cdigo ASCII hexadecimal do caractere. O programa termina sua execuo quando encontrada a chave de fechamento da funo main( ).

PARTE II
A funo scanf( ) O operador de endereo (&) getche( ) e getch ( ) Getchar( ) e putchar( ) Os operadores aritmticos Os operadores de incremento e decremento Os operadores aritmticos de atribuio Os operadores relacionais Comentrios

FUNO - scanf( )
A funo scanf( ) outra das funes de E/S implementadas em todos os compiladores C. Ela o complemento de printf( ) e nos permite ler dados formatados da entrada padro (teclado). Sua sintaxe similar de printf( ), isto , uma expresso de controle seguida por uma lista de argumentos separados por vrgulas. A principal diferena est na lista de argumentos. scanf( ) devem ser endereos de variveis. Os argumentos de

FUNO - scanf( )
Sintaxe: scanf("expresso de controle", lista de argumentos) A expresso de controle pode conter cdigos de formatao, precedidos por um sinal % ou ainda o caractere * (asterisco) colocado aps o % que avisa funo que deve ser lido um valor do tipo indicado pela especificao, mas no deve ser atribudo a nenhuma varivel (no deve ter parmetros na lista de argumentos para estas especificaes). A lista de argumentos deve consistir nos endereos das variveis. C oferece um operador para tipos bsicos chamado operador de endereo e referenciado pelo smbolo & que retorna o endereo do operando.

OPERADOR DE ENDEREO (&)


main( ) { int num; num=2; printf("Valor=%d, endereco=%u", num,&num); A sada deste programa varia conforme a mquina e a memria do equipamento, um exemplo : Valor= 2, endereo = 1370 Um endereo de memria visto como um nmero inteiro sem sinal, por isso usamos %u.

CDIGO DE FORMATAO - scanf( )


CDIGO %c %d %e %f %o %s %x %u %l FUNO Leia um nico caractere Leia um inteiro decimal Leia um nmero em notao cientfica Leia um nmero em ponto flutuante Leia um inteiro octal Leia uma srie de caracteres Leia um nmero hexadecimal Leia um decimal sem sinal Leia um inteiro longo

EXEMPLO
main( ) { float anos,dias; printf("Digite sua idade em anos: ") ; scanf("% f",&anos); dias = anos*365; printf("Sua idade em dias e' % .0f.\n",dias); }

EXEMPLO
main ( ) { char a; printf("Digite um caractere e veja-o em decimal,"); printf(" octal e hexadecimal.\n"); scanf ("%c",&a) ; printf("\n%c=%d dec.,%o oct. e %x hex.\n",a,a,a,a); }

FUNES getche( )
Em algumas situaes, a funo scanf( ) no se adapta perfeitamente pois voc precisa pressionar [enter] depois da sua entrada para que scanf( ) termine a leitura. A biblioteca de C oferece funes que lem um caractere no instante em que datilografado, sem esperar [enter]. A funo getche( ) l o caractere do teclado e permite que seja impresso na tela. Esta funo no aceita argumentos e devolve o caractere lido para a funo que a chamou.

EXEMPLO
main( ) { Eis a execuo: char ch; Digite algum caractere: a printf("Digite algum caractere:"); A tecla que voce pressionou e' a. ch=getche( ); printf("\n A tecla que voc pressionou e' %c.",ch); }

FUNES getch( )

A funo getch( ) l o caractere do teclado e no permite que seja impresso na tela. Como getche( ), esta funo no aceita argumentos e devolve o caractere lido para a funo que a chamou.

EXEMPLO
main( ) { char ch; printf("Digite algum caractere: ") ; ch=getch( ); printf("\n A tecla que voce pressionou e' %c",ch); printf(" e a sua sucessora ASCII e' %c.",ch+1); } Eis a execuo: Digite algum caractere: A tecla que voce pressionou e' a e a sua sucessora ASCII e' b.

FUNES getchar( )
A funo getchar( ) est definida no arquivo stdio.h, que acompanha seu compilador. Obtm o prximo caractere da entrada cada vez que chamada, s terminando a leitura quando pressionada a tecla [enter], e retorna o caractere como seu valor. A funo getchar( ) no aceita argumentos.

FUNES putchar( )
A funo putchar( ) o complemento de getchar( ) e tambm est definida no arquivo stdioh. A funo putchar( ) aceita um argumento cujo valor ser impresso. Os comandos a seguir mostram como ler um caractere da entrada, atribuir seu valor varivel c e imprimir o contedo da varivel c na sada padro.

EXEMPLO
#include <stdio.h> main( ) { char c; c=getchar( ) ; putchar ( c ) ; }
Eis a execuo: Treino [enter] T

OPERADORES ARITMTICOS
C uma linguagem rica em operadores, em torno de 40. Alguns so mais usados que outros, como o caso dos operadores aritmticos que executam operaes aritmticas.

C oferece 6 operadores aritmticos binrios (operam sobre dois operandos) e um operador aritmtico unrio (opera sobre um operando). So eles:

OPERADORES ARITMTICOS
Binrios = + * / % Unrio Menos unrio Atribuio Soma Subtrao Multiplicao Diviso Mdulo (devolve o resto da diviso inteira)

EXEMPLO
main( ){ int ftemp,ctemp; printf("Digite temperatura em graus Fahrenheit: ") ; scanf("%d",&ftemp); ctemp=(ftemp-32) * 5/9; printf("Temperatura em graus Celsius e' %d",ctemp); } Eis um exemplo: Digite temperatura em graus Fahrenheit: 32 Temperatura em graus Celsius e' 0.

EXEMPLO
main( ){ int x,r ; printf("Digite um numero de ate 4 algarismos \n") ; scanf("%d",&x) ; r = 19998 + x ; printf("O resultado da nossa conta sera: %d\n, r) ; printf("Digite o segundo numero ( 4 algarismos)\n") ; scanf("%d",&x) ; printf("O meu numero e': %d\n",9999 x) ; printf("Digite o quarto numero (4 algarismos)\n") ; scanf("%d",&x) ; printf("O meu numero e': %d\n", 9999 x) ; }

EXEMPLO
Eis um exemplo de sua execuo : Digite um numero de ate 4 algarismos 198 O resultado da nossa conta sera: 20196 Digite o segundo numero (4 algarismos) 1234 O meu numero e: 8765 Digite o quarto numero (4 algarismos) 2233 O meu numero e': 7766

EXEMPLO
main( ) { int ftemp; printf("Digite temperatura em graus Fahrenheit: ") ; scanf("%d",&ftemp); printf("Temper. em graus Celsius e' %d",(ftemp-32)* 5/9); }

OPERADORES DE INCREMENTO (+ +) E DECREMENTO (- -)


++ -

incrementa de 1 seu operando decrementa de 1 seu operando

O operador de incremento (++) incrementa de um seu operando. Este operador trabalha de dois modos. O primeiro modo chamado prefixado e o operador aparece antes do nome da varivel. O segundo o modo ps-fixado em que o operador aparece seguindo o nome da varivel. Em ambos os casos, a varivel incrementada. Porm quando + +n usado numa instruo, n incrementada antes de seu valor ser usado, e quando n+ + estiver numa instruo, n incrementada depois de seu valor ser usado.

OPERADORES DE INCREMENTO (+ +) E DECREMENTO (- -)


Vamos analisar as duas expresses seguintes: K = 3 * n ++ ; PRIMEIRO n multiplicado por 3 ; DEPOIS o resultado atribudo a K e FINALMENTE n incrementada de 1. K=3* ++n PRIMEIRO n incrementada de 1 ; DEPOIS n multiplicado por 3 e FINALMENTE o resultado atribudo a K.

EXEMPLO
main( ) { int num=0; printf("%d e' um belo numero\n",num); printf("%d e' um belo numero\n",num++); printf("%d e' um belo numero\n",num); } a sada ser: 0 e' um belo numero 0 e' um belo numero 1 e' um belo numero

EXEMPLO
main( ) { int num=0; printf("%d e' um belo numero\n",num); printf("%d e' um belo numero\n",++num); printf("%d e' um belo numero\n",num); } a sada ser: 0 e' um belo numero 1 e' um belo numero 1 e' um belo numero

EXEMPLO
main( ) { int num=0; printf("%d e' um belo numero\n",num); printf("%d e' um belo numero\n",num- -); printf("%d e' um belo numero\n",num); } a sada ser: 0 e' um belo numero 0 e' um belo numero -1 e' um belo numero

EXEMPLO
main( ) { int num=0; printf("%d e' um belo numero\n",num); printf("%d e' um belo numero\n",--num); printf("%d e' um belo numero\n",num); } a sada ser: 0 e' um belo numero -1 e' um belo numero -1 e' um belo numero

EXEMPLOS
main( ) { int i=3; int n; n = i*(i+1) + (++i); printf("\n n = %d",n); } 4*(4+1)+(4) n = 24 main( ) { int i=3; int n; n=i* (i+1) + (i++); printf("\n n = %d",n); } 3*(3+1) + 3 n = 15

EXEMPLO
main( ) { int i=3; int n; printf("\n n = %d", n=i*(i+1) + (++i)); } 3*(3+1) + (4) n = 16 main( ) { int i=3; int n; printf("\n n = %d", n=i*(i+1)+(i++)); } 3*(3+1) + 3 n = 15

EXEMPLO
main( ) { int i=3; printf("\n %d %d %d ",i=i+1, i=i+1, i=i+1); } 654

OPERADORES ARITMTICOS DE ATRIBUIO


+ = , - = , * = , / = , %= Cada um destes operadores usado com um nome de varivel sua esquerda e uma expresso sua direita. A operao consiste em atribuir um novo valor varivel que depender do operador e da expresso direita. x op = exp ; equivale a x = (x) op (exp) ;

EXEMPLO
i + = 2; x* = y+1; t / = 2.5; p % = 5; d - = 3; equivale a equivale a equivale a equivale a equivale a i = i + 2; x = x * (y+ 1); t = t / 2.5; p = p % 5; d = d - 3;

EXEMPLO
main( ) { int total=0; int cont=10; printf("Total=%d\n",total); total + = cont; printf("Total=%d\n",total); total + = cont; printf("Total=%d\n",total); }

A sada ser: Total=0 Total= 10 Total=20

OPERADORES RELACIONAIS
> >= < <= == != maior maior ou igual menor menor ou igual igualdade diferente

EXEMPLO
main( ) { int verdad,falso; verdad = (15 < 20); falso = (15==20); printf("Verdadeiro=%d,falso=%d\n",verdad,falso); } A sada ser: Verdadeiro= 1, falso= 0

EXEMPLO
main( ) { int veloc; veloc = 75; printf("\nA velocidade e' igual a 55?%d",veloc= =55); veloc = 55; printf("\nA velocidade e' igual a 55?%d",veloc= =55); } Sada: A velocidade e' igual a 55? 0 A velocidade e' igual a 55? 1

PRECEDNCIA
Os operadores aritmticos tm maior precedncia que a dos relacionais. Isto significa que sero avaliados antes.

main( ) { printf ("A resposta e' %d",4+1<4); } a sada ser: A resposta e' 0

main( ) { printf ("A resposta e' %d",1<2+4); } A sada ser: A resposta e' 1

EXEMPLO
/* programa para calcular a sua idade em dias */ main( ) { float anos,dias; /*declara variaveis*/ printf("Digite sua idade em anos: ") ; scanf("%f",&anos); /*le idade em anos*/ dias = anos*365; /*calcula idade em dias*/ /* impresso do resultado */ printf("Sua idade em dias e' %f.\n",dias); }

REVISO
A funo scanf( ) usada para ler informaes do teclado. Os seus argumentos consistem em uma expresso de controle, contendo cdigos de formatao iniciados pelo caractere %, e tantos argumentos quantos forem os cdigos de formatao na expresso de controle. Os argumentos de scanf( ) devem ser endereos, isto , o nome da varivel precedido do operador de endereo &. O operador unrio de endereo retorna o endereo da varivel operando. As funes getche(), getch( ) e getehar( ) retornam o caractere lido do teclado. A funo putchar( ) imprime um caractere na tela.

REVISO
Os operadores C so numerosos e podem trazer alguma confuso. exemplo, o smbolo % executa coisas diferentes em contextos diferentes. O operador de atribuio tem uma interpretao diferente da matemtica. Representa a atribuio da expresso sua direita varivel sua esquerda. Em C no existe o operador aritmtico + unrio. Os operadores de incremento + + e decremento - - podem ser usados prefixados ou ps-fi-xados e incrementam ou decrementam a varivel operando de 1. A instruo i+ +; tem o valor de i, enquanto que a expresso + + i ; tem o valor de i + 1. Por

REVISO
Os operadores de incremento e decremento tm precedncia maior que a dos aritmticos. Os operadores aritmticos de atribuio alteram a varivel esquerda pela expresso direita, usando o operador indicado. Os operadores relacionais comparam a expresso esquerda com a expresso direita. Se a expresso toda for verdadeira, ela assumir o valor 1, caso contrrio, o valor 0. Zero em C avaliado como falso e qualquer outra coisa avaliada como verdadeiro.

REVISO
Os operadores aritmticos tem precedncia maior que a dos relacionais.

Comentrios so escritos entre /* e */ auxiliam o leitor a usar e entender o programa.

PARTE III
O LAO for O Lao while O Lao do-while Os Comandos break e continue O Comando goto O comando if-else Operadores lgicos || && ! O comando else-if O comando switch O operador condicional ternrio ?:

O comando if

Lao FOR
O lao for engloba 3 expresses numa nica, e til principalmente quando queremos repetir algo um nmero fixo de vezes. for (inicializao ; teste ; incremento){ } Instruo;

Lao FOR
Os parnteses seguindo a palavra-chave expresses separadas por pontos-e-vrgulas. for contm trs A expresso como um todo chamada de "expresso do lao" e dividida em: "expresso de inicializao", "expresso de teste" e "expresso de incremento". As trs expresses podem ser compostas por quaisquer instrues vlidas em C. Em sua forma mais simples, a inicializao uma instruo de atribuio (conta= 0) e sempre executada uma nica vez antes do lao ser iniciado.

Lao FOR
O teste uma instruo de condio que controla o lao (conta < 10). Esta expresso avaliada como verdadeira ou falsa toda vez que o lao for iniciado ou reiniciado. Se verdadeira (menor que zero), o corpo do lao executado. Quando a expresso tornar-se falsa (igual ou maior que 10), o lao terminado e o controle passa para a instruo seguinte ao lao. A expresso de incremento define a maneira como a varivel de controle do lao ser alterada cada vez que o lao repetido (conta ++). Esta instruo executada, toda vez, imediatamente aps a execuo do corpo do lao.

Lao For
PONTO-E-VRGULA INICIALIZAO TESTE INCREMENTO

for (conta=0 ; conta < 10 ; conta ++) printf("conta=%d\n",conta); NAO COLOQUE PONTO-E-VRGULA AQUI

CORPO DO LAO

EXEMPLO
/* imprime numeros de 0 a 9 */ main( ) { int conta; for (conta=0 ; conta<10 ; conta++) printf("conta=%d\n",conta); } A sada ser: conta = 0 conta = 1 conta = 2 conta = 3 conta = 4 conta = 5 conta = 6 conta = 7 conta = 8 conta = 9

EXEMPLO
/* imprime nmeros de 9 a 0 */ main( ) { int conta; for (conta=9 ; conta>=0 ; conta- -) printf("conta=%d\n",conta); } A sada ser: conta = 9 conta = 8 conta = 7 conta = 6 conta = 5 conta = 4 conta = 3 conta = 2 conta = 1 conta = 0

EXEMPLO
/* imprime nmeros de 9 a 0 de 3 em 3*/ main( ) { int conta; for (conta=0 ; conta<10 ; conta+=3) printf("conta=%d\n",conta); } A sada ser: conta = 0 conta = 3 conta = 6 conta = 9

EXEMPLO
/* imprime os numeros de 0 a 98 em incremento de 2 */ main( ) { int x,y; for ( x = 0 , y = 0; x+y < 100 ; x = x+1 , y = y+1) printf("%d ",x+y); }

EXEMPLO
/* imprime os numeros de 0 a 9 e totais */ main( ) { int conta, total; for (conta=0, total=0;conta<10;conta++) { total += conta; printf("conta=%d, total=%d\n",conta,total); } } A sada ser: conta = 0, total = 0 conta = 1, total = 1 conta = 2, total = 3 conta = 3, total = 6 conta = 4, total = 10 conta = 5, total = 15 conta = 6, total = 21 conta = 7, total = 28 conta = 8, total = 36 conta = 9, total = 45

Lao For
Qualquer uma das trs partes de um lao for pode ser omitida, embora os pontos-e-vrgulas devam permanecer. Se a expresso de inicializao ou a de incremento forem omitidas, elas sero simplesmente desconsideradas. Se a condio de teste no est presente considerada permanentemente verdadeira.

Voc deve usar chaves se o corpo do lao contiver mais de uma instruo.

O LAO while
A segunda estrutura de lao vlida em C o lao while

While (expresso de teste) instruo;

LAO while
Se a expresso de teste for verdadeira (diferente de zero), o corpo (do lao while executado uma vez e a expresso de teste avaliada novamente. Este ciclo de teste e execuo repetido at que a expresso de teste se torne falsa (igual a zero), ento o lao termina e o controle do programa passa para a linha seguinte ao lao. O corpo de um while pode ter uma nica instruo terminada por ponto-evrgula, vrias instrues entre chaves ou ainda nenhuma instruo mantendo o ponto-e-vrgula. Em geral um lao while pode substituir um lao for da seguinte forma dentro de um programa:

LAO while
inicializao; while (teste) { . . incremento; . . }

Exemplo
A sada ser:
/*imprime os numeros de 0 a 9 e totais */ main( ) { int conta=0; /* inicializa a var. conta */ int total=0; /* inicializa a var. total */ while (conta<10) { /* executa laco ate' conta ser 10 */ total+=conta; /* mesmo que total=total+conta */ printf("conta=%d, total=%d\n",conta++,total); } }

conta = 0, total = 0 conta = 1, total = 1 conta = 2, total = 3 conta = 3, total = 6 conta = 4, total = 10 conta = 5, total = 15 conta = 6, total = 21 conta = 7, total = 28 conta = 8, total = 36 conta = 9, total = 45

Lao do while
O ltimo lao em C o lao do-while que cria um ciclo repetido at que a expresso de teste seja falsa (zero). Este lao bastante similar ao lao while. A diferena entre os dois laos que no lao do-while o teste ele condio avaliado depois do lao ser executado. Assim, o lao do-while sempre executado pelo menos uma vez.

Lao do while
do { instruo; } while (expressode teste);

Comando Break
O comando break pode ser usado no corpo de qualquer estrutura de lao C. Causa a sada imediata do lao e o controle passa para o prximo estgio do programa. Se o comando break estiver em estruturas de laos aninhados, afetar somente o lao que o contm e os laos internos a este.

main( ) { int num; long resposta; while (1) { printf("\n Digite o numero: "); scanf("%d",&num); resposta = 1; while (num > 1){ resposta *= num--; } printf("O fatorial e': %1d\n", resposta); break; } }

ESTRUTURA DE DECISO
C oferece 4 principais estruturas de deciso :

if , if-else , switch e operador condicional

Comando if-else
if (condicao) comando if (condicao){ comando1 comando2 comando3 } if (condicao) comando1 else comando3 if (condicao){ comando1 comando2 } else{ comando3 comando4 }

/* calculadora com 4 operacoes*/ main( ){ float num1,num2; char op; while(1){ printf("Digite um numero, operador, numero\n") scanf("%f %c %f",&numl,&op,&num2); if (op=='+') printf(" = %f",num1+num2); else if (op=='-') printf(" = %f",num1-num2); else if (op=='*') printf(" = %f",num1*num2); else if (op=='/') printf(" = %f",num1/num2); printf("\n\n"); } }

OPERADORES LGICOS
C OFERECE 3 OPERADORES LGICOS: && || ! lgico E lgico OU lgico de negao

Destes operadores ( ! ) unrio e && e | | so binrios. Os operadores lgicos so geralmente aplicados a expresses relacionais.

OPERADORES LGICOS
SE EXP1 E EXP2 SO DUAS EXPRESSES SIMPLES, ENTO: exp1 && exp2 expl for || exp2 verdadeira se as duas exp1 e exp2 forem verdadeiras. verdadeira se uma das duas exp1 ou exp2 verdadeira ou as duas exp1 e exp2 forem verdadeiras. ! exp1 verdadeira se expl for falsa e vice-versa.

PRECEDNCIA
O operador ! o de maior precedncia, a mesma que a do operador menos unrio. A tabela seguinte mostra as precedncias dos operadores: Operadores ! - ++ - * / % + < > <= >= = = != && | | = += -= *= /= %= Tipos unrios; no lgico e menos aritmtico aritmticos aritmticos relacionais relacionais lgicos aritmticos de atribuio.

SELEO DE MTIPLA ESCOLHA


O comando switch similar ao else-if mas tem maior flexibilidade e formato limpo e claro. Forma geral: switch ( expresso constante) { case constante1 : instrucoes; break; case constante2 : instrucoes; break; default : /* opcional */ instrucoes; /* opcional */ }

/* calculadora com 4 operacoes */ main( ) { float numl,num2; char op; while (1) { /* sempre verdadeiro */ printf("Digite um numero, operador, numero\n"); scanf("%f %c %f",&num1,&op,&num2); switch (op) { case ' +' : printf(" = %f",num1+num2); break; case ' - ' : printf(" = %f",num1-num2); break; case '*' : printf(" = %f",num1*num2); break; case '/': printf(" = %f",num1/num2); break; default: printf("Operador desconhecido"); } printf("\n\n"); } }

REVISO

A possibilidade de repetir aes uma das razes pelas quais usamos o computador. Os laos for, while e do-while so as estruturas oferecidas por C para cumprirem esta tarefa. O operador vrgula permite que sejam inicializadas ou incrementadas mais de uma expresso no lao for. Laos podem ser colocados no corpo de outros laos vontade em C. O corpo de um lao ou while pode nunca ser executado. Entretanto o corpo de um lao do-while sempre executado pelo menos uma vez. Num lao while a expresso de teste avaliada antes do corpo ser executado. Num lao do-while a expresso de teste avaliada depois do corpo do lao ser executado. Um lao do-while sempre encerrado por ponto-e-vrgula.

REVISO
O comando break causa a salda imediata do lao que o contm. As principais estruturas de deciso C so if, if-else, switch e o operador condicional. O comando if oferece um meio de escolha entre executar ou no um bloco de instrues. O comando if-else oferece um meio de executar um ou outro bloco de instrues. Expresses lgicas so avaliadas da esquerda para a direita e a avaliao termina logo que conhecida a veracidade ou falsidade da expresso toda.

O comando switch oferece um meio de escolher uma entre muitas opes. A expresso do comando switch deve ter um valor inteiro ou char constante. As expresses de cada caso devem ter um valor inteiro ou char constante e devem ser todas diferentes.

REVISO
Num comando switch o controle do programa pula para o caso em que a expresso for igual expresso do switch ou, se no houver nenhum caso igual, para o default. Um caso default opcional. O comando break provoca uma salda imediata da construo switch.