Home
Exemplo
Contents
1. define uma constante de convers o de metros para cent metros Imetro 100 cm fdefine CONVERTE 100 float h metros h cm main recebe os dados do usu rio printf Qual a sua altura em metros scanf f amp h metros faz a convers o h cm CONVERTE h metros exibe o resultado printf MnA sua altura em cent metros 2f cm return 0 Exemplo 3 3 Const c Programa que mostra como declarar constantes usando sufixos e exibe o tamanho em bytes destas constantes tinclude lt stdio h gt fdefine INT 35 define LONG 35L fdefine FLOAT 123 0F fdefine DOUBLE 123 0 define OCTAL 012 fdefine HEXA 0x80 fdefine LONGHEXA 0X3A7C2FB5L void main const char primeira V do meio u const char ultima s const char primeira_metade amos ver alg const char segunda metade mas constante prin c s c s s Vn primeira primeira metade do meio segunda metade ultima prin O tamanho em bytes da constante INT d e dWMn INT sizeof INT prin O tamanho em bytes da constante LONG 1d e dMn LONG sizeof LONG prin O tamanho em bytes da constante FLOAT f e dWMn FLOAT sizeof FLOAT prin O tamanho em bytes da constante DOUBLE f e dWMn DOUBLE sizeof DOUBLE prin O tamanho em bytes da constante OCTAL 0 e dMn OCTAL sizeof OCTAL prin O tamanho em bytes da constante HEXA x e dWMn HEXA
2. include lt stdio h gt int main printf Neste computador printf Neste computador ma vari vel char tem d byte s sizeof char ma vari vel int tem d bytes sizeof int printf computador uma vari vel short tem d byte s sizeof short printf computador uma vari vel long tem d bytes sizeof long printf Neste computador uma vari vel unsigned char tem d byte s N sizeof unsigned char printf AnNeste computador uma vari vel unsigned int tem d bytes N sizeof unsigned int printf inNeste computador uma vari vel unsigned long tem d bytes N sizeof unsigned long printf AinNeste computador uma vari vel float tem d bytes sizeof float printf inNeste computador uma vari vel double tem d bytes N sizeof double return 0 u u u u 27 3 2 Contantes Representam localizac es na mem ria de dados que n o podem ser alterados durante a execug o do programa Tipos de constantes qualquer um dos cinco tipos de dados b sicos e Por default o compilador encaixa uma constante num rica no menor tipo de dado compat vel que pode cont la Exemplo 20 constante do tipo int 100000 constante do tipo long e Excec o regra do menor tipo constantes em ponto flutuante s o assumidas sempre como double Exemplo 20 123E2 gt constantes do tipo double 12E 2 e Pode se especificar o tipo com o uso de sufixos Tabela 3 2 Sufixos par
3. 10 aprovado sem exame 6 lt m dia lt 7 aprovado se entregar um trabalho 3 lt m dia lt 6 exame 0 X m dia lt 3 reprovado sem direito a exame 3 Reescreva o programa do exemplo 5 3 para que ao inv s de um quadrado seja desenhado um tri ngulo 4 Use o loop do while no programa do exemplo 5 1 para evitar que seja fornecida uma nota menor que zero e maior que dez 5 Use a instru o switch para implementar um programa de voto eletr nico Considere uma elei o com 5 candidatos A B C D e E 6 Reescreva o programa do exemplo 5 8 utilizando um loop for 7 Reescreva o programa 5 3 usando while ao inv s de for 63 6 Func es Realizam tarefas espec ficas Recebem informa es atrav s de argumentos S o designadas por um nome e podem retornar um valor fun o que as chamou necess rio que o programa contenha o prot tipo e a defini o da fun o Vantagens em se utilizar func es Possibilitam a realiza o de uma mesma tarefa a partir de v rios pontos do programa sem a necessidade de se repetir c digo Permitem que se isole o c digo e as vari veis do restante do programa Tornam mais f cil a depurac o do programa 6 1 O prot tipo de uma func o Fornece ao compilador uma descri o da fun o que ser definida posteriormente Deve ser colocado antes da primeira chamada fun o de prefer ncia antes da func o main Deve possuir o t
4. definido colocando se uma string dos caracteres a serem procurados entre colchetes Tamb m pode se especificar uma faixa de caracteres usando se um h fen entre o caracter inicial e o final Exemplos char str1 80 str2 80 scanf sd S XYZ s amp i strl str2 Ap s ler um inteiro que atribuido a i ir procurar por uma seq ncia contendo as letras X Y e ou Z atribuindo a a strl e quando aparecer um caracter que n o seja nenhum destes tr s passa a atribuir o restante a str2 scanf sd S A Z s amp i strl str2 Para strl procurar por uma seq ncia contendo letras de A a Z mas n o de a a z pois letras min sculas e mai sculas s o discriminadas 20 Exemplo 2 3 Scanf c Mostra o uso da funcao scanf com scansets descartes de caracteres e especificadores de largura m xima tinclude lt stdio h gt tinclude lt stdlib h gt finclude lt conio h gt ddefine SCANSET T define DESCARTE CARACTERES 2 define ESPECIFICADOR LARGURA 3 void menu int opcao void main Q int opcao for do puts AnEscolha uma das opcoes do menu Mn puts 1 Ilustrando scanset Mn puts 2 Ilustrando o descarte de virgulas e outros caracteres In puts 3 Ilustrando o uso de especificador de largura In puts 4 Sair In scanf Sd amp opcao while opcao lt 1 opcao gt 4 if opcao 4 exit 0 menu opcao void menu int
5. elemento4 pvet pvet 1 pvet 9 vet 139 Exemplo 11 3 PontVet c Mostra como acessar os elementos de um vetor usando ponteiros finclude lt stdio h gt int vet 8 int pvet int cont void main printf inEntre com oito n meros inteiros In for cont 0 cont lt 8 cont scanf in d vet cont printf AnUsando incremento de ponteiros para imprimir vet in pvet vet for cont 0 cont lt 8 cont printf in vet d d cont pvet cont Como strings nada mais s o do que vetores de caracteres podem se declar las como ponteiros para caracter Exemplo char cadeial 9 Bom dia char cadeial Bom dia As duas declarac es s o equivalentes Exemplo 11 4 PontStr c Ilustra o uso de cadeias de caracteres strings como ponteiros finclude lt stdio h gt void main int i char cadeial 100 Ha homens que com falsa superioridade inzombam das tarefas humildesin char cadeia2 como se nao fossem imprescindiveis ao exito WMndos trabalhos de maior envergadura An puts Reflexoes sobre a importancia das coisas pequenas Mn for 1 0 cadeial i s N0 i printf Sc cadeial i for cadeia N0 cadeia2 4 printf Sc cadeia2 Os ponteiros para uma estrutura funcionam como os ponteiros para qualquer outro tipo de dados Declara o de ponteiros para estruturas struct Nome Estr
6. Mostra na tela o resultado printf MNnA m dia 2f n m O SC DIE E rta mediis spruit y TILL III III IEL III float result result float xty 2 return result 1 6 Coment rios em C O h bito de se introduzir alguns coment rios em um programa bastante salutar Estes devem ser bem colocados de tal forma a facilitar a manuten o do programa e Esclarecendo passagens que n o sejam muito bvias e Elucidando o papel de uma vari vel e Contando resumidamente como funciona uma fun o entre outras Coment rios em C devem iniciar com um e terminar com podendo come ar em uma linha e terminar em outra Ou usa se no in cio da linha Exemplos Isto um comentario Isto outro coment rio Lista de Exerc cios N 1 1 Retire a linha amp include lt stdio h gt do programa MEDIA C e tente criar um execut vel Qual a mensagem de erro De que tipo ela O programa executa Anote a 2 Retire a letra a da linha int a b do programa MEDIA C e tente criar um execut vel Qual a mensagem de erro Anote a 3 Retire a linha float media int x int y do programa MEDIA C e tente criar um execut vel Qual a mensagem de erro Anote a 4 Retire o da linha m media a b do programa MEDIA C e tente criar um execut vel Qual a mensagem de erro Anote a 5 Troque m por M na linha m media a b no programa MEDIA C e tente criar um execut vel Qual a mensagem de
7. es de vari veis globais e Defini es de macros Os arquivos cabe alho definidos pelo programador t m por conven o a extens o h da mesma forma que os arquivos cabe alho que acompanham a biblioteca C Devem ser inclu dos no in cio do arquivo com o c digo fonte Sintaxe finclude arquivo h A procura pelo aqruivo come a normalmente onde o programa fonte se encontra ou finclude lt arquivo h gt A procura pelo arquivo segue uma regra definida pela implementac o 711 Exemplo 6 11 funcao4 c Ilustra o uso de estruturas vetores de estruturas e inclusao de arquivos h include funcao4 h void main void int opcao int numero de_amigos clrscr i PUESTA DARRO AA AR SA EUR ORAE DN oi z printf Seu nome e s n inf_ sobre voce nome printf Seu telefon s An inf sobre voce fone printf A data em que nasceu foi d d d Nn inf sobre voce data nascimento dia inf sobre voce data nascimento mes inf sobre voce data nascimento ano puts CUSROROEUA a E RR AER ERRATA EE RARER ERRE KORR OK RARE RICA z getch for do o celrescr OS puts AnEscolha uma das opcoes An puts 1 Sair do programa puts 2 Corrigir informacoes sobre voce puts 3 Montar uma pequena lista com informacoes sobre seus amigos puts 4 Ver as informacoes contidas na sua lista printf insSua opcao scanf SZd amp opcao fflush stdin w
8. n printf AnTotal de pe as no tabuleiro de xadrez for i 1 i 7 i printf MnTotal de oo d oo s d i pecas i conta i printf ininFim do programa getch 93 Exemplo 7 8 2 Contar o n mero de cada tipo de peca na regi o do tabuleiro abaixo da diagonal principal printf AinTabuleiro de xadrez abaixo da diagonal principal 1 lt 8 i j 0 j lt i 1 j xadrez i j gt conta xadrez i O mh K for mha ll i mat4 c conta a quantidade de pecas num tabuleiro de xadrez abaixo da diagonal principal include lt stdio h gt include lt conio h gt int xadrez 8 8 NOM OMS GM GM GM oM OOo O0 O00U1 C HP Q nn GM oM oM NOOWENOR NM OM GM GM ss HOOWwWwoOo RO U M 5 Ns ss EBHNEWOO HO NOM OMS OMS GM ss BAAPNPPPOCUCO NON OM ON SM oM oM NRRPANROON NON OM OMS GM OM oM NU0IoONR 0DODNDN Ns Ns GM GM oM Co COO LP PKP char pecas 7 vazio peoes cavalos torres bispos reis rainhas int conta 7 IDE 1752 void main void t ecbrscri s for i20 i 7 conta i printf AnTabuleiro de xadrez abaixo da diagonal principal in for i21 1 lt 8 i for j 0 j i 1 j if xadrez i 3 gt 0 amp amp xadrez i j 9 H conta xadrez i 3 1 printf Sd xadrez 1 5 printf An p
9. o de constantes Declarac o de vari veis estruturas e ponteiros globais Inicializac o de vari veis constantes estruturas e ponteiros globais Declara o de prot tipos de fun es fornece ao compilador o nome e os argumentos das fun es contidas no programa Fun o main Fun o especial por onde o programa inicia sua execu o Contem as componentes essenciais com as instru es que comandam toda a execu o do programa Fun es Desempenham tarefas espec ficas no programa Programal c Componentes Iniciais main Fun o 1 Fun o 2 Fun o N Exemplo 1 1 Media c calcula a m dia aritm tica de dois n meros inteiros finclude lt stdio h gt int a b declara a e b como vari veis inteiras float m declara m como vari vel de ponto flutuante float media int x int y declara media como uma func o que recebe 2 n meros inteiros e retorna um inteiro void main void Solicita o primeiro valor usando a fun o de biblioteca printf printf Qual o primeiro valor L o primeiro valor da tela usando a fun o de biblioteca scanf scanf Si 8a Solicita o segundo valor usando a fun o de biblioteca printf printf Qual o segundo valor L o segundo valor da tela usando a fun o de biblioteca scanf scanf i amp b m media a b Chama a func o m dia para calcular a m dia entre a b atribui o resultado a m
10. somalinha i mat i j total somalinha i printf inSoma das linhas da matrizin for i 0 i 4 i for 3 0 j 5 J printf mat i lijl printf NtTotal da linha d d1n 1 somalinha i printf inTotal dos elementos da matriz d total printf ininFim do programa getch Exemplo 7 7 Dado um tabuleiro de xadrez onde para facilitar a identifica o das pe as est o codificados l pe es 2 cavalos 3 torres 4 bispos 5 reis 6 rainhas 0 vazio fa a um programa para 1 contar a quantidade de cada tipo de pe a no tabuleiro mat3 c conta a quantidade de pecas num tabuleiro de xadrez include lt stdio h gt include lt conio h gt int xadrez 8 8 1 3 4 5 6 0 2 2 2 1 0 0 1 3 0 0 2 3 2 4 6 0 0 3 Lio dr OS Li 1 Ez 0 0 3 3 4 12 28 3 0 0 0 2 1 9 4 07 0 0 1 2 155 3 6 5 1 4 4 5 2 char pecas 7 vazio pe es cavalos torres bispos r is rainhas int conta 7 INE i i void main void clrscr for i20 1 lt 7 contal i 0 printf NnTabuleiro de xadrez Nn for i20 i 8 i for 3 0 J lt 8 J if xadrez 1 3 gt 0 amp amp xadrez 1 3 lt 6 conta xadrez i 5 printf Ss xadrez i jl printf
11. Refer ncia a um elemento de um vetor Uma refer ncia a um elemento de um vetor feita com o uso de ndices que indicam a posi o do elemento dentro do vetor Exemplos id idades 0 Atribui a id o primeiro elemento do vetor idades idades 1 idades 2 idades 3 Atribui ao segundo elemento a soma do terceiro com o quarto elemento do vetor idades Obs Todo vetor tem O zero como ndice do seu primeiro elemento Inicializa o de vetores e Podem ser inicializados quando da sua declara o Exemplos int idades 10 1 2 3 4 5 6 7 8 9 10 Inicializa todos os elementos int idades 10 1 2 3 4 5 Inicializa os 5 primeiros elementos e Podem ser inicializadas ap s serem declaradas Exemplos idades 0 Tz idades 1 2 for 1 2 i 10 i idades i i for i 0 i 10 idades i 0 81 e Exerc cio 7 1 Fa a um programa para ler a nota de 80 alunos e imprimir a nota e a m dia da turma para cada aluno Se a turma tivesse 3 alunos e n o soub ssemos utilizar os vetores seriam necess rias 5 vari veis para a solu o float n1 n2 n3 total media void main void scanf sf SE sf amp nl amp n2 6 amp n3 total n1 n2 n3 media total 3 printf Nota f Media f n1 media gt Para a turma de 80 alunos seriam necess rias 82 vari
12. cadeia de formato itens de dados Pode receber qualquer n mero de argumentos e O primeiro argumento uma cadeia de formato os especificadores de formato s o os mesmos usados com a fun o printf e Os argumentos de itens de dados num ricos devem ser precedidos pelo operador amp endere o de Tabela 2 2 C digos de barra invertida C digo Significado Va Sinal sonoro Mb Retrocesso NE Alimenta o de formul rio Mn Nova linha Mr Retorno de carro Nt Tabulac o horizontal NY Tabulac o vertical No Nulo NN Barra invertida N2 Ponto de interroga o Wo N Aspas simples dupla 18 2 3 1 Mais sobre a fun o scanf Lendo cadeias de caracteres scanf pode ser usada para a leitura de cadeias de caracteres usando se o especificador de formato 9 s Para scanf um caracter de espaco em branco um espaco um retorno de carro ou uma tabula o Deste modo os caracteres da cadeia s o lidos at que um espa o em branco seja encontrado portanto scanf n o pode ser utilizada para ler uma string como Isto um teste porque o primeiro espa o encerra o processo de leitura Deve se passar endere os para scanf As vari veis utilizadas para receber valores atrav s de scanf devem ser passadas pelo seu endere o isto precedidas pelo operador amp As strings s o lidas para matrizes de caracteres e o nome da matriz sem qu
13. char nome 30 int dia nascimento int mes nascimento int ano nascimento F3 struct informacoes infol info2 struct notas char nome aluno 30 float nota proval float nota prova2 float media notal nota2 typedef struct char info 20 struct no esg dir no no nol noz apnol apno2 103 9 2 Declarac o de vari veis do tipo estrutura Da mesma forma como se declara uma vari vel como sendo de qualquer um dos tipos b sicos pode se declarar uma vari vel como sendo do tipo estrutura E pode se declarar uma estrutura como sendo um novo tipo e Defini o da estrutura e declara o de vari vel Exemplo struct informacoes char nome 30 int dia nascimento int mes nascimento int ano nascimento inf sobre mim e Defini o de um tipo estrutura Exemplo typedef struct char nome 30 char cpf 12 char rg 12 int idade ficha e Declara o de vari veis estrutura ap s sua defini o Exemplo struct informacoes inf sobre voce ficha fichal ficha2 9 3 Refer ncia aos campos de uma estrutura Campos de uma estrutura s o referenciados utilizando se o chamado operador ponto Sintaxe nome da estrutura nome do campo Exemplo gets inf sobre mim nome scanf d amp inf sobre voce dia nascimento fichal rdade 18 strcpy ficha2 cpf 1234560789 10 104 9 4 Inicializac o de estruturas Estruturas podem ser inicializadas dispondo se
14. es sobre alunos o nome a idade as notas de duas provas e a m dia destas provas Forne a ao usu rio as seguintes op es Entrar com informa es sobre os alunos nome idade e as notas das duas provas Ver os valores que foram fornecidos Calcular e ver a m dia de cada aluno Calcular e ver a m dia da classe 2 Fazer um programa que leia v rios nomes e notas de alunos flag nome ULTIMO utilizando uma estrutura para armazenar os dados lidos e calcule e imprima o conceito obtido pelos alunos de acordo com o seguinte crit rio Notas de 0 a 3 conceito I Insuficiente de 3 1 a 6 conceito R Reprovado de 6 1 a 7 5 conceito C de 7 6a 8 5 conceito B de 8 6 a 10 conceito A 3 Uma ag ncia de matrim nios cadastra seus clientes e seus dados pessoais da seguinte maneira c digo nome respostas sobre h bitos e gostos pessoais 0 mo a at 40 caracteres 1 sim 1a9 rapaz 2 indiferente 3 n o Estes dados frutos de respostas de clientes a um question rio s o armazenados num arquivo organizado de forma que um registro com o campo c digo 0 seguido por 9 registros com campo c digo 1 2 at 9 e assim sucessivamente ou seja uma mo a seguida de 9 rapazes pretendentes Fa a um programa que automatize o processo de sele o do par ideal da ag ncia Para isto o programa deve ler o arquivo de dados e para cada um dos 9 rapazes de uma seq ncia deve calcular os ndices de afin
15. nave pretty woman mulher preta to lie deitar to lie mentir miss senhorita to miss sentir falta to dismiss rejeitar to dismiss deixar de ser senhorita misfortune perder a fortuna int obtem respostas void int conta bits int bits errados double testa nota int respostas define RESPOSTAS CORRETAS 0X3C6C void main double nota printf Responda as perguntas com V verdadeiro ou F falso n nota testa nota obtem respostas printf inSua nota e 3 0f n nota int obtem respostas unsigned int respostas 0 intj char c for 3 0 j 15 J printf Anssin teste ingles j 1 c getche if c v e V respostas 1 4j getch printf AinRespostas fornecidas x Mn respostas return respostas Respostas corretas sao FFVV FVVF FFVV VVFE 44 45 double testa nota int respostas int bits_errados double nota bits errados respostas RESPOSTAS CORRETAS nota 100 16 conta bits bits errados 16 0 return nota int conta bits int bits errados int j conta 0 for j 0 j lt 15 if bits errados 1 lt lt 3 conta return conta 4 8 Operador condicional Opera sobre tr s operandos sendo assim um operador tern rio Sintaxe express o 1 express o 2 express o 3 se express o 1 for verdadeira diferente de 0 atr
16. printf Sinto nos ossos mas o arquivo nao pode ser abertoWMn printf Ate a proximaln exit 1 puts Escrevendo os caracteres de V aV a z no arquivo for ch 97 ch lt 122 ch fprintf fp c ch puts Fechando o arquivo para reabri lo no modo de leitura fclose fp puts Reabrindo o arquivo if fp fopen nome arq r NULL 1 printf Sinto nos ossos mas o arquivo nao pode ser abertoWin printf Ate a proximaln exit 1 puts Posicionando o arquivo de byte em byte desde o inicio do mesmo for numbytes 0L numbytes lt 25L numbytes if fseek fp numbytes SEEK SET printf Erro na busca Mn exit 1 printf O byte em 1d e c n numbytes getc fp fclose fp 128 10 18 As Streams Padr o Toda vez que um programa C executado s o abertas tr s streams e stdin entrada padr o e stdout sa da padr o e stderr sa da de erro padr o Estas streams s o em geral usadas para ler a partir do teclado a entrada padr o e para escrever na tela sa da padr o e sa da de erro padr o S o como ponteiros de arquivos e qualquer fun o que tenha como argumento uma vari vel do tipo FILE pode us las no lugar desta vari vel Exemplos printer stdin Sdan ca fscanf stdout d amp 1 F fputs Como vai stdin Uma vez que o DOS suporta redirecionamento de E S poss vel
17. Agora pc printf Agora pf pf para o endereco din pi para o endereco dMn pc para o endereco din pf todos os ponteiros Mn ponteiros aponta para aponta para aponta para 5 de todos aponta para aponta para aponta para o endereco dMn o endereco dMn o endereco dMn os ponteiros in o endereco dMn o endereco dMn o endereco dMn 11 4 Atribui o de Ponteiros Um ponteiro pode ser atribu do a outro ponteiro Exemplo int x 2 ine pls pix amp x p2x pix D2x Atribui o conteudo de plx para p2x 137 O resultado desta opera o que o ponteiro do lado esquerdo passa a apontar para o mesmo endere o para o qual aponta o ponteiro do lado direito do sinal de atribui o 138 11 5 Ponteiros e Vetores Matrizes Strings Structs H uma forte rela o entre ponteiros e vetores matrizes e O nome de uma matriz vetor sem os colchetes um ponteiro para o primeiro elemento desta matriz vetor Exemplo int vet l0 ovet pvet vet Faz com que pvet aponte para o primeiro elemento do vetor vet pvet amp vet 0 Faz o mesmo trabalho e H dois m todos para acessar elementos de matrizes vetores aritm tica de ponteiros ou indexa o da matriz vetor Exemplo int elemento4 vet 10 pvet pvet vet elemento4 vet 3 Acessa o quarto elemento do vetor vet pvet 3 Faz o mesmo
18. S Programando em C S o Paulo Makron Books 1993 KERNIGHAN B W RITCHIE D M C A Linguagem de Programa o Padr o ANSI Rio de Janeiro Campus AITKEN P JONES B C Guia do Programador Rio de Janeiro Berkeley Brasil 1994 SCHILDT H Turbo C Avancado Guia do Usu rio S o Paulo Makron Books 1990 Esta apostila foi elaborada pela Profa Dra Elisamara de Oliveira Qualquer sugest o cr tica deve ser enviada para bytepapo Wajato com br e ser muito bem recebida
19. as m dias 96 4 A dist ncia entre v rias cidades dada pela tabela abaixo em Km 90 45 120 200 Sabendo que as cidades s o identificadas por 1 2 3 4 e 5 fa a um 90 450 500 95 programa que 45 450 1600 240 a crie a tabela em mem ria utilizando uma matriz 120 500 600 950 b leia v rios pares de cidades 1 a 5 e imprima a dist ncia entre elas 200 95 240 950 fy 5 A matriz seguinte representa o p tio de um dep sito de uma empresa de constru es que utiliza as seguintes conven es 201 Jooo 405 34 l cimento 2 areia 3 madeiras 4 tubos 5 blocos de concreto 675 309 ooo 736 6 cal 7 saibro Em cada parte do dep sito est o representados o c digo do material e a quantidade armazenada do material Por exemplo 199 1 cimento 99 99 sacos Escrever um programa capaz de contar e imprimir quantos elementos de cada material existe no dep sito 97 8 Strings Strings nada mais s o que vetores de caracteres cujo ltimo elemento igual a um nulo 0 Exemplos char str 9 char str char str Bom dia Bom dia YB Yo m4 O AE S Exemplo 8 1 stringl c Mostra o uso de strings f finclude lt stdio h gt finclude lt conio h gt void main void har str1 15 Primeiro nome har str2 Sobrenome har str3 MA A tq ny Et ttr Y IO A A MD O pla dai rovs 0 0 har prim nome 5 har sobren
20. char nome 50 char fone 20 struct int dia int mes int ano data nascimento Jinf sobre voce Clotilde 3855 6535 11 2 2000 struct informacoes agenda 20 Struct c Ilustra o uso de estruturas vetores de d struturas finclude struct h void main void int opcao int numero de amigos clrser s puts LARRETA KE EERE REEERE EER RR ARA OR DR UN EEK EREKE AO OE OE OR TE gt printf Seu nome e s In inf sobre voce nome printf Seu telefon s An inf sobre voce fone printf A data em que nasceu foi d d d Nn inf sobre voce data nascimento dia inf sobre voce data nascimento mes inf sobre voce data nascimento ano puts EROR EUN KT HK eoe nee Se eoe e dco eie oesien ae segs eoe Suum Kok ar Escolha uma das opcoes n Sair do programa Corrigir informacoes sobre voce Montar uma pequena lista com informacoes sobre seus amigos Ver as informacoes contidas na sua lista d amp opcao fflush stdin while opcao lt 1 opcao gt 4 switch opcao Case SAIR exit 0 break case CORRIGIR corrigeInformacoes break case MONTALISTA numero de amigos montaLista break case VERINFORM verInform numero de amigos break default puts Voce nao escolheu uma opcao valida void corrigeInformacoes void puts Forneca o seu nome gets inf sobre voce nome puts Forneca seu telefone gets inf sobre voce fone p
21. lt tamanho gt de uma lt string gt caracteres tamanho m n mero d destino strrev string retorna para destino a string invertida destino strupr string retorna para destino a string convertida para mai scul destino re strlwr string tino a sl torna para des Exemplo 8 2 tring gt convertida para min scula strcat tinclude tinclude tinclude e lt string h gt lt stdio h gt lt conio h gt void main void char destino 25 char espaco segundo Segundo string primeiro Primeiro string clrscr strcpy destino primeiro strcat destino espaco strcat destino segundo printf Ssin destino getch ilustra o uso da funcao strcat Exemplo 8 3 99 strcmp c ilustra o uso da funcao strcmp finclude conio h finclude string h finclude stdio h int main void char strl aaa str2 bbb str3 ccc str4 aaa int result clrscr printf Stringl s String2 s String3 s String4 sinin Strl str2 str9 str4 printf inComparando Stringl e String2 result strcmp str2 strl if result gt 0 printf AnString 2 e maior que string 1 An else if result 0 printf AnString 2 e menor que string 1 An else printf AnString 2 e string 1 sao iguaisMn printf inComparando Stringl e String3 result s
22. veis 79 E se fossem os candidatos ao vestibular 4000 alunos c lizar gt Esse um t pico problema em que a solu o nos obriga a uti vetores float notas 80 opo ps pz ES 0 1 2 3 79 notas gt Como fazer atribui o das notas no vetor notas 0 5 0 notas 3 7 2 notas 2 3 0 82 gt Como ler todas as notas do teclado for i 0 i lt 80 i printf XnDigite a nota do aluno i i scanf f amp notas i Exemplo 7 1 vetorl c calcula a m dia das notas de uma turma finclude lt stdio h gt finclude lt conio h gt fdefine MAX 80 float notas MAX total 0 media int i void main void clrser y printf NMnEste programa calcula a media de notas da turma for i20 i MAX i printf AinDigite a nota do aluno d i scanf f amp notas i total notas i media float total MAX for i20 i MAX i printf NnNota do aluno d 1 1f M dia da turma 1 2f i notas i media printf ininFim do programa getch 7 1 1 Manipulac o de vetores Toda linguagem de programa o s manipula tipos b sicos gt Declara o int votos 500 gt Atribui o votos 2 0 votos 2 1 votos 4 O votos 2 Il lt 83 gt Inicializa o for i20 1 lt 500 votos 1 0 gt Leitura for i20 i lt 500 i printf inDigite o
23. 0 cont amp vet 0 amp vet 6 Resulta em 6 pois vet 0 st em um endere o mais baixo que vet 6 Esta a chamada opera o de diferencia o 11 7 Compara o entre Ponteiros Quando dois ponteiros apontam para um objeto comum como por exemplo uma matriz pode se compar los usando os operadores relacionais gt lt gt e gt Exemplo float vet 5 int e maior e maior amp vet 5 gt amp vet 3 Atribui 1 a e maior ja que amp vet 5 aponta para uma posi o de mem ria mais alta que amp vet 3 142 Exemplo 11 6 PontSubt c Ilustra a subtracao e a comparacao entre ponteiros finclude lt stdio h gt finclude lt conio h gt void main 1 double vet 5 int i drifs double pvet puts Forneca 5 numeros para um vetor double n for 1 0 i 5 i printf An vet d i scanf f amp vet i pvet vet puts AnVamos examinar a diferenca entre os enderecos destes elementos in puts Pressione qualquer tecla para continuar Mn getch for i 1 i 5 i if amp vet i gt pvet printf An amp vet d d maior que pvet d n i amp vet i pvet else printf An amp vet d d menor que pvet dWMn i amp vet i pvet printf An amp vet d vet dWMn i amp vet i vet 11 8 Matrizes Vetores de Ponteiros Da mesma forma como se podem declarar matrizes vetores de qualquer tipo de vari
24. A mem ria usada para armazenar programas e dados 2 O processador um conjunto de circuitos que garante a realizac o de opera es primitivas instru es de m quina ou macroinstru es que formam sua linguagem de m quina LM Linguagens de Alto N vel Linguagem Linguagens de M quina Assembly O sistema operacional SO e as implementa es das LPs s o dispostos em camadas sobre a interface da LM de um computador Essas camadas podem ser imaginadas como computadores virtuais que oferecem interfaces em n vel mais alto para o usu rio conforme pode ser visto na figura 1 2 Computador virtual Pascal V Computador virtua N LISP Pa N om pi lador A asca Computador p X j S virtual 3 N Interpretador N pa A Y Lune LISP S FORTRAN 3 E M c A com pllador a Sistema operacional b X FORTRAN Y E f eet ea NET N x Ps MS x lt x PS P Pd Interpretador de W Interpretador V j a 2 EN T ER i j oss i macroinstru es N de comandos 7 N 4 do sistema e T Y 1 1 j P N e operaconal N i 1 T N deoda l Compilador m quina e i c l t N j j l 1 NS P A Y E g f x E A M N A Assembler ZE N A hs f A pol N NE P Computador M t A AZ t A YT En BD oz AN virtual C x SN EM ue UN Compilador gt ze a oW 3 j T a 1 Ada j P y Y AO Ng e 2 Computador d S E T s vi
25. Chamada por refer ncia O que copiado no par metro formal o endere o da vari vel Dentro da subrotina o argumento real utilizado na chamada acessado atrav s do seu endere o podendo ser desta forma alterado 144 Exemplo void tune int i int js Declara o de um prot tipo de fun o que recebe valores por refer ncia ine lg iz func amp il amp i2 Chamada fun o passando valores por refer ncia Exemplo 11 8 PontRefer c Ilustra a passagem de argumentos por refer ncia em fun es include lt stdio h gt void trocal int m int n void troca2 int m int n void main int il i2 printf Forneca o valor de dois inteirosin scanf d d amp il amp i2 printf Temos il d e i2 d1n 11 12 printf AnVamos troca los de lugar usando a funcao trocal passando os por valor a funcao In trocal 11 12 prin prin Depois da troca de volta a funcao main temos il d e i2 Sdin 11 12 AnVamos troca los de lugar usando a funcao troca2 passando os por referencia a funcao in troca2 amp il amp i2 printf Depois da troca de volta a funcao main temos il d e i2 Sdin 11 12 trocal int il int i2 tmp dls 12 tmp f Depois da troca dentro da funcao trocal temos il d e i2 d1n 11 12 troca int il int i2 tmp il i2 tmp f Depois da troca dentro da funcao trocal temos il d e i2 dWn
26. Declara uma vari vel ponteiro de arquivo 10 2 A func o fopen Arquivo de cabegalho a ser inclu do stdio h Abre uma stream e associa um arquivo a ela Recebe como argumentos o nome do arquivo e o modo em que ele deve ser aberto Retorna um ponteiro para arquivo ou se ocorrer alguma falha retorna um NULL definido em stdio h como 0 Exemplo FILE fp if fp open teste txt r y NULL printf Arquivo n o pode ser aberto n exit 1 Abre um arquivo texto no modo de leitura mas se ocorrer algum erro na abertura do arquivo aborta Tabela 10 1 Valores para o argumento modo de fopen Modo Significado r Abre um arquivo texto para leitura w Cria um arquivo texto para escrita a Anexa a um arquivo texto rb Abre um arquivo bin rio para leitura wb Cria um arquivo bin rio para escrita ab Anexa a um arquivo bin rio r Abre um arquivo texto para leitura escrita w Cria um arquivo texto para leitura escrita at Anexa ou cria um arquivo texto para leitura escrita r b Abre um arquivo bin rio para leitura escrita w b Criaum arquivo bin rio para leitura escrita atb Anexa a um arquivo bin rio para leitura escrita 10 3 A fun o fclose Arquivo de cabe alho a ser inclu do stdio h Fecha uma stream que foi aberta atrav s de uma chamada a fopen Se bem sucedida retorna o valor zero Um valor de
27. Sintaxe do comandos while condic o sendo condic o qualquer express o v lida em C Exemplo 1 0 do i printf nbd i while 1 lt 10 Representa o esquem tica de um comando do while Executa Comandos Avalia Condi o Menul c Operacionaliza um menu simples Ilustra o uso do comando do while finclude lt stdio h gt finclude lt conio h gt void main void int opcao eilfscr puts Mode ck CKOROE Oe oe ok KK ee coke oe RIOR Ke ek OK Reo ok ok ARA AAA ARAN puts Monta uma agenda de telefones puts VES EE e COE E ERA KE SK COE EKERI COE SKK EA eee eee oe e n E puts Pressione uma tecla para comecar getch for do clrscr puts Mn puts 1 puts 2 puts 3 puts 4 printf Escolha uma das opcoes 1n Sair do programa Inserir dados de seus amigos na agenda Ver as informacoes contidas na sua agenda Obter o telefone de um amigo XnSua opcao scanf d amp opcao fflush stdin while opcao lt 1 opcao gt 4 57 58 switch opcao case 1 printf NnFim do programa getch exit 0 interrompe o for break case 2 printf MnInsere dados dos amigos getch break case 3 printf MnlImprime dados da agenda getch break case 4 printf MnConsulta dados dos amigos getch break default puts Voce nao escolheu uma op
28. a bit s podem operar sobre vari veis do tipo int e char Operadores de deslocamento Desloca os bits n posi es dentro de uma vari vel inteira Sintaxe Deslocamento esquerda vari vel lt lt n mero de posi es de bits Deslocamento direita vari vel n mero de posic es de bits 42 Notar que as opera es de deslocamento podem ser usadas para multiplicar e dividir inteiros x lt lt y equivalente a x 2 x gt gt y equivalente a x 2 Exemplos x 00001100 00001100 12 x gt gt 2 resultado x 00000011 00000011 3 x 00001100 RAS resultado x 00110000 00110000 48 Tabela 4 9 Operadores l gicos com bits Operador A o complemento Inverte o estado de cada bit da vari vel especificada de 1 amp e Inicializa um bit com valor 1 somente se os bits correspondentes em ambos operandos forem 1 caso contr rio o bit zerado ou Zera um bit somente quando os bits correspondentes inclusivo em ambos operandos forem 0 caso contr rio o bit inicializado com o valor 1 ou Inicializa um bit com valor 1 somente quando os bits exclusivo correspondentes em ambos operandos forem diferentes caso contr rio o bit zerado tabela verdade dos operadores e amp ou e complemento de 1 igual dos seus equivalentes l gicos exceto por trabalharem bit a bit O ou exclusivo n o tem equivalen
29. amigo nome puts Forneca o telefone do seu amigo gets agenda conta amigo fone puts Forneca o dia do nascimento do seu amigo scanf d amp agenda conta amigo data nascimento dia puts Forneca o mes de nascimento do seu amigo scanf d amp agenda conta amigo data nascimento mes puts Forneca o ano do nascimento do seu amigo scanf d amp agenda conta amigo data nascimento ano conta amigo fflush stdin while resposta s resposta S return conta_amigo void verInform int numero de amigos int 15 if numero de amigos 0 printf Sua lista de amigos esta vazia else puts MnInformacoes sobre seus amigos Mn for i 0 i numero de amigos i printf NnNome sin agenda i nome printf Telefone sWMn agenda i fone printf Data de nascimento d d dWn agenda i data nascimento dia agenda i data nascimento mes agenda i data nascimento ano funcao4 h arquivo cabecalho de funcao4 c finclude lt stdio h gt finclude lt conio h gt finclude lt stdlib h gt fdefine SAIR 1 fdefine CORRIGIR 2 fdefine MONTALISTA 3 fdefine VERINFORM 4 void corrigeInformacoes void int montaLista void void verInform int struct informacoes char nome 50 char fone 20 struct int dia int mes int ano data_nascimento inf_sobre_voce Clotilde 3855 6535 11 2 2000 struct informacoes agenda 20 Lista de Exer
30. ano o Brasil foi descoberto printf Anl Em 100 AC por Pitagoras printf An2 Em 1100 por um vicking entediado chamado Kulm printf in3 Em 1990 por Chico Buarque de Holanda printf An4 Em 1500 por Pedro Alvares Cabral printf AnQual a sua escolha scanf d amp opcao avaliacao opcao void avaliacao int x switch x case 1 printf in Voce precisa ler mais sobre a historia grega break case 2 printf in Mais sorte na proxima vez break case 3 printf in Naturalmente voce eh um fa do cantor break case 4 printf in Resposta certissima break default printf AnVoce nao escolheu nenhuma das alternativas validas Exemplo 6 3 funcao2 c Operacionaliza um menu simples finclude lt stdio h gt finclude lt conio h gt int selecionar menu void int opcao void main opcao selecionar menu printf Voce escolheu a opcao d opcao getch int selecionar menu void int selecao 0 do printf n printf Mnl Acrescentar um registro printf n2 Alterar um registro printf Mn3 Apagar um registro printf Mn4 Sair printf Nn printf nDigite a escolha scanf d amp selecao while selecao 1 selecao 4 return selecao Exemplo 6 4 funcao3 c Dadas as notas de quatro provas verifica se o aluno foi aprovado ou reprovado finclude lt stdio h gt define
31. de de de de ine ESPECIFICADOR G ine ESPECIFICADOR E ine ESPECIFICADORES IOX ine ESPECIFICADOR N ine ESPECIFICADOR P define ESPECIFICADOR LARGURAF define MODIFICADOR defi JUSTIFICACAO h Fh Fh Fh Fh Fh Fh Fh H 3 0 o 1O0Y 014 NR void menu int opcao void main int opcao for do pu Escolha uma das opcoes do menu Mn pu Ilustrando os especificadores de formato pu ustrando os especificadores de formato pu ustrando os especificadores de formato pu lustrando os especificadores de formato pu Ilustrando os especificadores de formato pu lustrando os especificadores de largura e precisao n pu lustrando o modificador n pu Ilustrando justificacao a direita a esquerda Mn pu Sair An scanf d amp opcao while opcao lt 1 opcao gt 9 if opcao 9 exit 0 menu opcao void menu int opcao double f1 double f2 11 121314 float f3 10 unsigned numero int ondemoro int conta switch opcao case aca printf Ilustrando o uso dos especificadores de formato g e G1n printf gNtNCt GWn for fl 1 0 f1 lt 1 0e 10 f1 f1 10 printf gNt GNn f1 f1 break case Mg RS MEE printf Ilustrando o uso dos especificadores de formato e e EWMn printf eNtNtSSENn for fl 1 0 f1 gt 1 0e 10 f1 f1 10 printf SeltsEln f1 f1 break Case
32. de uma func o Pode conter letras n meros e o caracter de sublinhado O primeiro caracter deve ser uma letra ou caracter de sublinhado Letras mai sculas e min sculas correspondem a caracteres diferentes N o podem ser usadas palavras reservadas 6 5 A lista de par metros formais Deve conter um item correspondendo a cada argumento especificando o tipo de dado e o nome do par metro Exemplos long soma int a int b float volume int a int b int h Quando nenhum argumento passado fun o ou nenhum argumento retornado pela fun o deve se usar a palavra void Exemplos void listas int x float aleatorio void void menu int x void mensagem void 6 6 Instru es dentro de fun es Podem ser utilizadas todas as instru es do C N o podem ser definidas fun es dentro de outras fun es Podem chamar outras fun es 65 6 7 Retorno de uma func o Deve se usar a palavra return seguida de uma express o v lida em C que ap s ser avaliada tem o seu valor retornado Exemplos return x return a b O corpo da fun o pode ter v rias instru es return por m s a express o de uma delas avaliada Exemplo if a b return a else return b 6 8 Chamada de uma func o Uma fun o chamada mencionando se o seu nome e a lista de argumentos colocada entre par nteses Exemplos volume x y Z total volume x y z prxntf Nn d wolume x
33. erro Anote a 6 Retire o da linha Chama a fun o no programa MEDIA C e tente criar um execut vel Qual a mensagem de erro Anote a 7 Escreva uma rotina main que imprima Bom dia 8 Encontre os erros no uso das fun es scanf Quantos erros tem este programa cont de problemas printf Este argumento tem d erros cont de problemas 10 2 Instruc es de Entrada e Sa da Conjunto de fun es que permitem a entrada de dados no programa e a sa da de resultados 2 1 A func o printf Arquivo de cabecalho a ser inclu do stdio h lt stdio h gt define tipos e macros necess rios para o pacote padr o de Entrada Sa da definido por K amp R e declara as fun es desse pacote Imprime dados na tela Sintaxe printf string de formato itens de dados e Primeiro argumento string de formato deve estar entre aspas e pode conter Texto C digos de barra invertida Especificadores de formato largura precis o tipo e Segundo em diante itens de dados tantos quantos forem os especificadores de formato Exemplo Elost fEl S los char c3 a printf Imprimindo tr s valores f d c fl i2 c3 12 Tabela 2 1 Especificadores de Formato C digo Formato c Caracter nico s Cadeia de caracteres d i vld Inteiro decimal longo u Inteiro decimal n o sinaliz
34. ilin nome arq fread amp dbl1 sizeof double 1 fp fread amp il sizeof int moly tps printf XnOs valores lidos sao dbl f e il dWMn dbl il puts nFechando o arquivo fclose fp printf AnDeletando o arquivo sin nome arg if remove nome arg printf O arquivo s nao pode ser apagado in nome arq exit 1 126 10 15 A Fun o fprintf Arquivo cabe alho a ser inclu do stdio h Comporta se da mesma forma que printf operando entretanto com arquivos Seu primeiro argumento um ponteiro para arquivo sendo os demais argumentos iguais aos de printf 10 16 A fun o fscanf Arquivo cabe alho a ser inclu do stdio h Comporta se da mesma forma que scanf exceto por operar com arquivos Seu primeiro argumento um ponteiro para arquivo sendo os demais argumentos como os de scanf Exemplo 10 8 FprFsc c Ilustra o uso das fun es fprintf e fscanf para gravac o e leitura de arquivos finclude lt stdio h gt finclude lt stdlib h gt void main FILE fp float db 10 1010 db1 int i 10 il char nome arq 20 puts Forneca o nome do arquivo a ser criado scanf s nome_arq puts AnAbrindo o arquivo no modo escrita 3E fp fopen nome arq w NULL puts O arquivo nao pode ser aberto puts O programa sera abortado exit 1 printf nEscrevendo com fprintf no arquivo s o conteudo d
35. inclu do stdio h Permite a leitura em arquivo de dados maiores que 1 byte para qualquer tipo de dado Recebe como argumento um ponteiro para uma regi o de mem ria que receber os dados do arquivo o n mero de bytes a serem lidos o n mero de itens a serem lidos cada um com o n mero de bytes especificado e um ponteiro para arquivo Devolve o n mero de itens lidos o qual pode ser menor que o n mero especificado se o final do arquivo for atingido ou na ocorr ncia de um erro Exemplo FILE fp double db fread amp db sizeof double 1 fp Le um double do arquivo apontado por fp Exemplo 10 7 FreFwri c Ilustra o uso das fun es fread fwrite e remove finclude lt stdio h gt tinclude lt stdlib h gt void main FILE fp double db 11 1213 db1 int i 5 il char nome_arq 20 puts Forneca o nome do arquivo a ser criado scanf S s nome arg puts NnAbrindo o arquivo no modo binario leitura escrita if fp fopen nome arq wb NULL puts Voce nao esta com sorte o arquivo nao pode ser aberto puts O programa sera abortado exit 1 printf inEscrevendo com fwrite no arquivo s o conteudo de db f el i dWn nome arg db i fwrite amp db sizeof double 1 fp fwrite amp i sizeof int Pol EPI puts AnRebobinando o arquivo rewind fp printf AnLendo com fread do arquivo s para as variaveis db1X e
36. intermedi rio e em c o do maior e que ao retornar para a fun o principal imprima estes n meros Use chamada por refer ncia 146 12 Pr Processador Programa que executa antes do compilador Prepara o c digo fonte para ser compilado Todas as diretivas do pr processador C come am com o s mbolo S o elas finclude define Hif Hifdef Hifndef felse Helif tendif undef error line pragma As duas primeiras s o as mais usadas 12 1 A diretiva include Instrui o compilador a ler outro arquivo fonte e adicion lo quele que cont m a diretiva Exemplo include lt stdio h gt include meucab h Quando o nome do arquivo est entre aspas este ser procurado no diret rio de trabalho corrente Quando o mesmo se encontra entre os sinais de maior e menor ser procurado no diret rio especialmente criado para arquivos de inclus o 147 12 2 A diretiva Zdefine Define um identificador e uma cadeia que o substituir em todo c digo fonte processo este denominado por substitui o de macro Exemplos fdefine imprimir printf tdefine E MS Erro padr o na entrada in imprimir E MS define TAMANHO MAX 100 float nome TAMANHO MAX fort x 0 zx TAMANHO MAX 1 printf Nome Sfin nome i 12 2 1 Macros de fun es O nome da macro pode ter argumentos associados o que permite a defini o de macros de fun es Os argumentos
37. nome de um arquivo a ser criado gets nome arquivol puts Forneca outro nome de arquivo a ser criado gets nome arquivo2 if fpl fopen nome arquivol w NULL printf Problemas na abertura do arquivo sMn nome arquivol printf O programa sera abortadoWn exit 1 if fp2 fopen nome arquivo2 w NULL printf Problemas na abertura do arquivo sMn nome arquivo2 printf O programa sera abortadoWn exit 1 puts AnPrimeiramente vamos escrever algo no primeiro arquivoWin do puts Forneca uma frase Tecle apenas lt enter gt para sair gets str strcat str An Acrescenta uma nova linha fputs str fpl while str Yn puts inVamos agora fechar este arquivo para entao abri lo novamente puts no modo de leitura somenteWn fclose fp1 if fpl fopen nome arquivol r NULL printf Problemas na abertura do arquivo Ssin nome arquivol printf O programa sera abortadoWn exit 1 puts Agora vamos ler o que foi escrito no primeiro arquivo puts e escrever o mesmo no segundo arquivoWMn conta_linha 0 while feof fp1 conta linha fgets str COMPRIMENTO fpl if stromp str An printf Escrevendo no segundo arquivo n printf Linha numero d sin conta linha str fputs str fp2 puts Fechando os dois arquivos1n fclose fp1 fclose fp2 puts Auf wiedersehen 122 1
38. op o default nenhum comando executado Exemplos switch n case 1 printf O valor de n 1 break case 2 printf O valor de n 2 break default printf O valor de n diferente de 1 de 2 5 switch letra case a case e case i case o case u printf in Voc digitou uma vogal break case o case c case d printf in Voc digitou uma constante v lida break default printf An Voc digitou uma constante inv lida Exemplo 5 2 Switch c Avalia o conhecimento do usu rio finclude lt stdio h gt finclude lt conio h gt int opcao void main printf nTeste de avalia o de conhecimento n printf nPergunta Em que ano o Brasil foi descoberto printf n 1 Em 100 AC por Pit goras printf n 2 Em 1492 por Cristov o Colombo printf n 3 Em 1500 por Pero Vaz de Caminha printf n 4 Em 1500 por Pedro Alvares Cabral printf n Qual a sua escolha scanf d amp opcao switch opcao case 1 printf in Voce precisa ler mais sobre a hist ria grega break case 2 printf In Chegou nos nossos vizinhos Mais sorte na pr xima vez break case 3 printf in Naturalmente voc um f da carta do descobrimento break case 4 printf in Resposta cert ss
39. pO O LER printf Ilustrando o uso do especificador de formato i 0 e printf iNt oNt 9xWMn for numero 0 numero lt 50 numero if numero 21 amp amp numero 0 printf Aperte qualquer tecla para continuar n getch printf iNt oNt xNMn printf dNt oNt xWMn numero numero numero break ESPECIFICADOR N printf Aninllustrando o uso do a Co E de formato nNin printf Com o n na posicao abaixo n printf printf inVejamoss n quantas letras ha antes de vejamos amp conta n n printf Vejamos n quantas letras ha antes de vejamos n amp conta printf Nnconta assume o valor d que e igual a quantidade de letras da palavra VejamosMn conta break case ESPECIFICADOR P printf XnWnIlustrando o uso do especificador de formato p n printf para mostrar o endereco na maquina da variavel ondemoro a printf O endereco de ondemoro e p n amp ondemoro break case ESPECIFICADOR_LARGURAEPRECISAO printf ininIlustrando o uso de especificadores de largura minimaN de campo n nUsando f para formatar f2 obtem se f2 f f2 nUsando 14f para formatar f2 obtem se f2 14f f2 nUsando 014f para formatar f2 obtem se f2 014f f2 nino especificador de precisao tem efeitos diferentes n quando aplicado a um inteiro a um float ou a uma us T doe t ao float f2 11 121314 como 2f resulta 1n 2 Nn 2 7 prin
40. que cont m a vari vel nota diz se que apnota aponta para nota 2A00 2A01 2A02 2A03 2A04 2A05 2A06 2A07 Os ponteiros apontam para o byte de posi o mais baixa de uma vari vel O operador amp s se aplica a vari veis e elementos de vetor O operador amp n o pode ser aplicado a express es constantes ou vari veis do tipo register 133 O operador um operador un rio chamado de operador de indire o ou de deferenciac o Quando aplicado a um apontador acessa o objeto para o qual o apontador aponta ou seja refere se ao valor armazenado na posi o de mem ria da vari vel para a qual o ponteiro est apontando Pode se acessar o conte do de uma vari vel usando o seu nome acesso direto ou usando ponteiros acesso indireto ou indire o Exemplo float dado 15 apdado apdado amp dado printf Sd dado Sa da 15 printf d apdado Sa da 2A04 printf Sd apdado Sa da 15 Se um ponteiro px aponta para uma vari vel x ent o px pode aparecer em qualquer contexto em que a vari vel x apareceria Exemplo i t yr eee FDS px amp x px 5 Incrementa x de 5 px Incrementa x de 1 cc ss Incrementa x de 1 y px 2 Atribui a y o resultado da soma de x com 2 Exemplo 11 1 Ponteiro c Exemplifica acesso direto e indire o finclude lt stdio h gt finclude lt conio h
41. short 4 2 147 483 647 a int 2 147 483 647 inteiro longo n o sinalizado unsigned 4 0 a 4 294 967 295 short int ponto flutuante com precis o float 4 Seis d gitos de simples precis o ponto flutuante com precis o double 6 Dez d gitos de dupla precis o ponto flutuante com precis o long double 8 Dez d gitos de dupla longo precis o Declara o de vari veis e todas as vari veis devem ser declaradas antes de serem usadas Sintaxe tipo lista de vari veis Exemplo ING Xy float a e podem ser declaradas dentro de fun es vari veis locais fora de quaisquer fun es vari veis globais 9 como par metros formais de fun es Exemplo float media float x float y 26 Inicializac o de vari veis e pode se atribuir um valor a uma vari vel ao declar la ou em outra parte do programa onde permitido o uso de comandos Exemplo long var 0 ou long var void main void var 0 e o o 3 1 1 O operador em tempo de compila o sizeof Operador un rio que retorna o tamanho em bytes da vari vel ou especificador de tipo que ele precede Exemplo float f printf sd sizeof f printf nad sizeof int Obs O nome de um tipo deve ser colocado entre par nteses Isto n o necess rio para nomes de vari veis Exemplo 3 1 Sizeof c Programa que verifica o tamanho de cada vari vel no computador que se est usando
42. sizeof HEXA prin O tamanho em bytes da constante LONGHEXA 1x e d n LONGHEXA N sizeof LONGHEXA 29 30 3 2 1 Defini o de conjuntos de constantes atrav s de enum palavra chave enum define uma enumera o que consiste em um conjunto de constantes inteiras nomeadas denominadas numeradores Sintaxe enum nome lista de enumerac o Exemplo enum meses Janeiro 1 fevereiro marco abril maio junho julho agosto setembro outubro novembro dezembro int mes setembro Se a nenhum enumerador for atribu do um valor os valores das constantes correspondentes come am em 0 e aumentam de 1 medida que a declara o lida da esquerda para a direita Exemplo 3 4 Enum c Programa que mostra como definir constantes usando a palavra chave enum include stdio h enum moeda real dollar euro libra char nome moeda real dollar euro libra void main 1 OE for i real i lt libra i printf sin nome moeda i printf O real representado pelo n mero Sdin real 3 3 O tipo de dados char Uma constante caracter um inteiro e a cada caracter corresponde um valor num rico da tabela de c digos ASCII Assim 97 o c digo ASCII para a letra a Pode se imprimir atrav s de um programa o valor do c digo 97 ou o s mbolo associado a ele a 31 Exemplo 3 5 C
43. stdio h gt void void void main int varl void locall void local2 int varl local void y local2 int x int y void printf locall nValor das variaveis depois de chamar a var2 d varl var2 printf 1 var2 2 AnValor das variaveis antes de chamar a varl d var2 d varl var2 locall varl 5 d local2 varl XnValor das variaveis depois de chamar a var2 d varl var2 tf prin prin f var2 local2 varl d XnFim do programa void int vari 100 var2 100 printf AnValor das variaveis dentro da varl d var2 d varl var2 varl var2 int var2 100 200 printf AnValor das variaveis dentro da varl d var2 d varl var2 6 10 2 Vari veis Globais vez em que s o usadas Podem ser usadas em qualquer bloco de c digo Ret m o seu valor durante toda a execu o do programa funcao funcao funcao funcao locall funcao local2 71 S o declaradas fora de qualquer fun o em qualquer lugar anterior primeira Obs Se uma vari vel local declarada em um bloco de c digo com o mesmo nome que uma vari vel global qualquer refer ncia a este nome dentro do bloco de c digo em que foi declarada diz respeito vari vel local e n o global em muitas fun es do progr
44. vel tamb m se podem declarar matrizes vetores de ponteiros para qualquer tipo de vari vel Exemplo Lhb x9 De vetiels Declara dois inteiros um vetor de ponteiros para inteiros vet sem ndices um ponteiro para o vetor de ponteiros para inteiros vet 1 amp i Atribui o endereco de uma vari vel inteira para o primeiro elemento do vetor vet Jy c awet E Atribui o valor da vari vel para a qual vet 1 aponta para j 143 Exemplo 11 7 PontdeVet c Ilustra o uso de vetores de ponteiros finclude lt stdio h gt void main 1 into char poemal E7 HIPOTESE E se Deus canhoto e criou com a mao esquerda Isso explica talvez as coisas deste mundo Carlos Drummond de Andrade y char poema2 A vida a arte do encontro Wn embora haja tantos desencontros pela vida WMn ne Vinicius de Moraes y puts Um pequeno poema In for i 0 i 5 i puts poemal i puts AnAgora outro Nn for 1 0 i 2 i while poema2 1 N0 printf c poema2 1 11 9 Ponteiros como Argumentos de Func es H duas maneiras de se passar argumentos para fun es e Chamada por valor Esta a maneira usual O valor copiado do argumento para o par metro formal da fun o Quaisquer altera es feitas a estes par metros dentro da fun o n o ir o afetar as vari veis usadas como argumentos para cham la e
45. x 3 4 2 Operadores Aritm ticos Operadores un rios Atuam sobre apenas um operando Tabela 4 1 Operadores Un rios Operador A o menos un rio Multiplica seu nico operando por 1 incremento Incrementa o operando em uma unidade decremento Decrementa o operando em uma unidade Exemplos x x 1 gt x x x 1 gt X e x incrementa o valor de x antes de us lo modo pr fixado e x incrementa o valor de x depois de us lo modo p s fixado e x decrementa o valor de x antes de us lo modo pr fixado e x decrementa o valor de x depois de us lo modo p s fixado 36 Exemplo 4 2 Unarios c fica o uso dos operadores un rios include lt stdio void main t a b al bl FEO e 1 j Sd e m d j m m j lores iniciais k d e n d k n Em K e vale ised fins IK S w Operadores bin rios Atuam sobre dois operandos Tabela 4 2 Operadores Bin rios Operador A o adi o Soma dois operandos subtra o Subtrai o segundo operando do primeiro multiplica o Multiplica dois operandos divis o Divide o primeiro operando pelo segundo m dulo Fornece o resto da divis o inteira do primeiro operando pelo segundo Exemplo 50 4 2 50 4 50 4 1 2
46. y z TE volume x y z gt 10 printf inEsta uma caixa grande 66 Exemplo 6 1 v Potencia c utiliza uma funcao que eleva x a y finclude stdio h finclude conio h finclude lt math h gt int base expoente float result float potencia int bas int exp void main void clrscer printf NnPrograma que calcula o valor de x elevado a y printf AnDigite o valor da base inteiro scanf d amp base while base 0 printf MnDigite o valor do expoente inteiro scanf d amp expoente result potencia base expoente printf in d elevado a d 4f base expoente result printf AinDigite o valor da base inteiro 0 para sair scanf d amp base printf inFim do programa getch float potencia int bas int exp float result 1 inte d if exp 0 return 1 if exp gt 0 for i20 i lt exp 1 result base lse expoente negativo inverte a base for i20 i abs exp i result float 1 0 base return result 67 Exemplo 6 2 funcaol c Avalia o conhecimento do usu rio finclude lt stdio h gt finclude lt conio h gt int escolha void menu void void avaliacao int x void main lo cclrsecri s printf inTeste de avaliacao de conhecimento An menu getch void menu void int opcao printf nPergunta Em que
47. 0 9 A func o rewind Arquivo cabe alho a ser inclu do stdio h Reposiciona o indicador de posi o do arquivo no in cio do arquivo Recebe por argumento um ponteiro para arquivo Exemplo 10 5 Rewind c Ilustra o uso da func o rewind finclude lt stdio h gt finclude lt stdlib h gt finclude lt string h gt define COMPRIMENTO 80 void main FILE fpl char nome arquivol COMPRIMENTO char str COMPRIMENTO puts Forneca o nome de um arquivo a ser criado gets nome arquivol printf O arquivo sera aberto no modo de leitura escrital W N paraMn que possa ser lido apos rebobinadoin if fpl fopen nome arquivol w NULL printf Problemas na abertura do arquivo sin nome arquivol printf O programa sera abortadoWn exit 1 puts AnEscrevendo algo no arquivoln do puts Forneca uma frase Tecle apenas lt enter gt para sair gets str Strcati str Nan Acrescenta uma nova linha fputs str fpl while str Mn puts Agora vamos rebobinar o arquivoln rewind fp1 puts Agora vamos ver o que foi escrito no arquivo while feof fpl fgets str COMPRIMENTO fpl printf str puts Fechando o arquivoln fclose fp1 puts Hasta la vista baby 123 10 10 A func o ferror Arquivo cabe alho a ser inclu do stdio h Recebe como argumento um ponteiro para arquivo Retorna verda
48. 0 R 82 r 114 S 19 3 51 S 83 S 115 T 20 4 52 T 84 t 116 U 21 5 53 U 85 u 117 V 22 6 54 V 86 v 118 W 23 7 55 W 87 Ww 119 X 24 8 56 X 88 X 120 AY 25 9 57 Y 89 y 121 AZ 26 58 Z 90 Z 122 27 59 91 123 28 60 92 124 29 61 93 y 125 NA 30 gt 62 A 94 126 a 31 T 63 95 del 127 4 Operadores Fazem com que uma determinada opera o ou a o seja executada com um ou mais operandos H quatro classes principais de operadores Aritm ticos L gicos Relacionais Bit a bit H outros operadores que n o se encaixam na classifica o acima Operador de atribui o e de atribui o compostos Operador condicional Operador v rgula Operador sizeof se o 3 1 1 e Operador de endere amento e operador de deferencia o ser o vistos em conjun o com ponteiros e Operador ponto e operador seta ser o vistos em conjun o com estruturas e com ponteiros e Operador molde e Operador par nteses e colchetes 4 1 Operador de Atribui o Sintaxe nome da vari vel express o Pode ser usado dentro de qualquer express o v lida em C Exemplo x 4 var 3 Atribui o valor da express o a x y 2 Atribui o valor 2 a y 4 1 1 Convers o de tipos em atribuic es Ocorre quando vari veis de um tipo s o misturadas com vari veis de outro tipo Regra de Convers o O valor do lado direito de uma atribui o convertido no tipo do lad
49. 1000 01 1000000 00 0 1 y struct d char nome 30 int imovel float iptu int atraso dados float multa int i achou void main void clrscr printf inDados do contribuinte printf ininNome scanf s dados nome while strcmp dados nome fim 0 1 printf inNumero do imovel scanf d amp dados imovel printf AnValor do IPTU scanf Sf dados iptu printf inMeses atrasados scanf Zd dados atraso achou 0 if dados atraso 0 multa 0 achou 1 printf An O contribuinte s nao esta em atraso e nao tem multa a pagar dados nome localiza a faixa de iptu do contribuinte i 0 while achou 0 if dados iptu gt tabela i de amp amp dados iptu lt tabela i ate multa dados iptu dados atraso tabela i porc achou 1 printf An O contribuinte s tem d meses em atraso dados nome dados atraso printf An e pagara uma multa de R 2f calculada com 0f de juros mes multa tabela i porc 100 oo oo else i printf An getch clrscr printf NnDados do contribuinte a fim para terminar scanf s dados nome printf AinFim do programa pressione lt enter gt getch Lista de Exerc cios n 9 1 Escreva um programa em que definido um vetor de registros com 5 campos Cada posi o do vetor deve consistir em uma estrutura com informa
50. 4 10 s o os correspondentes de A divididos por 2 os elementos das posi es mpares 1 3 9 s o os correspondentes de A multiplicados por 3 4 Fazer um programa que leia um vetor A de 20 elementos inteiros e calcule e imprima o valor de SS onde 2 A 1 A 20 P A 2 A 19 P A 10 A 11 P 5 Modificar o programa que calcula o faturamento do armaz m para que o nome das mercadorias sejam tamb m inclu dos no programa como dados armazenados num vetor ou seja sem serem pedidos para o usu rio vetor2 c 6 Fazer um programa que leia um vetor com 15 nomes de pessoas Em seguida leia v rios nomes ltimo nome um por vez e pesquise a exist ncia deste nome no vetor e imprima uma mensagem dizendo se o nome foi encontrado ou n o Caso o nome tenha sido encontrado o algoritmo tamb m deve dizer quantas vezes ele se repetiu 7 Fazer um programa que leia v rios n meros inteiros ltimo n mero 1 e imprima o n mero de vezes que os valores 0 10 foram fornecidos 7 2 Matrizes Multidimensionais Declara o de uma matriz multidimensional Sintaxe tipo nome tamanho1l tamanho2 tamanhon Exemplos int vas 2 Matriz bidimensional de inteiros chamada id com 3 elementos na primeira dimens o 2 elementos na segunda float E 2 3 SES Matriz tridimensional de reais com 2 elementos na primeira dimens o 3 na segunda e 5 na terceira 86 Inicializac o de matr
51. 5 se a vari vel de destino for do tipo float 50 4 2 se a vari vel de destino for do tipo int 50 5 0 37 Tabela 4 3 Preced ncia entre Operadores Aritm ticos Operadores ERRO 5 Quando dois operandos t m o mesmo n vel de precend ncia eles s o avaliados da esquerda para a direita Exemplo 2 3 4 2 10 2 2 12 20 2 14 10 4 Para se alterar a ordem de preced ncia devem se utilizar par nteses Exemplo 2 my ceu Do RO 2 5 Ww UP sev Dor E 5 20 10 10 4 2 1 Convers o de Tipos em Express es Aritm ticas s convers es aritm ticas impl citas seguem a seguinte regra Se um operador bin rio tiver dois operandos de tipos diferentes o tipo de menor representa o convertido para o de maior representa o Exemplo char ch int I float f double d resultado ch 1 X d f 38 long double d float unsigned e long int I gt int short char Hierarquia de Convers o 4 3 Operador Molde Permite for ar que uma express o seja de um tipo especificado Sintaxe tipo express o Exemplo x UE Resulta em 1 porque a parte fracion ria truncada y float 3 2 Resulta em 1 5 porque 3 convertido para float antes de se efetuar a divis o 39 4 4 Operadores de Atribui o Compostos Permitem combinar uma opera o matem tica bin ria com uma opera o de atribui o de va
52. A Linguagem de Programac o C 1 Conceitos B sicos 1 1 Linguagens de Programa o Uma linguagem um conjunto sistem tico de regras para comunicar id ias como as linguagens naturais Uma Linguagem de Programa o LP difere das Linguagens Naturais LN em v rias formas Linguagem Natural Linguagem de Programa o Pessoa pessoas Pessoa computador EL Ey Conte do gen rico TT Meio usado voz L Meio usado cadeias de caracteres Uma linguagem de programa o uma linguagem utilizada por uma pessoa para expressar um processo atrav s do qual o computador possa resolver um problema Os que possuem uma compreens o limitada da LN s o limitados na complexidade de expressar seus pensamentos especialmente em termos de capacidade de abstra o Programadores que tiveram pouca educa o formal em Ci ncia da Computa o tendem a continuar a usar a mesma LP mesmo que esta esteja em desuso A aprendizagem cont nua fundamental necess rio que os programadores conhe am os fundamentos das LPs para que possam ler entender e aprender com os manuais e livros t cnicos das novas LPs e os novos paradigmas que venham a surgir 1 2 Implementa o de linguagens de programa o O computador uma m quina capaz de seguir uma esp cie de algoritmo chamado programa que est escrito em linguagem de m quina Os 2 principais componentes de um computador s o a mem ria interna e o processador
53. NOTA MIN 7 float nota 1 nota 2 nota 3 nota 4 float media float calcula media float x1 float x2 float x3 float x4 void main printf nQual a primeira nota do aluno scanf Sf nota 1 printf inQual a segunda nota do aluno scanf Sf nota 2 printf inQual a terceira nota do aluno scanf Sf nota 3 printf inQual a quarta nota do aluno scanf Sf nota 4 media calcula media nota 1 nota 2 nota 3 nota 4 if media gt NOTA MIN printf n0O Aluno foi aprovado com m dia 2f media else print getch Ano Aluno foi reprovado Nota insuficiente 2f media float calcula media float x1 float x2 float x3 float x4 float soma media soma x1 x2 x3 x4 media soma 4 return media 68 69 6 9 Recurs o Uma fun o em C pode chamar a si pr pria Exemplo 6 5 Fatorial c calcula o fatorial de um n mero recursivamente finclude lt stdio h gt double resultado int numero double fatorial int valor void main void printf nPrograma que calcula o fatorial de um numero printf NnDigite o numero scanf d amp numero resultado fatorial numero printf nO fatorial de d g numero resultado printf AnFim do programa getch double fatorial int valor if valor 1 return 1 else valor fatorial valor 1 return valor 6 10 Reg
54. a a Especificac o de Constantes Tipo de dado Sufixo Exemplos de Constantes int x L 123 21000 234 long int L 35000L 34L short int 10 12 90 unsigned int U 10000U 987U float F 123 23F 4 34e 3F double 123 23 0 9876324 long double L 1001 2L gt e Constante caracter envolvida por Exemplo a Yo e Constante string conjunto de caracteres colocados entre aspas Ateng o N o confundir strings com caracteres Exemplo a Bom dia e Constante hexadecimal base 16 deve consistir de um 0x seguido por uma constante na forma hexadecimal Exemplo 0x80 29 28 e Constante octal base 8 deve consitir de um O seguido de uma constante na forma octal Exemplo 012 Declarac o de constantes e Constantes simb licas S o constantes representadas por um nome Ao defini las deve se atribuir a elas um valor Uma constante simb lica definida usando se a diretiva define Sintaxe define NOME DA CONSTANTE valor Convenc o nome de CONSTANTES letras mai sculas nome de vari veis letras min sculas Exemplo tdefine PI 3 1416 tdefine LETRA a e Uso do modificador de tipo const Sintaxe const tipo da constante NOME valor Exemplo const int ALTURA 30 const float CRITERIO 0 0008 const char LETRA a Exemplo 3 2 Altura c Transforma a altura de uma pessoa de metros para cent metros finclude stdio h
55. a de comando Exemplo prog 18 ds sol po mde do programa H dois argumentos internos especiais aos quais d se tradicionalmente o nome de argc e argv e argc um inteiro declarado como int argc Cont m o n mero de argumentos da linha de comando O nome do programa interpretado como primeiro argumento portanto argc pelo menos 1 e argv um ponteiro para uma matriz de ponteiros para caracter 4 Cada elemento da matriz aponta para um argumento da linha de comandos declarado como char argv onde os colchetes vazios indicam que uma matriz de tamanho a ser determinado Todos os argumentos da linha de comando s o interpretados como strings Exemplo main int argc char argv Definindo a fun o main desta forma indica que se pretende entrar com argumentos pela linha de comando 76 Exemplo 6 10 Main c Ilustra a entrada de argumentos pela linha de comando include lt stdio h gt tinclude lt stdlib h gt void main int argc char argv lint arg if argc lt 2 puts Forneca algum argumento na linha de comando n exit 0 puts Voce forneceu os seguintes argumentos Nn for arg 1 arg lt argc arg printf argv Sd sin arg 1 argv arg 1 6 12 Uso de arquivos cabecalho h E h bito manter em um arquivo separado e Declara es de prot tipos de fun es e Declara
56. a terceira nota do aluno scanf Sf amp nota 3 printf inQual a quarta nota do aluno scanf Sf amp nota 4 media nota 1 nota 2 nota 3 nota 4 4 if media gt NOTA MIN printf Ano Aluno foi aprovado com m dia 2f media else if media lt NOTA MIN EXAME printf Yno Aluno ficou de exame na disciplina else printf ino Aluno ficou de DP na disciplina reprovado getch p ra a tela printf Mn Fim do programa 50 5 2 A instruc o switch Comando de selec o m ltipla que testa sucessivamente o valor de uma express o contra uma lista de constantes inteiras ou de caracteres Quando o valor coincide os comandos associados quela constante s o executados Sintaxe switch express o case constante 1 comandos 1 break case constante 2 comandos 2 break case constante n comandos n break default comandos default Como funciona express o corresponde a um valor inteiro do tipo long int ou char Compara se este resultado com o valor de constante 1 at constante n Se for encontrada alguma equival ncia o programa passa a executar os comandos a partir deste ponto at encontrar uma instru o break Se nenhuma equival ncia for encontrada os comandos relativos a default s o executados Caso n o haja a
57. ado f 1 Ponto flutuante double e E Ponto flutuante em notac o cient fica com e min sculo mai sculo g G Usa e E ou f F o que for mais curto o Inteiro octal bX Inteiro hexadecimal com letras em min sculo mai sculo 3X 1x longo Sp Apresenta um ponteiro n O argumento associado um ponteiro para inteiro no qual o n mero de caracteres escritos at esse ponto colocado Escreve o simbolo 2 1 1 Mais sobre a fun o printf O modificador Precedendo se os especificadores de formato g f e e com garante se que haver um ponto decimal mesmo que n o haja d gitos decimais Se o especificador de formato x precedido por um o n mero hexadecimal ser escrito com um prefixo 0x O modificador n o pode ser aplicado a nenhum outro especificador de formato O modificador Os especificadores de largura m nima de campo e precis o podem ser fornecidos como argumentos de printf em lugar de constantes usa se para tanto o como substituto Exemplo printf f 10 4 123 3 Os modificadores l e h Podem ser aplicados aos especificadores de formato d i o u e x O modificador l diz a printf que segue um tipo de dado long 13 Exemplo printf S1d1n longint um long int ser mostrado O modificador h diz a printf que segue um tipo de dado short Exemplo printf shu n long um short unsigned
58. alhadas n mero de horas extra e n mero de dependentes O sal rio calculado da seguinte maneira SAL RIO BRUTO n mero de horas trabalhadas VHT n mero de horas extra VHE n mero de dependentes VCD SAL RIO L QUIDO SAL RIO BRUTO desconto IR desconto INSS Os valores de VHT VHE VCD desconto de IR e desconto de INSS devem ser lidos de um arquivo como no exemplo mostrado abaixo VHT VHE VCD desconto IR desconto INSS 1296 do 896 do R 14 00 R 21 00 R 100 00 SALARIO SALARIO BRUTO BRUTO 6 O programa deve imprimir na tela e num arquivo de sa da um cabecalho com o nome da empresa e os nomes de todos os funcion rios seguidos do seu sal rio bruto do desconto do IR do desconto do INSS e do seu sal rio l quido 7 Fazer um programa que leia um arquivo de no m ximo 100 registros contendo os nomes e os pre os de v rios produtos e armazene os numa tabela vetor de registros Em seguida pergunte ao usu rio o nome do produto flag FIM e forne a o pre o correspondente 8 Fazer um programa que leia um arquivo de no m ximo 100 registros contendo os nomes e as estaturas de v rias pessoas Em seguida imprima os dados do arquivo na tela e o nome e a estatura da pessoa mais alta 131 11 Ponteiros 11 1 Armazenamento de dados na mem ria Cada espa o da mem ria tem um endere o associado a ele 2A00 2A01 2A02 2A03 2A04 2A05 Ao se declarar uma vari vel
59. alquer ndice o endere o do primeiro elemento da mesma portanto neste caso o operador amp n o deve ser usado Exemplo scanf s str str j um ponteiro Descartando espa os em branco indesejados Um caracter de espa o em branco na string de controle faz com que scanf salte um ou mais caracteres de espa o em branco que ocorram na entrada Exemplo int nl n2 scanf Sd amp nl amp n2 Use scanf com o espa o em branco entre os d para ler os n meros 1 2 Caracteres diferentes de espaco em branco na string de controle Um caracter diferente de espa o em branco na string de controle faz com que scanf leia e ignore caracteres iguais na entrada Exemplo scanf td amp nl amp n2 r faz com que scanf leia um inteiro leia descarte uma v rgula e leia ent o outro inteiro Se o caracter n o for encontrado scanf termina 19 Uso de especificadores de largura m xima Ao se especificar uma largura m xima para uma string apenas o n mero de caracteres especificado ser lido Exemplo Scanf 20s str M Apenas os 20 primeiros caracteres ser o passados para str Se a string no exemplo anterior tiver mais que 20 caracteres uma chamada subseq ente a qualquer func o de entrada de caracteres comecar onde esta terminou Utilizando um Scanset Um scanset define um conjunto de caracteres que pode ser lido pela scanf
60. ama pois o seu uso tem pontos negativos Vari veis globais s devem ser usadas quando se necessita de um mesmo dado 72 e Ocupam mem ria durante todo o tempo de execu o do programa e Podem gerar a ocorr ncia de erros devido a efeitos colaterais e Tornam mais dif cil a depura o do programa Exemplo 6 7 Globais c Mostra como se comportam as vari veis globais include lt stdio h gt int varl 1 var2 2 void funcaol void void funcao2 void void main void AnValor das variaveis antes de chamar a funcaol varl d var2 d varl var2 lor das variaveis depois de chamar a funcaol var2 d varl var2 uncao2 rintf NnValor das variaveis depois de chamar a funcao2 varl d var2 d varl var2 printf NnFim do programa void funcaol void int varl 100 var2 100 printf AnValor das variaveis dentro da funcaol varl d var2 d varl var2 void funcao2 void varl 1 var2 2 printf XnValor das variaveis dentro da funcao2 varl d var2 d varl var2 6 10 3 A declarac o extern Um programa extenso pode se encontrar distribu do em v rios arquivos que s o compilados separadamente e linkeditados juntos Uma vari vel global pode ser usada em fung es que se encontrem em diferentes arquivos mas s pode ser declarada uma nica vez Para informar a todos os arquivos do programa a respe
61. c cios N 6 1 Escreva um programa que fornecidos 3 n meros pelo usu rio calcule o produto do primeiro pela soma dos outros dois Use para tanto duas fun es uma que retorna a soma de dois n meros e outra que retorna o produto de dois n meros 2 Escreva um programa que leia v rios valores inteiros n fornecidos pelo usu rio flag 1 e calcule a soma dos inteiros de 1 a n para cada n lido Use uma fun o para realizar o c lculo 3 Fa a um programa que leia v rios pares de n meros o primeiro corresponde ao NUMERADOR e o segundo ao DENOMINADOR flag NUMERADOR 0 Em seguida chame duas fun es que recebam o numerador e o denominador como par metros e devolvam a primeira o resultado da divis o real entre eles e a segunda o quociente e o resto da divis o inteira 4 Fa a um programa que leia um arquivo contendo o nome de v rias empresas ou pessoas e o seu telefone e armazene os dados num vetor Em seguida pe a ao usu rio o nome das empresas pessoas flag fim e chame uma fun o que receba o nome como par metro e devolva o n mero do telefone correspondente telefone este que deve ser informado ao usu rio 5 Escreva um programa que leia v rios valores reais n fornecidos pelo usu rio flag 0 e chame uma fun o que calcule a sua raiz quadrada e informe se a raiz exata ou n o 6 Escreva um programa que leia a data de nascimento de v rias pessoas dia m s e ano flag dia 1 e chame uma fun o que calcu
62. canf d amp mat il Jjl UI gt Impress o f por linhas for i20 i 4 i Bor 59 07 j lt 5 j printf vd Ey mat i j printic at Exemplo 7 5 Dada a matriz abaixo fa a um programa que a imprima por linhas e por colunas 0 12 3 m e s la LIS R A L N O matl c ilustra impressao de matriz por linhas e por colunas tinclude lt stdio h gt tinclude conio h char mat 3 4 M E S A VAL NS OS RE FAR FO Ts int 1 3 void main void clrscr printf inMatriz por linhasin for i 0 1 lt 3 i for 3 0 j 4 j printf Ge mat i j1 BERE printf NnMatriz por colunas n for 3 0 j 4 j for i 0 i 3 i printf e mat i jl1 PELA printf in Fim do programa getch 90 Exemplo 7 6 91 Dada uma matriz 4x5 faca um programa para somar os elementos de cada linha gerando o vetor somalinha Em seguida somar os elementos do vetor na vari vel total mat2 c soma as linhas e todos os elementos de uma matriz 4x5 tinclude lt stdio h gt include lt conio h gt int mat 4 5 7 3 4 5 6 1 0 4 9 1 2 3 2 4 6 5 74 0 8 int somalinha 4 ine 1 3 to0tal 20 void main void t clirscroy for i 0 i 4 i somalinha i 0 for 3 0 j 5 j
63. cao valida 5 6 Comandos de Desvios 5 6 1 O comando de desvio break Pode ser usado para terminar um case em um comando switch ou para for ar uma termina o imediata de um loop Sintaxe break Exemplo int t for t 0 t 100 t print ad ENS if t 10 break Um comando break provoca uma sa da apenas do loop mais interno 59 Exemplo 5 6 Break c Mostra todos os numeros divis veis por 2 entre 0 e 20 Ilustra o uso do comando break e include lt stdio h gt void main int izis printf Numeros divis veis por 2 entre 0 e 201n i 0 for nos 1 lt 20 for i lt 20 i if 1 2 itt break printf dNMn i 5 6 2 O comando de desvio continue Permite que se comece a pr xima itera o de um loop imediatamente Sintaxe continue Exemplo for 1 0 1 lt np 1 4 F t if a i lt 0 continue ali Se a i 0 esta instruc on o executada 60 Exemplo 5 7 Continue c Exibe todos os numeros divis veis por 3 entre 0 e 30 Ilustra o uso do comando continue include stdio h void main int i printf Numeros divis veis por 3 entre 0 e 301n for i20 1 lt 30 i if 1 3 continue printf 2din i 5 6 3 O comando de desvio goto Permite saltos ou desvios incondicionais Sintaxe goto destino sendo destino um r tulo ou um label
64. char str nome 80 char str idade 10 char ch puts Ilustra a utilizacao de getch getche puts gets puts inQual e o seu nome gets str nome puts NnQuantos anos voce tem Pode mentir gets str idade puts nQual o seu endereco Termine o com um ponto 1n do ch getch putchar ch while ch s puts n nQual o seu telefone Termine o com um ponto 1n getche while ch printf AninTchau Tchau An 23 Lista de Exerc cios N 2 1 Escreva e compile um programa que leia uma vari vel do tipo int outra do tipo float outra do tipo char e uma string todas separadas por v rgula e mostre as na tela 2 Escreva e compile um programa que receba uma vari vel do tipo float e duas vari veis do tipo int interpretadas como largura e precis o e imprima na tela a vari vel do tipo float com estes valores de largura e precis o duas vezes uma justificada direita e outra esquerda 3 Escreva e compile um programa tal que dado um n mero entre O e 255 apresente as seguintes op es Mostrar o s mbolo ASCII correspondente ao n mero Mostrar o s mbolo ASCII correspondente ao n mero que sucede aquele fornecido Mostrar o s mbolo ASCII correspondente ao n mero que antecede aquele fornecido Sair do programa Use as fun es puts e getch onde achar que pode 24 3 Tipos de Dados Dados s o informa es que podem ser n meros ou caract
65. cia de um c digo intermedi rio mais f cil de ser interpretado e n o espec fico de uma plataforma computacional O m todo dividido em duas etapas compila o para um c digo intermedi rio e interpreta o desse c digo conforme mostra a figura 1 2 3 A linguagem PERL implementada como um sistema h brido assim como as implementa es iniciais do JAVA O c digo intermedi rio do Java chamado bytecode ou c digo de bytes oferece portabilidade para qualquer m quina que tenha um interpretador e um sistema de run time associado conhecido como Java Virtual Machine H sistemas que traduzem o c digo de bytes para linguagem de m quina para permitir uma execu o mais r pida Figura 1 2 3 O processo h brido 1 3 Hist rico do desenvovimento da linguagem C Programa fonte Me Y Analisador l xico Unidades xicas Analisador sint tico Arvores de an lise parse trees Y Gerador de c digo intermedi rio C digo intermedi rio ES Dados de entrada Interpretador i i d d Resultados O processo de desenvolvimento da linguagem C e Iniciado com a cria o da linguagem BCP Martin Richards e Seguiu se a cria o da linguagem B Ken Thompson e Linguagem C criada em 1972 por Dennis Ritchie nos Laborat rios da Bell Telephone como uma linguagem para escrever sistemas operacionais Objetivo projetar o sistema Unix Primeira vez que uma l
66. de entrada Pa Computador Resultados O analisador l xico agrupa os caracteres em identificadores palavras reservadas s mbolos e operadores e O analisador sint tico monta a estrutura sint tica a partir das unidades l xicas e O gerador de c digo intermedi rio produz um programa em uma linguagem que se assemelha ou a pr pria linguagem de montagem assembly e A otimiza o opcional melhora o programa tornando o menor e mais r pido e O gerador de c digo converte a vers o do c digo intermedi rio otimizado para LM e A tabela de s mbolos cont m as informa es sobre tipos e atributos de cada nome definido pelo programador 1 2 2 Interpreta o O programa interpretador decifra as instru es escritas em uma LP No momento da execu o a instru o traduzida para linguagem de m quina e executada conforme mostra a figura 1 2 2 A vantagem que apenas partes do programa podem ser executados mas h desvantagens o processo mais lento em rela o ao processo de compila o e h maior consumo de mem ria pois h a necessidade de armazenar o c digo fonte tabela de s mbolos e o programa interpretado durante a interpreta o Programa fonte e T Dados de entrada Interpretador Figura 1 2 2 O processo de RAE interpreta o Y Resultados 1 2 3 H brido O processo h brido combina a execuc o eficiente e a portabilidade de programas A base a exist n
67. de instru es compilado dentro de um conjunto Hendif Exemplo dif SISTEMA SYSV fdefine CABEC sysv h felif SISTEMA BSD define CABEC bsd h felif SISTEMA MSDOS fdefine CABEC msdos h delse ddefine CABEC default h endif include CABEC 152 12 5 2 As diretivas Zifdef Zifndef Estas diretivas significam se definido e se n o definido respectivamente Um uso comum destas diretivas feito com o objetivo de assegurar que o conte do de um arquivo cabe alho seja inclu do apenas uma vez a fim de se evitar que o compilador acuse um erro devido a uma m ltipla inclus o M ltiplas inclus es podem ocorrer facilmente quando se faz uso de include aninhados Exemplo tifndef MSDOS didefine MSDOS conte do de msdos h aqui tendif Exemplo 12 3 Ifdef c Ilustra o uso das diretivas de compila o condicional finclude lt graphics h gt finclude lt stdlib h gt finclude lt stdio h gt finclude lt conio h gt void InitGraf void void main int midx midy int raio Raio do circulo int anguloi angulof raiox raioy Dimensoes da elipse int esquerda emcima direita embaixo Coordenadas para o retangulo fdefine CIRCULO 1 fdefine ELIPSE 2 3 fdefine QUADRADO tifndef FIGURA ddefine FIGURA QUADRADO Hendif printf FIGURA vale d n FIGURA puts Pressione qualquer tecla para ve la getch Ini
68. deiro na ocorr ncia de um erro durante a ltima opera o no arquivo e falso caso contr rio Deve ser chamada imediatamente ap s cada opera o porque a condi o de erro constantemente modificada Exemplo 10 6 Ferror c Ilustra o uso da fun o ferror finclude lt stdio h gt finclude lt stdlib h gt void main f FILE fp char nome_arq 20 char str 50 puts Forneca o nome de um arquivo a ser criado 1n gets nome arq puts Abrindo o arquivo no modo de escrita if fp fopen nome arg w NULL puts Nao foi possivel abrir o arquivo exit 1 puts Vamos escrever qualquer coisa no arquivo Por ex puts NONONONONONO fprintf fp NONONONONONO puts Esperamos que esta operacao nao resulte em erro puts Afinal o arquivo foi mesmo aberto para escrita puts Vamos testar a condicao de erro if ferror fp printf Erro de escrita no arquivo Ssin nome arg else puts Nenhum erro ocorreu puts Agora vamos rebobinar o arquivo An rewind fp puts Agora vamos ler o que foi escrito no arquivo fscanf fp Ss str puts Vamos testar novamente a condicao de erro if ferror fp printf Erro de leitura no arquivo sin nome arq puts Isto era mesmo esperado pois o arquivo foi aberto apenas para escrita in else puts Nenhum erro ocorreu puts Au revoir 124 10 11 A func o remo
69. do por um float n separados por uma virgula e um ponto e virgula in Termine com os caracteres z e pressione lt enter gt scanf d fNn amp i amp f printf Os numeros fornecidos foram d e f n i f gets str printf An Agora usando WMn scanf NM d fNNAnN amp i amp f Nn printf Forneca os mesmos numeros An separados por um ponto e virgula MnN Termine com os caracteres z e pressione lt enter gt scanf Sd SENn il amp f1 printf Os numeros fornecidos foram d e Sfin il fl gets str para pegar o lixo que sobra break printf Acione qualquer tecla para continuarMn getch 21 2 4 A fun o puts Arquivo de cabe alho a ser inclu do stdio h Permite exibir textos na tela mas n o exibe valores de vari veis Ao final de uma mensagem esta fun o automaticamente acrescenta um caracter de mudanga de linha Reconhece os mesmos c digos de barra invertida de printf Exemplo puts Tempo bom com pouca nebulosidade 2 5 A fun o gets Arquivo de cabecalho a ser inclu do stdio h L uma string de caracteres fornecida pelo teclado e coloca a no endereco apontado por seu argumento ponteiro de caracteres Podem se digitar caracteres at que seja pressionado o retorno de carro quando ent o gets retorna Quando pressionada a tecla Enter acrescentado um terminador nulo ao final da string Podem se c
70. e db f e i d n nome arq db i fprintf fp SE sd db i puts Fechando o arquivo fclose fp puts Abrindo o agora no modo de leitura if fp fopen nome arg r NULL puts O arquivo nao pode ser aberto puts O programa sera abortado exit 1 printf AnLendo com fscanf do arquivo s para as variaveis dbl e il n nome_arq fscanf fp f d amp dbl amp il printf nOs valores lidos sao dbl e il dWMn dbl il puts AnFechando o arquivo fclose fp 127 10 17 A fun o fseek Arquivo cabe alho a ser inclu do stdio h Recebe como argumentos um ponteiro para arquivo um valor inteiro que deve ser uma das macros definidas em stdio h SEEK SET In cio do arquivo SEEK CUR Posi o atual SEEK ENDFinal do arquivo e o n mero de bytes a partir da posi o dada pela macro usada Modifica o indicador de posi o de arquivo movendo o o n mero de bytes especificado a partir da posi o especificada Retorna O se bem sucedida e um valor n o nulo quando da ocorr ncia de erro Exemplo 10 9 Fseek c Mostra o uso da funcao fseek finclude lt stdio h gt finclude lt stdlib h gt void main FILE fp char nome arq 20 char ch long int numbytes int i puts Primeiramente vamos construir um arquivo N contendo uma sequencia de chars In puts Forneca o nome do arquivo gets nome arg if fp fopen nome arq w NULL
71. e forma semelhante a sua equivalente puts Grava strings em um arquivo Recebe como argumentos a string a ser escrita e um ponteiro para arquivo Devolve EOF se ocorre um erro Exemplo char str 80 Al al Terezinha FILE fp fputs str fp Escreve a string str no arquivo apontado por fp 10 8 A fun o fgets Arquivo cabe alho a ser inclu do stdio h Opera de forma semelhante a sua equivalente gets L strings de caracter de um arquivo Recebe como argumentos o nome da string que vai receber o texto lido o comprimento do texto a ser lido e um ponteiro para arquivo A string lida at que um caracter de nova linha seja lido ou que o comprimento especificado seja atingido Um nulo acrescentado ao final da string Retorna um ponteiro para a string para onde a cadeia direcionada ou um nulo na ocorr ncia de erro Exemplo define COMPRIMENTO 80 char str COMPRIMENTO FILE fp while feof fp fgets str COMPRIMENTO fp 121 Exemplo 10 4 Fpufge c Ilustra o uso das fun es fputs e fgets finclude lt stdio h gt finclude lt stdlib h gt finclude lt string h gt fdefine COMPRIMENTO 80 void main FILE fpl FILE fp2 char nome arquivol COMPRIMENTO char nome arquivo2 COMPRIMENTO char str COMPRIMENTO int conta linha puts Forneca o
72. e programa pode n o funcionar em alguns pcs finclude lt stdio h gt finclude lt stdlib h gt finclude lt conio h gt void main float db 10 1010 db1 ine i L0 X1 char nome 20 Teste de impressora clrScri puts Enviando dados para a impressora printf inEscrevendo com fprintf na impressora o conteudo del An frase s db f i dWMn nome db i oo fprintf stdprn Ss f Sd nome db i printf Ann puts Finaliza a impressao e o programa getch 130 Lista de Exerc cios N 10 1 Substitua no exemplo 10 3 o uso da fun o putc pela fun o fprintf 2 Modifique o programa do exemplo 10 4 de forma que n o seja necess rio abrir o arquivo apontado por fp1 duas vezes 3 Crie um arquivo contendo qualquer texto usando um editor do DOS ou do Windows Escreva um programa que o abra no modo apend a e permita ao usu rio que leia o que o arquivo cont m e em seguida escreva no mesmo arquivo o que quiser D ao usu rio a op o de deletar ou n o o arquivo antes de sair do programa 4 Fazer um programa que leia um arquivo texto contendo os nomes de v rias pessoas e gere um arquivo texto de sa da com os tamanhos dos nomes lidos no arquivo de entrada 5 Fazer um programa para calcular a folha de pagamentos dos funcion rios de uma pequena empresa Devem ser lidos de um arquivo os seguintes dados de cada funcion rio nome n mero de horas trab
73. elemento votos d i scanf Sd votos 1 gt Impress o for i90 1405002 i printf in votos d d i votos i Exemplo 7 2 Um armaz m trabalha com 100 mercadorias diferentes identificadas de 1 a 100 O dono do armaz m anota a quantidade de cada mercadoria vendida durante o m s Ele tem uma tabela com os pregos de venda de cada mercadoria Escreva um programa para calcular seu faturamento mensal vetor2 c calcula o faturamento de um armaz m finclude lt stdio h gt include lt conio h gt fdefine MAX 100 float preco MAX quant MAX fatura 0 UNE ui void main void Ll eltscr s printf inCalcula o faturamento de um armaz m for i20 i MAX i printf MNnDigite o pre o da mercadoria d i scanf f amp preco il l printf inDigite a quantidade da mercadoria d i scanf Zf quant 1 fatura preco i quant i printf in0 faturamento do mes foi R 5 2f fatura printf NnFim do programa getch 84 Exemplo 7 3 Dado um vetor de 12 elementos verificar se existe um elemento igual a cAave Se existir imprimir a posig o onde foi encontrado sen o imprimir uma mensagem dizendo que n o existe O vetor e a chave ser o lidos vetor3 c localizac o de um elemento no vetor
74. eres com as quais o programa opera 3 1 Vari veis Representam localiza es da mem ria onde s o armazenados valores que podem ser modificados pelo programa Nomes de vari veis e Podem conter letras n meros e o caracter de sublinhado Exemplo BR 01 e O primeiro caracter deve ser uma letra ou caracter de sublinhado e Letras mai sculas e min sculas correspondem a vari veis diferentes Exemplo A1 al e N o podem ser usadas palavras reservadas Tipos b sicos e char e int e float e double e void Modificadores de tipo e signed e unsigned e long e short O tamanho em bytes e a faixa destes tipos variam em fung o do processador e da implementac o do compilador O padr o ANSI estabelece uma faixa m nima mostrada na Tabela 3 1 Tabela 3 1 Tipos de Dados Definidos no Padr o ANSI 25 Tipo Palavra Chave Tamanho Faixa m nima aprox em bytes caracter char 1 127 a 127 caracter unsigned 1 0a255 n o sinalizado char caracter sinalizado signed char 1 127 a 127 inteiro int 2 32 767 a 32 767 inteiro n o sinalizado unsigned int 2 0 a 65535 inteiro signed int 2 32 767 a 32 767 sinalizado inteiro curto short int 2 32 767 a 32 767 inteiro curto n o sinalizado unsigned 1 0 a 65535 short int inteiro curto sinalizado signed short 1 32 767 a 32 767 int inteiro longo long int 4 2 147 483 647 a 2 147 483 647 inteiro longo sinalizado signed
75. finclude lt stdio h gt finclude lt conio h gt fdefine TAMVET 12 int vet TAMVET i chave achou void main void printf in Localiza um elemento num vetor printf in Digite os elementos do vetor An for i20 i TAMVET i printf MNnvet d i scanf d amp vet i printf NnChave a ser procurada flag 1 scanf d amp chave while chave 1 achou 0 indica que n o achou ainda i20 while achou 0 amp amp i TAMVET if vet i chave achou 1 indica que achou a chave printf inA chave d est na posi o d chave i else tti if achou 0 printf inA chave n o foi encontrada printf inChave a ser procurada flag 1 scanf d amp chave printf inFim do programa getch 85 Lista de Exerc cios N 7 1 1 Fazer um programa que leia uma s rie de 10 dados que representam a altura das pessoas armazene os no vetor ALTURA e imprima o vetor a maior altura e o n mero de pessoas que possuem esta altura 2 Fazer um programa que leia um vetor de 20 letras e imprima este vetor em ordem contr ria da que foi lida 3 Fazer um programa que leia um vetor A de 10 elementos reais e construa e imprima um outro vetor B formado da seguinte maneira os elementos das posi es pares 2
76. gt int dado 2 apdado main 1 puts Vamos fazer apdado apontar para dadoWMn apdado amp dado printf AnValor de dado Sd dado printf Valor de apdado p apdado printf AnValor de apdado d apdado printf AnValor de amp dado p amp dado getch return 0 134 11 3 Aritm tica de Ponteiros Soma e Subtrac o de Inteiros As nicas opera es poss veis entre ponteiros e inteiros s o a subtra o e adi o 11 3 1 Adi o de inteiros a ponteiros adi o de um inteiro a um ponteiro faz com que o mesmo aponte para o endere o resultante da soma do endere o atual com o resultado da multiplica o do inteiro em quest o pelo tamanho em bytes do tipo de objeto para o qual ele aponta Exemplo Suponhamos que p seja um ponteiro que esteja apontando para o endere o 2001 ptt Se p aponta para um caracter p ir apontar para 2001 Se p aponta para um inteiro 1 1 byte 2002 p ir apontar para 2001 1 2 bytes 2003 Se p aponta para um float p ir apontar para 2001 1 4 bytes 2005 Depois 2000 2001 2002 2003 2004 2005 135 2000 2001 2002 2003 2004 2005 2000 2001 2002 2003 2004 2005 Pode se somar qualquer inteiro a um ponteiro Exemplo a3 X FOX px amp X px px 5 px passa a apontar para o quinto elemento do tip
77. hile opcao lt 1 opcao gt 4 switch opcao case SAIR printf inFim do programa getch exit 0 break case CORRIGIR corrigeInformacoes getch break case MONTALISTA numero de amigos montaLista getch break case VERINFORM verInform numero de amigos getch break default puts Voce nao escolheu uma opcao valida 78 void corrigeInformacoes void puts Forneca o seu nome gets inf sobre voce nome put s Forneca seu telefone gets inf sobre voce fone put s Forneca o dia do seu nascimento scanf d amp inf sobre voce data nascimento dia puts Forneca o mes do seu nascimento ddp c E T uU HOT puts Forneca o ano do seu nascimento scanf d amp inf sobre voce data nascimento ano fflush stdin PUESTAS SANAR EERE EAN AA ER UN I SUE DO O DAR z printf Seu nome e s In inf sobre voce nome printf Seu telefon s An inf sobre voce fone printf A data em que nasceu foi d d d 1n inf sobre voce data nascimento dia inf sobre voce data nascimento mes inf sobre voce data nascimento ano puts RR KCKCKCK Ok RR KK COO CK CK CK OC KK CK CK OK KK KK CK ROI RAR IT H int montaLista void static int conta_amigo 0 char resposta do puts Deseja entrar com informacoes sobre algum amigo s n resposta getche if resposta s resposta S puts nForneca o nome do seu amigo gets agenda conta
78. ibui como resultado o valor da express o 2 caso contr rio atribui como resultado o valor da express o 3 Exemplo c a b 24 5 se a b ent o c 4 caso contr rio c 5 4 9 Operador V rgula Usado para encadear diversas express es v rgula provoca uma seq ncia de opera es Quando usada do lado direito de uma senten a de atribui o o valor atribu do o valor da ltima express o da lista separada por v rgulas Exemplo x y 3 y 1 Primeiro atribui o valor 3 a y e depois o valor 4 a x Exemplo 4 5 Condic c Mostra o uso do operador condicional finclude lt stdio h gt finclude lt stdlib h gt void main int anos char mensagem mensagem char malloc 50 printf inQuantos anos voce tem 1n scanf d 8anos mensagem anos gt 30 anos gt 40 Cuidado dos enta nao sai mais A Entao voce ja e um a balzaquiano a N Voce ainda esta na flor da idade printf Ssin mensagem Exemplo 4 6 Virgula c Mostra o uso do operador v rgula finclude lt stdio h gt void main IAE ds int X printf ityitxin for i 0 i 10 i x y i ytt printf dNt dNt dNn i y x Tabela 4 11 Preced ncia de todos os operadores Operadores 1 gt un rio un rio tipo sizeof AE lt lt gt gt lt l
79. id main void linha 100 linha 101 printf Linha corrente Saya _ LINE linha 103 12 7 A Diretiva error Permite que se reportem erros durante o est gio de pr processamento Sintaxe error mensagem Quando a diretiva encontrada a mensagem de erro mostrada 12 8 A Diretiva pragma Esta diretiva executa tarefas espec ficas de implementa o Cada compilador livre para suportar nomes especiais que t m comportamento definido pela implementa o quando precedido por pragma Lista de Exerc cios 12 1 Defina macros que calculam o quadrado o cubo e a quarta pot ncia de um valor a ser fornecido pelo usu rio Defina cada uma delas usando a defini o da macro anterior Exiba o resultado dos c lculos usando macros que utilizem o operador para imprimir mensagens Remova a defini o das macros ao final do programa 2 Use as diretivas de compila o condicionais para escrever um programa que imprima ou o quadrado ou o cubo ou a quarta pot ncia de um n mero conforme seja definida a macro POTENCIA Use as macros definidas no programa do exerc cio 1 para o c lculo das pot ncias 155 Bibliografia SCHILDT H Completo e Total S o Paulo Makron Books 1997 MIZRAHI V V Treinamento em Linguagem C M dulo I e II S o Paulo Makron Books 1990 CALVERT C Programando Aplicac es em Windows com C e C Rio de Janeiro Berkeley 1994 GOTTFRIED B
80. idade e de incompatibilidade com a mo a que o antecede Estes ndices s o encontrados comparando se as 10 respostas do rapaz com as respectivas respostas da mo a Se as respostas coincidem soma se 1 afinidade caso contr rio soma se 1 incompatibilidade Al m disto deve ser calculada a diferen a l quida entre os 2 ndices afinidade incompatibilidade Os resultados devem ser impressos indicando o nome da mo a e dos 9 rapazes pretendentes junto com o valor de seus 2 ndices Ao final de cada seq ncia deve ser indicado o nome do rapaz que mais se afina com a mo a 114 10 Arquivos O conceito de Stream Para fornecer ao programador uma interface independente de dispositivo o sistema de E S do C trabalha com um conceito abstrato denominado stream que consiste em um dispositivo l gico o qual associado ao dispositivo f sico denominado arquivo Um arquivo por sua vez pode ser desde um arquivo propriamente dito at um terminal ou uma impressora 10 1 Declarac o de Arquivos O ponteiro de arquivo maioria das fun es tem como argumento um ponteiro de arquivo que permite o acesso a v rias informa es sobre o arquivo seu nome status posi o atual etc identificando um arquivo espec fico em disco usado pela stream associada para direcionar as opera es das fun es de E S uma vari vel ponteiro do tipo FILE definido em stdio h Exemplo FILE Tp
81. il i2 145 Lista de Exerc cios 11 1 Modifique o valor da vari vel dado do exemplo 11 1 somando o a um valor inteiro fornecido pelo usu rio por m acessando o atrav s do ponteiro que aponta para ele 2 Defina um vetor de inteiros de comprimento 12 Crie um ponteiro que aponta para ele Preencha o vetor com valores iguais a de seus ndices Ex a 2 2 acessando os seus elementos atrav s do ponteiro Forne a ao usu rio a op o de ver os elementos do vetor das seguintes formas Ver todos os elementos um a um Ver apenas os elementos de ndices pares Ver apenas os elementos cujos ndices s o divis veis por 3 Ver apenas os elementos cujos ndices s o divis veis por 4 Use aritm tica de ponteiros 3 Defina um vetor de qualquer tipo com 10 elementos Pe a ao usu rio que forne a dois inteiros entre O e 9 Apresente lhe uma mensagem dizendo qual o elemento que se localiza na posi o de mem ria mais alta Usando subtra o de ponteiros Usando compara o entre ponteiros 4 Escreva uma fun o que recebe um valor inteiro entre 1 e 5 fornecido pelo usu rio na fun o principal e imprime uma mensagem conforme o valor recebido do tipo Voc escolheu a op o 1 se o valor for 1 Use para tanto um vetor de ponteiros para strings 5 Escreva um programa que recebe tr s n meros diferentes os atribui a tr s vari veis a b e c e chama uma fun o que coloca em a o valor do menor em b o do
82. ima break default printf inVoce n o escolheu nenhuma das alternativas v lidas printf in Fim do programa getch 52 5 3 A Instruc o for Permite repetir um bloco de comandos um determinado n mero de vezes Sintaxe for inicial condic o incremento bloco de comandos Como funciona As express es inicial e incremento s o em geral atribui es e condi o uma express o relacional A express o inicial avaliada consistindo geralmente na inicializa o de uma vari vel Em seguida avaliada condi o Se condi o verdadeira avalia se a express o incremento executando se o bloco de comandos e avaliando se novamente condi o Se condi o for falsa o loop encerrado Representa o esquem tica de um comando for Avalia express o inicial Avalia Incremento Avalia Condi o Executa Comandos Exemplo for i 3 i 5 i printf 0O valor de i e din i 53 Pode se omitir a express o de inicializa o se esta j tiver sido avaliada anteriormente no programa por m o ponto e v rgula deve permanecer Exemplo qe for z1 521413 printf O valor de i d n i A express o inicial pode ser qualquer express o v lida em C Exemplo DESO for printf comecou i lt 5 i printf O valor de i d n i Pode se tamb m omitir a express o incremento e avali la no corpo da instru o fo
83. ine FIM como vai printf concat COMECO FIM 149 Exemplo 12 1 Define c Ilustra o uso da diretiva include stdio h Fine MENSAGEM Vamos mostrar alguns usos da diretiva def fine concatena a b a b fine imprimir printf fine ler scanf fine RAZAO a b a b fin DEZ 10 fine ImprimindoMensagem mens imprimir fmens fine ImprimindoRazao razao x y printf trazao f RAZ O x y define PulaLinha printf Nn MM O O O OO O void main float a b primir concatena MEN SAGEM r primir Forneca dois floats a e bn Sf f amp a amp b laLinha ImprimindoMensagem A razao entr laLinha ImprimindoRazao a b a b 12 3 Macros Pr Definidos O padr o ANSI define cinco macros intr nsecas e LINE expandida para o n mero da linha do arquivo fonte na qual invocada e FILE _ expandida para o nome do arquivo na qual invocada e TIME expandida para o instante da compila o do programa e DATE expandida para a data da compila o do programa STDC expandida para uma constante igual a 1 se o compilador est em conformac o com o padr o ANSI 150 Exemplo 12 2 Macros c Ilustra o uso de algumas macr
84. inguagem de alto n vel foi designada especificamente para o desenvolvimento de sistemas e nicialmente usada apenas em sistemas UNIX e Unica especificac o formal The C Reference Manual por Ritchie 1977 Ritchie e Brian Kerninghan expandiram para o livro The C Programming Language 1983 Padr o ANSI American National Standards Institute Objetivo de garantir portabilidade para diferentes ambientes 1 4 Caracter sticas Gerais da Linguagem C Permite ao programador definir estruturas de dados constru das com base nos seus dados primitivos Diferencia entre letras mai sculas e min sculas Permite recursividade de fun es uma linguagem de n vel m dio permite a manipulac o de bits bytes e enderecos ponteiros N o possui comandos de I O read e write devem se usar fun es espec ficas para realizar estas tarefas e Qualidades Uso abrangente Sistemas Operacionais Processadores de texto Programas Gr ficos Planilhas Compiladores Altamente port vel Utiliza poucas palavras chave 32 27 padr o KR 5 ANSI Modular Tabela 1 1 Lista das palavras chave do ANSI C auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while 22 C ret m a filosofia b sica de q
85. inhas Aninin certo ninPressione uma tecla para continuar prin prin prin puts getc LAS O Pp odds XninComo funciona o caracter de retrocesso An Obtem se com An printf N 5 retrocessos b b b ib ib certo NV Nn 5 retrocessos b b b b b certo ninPressione uma tecla para continuar prin prin prin puts getc prin prin prin puts getc prin prin prin puts getc N in nComo funciona o caracter de retorno de carro Mn Obtem se com Mn printf 1 3 retornos de carro NNrNNrNNMr certo V An 3 retornos de carro NrNrNr certo AninPressione uma tecla para continuar N XninComo funciona o caracter de tabulacao horizontal An Obtem se com An printf 1 3 tabulacoes horizontais NNtNNENNE certo V Nn 3 tabulacoes horizontais NtNtNt certo nin Fim do programa DADAS Ert DA cr ct 2 2 Variante da fun o printf sprintf id ntica func o printf exceto pelo fato de que a sa da ao inv s de ir para a tela colocada em uma matriz caracter que o primeiro argumento da fun o Exemplo char str 80 Sprintt str sd 98 80 c o str conter 80 c o 2 3 A fun o scanf Arquivo de cabecalho a ser inclu do stdio h biblioteca entrada sa da L dados fornecidos pelo teclado Sintaxe scanf
86. int ser mostrado O modificador L Pode anteceder o especificador de ponto flutuante e f ou g e indica que segue um long double Justificando a sa da Para se justificar a sa da esquerda o default justificar direita coloca se um sinal de menos imediatamente ap s o 96 Exemplo fdoat Ele 12 5 printf 8 3fin f1 Justifica esquerda um n mero em ponto flutuante com 3 casas decimais e um campo de 8 caracteres O especificador de precis o O especificador de precis o aplicado a um dado em ponto flutuante determina o n mero de casas decimais mostrado Exemplo float fl 12 112131415 printf 3fin f1 Especifica que 3 casas decimais devam ser mostradas Quando aplicado a um dado inteiro determina o n mero m nimo de d gitos que aparecer o sendo que zeros iniciais s o adicionados para completar o n mero de digitos solicitado Quando aplicado a strings determina o comprimento m ximo do campo Se a string for maior que a largura m xima os caracteres ser o truncados Exemplo printf DA a string Mostra uma string de pelo menos 3 e n o excedendo 5 caracteres 14 Exemplo 2 1 Printf c Ilustra v rios especificadores de formato da func o printf seu uso com especificadores de largura e precis o bem como modificadores e justifica o include stdio h include stdlib h include conio h de
87. ionais em uma nica express o Tabela 4 6 Operadores L gicos Operador A o amp amp e Avalia como 1 verdadeiro se ambas express es forem verdadeiras caso contr rio avalia como O falso ou Avalia como 1 verdadeiro se pelo menos uma express o for verdadeira caso contr rio avalia como O falso n o Avalia como 1 verdadeiro se a express o da direita for falsa e O falso se a express o da direita for verdadeira Exemplos 5 gt 2 dl amp amp 31 2 avalia como 1 verdadeiro 1 3 gt 2 4 2 avalia como 1 verdadeiro 1 0 3 lt 2 4 2 avalia como 0 falso 0 0 b ou eED avalia como 1 verdadeiro 0 438 avalia como 0 falso 41 Tabela 4 7 Tabela Verdade dos Operadores L gicos p q p amp amp q pl p 0 0 0 0 1 0 1 0 1 1 1 1 1 1 0 1 0 0 1 0 Tabela 4 8 Preced ncia dos Operadores L gicos Operador amp amp Express es conectadas por operadores l gicos s o avaliadas da esquerda para a direita e a avaliac o p ra t o logo a veracidade ou falsidade do resultado for reconhecida Em qualquer expressio que espere um valor l gico o resultado ser falso se o valor for 0 verdadeiro para qualquer outro valor 4 7 Operadores bit a bit Permite a manipula o direta com bits individuais de vari veis inteiras Os operadores bit
88. ipo de vari vel de retorno nome da fun o os tipos de vari veis que s o os par metros formais e opcionalmente nomes associados a cada um destes tipos Exemplos float area float lado float altura int mmc int int 6 2 Defini o da fun o primeira linha de defini o de uma fun o chamada de cabe alho da fun o deve ser id ntica ao prot tipo da fun o com exce o de n o deve haver o ponto e v rgula final o nome dos par metros formais passa a ser obrigat rio Deve conter as instru es necess rias para que a tarefa desejada seja realizada devendo estas instru es estarem contidas entre um abre e fecha chaves f que chamado de corpo da fun o Exemplo calcula a rea de um tri ngulo equil tero float area float lado float altura float result result lado lado sqrt 3 4 return result 64 6 3 O tipo de retorno de uma func o Especifica o tipo de dado que a fun o dever retornar Pode ser qualquer dos tipos de dados v lidos em C Se nenhum resultado for retornado tanto o prot tipo quanto a defini o devem ter como tipo de retorno a designac o void Se n o for declarada como do tipo void deve se incluir em algum ponto do corpo da fun o a instru o return para que seja retornado um valor fun o que a chamou Se o tipo de retorno for omitido considera se o mesmo como sendo do tipo int por default 6 4 O nome
89. ito da exist ncia de uma vari vel global deve se declar la em um deles e nos outros deve se preceder sua declarag o com a palavra chave extern o que faz com que deixe de ser uma declarag o para ser uma refer ncia Se se deseja atribuir um valor vari vel quando da sua declara o esta atribui o s deve ser feita uma vez no arquivo em que declarada Exemplo 6 8 Externl c volumes que ilustra o uso de fung es declaradas como extern Juntamente com volume c comp em o programa de c lculo de finclude lt stdio h gt finclude lt stdlib h gt extern void volume int opcao float raio altura void main void int opcao puts Calculando volumes In for puts Anl N puts 1 puts 2 puts 3 puts 4 else Volume Volume Volume Escolha uma das opcoes que seguem da esfera do cubo do cilindro Sair do programa fscanf stdin d amp opcao if opcao 1 puts AnA opcao escolhida nao e valida if opcao exi else t 0 opcao 4 volume opcao 74 Exemplo 6 9 volume c tinclude lt stdio h gt ddefine ESFERA 1 ddefine CUBO 2 fdefine CILINDRO 3 extern float raio altura void volume int opcao switch opcao case ESFERA define PI 3 1416 float volume puts Forneca o raio da esfera fscanf stdin f amp raio volume float 3 4 PI raio raio raio printf An O vo
90. izes multidimensionais e Podem ser inicializadas quando da sua declara o Exemplos Inicializando todos os elementos char id1 3 2 4 1 2 13 4 0 199 63 char id2 3 2 1 2 3 4 5 6 e Podem ser inicializadas ap s serem declaradas Exemplo for i 0 i lt 3 i for 3 0 j 2 id i j Exemplo 7 4 Primos c Exibe 4 n meros primos e calcula os 5 primeiros primos Mostra o uso de matrizes ERA tinclude lt stdio h gt tinclude lt conio h gt void main void IAE RT int num div int primos1 4 7 11 13 17 int primos e seus quadrados1 4 2 7 49 nid Ti T21 13 169 17 289 int primos2 5 int primos e seus quadrados2 5 2 puts n4 numeros primos for i 0 i 4 i printf Numero primo d dWn i 1 primos1 i puts Nn4 numeros primos e seus quadrados for 1 0 1 lt 4 1 printf inNumero primo Sd d i 1 primos e seus quadrados1 i 0 printf NtSeu quadrado dMn primos e seus quadrados1 i 1 puts inPressione qualquer tecla para continuar Nn getch puts NnAgora vamos calcular os numeros primos primos2 0 2 sabemos que 2 e o primeiro primo for i 0 num primos2 i 1 i 5 num div primos2 i for j i div gt 2 div primos2 j if num div break else if div 2 primos2 i num break puts NnPrimeiros 5 numeros primos for i 0 i lt 5 i printf O numero prim
91. le e imprima a sua idade 7 Escreva um programa que leia v rios valores inteiros n fornecidos pelo usu rio flag 0 e chame uma fun o que verifique se o n mero primo ou n o Sugest o tente dividir o n mero po 2 3 4 n se alguma destas divis es resultar em zero ele n o primo 8 Fa a um programa que forne a um menu de op es para o usu rio calcular a rea de 1 quadrado 2 c rculo 3 elipse 4 tri ngulo equil tero e de acordo com a op o escolhida chamar a fun o que fa a o c lculo desejado pedindo os par metros adequados A quadrado a A c rculo nr A elipse nrab A triang equil a2N3 4 9 Escreva um programa que receba tr s ou mais palavras como argumentos de inha de comando e as imprima na tela na ordem inversa em que foram fornecidas 10 Escreva um programa que leia v rios valores de temperaturas em graus Fahreinheit fornecidos pelo usu rio flag 1000 e chame uma fun o que calcule e imprima a temperatura em graus Celsius Celsius Fahreinheit 32 5 9 79 7 Vetores e Matrizes Um vetor ou uma matriz uma coleg o de vari veis do mesmo tipo armazenadas contiguamente na mem ria Um vetor ou uma matriz pode ser declarada como sendo de qualquer um dos tipos primitivos do C 7 1 Vetores matrizes unidimensionais Declarac o de um vetor Sintaxe tipo nome tamanho Exemplo int idades 10 Vetor chamado idades com 10 elementos
92. lor Sintaxe express o 1 equivalente a express o 1 Exemplos x b at 5 x b x 4 operador express o 2 express o 1 operador express o 2 X x b a atb x x b x x 4 VA Os operadores de atribui o compostos podem ser usados em opera es mais longas e complexas Exemplos m n tx y gt gt m m n x y m x nty gt m m x n y m y m gt m m y m x y m gt x x y y m 4 5 Operadores Relacionais S o usados para comparar express es S o avaliados como verdadeiro 0 ou falso 0 Tabela 4 4 Operadores Relacionais Operador A o igual Verifica se o primeiro operando igual ao segundo gt maior que Verifica se o primeiro operando maior que o segundo lt menor que Verifica se o primeiro operando menor que o segundo gt maior ou igual a Verifica se o primeiro operando maior ou igual ao segundo lt menor ou igual a Verifica se o primeiro operando menor ou igual ao segundo n o igual a Verifica se o primeiro operando n o igual ao segundo 40 Exemplos 4 3 avalia como 0 falso 3 V A avalia como 1 verdadeiro var 4 3 3 gt 2 atribui 1 a var Tabela 4 5 Preced ncia dos Operadores Relacionais Operador lt lt gt gt 4 6 Operadores L gicos Permitem que se usem duas ou mais express es relac
93. lume da esfera e f WMn volume break case CUBO float volume puts Forneca o lado do cubo fscanf stdin Sf amp raio volume raio raio raio printf An O volume do cubo e f An volume break case CILINDRO define PI 3 1416 float volume puts Forneca o raio e a altura do cilindro fscanf stdin f f amp raio amp altura volume 2 PI raio raio altura printf Nn O volume do cilindro e f WMn volume break 6 10 4 Vari veis register Registradores s o reas de armazenamento da CPU e s o usados para processar c lculos aritm ticos A palavra chave register antecedendo a declara o de uma vari vel sugere ao compilador o armazenamento de uma vari vel em um registrador o que torna mais r pida a execu o de qualquer opera o envolvendo aquela vari vel til para o caso de vari veis que s o acessadas com muita freq ncia Esta sugest o pode ou n o ser acatada pelo compilador N o h limite para o n mero de vari veis que podem ser declaradas como register N o se pode fazer refer ncia ao endere o de uma vari vel register visto que um registrador n o endere vel O especificador register s pode ser aplicado vari veis locais Exemplo register int i for i 0 i lt 10 i printf i d n i 75 6 11 Main como func o que recebe argumentos Passam se informa es para a fun o main atrav s dos argumentos da linh
94. mplo 8 5 strcpy c ilustra o uso da funcao strcpy finclude lt stdio h gt finclude lt conio h gt finclude lt string h gt void main void char destino 15 Frase inicial char fonte 15 QUALQUER FRASE clrscr printf ANTES DA COPIA printf inString fonte s string destino s fonte destino strcpy destino fonte printf AininDEPOIS DA COPIA printf inString fonte s string destino s fonte destino printf NnWMnFim do programa getch Lista de Exerc cios n 8 1 Escreva um programa que fornecidas duas strings pelo usu rio as concatena em uma terceira string exibindo a na tela 2 Fa a um programa que leia v rias frases e conte e imprima quantas palavras h em cada frase Flag frase em branco 3 Fa a um programa que leia e organize uma lista de nomes e telefones de v rias pessoas Depois leia o nome das pessoas e forne a o n mero de seu telefone Utilize os flags que achar mais adequados 102 9 Estruturas ou Registros S o agrupamentos de vari veis que podem ser de tipos diferentes mas s o referenciadas por um nome comum 9 1 Definic o de uma estrutura Sintaxe struct nome tipo nome vari vell tipo nome vari vel2 tipo nome vari veln lista de vari veis typedef struct tipo nome vari vell tipo nome vari vel2 tipo nome vari veln nome _ tipo Exemplos struct informacoes
95. n o precisam ter um tipo especificado a priori Eemplos define metade valor valor 2 define soma a b c d a b c d define ABS a a 0 a a printf O valor absoluto de 1 Sdin ABS 1 fdefine MAX A B A gt B A B printf O maior entre os n meros 3 e 5 Zan MAX O DS Todos os par metros da lista devem ser usados no string de substitui o n o sendo ent o poss vel uma defini o como a seguinte tdefine soma a b c d a b c 148 Os par nteses devem ser colocados logo ap s o nome definido por exemplo soma n o podendo haver qualquer espa o vazio entre eles O uso de par nteses no string de substitui o evita que se obtenha resultados inesperados Exemplo fdefine quadrado x x x resultado quadrado a b resultado atb a b a b a b fdefine quadrado x x x resultado quadrado a b resultado a b a b Se for usado o operador de literal alfanum rico antes de uma string de substitui o o argumento ser convertido em um string entre aspas com o par metro substitu do pelo string real Exemplo fdefine imprime x printf fx imprime roteiro 7 priutf roteiro define dprint expr printf texpr Sfin expr dprint x y printf x y SEn y x y O operador concatena duas palavras Exemplo fdefine concat a b a b ddefine COMECO Toe ddef
96. o d d n i 1l1 primos2 i puts NnAgora vamos calcular o quadrado dos numeros primos for i 0 i 5 i num 1 for 3 0 j 2 j num primos2 i primos e seus quadrados2 i j num puts AnPrimeiros 5 numeros primos e seus quadrados for 1 0 1 lt 5 1 printf O numero primo d Sd i 1 primos e seus quadrados2 i 0 printf NtSeu quadrado d1n primos e seus quadrados2 i 1 printf inFim do programa getch 87 88 7 2 1 N mero de elementos e de dimens es das matrizes As matrizes podem ter n dimens es mas usualmente utilizam se matrizes de 2 e 3 dimens es O n mero de elementos o resultante da multiplica o da quantidade de elementos de cada dimens o int mat1 3 3 matl gt 2 dimens es 3 3 9 elementos O 12 0 manian 2 mat1 float mat2 3 3 2 mat D 3 dimens es 3 3 2 18 elementos gt Um exemplo com 3 dimens es poderia ser N ALUNOS x N DISCIPLINAS x N PROVAS POR DISCIPLINA O aluno 2 obteve na disciplina n 2 na prova n 1 nota 8 5 89 7 2 2 Manipulac o de matrizes gt Declara o int mat 4 5 gt Atribui o 0 0 mat 2 3 2 mat 2 4 mat 2 4 2 mat 0 1015 gt Inicializa o for i20 i 4 i Por 1 0 j lt 5 j mat 1 3 0 gt Leitura por linhas for i20 i 4 1 for 90s 9 5 J printf n mat d I d 9 i j s
97. o compilador reserva um espa o de mem ria para poder armazenar o valor desta vari vel e quando se deseja saber este valor o programa procura no endereco de mem ria da vari vel Exemplo int dado O compilador associa dado com um endereco 2A04 por exemplo dado 10 O valor 10 armazenado no endereco de dado 2A04 printf An d dado O valor armazenado no endereco de dado impresso Poder se 1a criar uma vari vel que guardasse o endere o de dado por exemplo apdado Assim o valor de apdado seria no caso do exemplo 2A04 Ou seja a vari vel apdado indica a localiza o de dado na mem ria As vari veis do tipo apdado s o chamadas de ponteiros 11 2 Declarac o de ponteiros operadores amp e Antes de ser usado um ponteiro deve ser declarado como qualquer vari vel em C O nome de um ponteiro segue as mesmas regras para nomes de vari veis 132 Sintaxe tipo nome do ponteiro tipo o tipo da vari vel para a qual o ponteiro est apontando Eemplos float apnota Fapvalor long resto apresto int dado apdado O operador amp Ap s ser declarado um ponteiro deve ser inicializado para que aponte para um valor til Para isto deve se utilizar o operador amp O operador un rio amp chamado endere o de fornece o endere o do seu operando Exemplos float nota 5 2 apnota apnota amp nota Atribui a apnota o endereco de mem ria
98. o esquerdo 34 Exemplo int x char ch float f ch x gt Os bits mais significativos da vari vel inteira x s o ignorados deixando ch com os bits menos significativos Se x est entre 0 e 255 ent o ch e x t m valores id nticos x f gt x recebe a perte inteira de f f ch gt f converte o valor inteiro de 8 bits armazenado em ch no mesmo valor em formato de ponto flutuante Lo gt f converte um valor inteiro de 16 bits no formato de ponto flutuante Exemplo 4 1 Converte c Mostra a ocorr ncia de convers o de tipos em atribui es include lt stdio h gt void main int xs char ch float f x 122 ch x printf O val de x e d n x printf O val de ch x dWMn ch 300 ch x rintf inO valor de x e d n x rintf O valor de ch x din ch tals f ch f NnO valor de ch d correspondendo ao caracter cin ch ch O valor de f ch S in f 98 8999 chr E rintf XnO valor de f fMn f f O valor de ch f d correspondendo ao caracter cMn ch ch An0 valor de x dMn x O valor de f x S in f 35 Atribuic es m ltiplas poss vel atribuir o mesmo valor a muitas vari veis em um mesmo comando Exemplo IE M Qs yr ES x y 7 0 gt Cuidado float f int x x f 3 5 Resulta em f 3 5 e x 3 f x 3 5 Resulta em 3 0 e
99. o int ap s o elemento para o qual ele atualmente aponta 11 3 2 Subtra o de inteiros a ponteiros A subtra o de um inteiro de um ponteiro faz com que o mesmo aponte para o endere o resultante da subtra o do endere o atual do resultado da multiplica o do inteiro em quest o pelo tamanho em bytes do tipo de objeto para o qual ele aponta 136 Exemplo Suponhamos que p seja um ponteiro que esteja apontando para o endereco 2005 p Se p aponta para um caracter p ir apontar para 2005 1 1 byte 2004 Se p aponta para um inteiro p ir apontar para 2005 1 2 bytes 2003 Se p aponta para um float p ir apontar para 2005 1 4 bytes 2001 Antes 2000 2001 2002 2003 2004 2005 Pode se subtrair qualquer inteiro de um ponteiro Exemplo float x 2 3 Spas PX amp X px px 3 px passa a apontar para o terceiro elemento do tipo float anterior ao elemento para o qual ele atualmente aponta Exemplo 11 2 PontArit c Este programa ilustra a aritmetica de finclude lt stdio h gt void main int i 25 Cpu char c a pc float f 23 57 pi amp i amp C amp f printf pi aponta printf pc aponta printf pf aponta puts Somando 4 a pi pi pc pf printf Agora pi printf Agora pc printf Agora pf puts MnSubtraindo pi 5 pc 5 pf 5 printf Agora pi printf
100. odigos c Fornece o c digo ASCII de uma tecla acionada finclude lt stdio h gt Por causa da funcao printf finclude lt conio h gt Por causa da funcao getche fdefine FIM 26 C digo ASCII de Z void main int G do c getche printf Teclas d n c while c FIM Lista de Exerc cios N 3 1 Altere o programa do exemplo 2 2 para usar const ao inv s de t define 2 Escreva e compile um programa que converta o peso de Kg para gramas 3 Escreva e compile um programa que calcula o sal rio de uma pessoa em d lares 4 No programa enum c tente atribuir um valor qualquer a uma das constantes real dollar etc O que ocorre Anote 5 Escreva um programa que enumere os meses do ano e imprima Janeiro o m s 1 Fevereiro o m s 2 Tabela 3 3 Valores ASCII American Standard Code for Information Interchange Char Dec Char Dec Char Dec Char Dec NUL a 0 SPACE 32 a 64 96 A 1 33 A 65 a 97 AB 2 ES 34 B 66 b 98 C 3 H 35 C 67 c 99 D 4 36 D 68 d 100 AF 5 37 E 69 e 101 AF 6 amp 38 F 70 f 102 G 7 i 39 G 71 g 103 H 8 40 H 72 h 104 TAB I 9 41 I 73 i 105 J 10 s 42 J 74 j 106 K 11 43 K 75 k 107 L 12 44 L 76 l 108 M 13 45 M 77 m 109 N 14 i 46 N 78 n 110 O 15 47 O 79 0 111 p 16 0 48 P 80 p 112 17 1 49 Q 81 q 113 R 18 2 5
101. oid desenha int fil int col main i desenha 10 30 return 0 void desenha int fil int col int i for fil gt 0 fil for i col i 0 i printf c 1 printf Mn 55 5 4 A instruc o while Executa um bloco de instru es enquanto uma determinada condi o permanecer verdadeira Sintaxe while condi o comandos onde condi o qualquer express o v lida em C Representa o esquem tica de um comando while Avalia Condi o Executa V Comandos Exemplo int i 10 while i lt 0 printi Ansar i i A instru o while pode ser usada na forma aninhada 56 Exemplo 5 4 While c Solicita quatro n meros os retorna na tela Ilustra o uso do comando while include stdio h int vetor 4 int indice 0 numero main printf L quatro n meros entre 1 100 while indice lt 4 numero 0 while numero lt 1 numero gt 100 os mostra na tela Mn printf Digite um n mero de 1 a 100 scanf d amp numero vetor indice numero indice printf NnOs n meros v lidos digitados foram for indice 0 indice lt 4 indice printf Nn d vetor indice return 0 5 5 A instru o do while Executa um bloco de comandos enquanto uma determinada condi o for verdadeira no entanto tal condi o avaliada ap s o bloco ser executado
102. ome 5 puts Complete as informacoes An puts strl gets prim nome puts str2 for cont 0 ch getche Xr cont sobrenome cont ch sobrenome cont 0 for cont 0 prim nome cont X0 cont printf inSeu primeiro nome tem Sd letrasin cont for cont 0 sobrenome cont 2 N0 cont printf inSeu sobrenome tem d letrasin cont printf str3 printf inFim do programa getch 98 8 1 Func es especiais para tratamento de strings biblioteca lt string h gt Toda opera o que envolve strings deve ser feita atrav s de fun es especiais que se encontram na biblioteca lt string h gt As principais fun es s o fonte Fonte ao string destino strcat destino anexa o string lt i fonte Fonte para o string destino strcpy destino copia o string 1 strcmp stringl string2 compara o lt stringl gt com o string 2 pela ordem alfab tica conforme tabela ASCii resultando em menor que 0 9 lt stringl gt menor que lt string2 gt igual a 0 WM lt stringl gt igual a lt string2 gt maior que 0 3H lt stringl maior que lt string2 gt gt strchr string caracter verifica se o caracter se encontra na string e retorna a posic o da primeira ocorr ncia do caracter no string se o caracter n o for encontrado retorna NULL strlen string retorna o
103. opcao int iiis float f fl char str1 80 str2 80 char str 80 switch opcao case SCANSET prin scan prin prin prin print scan prin prin prin brea case print print Scan prin scanf print ES break tf Sugestao Forneca uma sequencia iniciada com um numero inteiro in seguido de caracteres contendo algumas das letras a b c ou din f d abcd s amp i strl str2 tf NnO numero e dNn i tf NnOs caracteres do scanset sao sWMn strl tf nOs caracteres restantes sao sWMn str2 f inSugestao Forneca uma sequencia iniciada com um numeroin em ponto flutuante seguido de caracteres contendo An algumas das letras entre A e Zn F SfS A 2 s amp f strl str2 tf NnO numero e f n f tf NnOs caracteres do scanset sao sWMn strl tf NnOs caracteres restantes sao sMn str2 k PECIFICADOR LARGURA f n nIlustrando o uso de especificadores de larguraln f Forneca uma string sem espacos em branco com mais de 5 caracteres Wn ZIS T SCEL nComo o especificador de largura e 5 so foi atribuido a strl sin strl Es str2 nE numa chamada subsequente a scanf com str2 foi atribuido a este tuin str2 case DESCARTE CARACTERES print print print f in nIlustrando o descarte de virgulas e outros caracteres An Usando in scanf MV d f NNnN amp i amp f Nn Forneca um numero inteiro segui
104. orrigir erros de digitac o usando a tecla lt backspace gt Exemplo char str 80 puts Digite seu endere o completo gets str 2 6 A func o getchar Arquivo de cabe alho a ser inclu do stdio h N o recebe argumentos Espera at que uma tecla seja pressionada e devolve o seu valor A tecla automaticamente mostrada na tela Devolve um inteiro mas apenas o byte de mais baixa ordem que cont m o caracter 2 7 A func o putchar Arquivo de cabe alho a ser inclu do stdio h Recebe um argumento do tipo int mas tamb m pode ser chamada com um argumento do tipo caracter 22 Escreve seu argumento na tela a partir da posi o corrente do cursor Devolve o caracter escrito ou na ocorr ncia de um erro devolve EOF definido em stdio h geralmente como 1 2 8 As func es getch egetche Arquivo de cabe alho a ser inclu do conio h lt conio h gt declara v rias fun es usadas para chamar rotinas de entrada sa da pelo console L em um nico caracter do teclado Ambas esperam at que uma tecla seja pressionada e ent o retornam imediatamente getch n o ecoa o que foi digitado na tela getche ecoa o que foi digitado na tela Sintaxe vari vel caracter getche vari vel caracter getch Exemplo 2 4 Getput c Ilustra o uso de algumas func es de entrada sa da finclude lt stdio h gt finclude lt conio h gt void main
105. os pr definidas include stdio h void main printf O programa s foi compilado na data s no instante s n FILE DATE TIME printf Agora estamos na linha d n _ LINE 12 4 A Diretiva undef Uma vez que uma macro seja definida ela ret m seu significado at o final do programa ou at que seja removida explicitamente com a diretiva undef A remo o de uma macro necess ria quando se deseja redefini la Exemplo define COMPRIMENTO 100 int matriz1 COMPRIMENTO undef COMPRIMENTO define COMPRIMENTO 50 int matriz2 COMPRIMENTO 12 5 Diretivas de Compila o Condicionais Permitem que se compilem por es de c digo do programa seletivamente 151 12 5 1 As diretivas if Zelif Zelse Zendif Sintaxe Hif condi o 1 bloco de instru es 1 elif condi o 2 bloco de instru es 2 Felif condi o n bloco de instru es n Helse bloco padr o de instru es Fendif Como funciona Ao encontrar uma diretiva Zif o compilador avalia a condi o correspondente Hi e Se esta condi o for verdadeira as instru es subsequentes s o executadas e Caso contr rio as condi es associadas a cada diretiva Helif s o avaliadas pela ordem at que uma seja verdadeira e Caso isto n o ocorra s o executadas as instru es correspondentes diretiva else se esta estiver presente Somente um bloco
106. os valores a serem atribu dos a cada campo entre chaves na ordem de declarag o dos campos dentro da estrutura Exemplo struct informacoes inf sobre mim Elisa 25 12 1970 Fa Podem ser inicializadas campo a campo Exemplo strcpy inf sobre voce nome Diego inf sobre voce dia nascimento 25 inf sobre voce mes nascimento 1 Inf sobre voce ano nascimento 1990 9 5 Atribui o entre estruturas Tendo se duas estruturas de um mesmo tipo uma pode ser atribu da a outra sem que seja necess rio fazer a atribui o campo a campo Exemplo inf sobre voce inf sobre mim equivale a strcpy inf sobre voce nome inf sobre mim nome inf sobre voce dia nascimento inf sobre mim dia nascimento inf sobre voce mes nascimento inf sobre mim mes nascimento inf sobre voce ano nascimento inf sobre mim ano nascimento 9 6 Estruturas Aninhadas Um campo de uma estrutura pode ser ele pr prio uma estrutura Exemplos struct reta struct ponto pt1 struct ponto pt2 Uma reta definida por dois pontos struct ponto int x int y y struc 105 t informacoes char nome 80 struct int dia int mes int ano data nascimento F3 9 6 1 Inicializa o de estruturas aninhadas Exemplos struc retal retal t reta retal reta2 pt1 x retal pt2 y 10 pt1 y retal pt2 x 0 reta2 retal 9 7 Vetores de Estrutu
107. prin prin prin prin prin prin cont prin prin prin Q ct ct ct ct ct ct cf Aplicado ao int conta 7 como 3 5d resulta n 3 5 qd n conta Aplicado a uma string como Eu vou eu vou pra casa agora eu vou In como 310 20 resulta n printf 10 20sMn Eu vou eu vou pra casa agora eu vou break ct ct ct 16 case MODIFICADOR printf ininIlustrando o uso do modificador An printf Usando para fornecer os especificadores de largura minimal e precisaoMn como argumentos para printf Seja f2 11 121314 o comando An printf printf N tfX 14 2 f2 Wn printf Resulta 1n printf f n 14 2 f2 break case JUSTIFICACAO printf Ilustrando justificacao a direita a esquerda n printf Justificando f3 10 com 10f a direita n printf 20fWn EB printf Justificando f3 com 10f a esquerda n printf 20fWn f3 break printf Pressione qualquer tecla para continuar in getch Exemplo 2 2 Escapes c Mostra o resultado de algumas seq ncias de escape tinclude lt stdio h gt finclude lt conio h gt void main printf Ilustrando o uso de sequencias de escapen printf Emitindo sinais sonoros lalalalala puts ininPressione uma tecla para continuar getch AnMnComo funciona o caracter de nova linha An Obtem se com Mn printf 1 3 novas linhas XMinXinXAn certo NV Nn 3 novas l
108. que identifica o ponto para onde o programa deve prosseguir Exemplo if n 1 goto pontol else if n 2 goto ponto2 pontols printf MnO valor de n 1 goto fim ponto2 printf MnO valor de n 2 goto fim fim 61 Exemplo 5 8 Goto c Ilustra o uso do comando goto na construc o de um loop include stdio h void main int 07 loopl Elx mosdgXnt x loopl Deve se evitar o uso do goto pois sempre poss vel usar uma outra instru o que realize a mesma tarefa que o goto e torne o programa mais f cil de ser entendido 5 6 4 A func o exit Da mesma forma que se pode sair de um la o com a instru o break pode se sair do programa com a func o exit da biblioteca padr o Sintaxe exit int c digo de retorno O valor de c digo de retorno retornado ao processo chamador que normalmente o sistema operacional O zero usado em geral como um c digo de retorno que indica uma termina o normal do programa Exemplo int num printf Forne a um n mero inteiro positivo scanf d amp num if num lt 0 printf O n mero deveria ser positivo Nn exit 0 62 Lista de Exerc cios N 5 1 Altere o programa do exemplo 5 1 para tirar a m dia de 6 provas Mude a nota m nima de aprova o para 7 2 Altere o programa do exemplo 5 1 para possibilitar a seguinte classifica o 7 lt m dia
109. r Exemplo i 3 for i 5 printf O valor de i e San i i Note se que quando o corpo da instru o for consistir de mais de um comando separados por necess rio que estes sejam colocados entre chaves A express o condi o pode ser constitu da de express es conectadas por operadores l gicos Exemplos for i 0 i lt 10 amp amp vetor i 0 i printf Na sa vetor i for i 0 i lt 10 amp amp vetor i i printf Ca ca vetor i A instru o for pode ser usada para se inicializar um vetor Exemplo for i 0 i 10 vetor i 0 54 Usando v rgulas pode se criar express es constitu das de duas sub express es de forma a se realizar duas tarefas As sub express es ser o avaliadas da esquerda para a direita e toda a express o ser avaliada como o valor da express o da direita Exemplo tor la 0 qe LOS melo anys J prrnbprq sado 35da i j A instru o for pode ser aninhada ou seja executada dentro de outra instru o for Exemplo for cont 0 cont 10 cont for j20 j 10 j pruntf oins9d qetrizicomt igl 4 Podem se omitir as tr s express es inicial condi o e incremento Exemplo ESEC A 3 tendo se ent o um loop infinito que pode no entanto ser interrompido dentro do corpo da instrug o for porum break Exemplo 5 3 For c Mostra o uso de for aninhado tinclude lt stdio h gt v
110. ras Declarac o Dam b sicos pode se dec Exemplo de vetores cujos elementos s o do tipo estrutura esma forma como se declara um vetor de qualquer um dos tipos larar um vetor de estrutura struct inf formacoes inf sobre todos 10 Inicializac o de vetores de estruturas Podem ser inicializados dispondo se os valores a serem atribu dos a cada campo da estrutura de cada posig o do vetor entre chaves Exemplo struct informacoes char nome 80 struct int dia int mes int ano data nascimento pint sobre rodos 3 4 Jose 25 1 1970 Maria 16 7 1990 Jo o 11 9 2001 y 106 Podem ser inicializadas campo a campo Exemplos strcpy inf sobre todos 0 nome Jose inf sobre todos 0 data nascimento dia 25 inf sobre todos 0 data nascimento mes 1 inf sobre todos 0 data nascimento ano 1970 strcpy inf sobre todos 1 nome Maria inf sobre todos 1 data nascimento dia 16 inf sobre todos 1 data nascimento m s 7 inf sobre todos 1 data nascimento ano 1990 Exemplo 9 1 struct h arquivo cabecalho de struct c include lt stdio h gt include lt conio h gt include lt stdlib h gt define SAIR define CORRIGIR define MONTALISTA define VERINFORM Ss WN P void corrigelnformacoes void int montalLista void void verInform int struct informacoes
111. ras de escopo Escopo de uma vari vel ou constante o termo t cnico que denota a regi o do programa fonte C onde a vari vel ou constante reconhecida ou est ativa A dura o de uma vari vel se refere ao tempo de vida de armazenamento desta na mem ria principal 6 10 1 Vari veis Locais Declaradas dentro de um bloco de c digo Bloco de C digo Por o de c digo delimitada por um abre chave e um fecha chave y 70 S podem ser referenciadas dentro do bloco de c digo onde tenham sido declaradas n o sendo reconhecidas fora dele Devem ser declaradas no in cio do bloco de c digo antes de qualquer comando Existem apenas enquanto o seu bloco de c digo est sendo executado s o criadas na entrada e destru das na sa da n o retendo portanto seus valores entre chamadas Podem receber um endere o diferente a cada vez que o bloco executado Exemplos float funcl void float x x 10 return sgrt x float func void float x x 200 107 return x O x em funcl n o tem absolutamente qualquer rela o com o x de func2 mas ambos s o vari veis locais for i20 i 10 i intj 22 prinbf Sdn y s j s vis vel dentro do corpo da instru o for Os par metros formais de uma fung o se comportam como vari veis locais Exemplo 6 6 Locais c Mostra o comportamento das vari veis locais finclude lt
112. redirecionar a sa da e a entrada padr o para arquivos Exemplo PROG lt INPUT TXT gt OUTPUT TXT Se PROG o nome de um execut vel esta a maneira de direcionar a entrada padr o do programa PROG para o arquivo INPUT TXT e a sa da padr o para o arquivo OUTPUT TXT 10 19 Enviar sa da para a impressora com fprintf C oferece v rias fun es de biblioteca que podem ser utilizadas para enviar dados a v rios destinos Em complemento o arquivo de cabe alho lt stdio h gt define nomes que representam al m das streams padr o a impressora como destino de sa da o Stdprn sa da para impressora padr o dispositivo identificado como PRN no DOS fun o printf sempre envia sua sa da para o stdout 129 Mas outras fun es permitem especificar os destinos dos dados de sa da como a func o fprintf da biblioteca lt stdio h gt fprintf pode ser usada para enviar dados impressora Sintaxe fprintf destino formato lista de vari veis Destino especifica para onde a sa da ser enviada Formato e valor trabalham como com printf Se o destino for stdout fprintf se comporta como printf Se o destino for stdprn fprintf envia a sa da para a impressora Para avangar uma p gina na hora da impress o deve se enviar um caracter de avan o de p gina M Form feed Exemplo 10 10 Fprintf c Ilustra o uso da funcoes fprintf para envio de dados para uma impressora Est
113. retorno diferente de zero indica ocorr ncia de erro podendo ser utilizada a fun o ferror para se determinar o erro ocorrido Exemplo FILE if F lp fp fopen teste txt MM w NULL printf Arquivo n o pode ser aberto Nn EXTIULLI fclose fp 115 Obs Em geral o sistema operacional imp e um limite ao n mero de arquivos que podem ser simultaneamente abertos por isso deve se fechar um arquivo ao se encerrar o seu uso 116 Exemplo 10 1 FILI finc finc E HA C Ilustra a cria o de arquivos do tipo texto lude lt stdio h gt lude lt conio h gt tinc void lude lt stdlib h gt main FILE arg char nome 30 nomearq 30 int idade idadearg float altura alturaarg arq fopen teste txt w 1f arg NULL printf nErro na cria o do arquivo teste txt getch exit 1 puts Qual o seu nome gets nome puts Qual o sua idade scanf i amp idade puts Qual a sua altura scanf f amp altura puts in Gravando seus dados no arquivo teste txt Nn fprintf arq s i 2f An nome idade altura fclose arg printf inAgora vamos abrir o arquivo e ler os dados gravados arq fopen teste txt r 1f arg NULL printf NnErro na abertura do arquivo teste txt getch exit 1 f
114. rintf inTotal de pecas no tabuleiro de xadrez for i 1 i 7 i pecas i contal i printf ininFim do programa getch 3 Idem 2 mas para os elementos acima da diagonal principal for i 0 i lt 6 i for 3 1 1 j 8 j if xadrez i j gt 0 amp amp xadrez i j lt 6 conta xadrez 1 31 Lista de Exerc cios N 7 2 1 Fazer um programa que gere as tr s matrizes seguintes 94 95 Sugest es 1 Inicialize as matrizes com ou com X de acordo com o que achar melhor Exemplo char mat1 8 8 mat2 8 8 mat3 8 8 IAG us 3 for 2 0 i lt 8 i for 3 0 j 8 J mato pL 2 Imprima as matrizes desta forma printf NnMATRIZ ln for i20 i 8 i for 3 0 j 8 j printf c matl il jl printf Nn getch 2 Fazer um programa que gere a seguinte matriz 3 A matriz a seguir cont m em cada linha as 5 notas de provas obtidas pelos N alunos de uma classe O ndice da linha corresponde ao n mero do aluno e o ndice da coluna ao n mero da prova 6 41 2 51 891 7 9 9 5 matnotas vetmedias Fa a um programa que leia o n mero de alunos N leia as 5 notas de cada um dos N alunos armazene as numa matriz e calcule e imprima para cada aluno a sua m dia e a m dia geral da turma Sugest o utilize um vetor para calcular
115. rtual de TL mem inguagem Com ado Computador assembly virtual Ada Figura 1 2 Implementag es de linguagens de programa o Todo programa escrito em uma LP deve ser traduzido para a linguagem de m quina para ser executado Isso realizado atrav s de um programa ou conjunto de programas Esse programa tradutor recebe como entrada o c digo fonte e gera o c digo de m quina Existem tr s maneiras de se fazer a traduc o B Compilac o B Interpreta o B Hibrido 1 2 1 Compila o Efetua a tradu o integral do c digo fonte para o c digo de m quina A execu o mais r pida porque n o necess rio fazer nenhuma tradu o intermedi ria Para que o programa seja executado necess rio apenas O c digo execut vel A desvantagem a n o portabilidade do c digo execut vel N o h depura o pois o c digo execut vel n o guarda refer ncia do c digo fonte O processo de compila o se desenvolve em diversas etapas que podem ser vistas na figura 1 2 1 Figura 1 2 1 O processo de compila o ra E Programafonte b y Analisador xico Unidades l xicas Analisador sint tico rvores de an lise parse trees Gerador de c digo intermedi rio e analisador sint tico Tabela de Ip Otimiza o opcional simbolos C digo intermedi rio Gerador de c digo Linguagem de m quina a Dados
116. scanf arq s i f n nomearq amp idadearq amp alturaarq printf Ain Nome s Idade i Altura 2f An nomearq idadearq alturaarg fclose arg printf AininFechando o arquivo Fim do programan puts Hasta la vista baby Nn getch Exemplo 10 2 117 FILE2 c Ilustra o uso de feof finclude stdio h finclude lt conio h gt finclude lt stdlib h gt finclude lt string h gt void main FILE arg char nome 30 int idade cont 0 float altura arq fopen dados dat w if arq NULL printf AnErro na cria o do arquivo dados dat getch exit 1 for puts Nome para finalizar scanf s nome if strcmp nome 0 break puts Idade scanf Si 8idade puts Altura scanf f amp altura fprintf arq s i 2f Nn nome idade altura fclose ara printf inAgora vamos abrir o arquivo e ler os dados gravados arg fopen dados dat r if arq NULL printf NnErro na abertura do arquivo dados dat getch exit 1 while feof arg fscanf arq s i f WNn nome amp idade amp altura printf Nn Nome s Idade i Altura 2f An nome idade altura cont fclose arq printf NnArquivo com d registros Fechando o arquivo n cont puts AnGoodbye getch 118 10 4 As fun es getc efgetc Arquivo de cabe alho a
117. ser inclu do stdio h Estas fun es s o id nticas no modo de uso a ltima sendo conservada para manter a compatibilidade com vers es anteriores L em caracteres de um arquivo aberto no modo leitura por fopen Recebem como argumento um ponteiro de arquivo Devolvem um inteiro mas o caracter est contido no byte menos significativo o mais significativo sendo zero Devolvem EOF ao ser atingido o final de arquivo Exemplo int ch FILE fp do t ch getc fp while ch EOE 10 5 As fun es putc efputc Arquivo de cabe alho a ser inclu do stdio h Estas fun es s o id nticas no modo de uso a ltima sendo conservada para manter a compatibilidade com vers es anteriores Escrevem caracteres em um arquivo que foi previamente aberto para escrita atrav s da fun o fopen Recebem como argumento o caracter a ser escrito e um ponteiro de arquivo Exemplo ITE ch FILE fp do ch getche putc ch fp while ch 119 Exemplo 10 3 FILE3 c Ilustra a abertura fechamento de arquivos escrita e leitura nos mesmos finclude lt stdio h gt finclude lt conio h gt finclude lt stdlib h gt void main FILE fp char nome arq 80 char ch printf Forneca o nome de um arquivo a ser criadoin gets nome arq printf inAgora vamos abrir o arquivo s in nome arg if fp fopen nome arg w NULL prin
118. strabalhadas 7 float salario float fgts 2 2 regpag regpag cpf 1234567 regpag salario 7500 00 strcpy regpag nome Joaquim Manoel de Mendon a regpag rg 12377781 for i l i lt 6 regpag horastrabalhadas i 0 for i 0 i lt 2 i for j 0 j 2 j regpag fgts i j 0 111 9 9 Exerc cio Pr tico 2 O que representa a defini o a seguir struct reg char nome 30 long cpf float salario char cargo 30 vetreg 1000 Exemplo 9 2 Um pequeno munic pio deseja cadastrar seus contribuintes propriet rios de im veis verificar se seu IPTU est em dia e calcular a multa daqueles que est o em d bito Fazer um programa para resolver o problema da prefeitura considerando que ser o fornecidos o nome do propriet rio o n mero do im vel o valor do IPTU e os meses em atraso ltimo nome fim a multa deve ser calculada de acordo com a tabela abaixo que deve estar armazenada em mem ria valor do iptu por m s em atraso at 200 00 1 de 200 01 a 400 00 3 de 400 01 a 700 00 5 de 700 01 a 1000 00 8 acima de 1000 00 10 112 Structl c calcula a multa sobre o IPTU de contribuintes ilustra o uso de vetores d struturas finclude lt stdio h gt finclude lt conio h gt struct tab float de ate porc tabela 5 0 0 200 00 0 015 200 01 400 00 0 03 400 01 700 00 0 05 700 01 1000 00 0 08
119. t gt gt l A amp amp 47 Lista de Exerc cios N 4 1 Escreva e compile um programa que recebe tr s n meros inteiros e usando o operador condicional mostra qual deles o maior e qual deles o menor 2 Escreva e compile um programa que recebe um n mero decimal inteiro e retorna a quantidade de bits iguais a zero no n mero 3 Escreva e compile um programa que recebe dois inteiros e mostra na tela o resultado da avalia o dos operadores l gicos bit a bit entre estes dois n meros Interprete o resultado para um par de n meros 4 Escreva e compile um programa que l 10 n meros e mostra na tela o resultado da soma e da m dia Use operadores de atribui o compostos 5 Para x 5 e y 4 avalie o valor das express es levando em conta a preced ncia entre operadores a xt y 6 y x c xt 0 2 d x lt lt 2 y gt gt 1 e xl eb Dx y 2 Agora escreva um programa para verificar se a sua avalia o est correta 48 5 Controle de fluxo Os comandos de controle de fluxo direcionam a execu o do programa 5 1 A instruc o if else Usada para decidir que comando ou bloco de comandos ser executado com base no valor de uma express o Sintaxe if express o BLOCO 1 Executado apenas se express o 0 else BLOCO 2 Executado apenas se express o 0 Como funciona O valor de express o avaliado Se for verdadeiro o
120. tGraf midx getmaxx midy getmaxy setcolor getmaxcolo E 153 dif FIGURA CIRCULO raio 100 Desenha o circulo circle midx midy raio elif FIGURA ELIPSE Desenha a elipse anguloi 0 angulof 360 raiox 100 raioy 50 ellipse midx midy anguloi angulof raiox raioy felse esquerda midx 50 emcima midy 50 direita midx 50 embaixo midy 50 Desenha o quadrado rectangle esquerda emcima direita embaixo fendif fifdef FIGURA fundef FIGURA Fendif fdefine FIGURA CIRCULO getch closegraph printf Agora FIGURA vale Sdin FIGURA puts Pressione qualquer tecla para sair getch void InitGraf void f Requisita auto detecao int gdriver DETECT gmode errorcode Inicializa modo grafico e variaveis locais initgraph amp gdriver amp gmode borlandc bgi Le resultado da inicializacao errorcode graphresult if errorcode grOk Ocorreu um erro printf Erro Grafico s n grapherrormsg errorcode printf Pressione qualquer tecla para sair getch exit 1 Termina com um codigo de erro 154 12 6 A Diretiva fline Faz com que o compilador acredite que o n mero de linha da pr xima linha seja dado pela constante decimal inteira que se segue a esta diretiva Exemplo Fline 100 inicializa o contador de linhas vo
121. tdin while resposta s resposta S return conta amigo void verInform int numero de amigos int i puts Informacoes sobre seus amigos in for i 0 i numero de amigos i printf nNome s n agenda i nome printf Telefone s n agenda i fone printf Data de nascimento d d dWn agenda i data nascimento dia agenda i data nascimento mes agenda i data nascimento ano 9 8 Exerc cio Pr tico 1 Defina as estruturas mostradas nas figuras e inicialize as ficha ome alario dade Sexo 109 struct f char nome 30 float salario int idade char sexo ficha Luiza 3495 00 25 f func nome endereco rua numero cep cidade estado salario struct dados char nome 40 struct char rua 30 int numero char cep 9 endereco char cidade 30 estado 20 float salario func A atribui o de valores estrutura func poderia ser assim strcpy func nome Jos Jo o da Silva strcpy func endereco rua Rua Trememb strcpy func cidade Itamarandiba strcpy func estado Minas Gerais func endereco numero 12 func salario 1005 00 strcpy func endereco cep 30045 000 110 regpag nome cpf rg horastrabalhadas 1 2 E 4 5 6 salario fets 0 0 0 1 1 0 1 1 struct reg char nome long ept g float hora
122. te l gico Tabela 4 10 Tabela Verdade para o Ou Exclusivo Pp q p q 0 0 0 1 0 1 1 1 0 0 1 1 Exemplos 11110000 01010000 11110000 01010101 11110000 01010101 01010000 11110000 10100101 11111101 400000010 Exemplo 4 3 Desloca c Mostra o uso dos operadores de deslocamento include lt stdio h gt include lt conio h gt unsigned char y x 48 int cont main for cont 1 cont lt 8 cont y x lt lt cont printf dNtNtNtSdNtNCESdNn x cont y printf Pressione qualquer tecla para continuar n getch printf NnDecimalNtNtDeslocamento p dir tResultado n for cont 1 cont lt 8 cont y x gt gt cont printf d t t tsd t t d n x cont y return 0 printf nDecimal t tDeslocamento p esq tResultado n 43 Exemplo 4 4 Tstbit c Testa os conhecimentos de ingl s do usu rio e fornece a sua nota de acordo com o n mero de questoes respondidas corretamente Mostra o uso dos operadores l gicos bit a bit finclude lt stdio h gt finclude lt conio h gt char teste ingles m 2 3 A 5 6 7 a o 10 VLL 124 ILS 14 TD 16 mother in law mae que anda dentro da lei to dispose desposar to dispose dispor busses plural de onibus bus beijo estalado bus onibus naive ing nuo naive
123. tf Sinto muito Erro na abertura do arquivo N O programa sera abortado1n exit 1 puts nEntre com uma frase de efeito Termine com uml ponto Nn do putc ch fp ch getche while ch printf AninAgora vamos fechar o arquivo sMn nome arq fclose fp printf ininVamos abri lo novamente para que possamos ler o que nele foi escritoin if fp fopen nome_arq r NULL printf Sinto muito Erro na abertura do arquivo N O programa sera abortadoWn exit 1 puts NnEis aqui a sua frase 1n do ch getc fp putchar ch while ch EOF printf AninBem fechemo lo novamenteWn fclose fp puts Ate mais ver Mn 120 10 6 A Fun o feof Arquivo cabe alho a ser inclu do stdio h Determina quando o final de arquivo foi atingido na leitura de dados bin rios mas tamb m pode ser usada com arquivos texto na leitura de um arquivo bin rio um valor inteiro igual ao de EOF pode ser lido o que indicaria uma condi o de fim de arquivo apesar do final f sico do mesmo n o ter sido alcan ado Recebe como argumento um ponteiro para arquivo Devolve verdadeiro se o final de arquivo tiver sido atingido e 0 caso contr rio Exemplo while feof fp ch getc fp L um arquivo bin rio at que o final de arquivo seja encontrado 10 7 A fun o fputs Arquivo cabe alho a ser inclu do stdio h Opera d
124. trcmp str3 strl if result gt 0 printf AnString 3 e maior que string 1 n else if result 0 printf AnString 3 e menor que string 1 An else printf inString 3 e string 1 sao iguaisin printf inComparando String2 e String3 result strcmp str2 str3 if result gt 0 printf AnString 2 e maior que string 3 Mn else if result 0 printf AnString 2 e menor que string 3 An else printf AinString 2 e string 3 sao iguais Mn printf AnComparando Stringl e String4 result strcmp strl str4 if result gt 0 printf AnString 1 e maior que string 4 An else if result 0 printf AnString 1 e menor que string 4 An else printf inString 1 e string 4 sao iguaisin printf AinFim do programa getch Exemplo 8 4 100 strchr c ilustra a utilizacao da funcao strchr finclude string h finclude lt stdio h gt finclude conio h void main void char string 15 char result caracter clirscr i puts Digite uma frase An gets string for 5 printf AinDigite um caracter para terminar caracter getche if caracter break result strchr string caracter if result NULL printf XnO caracter c se encontra na posicao dMn caracter result string else printf An0 caracter c nao se encontra na frase Caracter printf Anin Fim do programa getch 101 Exe
125. u seja se tiver um valor diferente de zero o BLOCO 1 de comandos executado caso contr rio o BLOCO 2 de comandos executado Se BLOCOI ou BLOCO2 consistirem de mais de um comando comando composto a seq ncia de comandos deve ser precedida por uma chave e finalizada com uma chave j marcando o in cio e o fim do bloco Pode se aninhar comandos if else if express ol if express o2 BLOCO 1 else BLOCO 2 else BLOCO 3 Deve se tomar cuidado ao se usar a seguinte sequ ncia if express ol if express o2 BLOCO 1 else BLOCO 2 pois o comando else neste caso se refere ao if mais interno 49 Para que ele corresponda ao primeiro if devem se utilizar chaves if express ol if express o2 BLOCO 1 else BLOCO 2 O comando else opcional A identag o auxilia na compreens o do programa por m o compilador n o a leva em considera o Exemplo 5 1 Avalia c Dadas as notas de quatro provas verifica se o aluno foi aprovado ou reprovado Ilustra o uso de if else include lt stdio h gt include lt conio h gt defin NOTA MIN 6 define NOTA MIN EXAME 4 loat nota 1 nota 2 nota 3 nota 4 loat media void main printf inQual a primeira nota do aluno scanf amp nota 1 printf inQual a segunda nota do aluno scanf amp nota 2 printf inQual
126. ue os programadores sabem o que est o fazendo em C A Linguagem de Programa o Padr o ANSI de Brian W Kernighan e Dennis M Ritche e Processo de Compilac o editor e e arquivos de biblioteca c digo objeto obj execut vel exe Algoritmo estrutura do programa Editor de texto alguns compiladores C possuem ambiente de programac o integrados incluindo o editor de textos C digo fonte conjunto de comandos da linguagem C escrito em ASCII que o programador expressa sua l gica de programac o extens o c Compilador C a linguagem C compilada C digo objeto arquivo intermedi rio est em linguagem de montagem assembly extens o obj Arquivos de biblioteca cont m fung es j compiladas Linker cria um programa execut vel a partir de arquivos objeto e dos arquivos de bibiloteca Execut vel programa C que pode ser executado no computador est em linguagem de m quina extens o exe e Biblioteca de Linkedic o Coleg o de arquivos objeto Biblioteca padr o m nima padr o ANSI Fun es divididas em grupos e Entrada Sa da e Gerenciamento de mem ria e Opera es matem ticas e Manipula o de cadeias de caracteres Biblioteca fornecida pelo compilador e Fun es gr ficas 1 5 Estrutura de um programa em C Componentes iniciais Comandos de pr processamento Inclus o de arquivos de cabecalho da biblioteca Defini
127. uts Forneca o dia do seu nascimento scanf d amp inf sobre voce data nascimento dia puts Forneca o mes do seu nascimento scanf d amp inf sobre voce data nascimento mes puts Forneca o ano do seu nascimento scanf d amp inf sobre voce data nascimento ano fflush stdin puts Rok koe eek Kk e RAE e ok koe ke kk ok ek kk Kok ARRASTRAN A ok KE GE oko 1 printf Seu nome e s In inf sobre voce nome printf Seu telefon s An inf sobre voce fone printf A data em que nasceu foi d d d 1n inf sobre voce data nascimento dia inf sobre voce data nascimento mes inf sobre voce data nascimento ano puts ERER EEEE UK OK De EE OE OR CON ECKE OE KERRE KR RER EE ERRATA EE ER IN R int montaLista void static int conta_amigo 0 char resposta do puts Deseja entrar com informacoes sobre algum amigo s n resposta getch if resposta s resposta S puts Forneca o nome do seu amigo gets agenda conta amigo nome puts Forneca o telefone do seu amigo gets agenda conta amigo fone puts Forneca o dia do nascimento do seu amigo scanf d amp agenda conta amigo data nascimento dia puts Forneca o mes de nascimento do seu amigo scanf d amp agenda conta amigo data nascimento mes puts Forneca o ano do nascimento do seu amigo scanf d amp agenda conta amigo data nascimento ano conta amigo fflush s
128. utura ANomePronteiro ou Tipo Estrutura NomePonteiro Exemplos struct Pessoa char nome 40 int idade ppessoa typedef struct char nome 40 int idade PESSOA PESSOA ppessoa Para acessar um elemento da estrutura atrav s de um ponteiro usa se o operador seta gt NomePonteiro gt Elemento Exemplo 11 5 PontStru c ilustra o uso de ponteiros para estruturas finclude lt stdio h gt finclude lt conio h gt finclude lt string h gt typedef struct char nome 40 int idade PESSOA void main PESSOA a b PESSOA ppessoa ppessoa amp a clrscr printf Informe o nome da pessoa gets ppessoa nome printf Informe a idade da pessoa scanf d ppessoa gt idade strcpy b nome ppessoa gt nome b idade ppessoa gt idade printf MnNome da pessoa b nome s b nome printf MnlIdade da pessoa a idade d a idade getch 141 11 6 Aritm tica de Ponteiros Subtrac o entre Ponteiros opera o de subtra o tem sentido se estiverem envolvidos dois ponteiros que apontam para o mesmo tipo de objeto O resultado desta opera o um valor inteiro que igual ao n mero de objetos do tipo para o qual os ponteiros apontam que se interp em entre os dois ponteiros Exemplo int vet 10 TRE Cont cont amp vet 6 amp vet 0 Resulta em 6 pois vet 6 st em um endere o mais alto que vet
129. ve Arquivo cabe alho a ser inclu do stdio h Recebe como argumento o nome do arquivo a ser removido Devolve zero se for bem sucedida e um valor diferente de zero caso contr rio Exemplo FILE fpl char nome arquivo 10 tmp txt if fpl fopen nome arquivo w NULL exit 1 if remove nome arquivo printf Arquivo nao pode ser apagadoin exrtilys 10 12 A fun o fflush Arquivo cabe alho a ser inclu do stdio h Esvazia o conte do de uma stream de sa da Recebe como argumento um ponteiro para arquivo Se for chamada com um valor nulo todos os arquivos abertos para sa da s o descarregados Devolve 0 para indicar sucesso e EOF caso contr rio 10 13 A fun o fwrite Arquivo cabe alho a ser inclu do stdio h Permite a escrita em um arquivo de dados maiores que 1 byte para qualquer tipo de dado Recebe como argumento um ponteiro para as informa es que ser o escritas no arquivo o n mero de bytes a serem escritos o n mero de itens a serem escritos cada um com o n mero de bytes especificado e um ponteiro para arquivo Devolve o n mero de itens escritos que ser igual ao n mero especificado a n o ser na ocorr ncia de um erro Exemplo FILE fp int num 10 fwrite amp num sizeof int 1 fp Escreve o conte do de num uma vez no arquivo apontado por fp 125 10 14 A func o fread Arquivo cabe alho a ser
Download Pdf Manuals
Related Search
Exemplo exemplo login ex employee exemplo de curriculo exemplo cnpj exemplo em ingles exemplo portal exemplo ducemus exemplos de fluxograma exemplo de relatorio exemplo de ata exemplo de haiku exemplos de software exemplo ao vivo exemplos de adjetivos exemplify exemplos de hardware exemplos de metafora exemplo de requerimento exemplos de curriculum vitae exemplos de antitese exemplo de mapa mental exemplos de linha do tempo exemplo de carta de apresentacao exemplo de uma acta feita exemplos de dashboards power bi
Related Contents
HED Owner`s/User Manual Manuel d`utilisation User Manual Manual de Operação e Segurança 6100A User`s Manual - Wiki Karat Bedienungsanleitung Andes 509 取扱説明書 - Fostex - STACLOT® APC-R - Annar Diagnóstica Import Descarregar Epson Perfection 1670 PHOTO Notice mode d`emploi Copyright © All rights reserved.
Failed to retrieve file