Home

1 conceitos básicos da linguagem c

image

Contents

1. 1 1 Passo ps q 6 o Es h os Posi o Inicial Atual 1 e Posi o Final Atual Primeiro devo apontar para o elemento central do vetor para calcular esta posi o somo a posi o inicial com a final e divido por 2 ou seja Quociente l 8 2 Com isto conclu mos que devemos apontar para o elemento de posi o 4 Em seguida perguntamos se o conte do da posi o para qual estamos apontando o que estamos procurando Como 5 n o o que esta mos procurando a resposta N O Conclu mos ent o que devemos continuar a pesquisa A posi o inicial corresponde posi o dita topo da tabela enquanto a posi o final corresponde posi o de fim da tabela 1 3 4 8 VET 1 Aprendendo a Programar em Linguagem C 2 Passo A seguir verifico que o n mero que estou procurando maior que o n mero que estou apontando logo concluo que o que procuro s pode estar da posi o posterior a que estou apontando at o final do vetor Posi o Inicial Atual 5 e Posi o Final Atual 8 Ent o pego a minha nova posi o inicial que a posi o que estou apontando mais 1 somo com a posi o final que 8 e divido por 2 para encontrar a minha nova posi o central ou se ja Quociente 5 8 2 A seguir aponto para o elemento 6 A fa o a c lebre pergunta o que estou
2. intj for j 1 j lt 20 j printf xDB printf An Exemplo 2 Programa Principal include lt stdio h gt main char ch 73 74 Aprendendo a Programar em Linguagem C printf Digite a e depois b 9 ch minusculo switch ch case a printf An Voce pressionou a break case b printf An Voce pressionou b break default printf An Voce n o obedeceu o que foi solicitado Converte para minusculo caso seja digitado uma letra em maiusculo minusculo char ch ch getche if ch gt A amp amp ch lt Z ch a A return ch No exemplo anterior foi utilizado o comando return que usado para retornar um determinado valor a uma dada express o Na realidade ele tem duas fun es primeiro voc pode usar o return para devolver um valor e retornar imediata mente para a pr xima instru o do c digo de chamada Segundo usando o sem os Fun es 75 par nteses para resultar em uma sa da imediata da fun o na qual ele se encontra isto return far com que a execu o do programa volte para o c digo de chamada assim que o computador encontrar esse comando o que ocorre em geral antes da ltima instru o da fun o Exemplo 3 include lt stdio h gt main int minsl mins2 printf Digite a primeira hora hora min 9
3. C code argv 1 argv 2 argv 4 else decode argv 1 argv 2 argv 4 code input output start Criptografia 173 char input output char start int ch FILE fp1 fp2 If fp1 fopen input r 0 clrscr printf Arquivo inacess vel para entradain exit if fp2 fopen output w 0 clrscr printf Arquivo inacess vel para sa daln exit start tolower start start start a do ch gete fp1 if ch EOF break 174 Aprendendo a Programar em Linguagem C if isalpha ch ch start if ch gt z ch 26 putc ch fp2 kwhile 1 fclose fp1 fclose fp2 decode input output start char input output ch start int ch FILE fp1 fp2 If fp1 fopen input r 0 clrscr printf Arquivo inacess vel para entradain exit Criptografia if fp2 fopen output w 0 clrscr printf Arquivo inacess vel para sa daln exit start start a do ch gete fp1 if ch EOF break if isalpha ch t ch start if cha ch 26 putc ch fp2 kwhile 1 fclose fp 1 fclose fp2 175 176 Aprendendo a Programar em Linguagem C Para este programa utilizamos as seguintes fun es da linguagem C toupper gt Converte um caracter min sculo em Mai sculo tolower gt Converte um caracter Mai scul
4. 320x200 gr f cinza 06 640x200 gr f p amp b 07 80x25 texto p amp b 08 160x200 gr f 16 cores 09 320x200 gr f 16 cores OA 640x200 gr f 4 cores Registradores de Sa da nenhum Interrup o 10 Hexa Servi os de Tela Fun o 01 Define o tamanho do cursor Registradores de Entrada AH 01 CH linha varredura inicial CL linha varredura final Adaptador graf colorido 0 a 7 Adaptador monocrom tico 0 a 13 Registradores de Sa da nenhum Interrup o 10 Hexa Servi os de Tela Fun o 02 Posiciona cursor Registradores de Entrada AH 02 BH n mero da p gina de v deo DH linha DL coluna Sum rio 179 Registradores de Sa da nenhum Interrup o 10 Hexa Servi os de Tela Fun o 03 L posi o do cursor Registradores de Entrada AH 03 BH n mero da p gina de v deo Registradores de Sa da CH linha varredura inicial CL linha varredura final DH linha DL coluna Interrup o 10 Hexa Servi os de Tela Fun o 04 L posi o da caneta ptica Registradores de Entrada AH 04 Registradores de Sa da AH sinal de ativa o da caneta ptica BX coluna do ponto CH linha do ponto DH linha do caracter DL coluna do caracter Interrup o 10 Hexa Servi os de Tela Fun o 05 Define p gina de v deo ativa Registradores de Entrada AH 05 AL n mero da p gina 180 Aprendendo a Programar em Linguagem C Registradores de Sa da nenhu
5. N indl scanf G d amp tab indl ind2 N 1 do troquei FALSE for indl O indl lt ind2 indl if tab ind1 lt tabfindl 1 aux tab ind1 tab ind1l tab indl 1 tab indl 1 aux troquei TRUE ind2 while troquei puts nO vetor ordenado e for indl 0 ind1 lt N indl printf d n tab ind1 N o podemos esquecer de que quando temos a necessidade de classificar dados de uma certa tabela n o basta trocar apenas o campo chave utilizado como refer ncia para o processo de ordena o Devemos ent o trocar de posi o todos os campos Manipula o com Vetores 103 pertencentes aos registros da tabela sen o haver diversos registros com informa es misturadas ALGORITMOS DE BUSCA Os algoritmos de busca existem com o objetivo de realizar uma busca dentro de uma determinada tabela objetivando assim localizar um determinado registro O que vou procurar Irei abordar e esclarecer a dife ren a b sica existente entre os SO dois m todos de busca mais utili o zados nos programas tradicio nais a busca seq encial ou pes A i quisa segiiencial e a busca bin lt EA ria ou pesquisa bin ria ia PESQUISA SEQUENCIAL Neste m todo o processo de busca pesquisa a tabela segiiencialmente desde o in cio at seu fim Cada elemento da tabela comparado com a chave Se eles forem iguais o ndice do elem
6. a Qual a seq ncia l gica dos par metros atribu dos ao comando for 4 Exemplifique o uso da estrutura para variando com um contador incrementa do 5 Exemplifique o uso da estrutura para variando com um contador decrementa do 6 Escreva um programa em linguagem C que escreva todos os n meros pares compreendidos na seguinte segii ncia 10 at 20 Para tal utilize a estrutura de repeti o a Para variando b Repita at c Enquanto fa a 7 Qual a diferen a do comando break e continue 8 Por que hoje em dia n o se utiliza mais com frequ ncia o comando goto 9 Qual a vantagem de elaborarmos um programa cujo teste seja feito no in cio 10 Qual a vantagem de elaborarmos um programa cujo teste seja feito no final 8 FUN ES As fun es na linguagem C funcionam como procedimentos PROCEDURES pa ra representarem as sub rotinas necess rias em um determinado programa E atra v s do uso de fun es que aplicamos a t cnica de programa o estruturada deno minada MODULARIZA O V rios Peda os Vejamos ent o um exemplo pr tico do uso de fun es descrito logo a seguir include lt stdio h gt include lt conio h gt 72 Fun es Corpo principal do programa main clrscr linha realiza a chamada da fun o printf AxDB UM PROGRAMA EM C AxDBin linha getch Declara o da fun o linha
7. a 2 b a printf d Jd a b include lt stdio h gt main int a b a 2 b a printf d d a b 42 Aprendendo a Programar em Linguagem C No primeiro caso ser o impressos os valores 1 para a vari vel a e 2 para a vari vel b J no segundo caso ser impresso o valor 1 tanto para a vari vel a quanto para a vari vel b Hora de praticar Utilizando o recurso do teste chin s determine quais ser o os valores impressos para as vari veis do programa a seguir no final do processamento Programa Atento pra n o errar include lt stdio h gt main printf d d d d d a b c d e Operadores 43 Assim os valores das vari veis ser o os seguintes OPERADORES DE BITS Existem na linguagem C os chamados operadores de bits que objetivam de forma geral um tratamento l gico Eles n o podem ser aplicados s vari veis do tipo float e double S o eles E bit a bit OU inclusivo bit a bit OU exclusivo bit a bit Deslocamento a esquerda Deslocamento a direita Complemento un rio Geralmente o operador amp utilizado para mascarar um dado conjunto de bits J o operador utilizado para fazer liga es de bits O operador utilizado com o objetivo de desligar separar bits ligados atrav s do operador ou inclusivo Os operadores de deslocamento lt lt e gt gt realizam um deslocamento esquerda e direita em
8. co mo por exemplo na linguagem de programa o Pascal deste modo Var TAB array 0 99 of Integer Define uma tabela de 100 elementos inteiros Veja como tratada a defini o de um vetor do mesmo tipo 87 88 Aprendendo a Programar em Linguagem C int TAB 100 N o podemos esquecer que em C o primeiro elemento referenciado como TAB O Je o ltimo como TAB 99 1 UNIDIMENSIONA IS Vejamos ent o um simples exemplo de aplica o de vetores Seja o seguinte pro grama que soma as posi es correspondentes de dois vetores vetorl e vetor2 cu jos elementos s o fornecidos pelo usu rio programa exemplo de vetor define DIM 5 include lt stdio h gt Corpo principal do programa main int i vetor DIM vetor2 DIM for 1 0 i lt DIM i printf vetor 1 d 1 scanf d amp vetorl i for 1 0 i lt DIM i printf vetor2 d 1 scanf G d amp vetor2 i Manipula o com Vetores 89 for 1 0 i lt DIM i printf vetor1 d vetor2 d d n i i vetorl i vetor2 i Podemos ainda definir vetores como externos e est ticos cuja inicializa o seria uma lista de valores entre chaves e separados por v rgulas Veja o exemplo abaixo static int vetor 5 0 1 2 3 4 y ou static int vetor 0 1 2 3 4 Note que usamos a palavra reservada da linguagem C static para especificar q
9. e getch 36 Aprendendo a Programar em Linguagem C FUN O gets Essa fun o processa tudo que foi digitado at que a tecla ENTER seja pressiona da O caracter ENTER n o acrescentado string mas sim identificada como t r mino da mesma Exemplo Pr tico finclude lt stdio h gt include lt conio h gt main char nome 35 clrscr printf Digite seu nome gets nome clrscr printf Como vai s n nome FUN O getchar Em algumas situa es n o conveniente o uso do scanf ou gets Essas situ a es surgem porque em ambas as fun es preciso pressionar a tecla ENTER para sinalizar o fim da leitura Quando queremos efetuar uma a o parecida para apenas um caracter devemos utilizar a fun o getchar A biblioteca C disp e de fun es que l em um caracter no instante em que ele digitado sem a necessidade do pressionamento da tecla ENTER o que veremos mais adiante Aproveito a oportunidade para mostrar a forma de representar a utiliza o de Entrada de Dados 37 coment rios com m ltiplas linha include lt stdio h gt main char ch printf Digite uma tecla ch getchar printf An A tecla que voc pressionou foi c ch FUN O getche A fun o getche edita um caracter do teclado e permite que ele seja mostrado na tela do computador E dispens vel o pressiona
10. minsl minutos printf Digite a Segunda hora hora min 9 mins2 minutos printf A diferenca e d minutos mins2 mins2 fun o minutos minutos int hora min scanf d q amp hora amp min return hora 60 min 76 Aprendendo a Programar em Linguagem C Exemplo 4 include lt stdio h gt void main printf Luiza bar 27 printf ChrisW bar 41 printf Regina bar 34 printf Cindy bar 22 printf HaroldW bar 15 fun o gr fico de barras horizontal bar pontos int pontos vari vel global da fun o int j vari vel local da fun o for j 1 j lt pontos j printf AxCD printf An Fun es 77 Observe que neste ltimo exemplo foram passados determinados n meros atrav s das fun es criadas no programa Quando isso ocorre dizemos ter uma passagem de par metros que pode ser interpretada de duas maneiras distintas por valor e por refer ncia PASSAGEM DE PAR METRO POR VALOR E POR REFERENCIA Trata se da substitui o dos chamados par metros formais pelos par metros reais durante a execu o de uma certa sub rotina Essa substitui o pode ocorrer de duas formas Por valor quando o par metro passado n o tem seu valor alterado durante um certo processamento Por refer ncia ocorre quando existe uma altera o do valor do par metro real quando
11. o ao conte do NS A WN de uma dada vari vel a ATRIBUI O SIMPLES Trata se da atribui o simplificada de um certo valor uma determinada vari vel atrav s do operador igual Exemplo de Atribui o Simples finclude lt stdio h gt void main int a b 4 a b printf d Jd a b 46 Aprendendo a Programar em Linguagem C ATRIBUI O COMPOSTA E caracterizada uma atribui o composta quando utilizamos o recurso da lingua gem C de colocarmos em uma certa express o dois ou mais operadores Exemplo a a b a b a a b a b a a b a b a a b a b a a b a b Exemplo Pr tico include lt stdio h gt main int a b 5 a b b a printf d Jd a b OPERADORES ESPECIAIS DE ENDERE O A linguagem C suporta dois operadores que lidam com endere os o operador de volve endere o amp onde a vari vel estiver armazenada e o operador indireto que se referencia ao conte do apontado de uma certa vari vel A express o amp vari vel retorna o endere o do primeiro byte onde a vari vel est guardada Assim amp vari velx A express o ptr devolve o conte do da posi o de mem ria apontada por ptr Esse operador ser visto com mais detalhes quando estudarmos ponteiros ou apontadores Operadores 47 Exemplo do uso de Operadores de Endere o include lt stdio h gt main int x 2002 printf valor d n endere o
12. procurando a resposta N O Ent o continuaremos a pesquisa Manipula o com Vetores 111 3 Passo VET 1 A seguir verifico que o n mero que estou procurando menor que o n mero que estou 2 1 apontando logo concluo que o que procuro s pode estar da posi o anterior a que estou a 3 pontando at a minha atual posi o inicial do 4 vetor 3 4 Posi o Inicial Atual 5 e Posi o Final l 5 2 Atual 5 i lt Ent o pego a minha nova posi o final que 6 a posi o que estou apontando menos 1 somo com a posi o inicial que 5 e divido 7 por 2 para encontrar a minha nova posi o central ou seja Quociente 5 5 2 81 O A seguir aponto para o elemento 5 A fa o a celebre pergunta o que estou procurando a resposta N O 112 Aprendendo a Programar em Linguagem C 4 Passo VET A seguir verifico que o n mero que estou 1 procurando menor que o n mero que estou apontando logo concluo que o que procuro s 2 pode estar da posi o anterior a que estou a 1 pontando at a minha atual posi o inicial do vetor 3 ne Posi o Inicial Atual 5 e Posi o Final 4 Atual 4 4 2 ns 5 Ent o ele volta a apontar para uma posi o es que j hav amos visto anteriormente que n o 6 poderia estar Concluo ent o que toda vez que a posi o A inicial for maior qu
13. pu x amp x Um endere o de mem ria tratado como um inteiro sem sinal A sa da desse pro grama varia conforme a m quina e o endere o de mem ria onde o programa car regado Na realidade a aloca o dispon vel da mem ria onde o programa ser carregado depende tamb m da quantidade de aplicativos que voc j tem aberto e alocado mem ria do seu computador Uma poss vel sa da Valor 2002 E a j Endere o 1370 OPERADOR CONDICIONAL TERN RIO Funciona muito bem para situa es de decis es do tipo IF THEN ELSE ou seja quando em uma determinada condi o tem se que obter duas alternativas pos s veis uma verdadeira e outra falsa O pr ximo cap tulo trata detalhadamente das estruturas condicionais include lt stdio h gt include lt conio h gt 48 Aprendendo a Programar em Linguagem C main int a b max clrscr printf Digite dois numeros scanf d God amp a amp b max a gt b a b printf O maior deles e Jodin max Observe a seguir que ainda podemos fazer uma representa o bem melhor desse comando include stdio h include conio h main int a b clrscr printf Digite dois numeros scanf d God amp a amp b printf O maior deles e d n a gt b a b Operadores 49 A forma pela qual voc ir trabalhar com o operador condicional te
14. Entrada AH 13 AL 01 BL atributo BH n mero da p gina de v deo DX posi o inicial do cursor CX tamanho da cadeia ES BP ponteiro para o in cio da cadeia Registradores de Sa da nenhum Interrup o 10 Hexa Servi os de Tela Fun o 13 para AT Escreve cadeia de atributos e caracteres N o move o cursor Registradores de Entrada AH 13 AL 02 BH n mero da p gina de v deo DX posi o inicial do cursor CX tamanho da cadeia ES BP ponteiro para o in cio da cadeia Registradores de Sa da nenhum Interrup o 10 Hexa Servi os de Tela Sum rio 185 Fun o 13 para AT Escreve cadeia de atributos e caracteres Move o cursor para o final da cadeia Registradores de Entrada AH 13 AL 03 BH n mero da p gina de v deo DX posi o inicial do cursor CX tamanho da cadeia ES BP ponteiro para o in cio da cadeia Registradores de Sa da nenhum Interrup o 11 Lista de Equipamento Fun o Lista perif ricos conectados Registradores de Entrada nenhum Registradores de Sa da AX lista de equipamentos O drive de disquete 1 coprocessador matem tico 2 3 RAM da placa de sistema em bloco de 16k 4 5 modo de v deo inicial 00 n o usado 01 40x25 cor 10 80x25 cor 11 80x25 p amp b 6 7 n mero de drivers de disquetes menos 1 8 O DMA presente 186 Aprendendo a Programar em Linguagem C 1 DMA ausente 9 10 11 n mero de cart es RS 232 no sistem
15. a alternativa else if opcao C entrada de dados Aprendendo a Programar em Linguagem C 55 Estruturas Condicionais para a alternativa else if opcao D entrada de dados para a alternativa else puts Opcao Invalida No exemplo mostrado utilizamos o chamado bloco de comandos representado por e funciona como o begin e end do PASCAL include lt stdio h gt main char opcao puts Entre com uma letra opcao getch switch opcao case A 56 Aprendendo a Programar em Linguagem C printf Letra An case B printf Letra Bln case C printf Letra C n case D printf Letra Din default printf N o e A B C nem Din Observa o Na estrutura condicional de m ltipla escolha ou estudo de casos opcional a utiliza o da cl usula default para representar SB uma alternativa que significa EM NENHUM DOS CASOS PES ANTERIORES refere se comparativamente ao ELSE do comando CASE da linguagem de programa o Pascal CE Tamb m importante saber que a execu o do comando switch segue os seguintes passos 1 A express o avaliada 2 Se o resultado da express o for igual a uma constante ent o a execu o come ar a partir do comando associado a essa constante e prossegue com a execu o de todos os comandos at o fim
16. a figura anterior aparecer como resultado das sa das provenientes a fun o printf escritas no programa Endere o de a 65498 Conte do de a 9 Conte do de p 65498 Valor apontado por p 9 Endere o de p 65500 Sa da do Programa 28 Aprendendo a Programar em Linguagem C Pois p amp a indica que o ponteiro p armazenar o endere o de mem ria da vari vel a em quest o Na verdade quando p faz isso ele passa a ter o chamado endere a mento indireto da outra vari vel aqui denominada como a Na linha de comando p 9 indica que o ponteiro p est servindo como ponte para armazenar no conte do da vari vel apontado por ele a vari vel a o n mero 9 Logo o ponteiro p aponta para o conte do armazenado no endere o de mem ria da vari vel a Maiores detalhes sobre o uso das vari veis apontadoras ser o abordados no cap tulo 10 Tamb m foi utilizado o especificador de formato u que indica a utiliza o de uma vari vel dita unsigned ou seja sem sinal VARI VEL SEM SINAL Uma vari vel sem sinal caracterizada em C quando utilizamos o modificador un signed na frente da declara o de uma vari vel Por exemplo unsigned in num Neste significa dizer que a vari vel num ser uma vari vel do tipo inteira sem si nal Ent o se for atribu do o valor 3 para essa vari vel seu resultado ser 3 pois o si nal de negativo simplesm
17. a fun o if apresenta ordem matem tica N 1 Explique como funciona a chamada alternativa simples Exemplifique Explique como funciona a chamada alternativa composta Exemplifique Qual a fun o do comando break Para que utilizamos em nossos programas de computador as chamadas estru turas condicionais O que quer dizer a seguinte linha de comando if a gt b printf Jd a 62 Aprendendo a Programar em Linguagem C else printf J od b 8 Qual a fun o dos chamados conectivos de opera o 9 Qual o conectivo de opera o que expressa o contr rio do que estamos queren do referir 10 O que faz a seguinte linha de comando if sexo M printf Feminino T ESTRUTURAS DE ITERA O Essas estruturas s o utilizadas para que uma parte de seu programa possa ser repe tida n vezes sem a necessidade de reescrev lo Tamb m s o conhecidas como LOOP ou la os Iremos estudar as tr s estruturas poss veis conhecidas em C FOR para variando WHILE enquanto fa a e DO WHILE repita at Vamos analis las nessa or dem LOOP FOR E encontrado na maioria das linguagens de programa o incluindo C No entanto como vamos ver a vers o C mais flex vel e disp e de muito mais recursos do que a implementa o das outras linguagens A id ia b sica do comando for que voc execute um conjunto de comandos um n mero fixo de vezes enquanto uma vari vel de
18. atingem Estrutura de Dados 149 As rvores bin rias s o uma forma especial de lista encadeada Pode se inserir de letar e acessar itens em qualquer ordem A ordena o de uma rvore depende exclusivamente de como ela ser referenciada O procedimento de acesso a cada n chamado de rvore transversal Observe exemplo Exemplo de rvore Bin ria struct tree char info a o struct tree left A struct tree right t struct tree root primeiro n da rvore void main char s 80 struct tree stree root 0 inicializa a rvore do printf Entre com uma letra gets s if lroot root stree root root s 150 Aprendendo a Programar em Linguagem C else stree root root s while s printf tree root O struct tree stree root r info struct tree root struct tree r char info if r 0 r malloc sizeof t primeiro n da sub rvore if r 0 printf Estouro de memoria n exit O r gt left 0 r gt right 0 r gt info info if info lt root gt info root gt left r Estrutura de Dados else root gt right r return r if info lt r gt info stree r r gt left info else if info gt r gt info stree r r gt right info print tree r 1 struct tree r int l int i if r 0 return print_tre
19. d negativo e d positivo numl num2 else printf Sem coment rios in 60 Aprendendo a Programar em Linguagem C NEGA O Representado pelo s mbolo expressa exatamente o contr rio do valor relacionado na express o Observe no exemplo Exemplo Pr tico finclude lt stdio h gt include lt conio h gt main int num clrscr printf Digite um n mero scanf J d amp num if num1 0 printf d igual a zero num else printf d diferente de zero num Estruturas Condicionais 61 Atividade 1 1 ON om q ca o Vamos praticar Ptividades Fa a um programa em linguagem C que permita cadastrar dois n meros inteiros distintos atrav s do teclado Ao final do proces samento imprima qual o maior e o menor desses n meros Escreva um programa em linguagem C que permita ao usu rio ler tr s n meros distintos pelo teclado listando ao final do programa qual o maior menor e o mediano deles Fa a um programa em linguagem C que permita ao usu rio ler uma letra qual quer atrav s do teclado No final do processamento o programa dever infor mar se a letra digitada uma vogal ou uma consoante Escreva um programa em linguagem C que leia um n mero informando ao final do processamento se esse n mero primo ou n o Qual a diferen a do uso da m ltipla escolha para o ninho de if s O que significa dizer que
20. de mem ria que reservado para armazenar dados do seu programa Procure utilizar sempre que poss vel as cha madas vari veis significativas pois seu nome significa na ntegra o que elas ar mazenam referem se Exemplos nome idade altura endere o data nasc sal rio cargo etc 17 18 Aprendendo a Programar em Linguagem C TIPOS DE VARI VEIS EM C Com exce o do tipo void os demais tipos podem vir acompanhados por modifi cadores do tipo short long etc no momento de sua declara o TIPO BIT BYTES ESCALA char 8 1 128 a 127 int 16 2 32768 a 32767 float 32 4 3 4e 38 a 3 4e 38 double 64 8 1 7e 308 a 1 7e 308 void 0 0 sem valor Cada tipo de dado associado a uma determinada vari vel a fim de suprir a neces sidade real do programa de computador a ser desenvolvido Logo voc deve estar bastante atento a este simples por m valioso detalhe VARI VEL INTEIRA No exemplo a seguir iremos demonstrar como usar vari veis do tipo INTEIRA Um pouco mais tarde teremos acesso a outros tipos de vari veis que ser o declara das como externas Exemplo Pr tico include lt stdio h gt main int num num 2 printf Este o numero dois d num Tipos de Dados 19 Outro exemplo finclude lt stdio h gt void main int num1 num2 4 num1 num2 printf d An God num1 num2 Utilizamos a palavra reservada int para repr
21. identifica o da paleta Registradores de Sa da nenhum Interrup o 10 Hexa Servi os de Tela Fun o 0C Escreve ponto na tela Registradores de Entrada AH 0C AL cor CX coluna do ponto DL linha do ponto Registradores de Sa da nenhum Interrup o 10 Hexa Servi os de Tela Fun o OD L ponto da tela Registradores de Entrada AH 0D CX coluna do ponto DL linha do ponto Registradores de Sa da AL cor lida Interrup o 10 Hexa Servi os de Tela Sum rio 183 Fun o QE Imprime caracteres como TTY Registradores de Entrada AH 0E AL caracter BH n mero de p gina BL cor no modo gr fico Registradores de Sa da nenhum Interrup o 10 Hexa Servi os de Tela Fun o OF Obt m modo de v deo corrente Registradores de Entrada AH 0F Registradores de Sa da AH largura em caracteres AL modo de v deo BH n mero de p gina Interrup o 10 Hexa Servi os de Tela Fun o 13 para AT Escreve cadeia de caracteres N o move o cursor Registradores de Entrada AH 13 AL 00 BL atributo BH n mero de p gina de v deo DX posi o inicial do cursor CX tamanho da cadeia ES BP ponteiro para o in cio da cadeia Registradores de Sa da nenhum 184 Aprendendo a Programar em Linguagem C Interrup o 10 Hexa Servi os de Tela Fun o 13 para AT Escreve cadeia de caracteres Move o cursor para o final da cadeia Registradores de
22. matr a matr a 1 matr a 1 auxl strcpy aux2 aluno a strepy aluno a aluno a 1 strepy aluno a 1 aux2 aux3 avl a avl a avl a 1 avl a 1 aux3 aux3 av2 a av2 a av2 a 1 av2 a 1 aux3 aux3 med a med a med a 1 med a 1 aux3 troquei 1 while troquei clrscr Manipula o com Vetores a 0 while a lt MAX if med a gt 8 printf Aluno s M dia 2 1f n aluno a med a a getch Note bem que ao referenciarmos uma vari vel como string na origem de sua decla ra o precisamos inicialmente definir o tamanho do vetor e logo em seguida a quantidade de caracteres que esta vari vel assumir Observe bem a representa o a seguir char aluno MAX 30 E d Tamanho do Vetor Tamanho da String 9 118 Aprendendo a Programar em Linguagem C Za Exercicios g lz 7 Como posso declarar um vetor atrav s da linguagem C O que vetor Qual a diferen a de vetor unidimensional para um vetor que apresente mais de uma dimens o O que realmente uma matriz Declare uma matriz quadrada de ordem 4 que apresentar elementos do tipo inteiro Como posso determinar se minha ordena o ser crscente ou descrescente Qual a diferen a de Bubble Sort para Quick Sort Por que necess rio o uso de vari veis auxiliares durante o processo de troca em uma ordena o Escreva um algoritmo q
23. novo ab Abre um arquivo bin rio para grava o Os dados inseridos ser o adi cionados no final do arquivo mantendo assim os dados j gravados anteriormente rb Abre um arquivo bin rio para leitura e grava o O arquivo referenci ado deve existir para ser atualizado wb Abre um arquivo bin rio para leitura e grava o Caso o arquivo j exista o mesmo ser sobreposto Sen o o mesmo ser criado ab Abre um arquivo bin rio para atualiza o e para adicionar dados no final do arquivo existente ou um novo arquivo ser criado Utilizamos a fun o open para abrir um determinado arquivo que deve ser espe cificado no pr prio programa e close para fech lo Na abertura de um arquivo precisamos referenciar os flags de baixo n vel que ire mos trabalhar para que o compilador C possa referenciar de forma correta um ar quivo n o bufferizado bin rio Os flags na linguagem C assim como em algumas outras linguagens de programa o servem como bandeirinhas de controle para algumas espec ficas manipula es a serem feitas na pr pria linguagem Neste caso o controle de flags voltado para a forma de interpreta o de uma opera o com os diferentes tipos de arquivos existentes na linguagem C 164 Aprendendo a Programar em Linguagem C A seguir veja a rela o de flags aplic veis num programa em C OFLAG
24. operador condicional tern rio O que significa atribui o composta Cite um exemplo pr tico O operador de m dulo pode ser aplicado uma vari vel do tipo real oe cedo m A Explique com suas palavras qual o significado real do comando apresenta do valor a b a b a gt b 2a b 6 ESTRUTURAS CONDICIONAIS Essas estruturas permitem que o programa execute diferentes tipos de procedimen tos baseados em uma determinada decis o Basicamente existem dois tipos de es truturas condicionais alternativa simples e alternativa composta ALTERNATIVA SIMPLES if uma estrutura que atrav s de uma determinada condi o retorna um valor pos s vel Equipara se estrutura IF THEN do Pascal include stdio h include conio h main int a clrscr printf Entre com o valor de A scanf d amp a if a gt 0 printf CA e maior que ZERO n 51 52 Aprendendo a Programar em Linguagem C ALTERNATIVA COMPOSTA if else Essa estrutura diferente da primeira permite ao usu rio retornar dois valores pos s veis O primeiro verdadeiro se a condi o estipulada for satisfeita e o segundo falso caso a condi o n o seja devidamente atendida include lt stdio h gt include lt conio h gt main float salario clrscr printf Entre com seu salario scanf f amp salario if salario gt 1500 printf Vo
25. pode ser aplicado a vari veis do tipo float nem double A preced ncia matem tica quanto utiliza o de sinais mantida da mesma forma que na linguagem de programa o Pascal ou seja Somente s o apresentados de forma diferente os operadores compostos assim como os operadores de incremento e decremento n o est o dispon veis para a linguagem de programa o Pascal OPERADORES DE INCREMENTO E DECREMENTO Parece ser bem complicado primeira vista mas n o nenhum bicho de sete ca be as Incrementar uma vari vel significa na ntegra que estamos adicionando um valor a ela Decrementar uma vari vel justamente ao contr rio 40 Operadores Veja l 1 1 41 i Ambas as express es significam a mesma coisa incrementar um vari vel i Da mesma forma que as express es abaixo t m a mesma fun o i i l i Ou seja ambas as express es decrementam em um a vari vel i P S INCREMENTO E PR INCREMENTO include lt stdio h gt main int a b a 2 b a printf d Jd a b include lt stdio h gt main int a b a 2 b a printf d d a b No primeiro caso ser o impressos os valores 3 para a vari vel a e 2 para a vari vel b J no segundo caso ser impresso o valor 3 tanto para a vari vel a quanto para a vari vel b P S DECREMENTO E PR DECREMENTO include lt stdio h gt main int a b
26. posi o inicial que a posi o que estou apontando mais 1 somo com a posi o final que 8 e divido por 2 para encontrar a minha nova posi o central ou seja Quociente 5 8 2 A seguir aponto para o elemento 6 A fa o a c lebre pergunta o que estou procurando a resposta N O Ent o continuaremos a pesquisa 108 Aprendendo a Programar em Linguagem C 3 Passo VET A seguir verifico que o n mero que estou 1 procurando menor que o n mero que estou Po apontando logo concluo que o que procuro s 2 p pode estar da posi o anterior a que estou a pontando at a minha atual posi o inicial do 3 vetor neo Posi o Inicial Atual 5 e Posi o Final al Atual 5 A 20 5 Ent o pego a minha nova posi o final que 4 a posi o que estou apontando menos 1 somo 6 com a posi o inicial que 5 e divido por 2 pa ra encontrar a minha nova posi o central ou 7 seja Quociente 5 5 2 i P A seguir aponto para o elemento 5 A fa o a c lebre pergunta o que estou procurando a resposta SIM a seguir paro a pesquisa Entendeu Ent o para facilitar ainda mais o entendimento desse processo vamos simular a seguir a busca de um determinado valor armazenado no vetor VET Manipula o com Vetores 109 Vamos procurar pelo n mero 6 Valor inexistente 1 2 3 6 7 8 VET
27. tamb m ponteiro do mesmo tipo Explique com suas palavras para que serve a fun o malloc 11 ESTRUTURAS Uma estrutura em C criada atrav s da palavra reservada struct Criar uma estrutu ra de dados nada mais do que definir um tipo de dado n o existente como padr o PRIMITIVO para uma linguagem de programa o ESTRUTURA SIMPLES Trata se de manipular de forma simplificada uma estrutura sem que haja nenhum tipo de encadeamento o que ocorre nas estruturas compostas que veremos mais adiante Exemplo de Estrutura Simples em C include lt stdio h gt include lt conio h gt struct livro char titulo 30 int regnum struct livro livrol Helena 102 struct livro livro2 Iracema 321 128 Estruturas 129 main clrscr printf An Lista de livros n printf Titulo s An livrol titulo printf Numero do registro 03dn livrol regnum printf Titulo s n livro2 titulo printf Numero do registro 03dn livro2 regnum geteh O tratamento de uma estrutura em C funciona da mesma forma que na linguagem Pascal Para mencionar uma vari vel da estrutura criada basta colocar o nome da vari vel estrutura um ponto e o campo o qual vai ser trabalhado livro1 titulo ESTRUTURA COMPOSTA Trata se do uso de mais de uma estrutura encadeada a outras estruturas Os itens campos dessas estruturas s o trabalhados de forma
28. tr s nomes de vari veis v lidas Diferencie Vari vel Local de Vari vel Global Como declarar uma vari vel do tipo ponteiro ou apontadora Como declarar uma constante num programa em linguagem C Como podemos utilizar uma vari vel sem sinal Quais s o os tipos primitivos de vari veis Diferencie vari vel real de precis o simples de real de precis o dupla Quais s o as tr s informa es expressas por uma vari vel do tipo aponta dora ou ponteiro Uma vari vel String na linguagem C interpretada por um conjunto de ca racteres Verdadeiro ou Falso Quais os respectivos tamanhos em bytes da vari vel real de precis o sim ples e da vari vel real de precis o dupla O que voc entende por endere amento indireto 4 ENTRADA DE DADOS Em alguns exemplos j abordados anteriormente for osamente tive que utilizar entrada de dados para representarmos algumas aplica es Neste momento iremos abordar as poss veis maneiras de fornecemos dados a um certo programa em linguagem C Devemos na realidade saber que a linguagem C apresenta dois tipos de entrada de dados formatada e n o formatada FUN O DE ENTRADA FORMATADA scanf utilizada para permitir ao usu rio realizar uma entrada de dados geralmente a trav s do teclado Assim como a fun o printf requer a utiliza o dos c digos de formata o de tipos de vari veis Observe bem o nosso pr ximo exemplo include stdio h
29. 6 Aprendendo a Programar em Linguagem C c 0 d x Qual a diferen a da fun o main e void main Qual a fun o de cada formatador especificado abaixo e d f c g Jos h f i u Qual a fun o do puts Diferencie o uso da fun o printf e puts O que faz a fun o putchar Z Como posso fazer para receber um mesmo valor caracter mostrando o que est sendo digitado ou n o Comente com suas palavras qual a principal vantagem existente na varia o de fun es para manipula o de dados do tipo caracter 3 Tipos DE DADOS Os dados s o representados pelas informa es que ser o processadas pelo compu tador Estas informa es s o caracterizadas por dados num ricos caracteres ou l gicos Os chamados dados num ricos podem ser inteiros n mero positivo ou negativo sem o uso de casas decimais ou reais n mero positivo ou negativo com o uso de casas decimais Como exemplo tem se 56 0 8 entre outros Os dados caracteres podem ser representados por um nico caracter ou por um con junto de caracteres o qual nomeamos de string Como exemplo tem se RENATA Ryu Karlus Rua Alfa n 24 171 B entre outros Os dados que s o conhecidos como l gicos s o tamb m chamados de dados bolea nos por apresentarem apenas dois valores poss veis Verdadeiro true ou Falso false VARI VEIS Uma vari vel nada mais do que um endere o
30. ALFREDO BOENTE APRENDENDO A PROGRAMAR EM WNGUAGEIVI DO B SICO AO AVAN ADO ABORDA INSTALA O DO TURBO C 50 EXERC CIOS CRIPTOGRAFIA ROTINAS DE ROMBIOS TABELA ASCII My Parte Conhecendo A Linguagem C 1 CONCEITOS B SICOS DA LINGUAGEM C Antes mesmo de falarmos em linguagem C gostaria de apresentar lhes o Juan um passarinho bem simp tico que tem por objetivo chamar sua aten o para os mo mentos de maior import ncia deste livro Ol Meu nome Juan Espero que voc s gostem deste livro assim como eu a p A linguagem C criada por Dennis M Richie e Ken Thompson no laborat rio Bell em 1972 baseada na linguagem B de Thompson que era uma evolu o da antiga linguagem BCPL A linguagem B recebeu este nome por ser a primeira letra da linguagem BCPL e conseq entemente a linguagem C com a segunda letra desta Quando fui apresentado inicialmente Linguagem C me informaram que a lingua gem sucessora da C seria a linguagem P e por conseguinte a linguagem L Bem depois desse tempo todo acompanhei o surgimento do C C Oak Java entre outras com caracter sticas semelhantes s da linguagem C mas somente isto Creio que depois de tanto tempo e por terem surgido linguagens de extremo poder com putacional as poss veis linguagens P e L ficaram apenas registradas como parte de um conto de est ria 6 Aprendendo a Programar em Linguagem C O livro cl ssico que serve de lite
31. EOF Para que utilizado em um determinado programa escri to em linguagem C 16 CRIPTOGRAFIA Embora ningu m saiba realmente quando iniciou o processo de escrita secreta afirmado por Schildt 9 que um dos exemplos mais antigos o tablete cuneifor me feito por volta de 1500 a C Esse tablete cuneiforme cont m uma f rmula codificada para fazer cobertura vitri ficada em cer mica Os gregos e espartanos usavam c digos em 475 a C e a classe alta romana fregiientemente usava cifras simples durante o reino de Julio C sar Ipod AAdpe do Boevte AovTOporv o u xi VIXLOLO a Xourvtal Do nea Yvimepordod de Aa HABava Xvpo Durante a Idade M dia o interesse pela criptografia bem como muitas outras reas intelectuais diminuiu exceto entre os monges que as usavam ocasionalmente Com a vinda do renascimento italiano a arte da criptografia novamente floresceu 170 Criptografia 171 Na poca de Luis XIV da Fran a um c digo baseado em 587 chaves randomica mente selecionadas era usado em mensagens governamentais Por volta de 1800 dois fa tores ajudaram no desenvolvimento da crip tografia Primeiro eram as est rias de Ed gard Allan Poe tais como THE GOLD BUG que apresentava mensagens em c di go e excitava a imagina o dos leitores O segundo foi a inven o do tel grafo e do c digo Morse O c digo Morse foi a primeira representa o bin ria pontos e tra os do al fabeto que teve
32. IROS Inicialmente vejamos o seguinte exemplo include lt stdio h gt main int vetor 3 p1 p2 pl vetor p2 amp vetor 2 pl 0 p1 1 1 p1 2 2 if p2 gt p1 printf Posicoes d n p2 p1 Ponteiros ou Apontadores 125 Observe nesse exemplo que podemos usar com vari veis ponteiros os mesmos ope radores aritm ticos que usamos com vari veis comuns Isto porque embora seja uma vari vel dita ponteiro ou apontadora simplesmente n o deixa de ser uma va ri vel a qual tratamos com os j conhecidos operadores A nica diferen a que em determinados momentos estaremos trabalhando com endere os de mem ria e n o somente conte dos que o que acontece com as vari veis comuns Outro Exemplo include lt stdio h gt define MAX 5 void main int d int entra 0 char nome 40 static char list MAX Katarina Nigel Gustavo Francisco Airton F printf Digite seu nome 0 gets nome 126 Aprendendo a Programar em Linguagem C for d 0 d lt MAX d if stremp list d nome 0 entra 1 if entra 1 printf Voce foi identificado em nosso cadastro else printf Guardas Prendam este sujeito ARGUMENTOS DA FUN O main A linguagem C s permite ao programador utilizar como argumentos da fun o main o argc que representa um n mero inteiro referente qu
33. Observe a seguir o uso pr tico do operador de m dulo j visto no cap tulo 5 deste livro include lt stdio h gt define LIN 5 92 Aprendendo a Programar em Linguagem C define COL 5 void main int mat LIN COL i j for i 1 i lt 5 i for j 1 j lt 5 j printf AnEntre com o elemento d d 1 J scanf Jod amp mat i j for i 1 i lt 5 i for j 1 j lt 5 j if G j amp amp mat i lj 2 0 printf n d mat i j ALGORITMOS DE ORDENA O Ordenar ou simplesmente classificar uma tabela consiste em fazer com que seus elementos sejam armazenados de acordo com um crit rio de classifica o determi nado Os ditos crit rios de classifica o podem variar muito dependendo do tipo dos e lementos que estejam sendo ordenados e tamb m do prop sito final do programa Manipula o com Vetores 93 Nos casos mais simples como os que ser o examinados aqui os elementos da ta bela s o n meros inteiros e os crit rios de ordena o se resumem ordem crescen te ascendente do menor para o maior ou decrescente descendente do maior para o menor dos valores expressos na tabela Podemos at trabalhar com tabelas n o ordenadas contudo n o aconselh vel pois dificultaria um processo de busca din mica como o caso da pesquisa bin ria por exemplo A seguir veremos a ordena o de forma crescente de um ve
34. SIGNIFICADO O APPEND Coloca o ponteiro de arquivo no fim dele O CREAT Cria um novo arquivo para grava o n o faz efeito se j existe O RDONLY Abre um arquivo somente para leitura O_RDWR Abre um arquivo para leitura e grava o O_TRUNC Abre e trunca um arquivo existente para tamanho ZERO O_WRONLY Abre um arquivo somente para grava o O_BINARY Abre um arquivo em modo bin rio O_TEXT Abre um arquivo em modo texto A fun o read foi utilizada para ler informa es contidas no arquivo Outro Exemplo include lt fentl h gt necess rio para trabalhar com oflags finclude lt stdio h gt necess rio para trabalhar com NULL finclude lt string h gt necess rio para trabalhar com memchr define TAMBUFF 1024 char buff TAMBUFF main argc argv int argc char argv int i bytes if arge 3 Opera es com Arquivos 165 printf Formato C gt Procura fonte xxx frase exit 1f 1 open argv 1 O RDONLY lt 0 printf N o posso abrir s argv 1 exit while bytes read i buff TAMBUFF gt 0 procur argv 2 bytes close i printf frase n o encontrada procura frase no buffer procur frase tambuf char frase int tambuf char ptr p ptr buff while ptr memchr ptr frase 0 tambuf NULL 166 Aprendendo a Programar em Linguagem C if mememp ptr frase strlen frase 0 p
35. UFF 512 char buff TAMBUFF 162 Aprendendo a Programar em Linguagem C main argc argv S o os nicos par metros poss veis da fun o main Declaradas como Globais int argc char argv int i bytes j if argc 2 printf Formato C gt lenb arg xxx exit if i open argv 1 O RDONLY O BINARY lt 0 clrscr printf N o posso abrir s argv 1 exit while bytes read i buff TAMBUFF gt 0 for j 0 j lt bytes j putch buff j close i getch Opera es com Arquivos 163 No nosso exemplo para a fun o main foram utilizados como par metros argc que deve ser um inteiro e argv que deve ser um vetor ponteiro de caracteres vazio para referenciarem poss veis passagens de par metros atrav s da fun o main Tam b m utilizamos a fun o exit que funciona de forma semelhante fun o HALT da linguagem de programa o Pascal Sua fun o interromper a execu o do pro grama na mem ria do computador Abaixo segue uma lista completa com as op es poss veis de abertura de arquivo bin rio para a fun o fopen rb Abre um arquivo bin rio para leitura Nesse tipo de leitura o arquivo dever estar presente fisicamente no disco wb Abre um arquivo bin rio para grava o de dados Se o arquivo refe renciado j existir ele ser sobreposto caso contr rio ser criado um
36. a finclude lt stdio h gt include lt conio h gt main FILE fp char string 81 clrscr fp fopen argtext txt w while strlen gets string gt 0 fputs string fp fputs An fp fclose fp E Algumas fun es utilizadas strlen Retorna um n mero inteiro relacionado quantidade de caracteres con tidos numa certa string fputs Realiza a grava o de uma linha string digitada atrav s do teclado Leitura de uma linha inteira string de um arquivo texto finclude lt stdio h gt include lt conio h gt Opera es com Arquivos 161 main FILE fp char string 81 clrscr fp fopen argtext txt r while fgets string 80 fp NULL printf Jos string fclose fp Foi utilizada a fun o fgets que por padr o assume tr s argumentos em sua sintaxe de utiliza o o primeiro um ponteiro para o buffer onde ser armazenada a linha lida o segundo indica a quantidade m xima de caracteres a serem lidos e o terceiro argumento um ponteiro para a estrutura arquivo criada FILE ARQUIVO BIN RIO A manipula o feita com arquivos bin rios conhecida como arquivos n o buffe rizados ou baixo n vel pois obriga o programador a criar e a manter o buffer de da dos para as manipula es de leitura e grava o LENDO ARQUIVOS finclude fcntl h necess rio para trabalhar com oflags define TAMB
37. a 12 E S de jogo conectada 13 n o usado 14 15 n mero de impressoras conectadas Interrup o 12 Fun o de Mem ria Fun o Obt m mem ria dispon vel Registradores de Entrada nenhum Registradores de Sa da AX tamanho da mem ria em Kb Interrup o 13 Fun es de Disco Fun o 00 Reseta sistema de disco Registradores de Entrada AH 00 Registradores de Sa da nenhum Interrup o 13 Fun es de Disco Fun o 01 Obt m estado do disco Registradores de Entrada AH 01 Registradores de Sa da AH c digo de estado em hexa A flag de mau setor F AA drive n o pronto F BB erro indefinido F Sum rio Interrup o 13 Fun es de Disco Fun o 02 Registradores de Entrada Registradores de Sa da Interrup o 13 Fun es de Disco Fun o 03 Registradores de Entrada 187 CC grava o F EO erro de estado F 1 comando errado 2 marca de endere o n o encontrado 3 tentativa de grava o em disco protegido D 4 setor n o encontrado 5 falha no reset F L setores do disco AH 02 AL n mero de setores CH n mero de trilhas CL n mero de setor DH n mero de cabe a DL n mero de drive ES BX ponteiro para o buffer CF flag de sucesso falha AH c digo de estado veja fun o 01 AL n mero de setores lidos Grava setores no disco AH 03 188 Registradores de Sa da Interrup o 13 Fun
38. a da de Dados 11 Podemos utilizar a fun o printf atrav s do formatador s para entrada de dados do tipo String Contudo se for digitado um nome a yl composto por exemplo ANA MARIA a fun o interpreta que AA 4 ANA uma String e MARIA outra Bem a respeito da fun o para NS PZN entrada de dados scanf veremos um pouco mais tarde Para evi ai tar esse tipo de problema mais adiante ser estudada a fun o gets espec fica para dados do tipo String Ent o uma String para a fun o printf terminada quando o caracter espa o em branco lido por ela Tecnicamente dizemos que este caracter nulo NULL tam b m representado pela linguagem de programa o C como O FORMATADORES DA FUN O As fun es de Entrada e Sa da formatadas utilizam por padr o os chamados forma tadores de tipos de vari veis E atrav s dele que as fun es conseguem expressar seus respectivos valores A tabela a seguir mostra os c digos para impress o formatada da fun o printf e o que eles realmente expressam C DIGO printf FORMATO c APENAS UM CARACTER d DECIMAL INTEIRO e NOTA O CIENT FICA f PONTO FLUTUANTE float ou doubl g e OU f O MAIS CURTO 0 OCTAL s CADEIA DE CARACTERES STRING u DECIMAL SEM SINAL x HEXADECIMAL 12 Aprendendo a Programar em Linguagem C Exemplo include lt stdio h gt void main int num 12
39. a da imediata do switch Se n o existir um comando break seguindo as instru es associadas a um case o programa prosseguir execu tando todas as instru es associadas aos cases a seguir CONECTIVOS DE OPERA O Os chamados conectivos de opera o s o utilizados para permitir que possamos utilizar condi es m ltiplas ligadas a mesma estrutura condicional Eles podem ser utilizados da seguinte forma CONJUN O Representado pelo s mbolo amp amp Expressa que uma alternativa deve ser satisfeita assim como a outra que acompanha a estrutura do comando utilizado Na verdade ambas as alternativas devem ser verdadeiras Observe no exemplo include lt stdio h gt include lt conio h gt main int num1 num2 clrscr printf Digite dois n meros 59 Estruturas Condicionais scanf Jd Jd amp numl amp num2 if numl 0 amp amp num2 0 printf Voc forneceu apenas o numeral zero else printf d a b DISJUN O Representado pelo s mbolo Il expressa que uma alternativa deve ser satisfeita ou a outra que acompanha a estrutura do comando utilizado Na verdade basta que uma delas seja verdadeira Observe no exemplo include lt stdio h gt include lt conio h gt main int num1 num2 clrscr printf Digite dois n meros scanf Jd Jd amp numl amp num2 if numl lt 0 II num2 gt 0 printf
40. a id ia Manipula o com Vetores 97 M TODO DE SELE O Quick Sort Ordem crescente tab i gt tab j sei gt j Ordem decrescente tab i lt tab j sei lt j Exemplol Ordena o Crescente include lt stdio h gt define N 5 main int ind1 ind2 tab N puts Entre com os valores da tabela for ind1 0 indl lt N ind1 scanf d amp tab ind1 for ind1 0 indl lt N 1 indl int aux indmin for indmin ind1 ind2 ind1 1 ind2 lt N ind2 if tab indmin gt tab ind2 indmin ind2 98 Aprendendo a Programar em Linguagem C aux tab indmin tab indmin tab ind1 tab ind1 aux puts AnO vetor ordenado e for ind1 0 indl lt N indl printf d n tab indl fia oa Exemplo2 Ordena o Decrescente L include lt stdio h gt define N 10 main int ind1 ind2 tab N puts Entre com os valores da tabela for ind1 0 indl lt N ind1 scanf d amp tab ind1 for ind1 0 indl lt N 1 indl Manipula o com Vetores 99 int aux indmin for indmin indl ind2 indl 1 ind2 lt N ind2 if tab indmin lt tab ind2 indmin ind2 aux tab indmin tab indmin tab ind1 tab ind1 aux puts nO vetor ordenado e for ind1 0 indl lt N indl printf d n tab ind1 A seguir ser abordado o m todo da
41. a linguagem C procura se representar um caracter gr fico basicamente de duas formas A primeira digitando de forma direta entre aspas o caracter desejado Uma outra maneira representar o caracter atrav s da representa o deste em he xadecimal valor este associado ao caracter pretendido de acordo com padr es es tabelecidos na tabela ASCII veja no ap ndice B Mostra o desenho de um carro e uma caminhonete include lt stdio h gt include lt conio h gt void main clrscr printf n n n printf An xDC xDC xDB xDB xDB xDB xDC xDC printf An AxDFOIxDHxDHxDFxDFOxDF printf An An An printf An xDC xDC xDB xDB xDB xDB xDB xDB x DB printf An AxDFOIxDFixDFxDHxDFxDFOOxDF printf An An An 153 154 Aprendendo a Programar em Linguagem C getchar Faz uma pausa at que uma tecla seja pressionada Outro exemplo gr fico Mostra o desenho de uma caixa quadrada moldura finclude stdio h include conio h void main clrscr printf A xCAxCD xCD xCD xCD xBB n printf xBA xBA n printf AxC8ixCDIxCDAxCDIxCDIxBCin getchar Realiza uma pausa tempor ria Mais um exemplo include lt stdio h gt include lt conio h gt void main espacos 30 linha espacos 30 printf AxDB UM PROGRAMA EM C xDBn Trabalhando com Caracteres Gr ficos espacos 30 linha l
42. a vari vel cont ponteiro 3 Armazena indiretamente na vari vel cont o n 3 printf Ponteiro d An Cont Jd ponteiro cont getch Pausa tempor ria at que uma tecla seja pressionada 26 Aprendendo a Programar em Linguagem C Na verdade quando utilizamos ponteiros ou apontadores utilizamos a simula o da t cnica de gerenciamento de mem ria denominada em arquitetura de computa dores e sistemas operacionais como endere amento indireto Outro Exemplo include lt stdio h gt include lt conio h gt main int a p p amp a p 9 clrscr printf Endere o de a Jun amp a printf Conte do de a dn a printf Conte do de p Jun p printf Valor apontado por p din p printf Endere o de p uln amp p getch Neste exemplo conseguimos observar que ao trabalharmos com vari veis do tipo ponteiro ou apontadoras podemos ter acesso a tr s informa es teis sobre elas Tipos de Dados 27 1 O conte do da vari vel ponteiro 2 O valor que est sendo apontado por ela 3 O endere o de mem ria onde est alocada essa vari vel Suponha que as vari veis estejam alocadas aos seguintes endere os de mem ria a Pd 65498 a 4 1 Pd 7 A 7 Y F A Pd r p Pa Endere antento F Tp 65500 De acordo com
43. amos armazenar uma carta redigida pelo processo de grava o Na linguagem C um arquivo texto tecnicamente denominado arquivo bufferiza do Observe como se comporta um arquivo texto na linguagem C e quais s o as fun es comandos utilizadas para realizar tal opera o Escreve um caracter por vez no arquivo texto finclude lt stdio h gt include lt conio h gt void main 157 158 Aprendendo a Programar em Linguagem C FILE fp char ch fp fopen argtext txt w while ch getche x1b x1b representa a tecla ESC pute ch fp fclose fp printf Grava o efetuada com sucesso geteh Algumas fun es e palavras reservadas utilizadas na cria o de arquivos FILE Determina que uma vari vel ponteiro associada ao arquivo f sico externo cria um ponteiro para a estrutura arquivo uso obrigat rio na linguagem C fopen Realiza a abertura de um arquivo em linguagem C putc Grava um caracter por vez num arquivo texto fclose Usado para fechar um arquivo aberto na mem ria do computador pela fun o fopen A seguir apresentada uma lista completa com as op es poss veis de abertura de arquivo texto para a fun o fopen O Abre um arquivo texto para leitura Nesse tipo de leitura o arquivo de ver estar presente fisicamente no disco bbg Abre um arquivo texto para grava o de dados Se o arq
44. antidade de par metros que poder o ser passados atrav s da fun o main e o argv que represen ta um vetor vazio de ponteiro de caracteres referentes aos poss veis argumentos que ser o passados pela linha de comandos Exemplo Pr tico include lt stdio h gt main argc argv int argc char argv int contador 0 for contador lt argc contador printf s argv contador Considere que o nome do programa seja TESTE e atrav s da linha de comandos foram passados os seguintes valores como argumentos Ponteiros ou Apontadores 127 CA gt TESTE Omega Gama Delta lt ENTER gt Logo o valor de argc ser igual a 3 pois foram passados tr s argumentos Omega Gama e Delta Assim teremos como valores de argv Mi e cod AS argv 0 Omega argv 1 Gama argv 2 Delta o Exercicios wi O que voc entende por aloca o din mica Defina vari veis apontadoras Quais s o os poss veis argumentos da fun o main Diferencie argv de argc Na aritm tica com ponteiros posso efetuar opera es com tipos de vari veis diferentes que n o tenham o mesmo tipo Justifique sua resposta Numa aloca o din mica posso usar vetor de diferentes tipos Justifique sua resposta Escreva um programa em linguagem C que permita ao usu rio armazenar em uma vari vel ponteiro valores de forma indireta ou seja o conte do armazena do dever ser feito a partir de outra vari vel
45. bolha tecnicamente denominado Bubble Sort Observe e fa a um comparativo entre eles M TODO DA BOLHA Bubble Sort O nome m todo da bolha deriva se da maneira com que os maiores valores afun dam em dire o ao fim do vetor enquanto os menores valores borbulham em dire o superf cie ou topo da tabela No programa a seguir usa se a vari vel troquei para indicar se durante um passo foi executada alguma troca Exemplol Ordena o Crescente include lt stdio h gt 100 Aprendendo a Programar em Linguagem C define N 10 define FALSE 0 define TRUE 1 main int ind1 ind2 tab N aux troquei puts Entre com os valores da tabela for ind1 0 indl lt N indl scanf d amp tab indl ind2 N 1 do troquei FALSE for indl O indl lt ind2 indl if tab indl gt tab indl 1 aux tab ind1 tab ind1 tab indl 1 tab indl 1 aux Manipula o com Vetores troquei TRUE ind2 while troquei puts nO vetor ordenado e for indl 0 ind1 lt N indl printf d n tab ind1 Exemplo2 Ordena o Decrescente include lt stdio h gt define N 10 define FALSE 0 define TRUE 1 main int ind1 ind2 tab N aux troquei puts Entre com os valores da tabela 101 102 Aprendendo a Programar em Linguagem C for ind1 0 indl lt
46. ce ganha bemin else printf Voce precisa ganhar mais um pouquinholn ENCADEAMENTO DE if s Trata se de um recurso que permite ao usu rio utilizar uma estrutura if dentro de outra obtendo assim diversas respostas poss veis Uso do ninho de if s include stdio h void main Estruturas Condicionais 53 int num printf Entre com um numero scanf d amp num if num 0 printf Numero ZERO else if num lt 0 printf Numero Negativo else printf Numero Positivo Aqui podemos realmente constatar que a fun o if tem ordem matem tica N 1 que significa dizer Para cada N respostas que eu precise obter utilizarei N 1 fun o if M LTIPLA ESCOLHA switch case A utiliza o do switch case oferece in meras vantagens em rela o utiliza o da estrutura ninho de if s Um exemplo pr tico a facilidade de escrita de uma estru tura composta por m ltiplas escolhas que requer diversas alternativas a partir de um certo programa de computador Observe o comparativo entre o comando ninho de if s e o comando switch Exemplo Explicativo include lt stdio h gt 54 void main char opcao puts Entre com uma letra opcao getch if opcao A entrada de dados para a alternativa else if opcao B entrada de dados para
47. char lt nome da vari vel gt lt tamanho gt Por exemplo char nome 40 char telefone 13 char endere o 20 24 Aprendendo a Programar em Linguagem C Entrada de dados com String include lt stdio h gt include lt conio h gt main char nome 30 endere o 20 cidade 15 uf 2 tel 13 clrscr puts Entre com seu nome gets nome puts Seu endere o gets endereco puts Cidade gets cidade puts UF gets uf puts Telefone gets tel clrscr gotoxy 10 5 printf s s nome tel Tipos de Dados 25 Z s a STRING vista como um vetor de caracteres pela linguagem C meat 4 IMPORTANTE Logo verdadeiro afirmar que uma vari vel VARI VEL PONTEIRO Uma vari vel ponteiro ou apontadora aquela que ao inv s de armazenar um certo conte do de dado guarda em seu espa o de mem ria o endere o de mem ria de outra vari vel que normalmente apresenta um dado a ser manipulado pelo progra ma Na declara o de uma vari vel ponteiro ou apontadora devemos utilizar como prefixo da mesma um aster stico para que o compilador interprete que esta va ri vel realmente um ponteiro Exemplo Utilizando Ponteiro ou Apontadores include lt stdio h gt main int cont ponteiro Representa o de uma vari vel ponteiro ponteiro amp cont Referencia se ao endere o d
48. clude lt conio h gt finclude lt ctype h gt finclude lt alloc h gt include lt stdlib h gt struct prs char titulo 30 char autor 30 int regnum double preco struct prs ptrprox struct prs ptrprim ptrnovo ptratual void novonome t char numstr 81 prestr 10 ptrnovo struct prs malloc sizeof struct prs if ptrprim struct prs NULL ptrprim ptratual ptrnovo else ptratual ptrprim Estrutura de Dados 145 while ptratual gt ptrprox struct prs NULL ptratual ptratual gt ptrprox ptratual gt ptrprox ptrnovo recebe o endere o da nova posit o ptratual ptrnovo printf n printf nDigite o t tulo gets ptratual gt titulo printf AnDigite o autor 9 gets ptratual gt autor printf AnDigite n mero de registro o gets numstr ptratual gt regnum atoi numstr printf nDigite o pre o 9 gets prestr ptratual gt preco atof prestr ptratual gt ptrprox struct prs NULL 146 Aprendendo a Programar em Linguagem C void listatudo if ptrprim struct prs NULL printf nLista vazia n return ptratual ptrprim do printf n printf AnT tulo s n ptratual gt titulo printf nAutor s n ptratual gt autor printf nN mero do Reg 03d n ptratual gt regnum printf nPre o 4 2f n ptratual gt preco ptratual ptratual gt ptrprox w
49. clude lt stdio h gt finclude lt conio h gt main int a 89 unsigned int b 95 printf 02d a A sa da ser 89 printf 04u b A sa da ser 0095 printf 06d a A sa da ser 000089 printf 08u b A sa da ser 00000095 Quando estivermos nomeando vari veis para nossos programas devemos tomar bastante cuidado com os nomes criados para que n o venhamos a usar as chamadas PALAVRAS RESERVADAS da linguagem C Observe algumas dessas palavras reservadas Tipos de Dados 21 auto extern sizeof break float static case for struct char goto switch const if typedef continue int union default long unsigned do register void double return volatile else short while enum signed VARI VEL REAL Como j foi comentado anteriormente as vari veis reais s o aquelas que apresen tam o uso de casas decimais valores fracion rios Em C podemos utilizar duas categorias de vari veis reais as vari veis reais de simples precis o ou precis o simples e as vari veis reais de dupla precis o ou precis o dupla REAL DE PRECIS O SIMPLES Na linguagem C utiliza se float para representar uma vari vel do tipo REAL de precis o simples ocupa 4 bytes Real de precis o simples include lt stdio h gt main float n1 n2 nl 6 n2 5 5 22 Aprendendo a Programar em Linguagem C printf A soma
50. controle incrementada ou de crementada a cada passagem pelo la o Vejamos o exemplo a seguir include lt stdio h gt include lt conio h gt main t int i 63 64 Aprendendo a Programar em Linguagem C clrscr for i 1 i lt 10 i printf d n 1 Observe que dentro dos par nteses tem tr s express es separadas por ponto e v rgula A primeira express o normalmente a inicializa o da vari vel de con trole do loop for A express o dois central um teste que enquanto o resultado for verdadeiro reflete em continua o do la o A terceira express o ltima normalmente o incremento ou decremento da vari vel de controle do loop for A nalise bem o pr ximo exemplo do la o for Exemplo Pr tico include lt stdio h gt main inti 1 for 1 lt 10 i printf d n 1 No exemplo mostrado suprimida a representa o da inicializa o da vari vel con tador dentro do pr prio comando pois o contador i j havia sido inicializado ante riormente no momento de sua declara o Observe a seguir outro exemplo da estrutura for tendo como resultado um outro comando for resultando assim em um for dentro de outro for include stdio h include conio h Estruturas de Itera o 65 main inti j clrscr for i l i lt 10 i for j 1 j lt 10 j printf And x d d i j i j Veja
51. de do pressionamento da tecla de entrada de dados ENTER Exemplos puts JUAN puts Gabriel puts Pires Boente FUN O putchar Representa a sa da de apenas um caracter na tela do computador e n o acrescenta uma nova linha automaticamente como a fun o puts As duas instru es se guintes s o equivalentes putchar c printf Jc c Exemplo Pr tico finclude lt stdio h gt include lt conio h gt void main 14 Aprendendo a Programar em Linguagem C clrscr printf CA primeira letrain puts do alfabeto gotoxy 5 4 putchar a Foi utilizada a biblioteca lt conio h gt que permite ao programador usar a fun o clrscr para limpar a tela do computador e a fun o gotoxy COL LIN para posicionar o cursor em um ponto de coluna e linha na tela do computador A biblioteca lt conio h gt significa Console Input Output O programa exemplo a seguir mostra a exibi o de uma certa mensagem redirecio nada tanto para a tela do computador quanto para o spool de impressora As biblio tecas e dispositivos utilizados ser o explicados minuciosamente no item Tipos de Redirecionamento a seguir neste cap tulo Imprime uma mensagem no V deo Impressora finclude lt stdio h gt finclude lt conio h gt include lt dos h gt main clrscr system date printf stdprn MENSAGEM Teste prin
52. de f com f Pf n1 n2 nl n2 REAL DE PRECIS O DUPLA Caso voc queira usar uma vari vel real de precis o dupla ou seja aquela que o cupa 8 bytes ao inv s de 4 utiliza se em linguagem C a palavra reservada double no lugar de float Real de precis o dupla include stdio h main double result int num num 59 printf O resultado f 3 1415 num Podemos ainda atribuir o recurso de formatar o tamanho m nimo dos campos na sa da de vari veis do tipo real de simples ou dupla precis o com arredondamento do n mero de casas decimais Exemplo Pr tico include lt stdio h gt main t float salario 1250 double pi 3 1415 Tipos de Dados 23 printf Sal rio 4 2f sal rio A sa da ser 1250 00 printf CPI 1 2f pi A sa da ser 3 14 VARI VEL CARACTER No exemplo a seguir ser usada a palavra reservada char para representar o tipo de vari vel caracter ocupa 1 byte Exemplo Pr tico include stdio h void main char letra letra a printf c e a primeira letra do alfabeto letra VARI VEL CADEIA DE CARACTERES importante saber que na linguagem C n o existe o tipo de vari vel STRING en contrado por exemplo na linguagem de programa o Pascal Caso voc queira representar uma cadeia de caracteres STRING que ocupa n bytes na mem ria use o seguinte formato
53. do switch ou at que se encon tre uma instru o de parada denominada break 3 Se o resultado da express o n o for igual a nenhuma das constantes e j es tiver sido inclu da no comando switch a op o default o comando associa do ao default ser executado Caso contr rio isto se a op o default n o estiver presente o processamento continuar a partir do comando seguinte ao switch Usando o switch para fazer o programa anterior com todas as suas respectivas cl usulas tem se Estruturas Condicionais 57 include lt stdio h gt include lt conio h gt main char opcao clrscr puts Entre com uma letra opcao getch switch opcao case A printf Letra A n break case B printf Letra Bln break case C printf Letra C n break case D printf Letra Dn break default printf N o e A B C nem Din 58 Aprendendo a Programar em Linguagem C Sr 5 i L 7 Importante Pode haver uma ou mais instru es seguindo cada D case Essas instru es n o s o consideradas bloco de comandos logo n o aparecem entre chaves A express o em switch lt express o gt deve ter um valor compat vel com um intei ro isto podem ser usadas express es do tipo char e int com todas as suas varia es Voc n o pode usar reais float e double ponteiros strings ou estruturas de dados O comando break provoca a s
54. e r gt left 1 1 for i 0 i lt l i printf 9 printf c n r gt info printf tree r gt right 1 1 151 152 Aprendendo a Programar em Linguagem C Importante Embora uma rvore n o precise ser ordenada na maio e 4 Ad ria das manipula es que fazemos com ela o ideal seria que a mesma s AO estivesse em determinados casos pois trata se de um requerimento obrigat rio Quais as estruturas de dados fundamentais estudadas neste cap tulo O que voc entende por pilha Diferencie lista de fila O que vem a ser LIFO Mo o a p Como funciona o processo de interpreta o de uma lista encadeada e como isso tratado na linguagem C Defina rvore bin ria Fa a um breve coment rio a respeito de sua aplica o O que vem a ser FIFO Qual a estrutura que define uma regi o cont nua de mem ria para operar O p oA Marque Verdadeiro ou Falso As rvores n o precisam ser ordenadas para serem manipuladas Pilhas s o mais eficientes que as Filas por apresentar a t cnica de FIFO Na verdade quando usamos listas encadeadas realizamos uma aloca o din mica na mem ria do computador A fun o grestore pertence ao estudo das listas As fun oes pop e push s o integrantes das rvores bin rias 10 O termo o ltimo a entrar o primeiro a sair referente a que estrutura de dados 14 TRABALHANDO COM CARACTERES GR FICOS N
55. e Itera o 67 int i for 1 0 1 lt 10 i ch getch if ch Axlb caracter escape ESC break printf An oc ch puts AnAcabou geteh O comando continue funciona de forma semelhante ao comando break A diferen a reside em que ao inv s de interromper a execu o do la o como o comando break o comando continue pula as instru es que tiverem abaixo e for a a pr xima itera o do la o Observe o programa exemplo a seguir finclude lt stdio h gt include lt conio h gt main char ch int for i 0 i lt 10 i 68 Aprendendo a Programar em Linguagem C ch getch if ch Axlb continue printf An oc ch clrscr puts An Acabou getch J o comando goto provoca o desvio da execu o do programa para algum outro ponto dentro do c digo fonte Como hoje em dia todos os programas seguem as t cnicas de programa o estruturadas o uso do goto n o recomend vel Veja um exemplo de simula o do uso do comando goto em um programa escrito em linguagem C include lt stdio h gt Simula o do uso do comando goto main while if erro goto ERRO Estruturas de Itera o 69 ERRO representa o r tulo do desvio goto rotina de tratamento de erro A utiliza o do goto j foi abolida h bastante tempo do dicion rio dos bons pro gramadores por cau
56. e a posi o final sinal que o que estamos procurado n o existe no vetor 8 O Segundo a teoria apresentada anteriormente observe atentamente o pr ximo exem plo de programa escrito em linguagem C para busca ou pesquisa bin ria Exemplo Pesquisa Bin ria finclude stdio h finclude conio h define N 100 void main Manipula o com Vetores 113 int ind chave tab N in cio 0 fim N 1 meio inicio fim 2 clrscr puts Entre com os valores da tabela em ordem crescente for ind 0 ind lt N ind scanf d amp tab ind printf Entre com o valor a ser procurado scanf d amp chave while inicio lt fim amp amp tab meio chave if tab meio lt chave inicio meio 1 else fim meio 1 meio inicio fim 2 if tab meio chave printf Chave encontrada na posicao d n meio else printf Chave nao encontradaln 114 Aprendendo a Programar em Linguagem C getch Quando voc executar esse programa voc ser capaz de observar que este s rea liza a pesquisa apenas uma vez claro caso voc queira realizar a pesquisa mais de uma vez voc dever criar uma estrutura de repeti o vinculada a toda estrutura apresentada do programa com questionamentos do tipo DESEJA CONTINUAR OUTRA PESQUISA NOVAMENTE Ent o voc fica livre pa
57. e da primeira pessoa scanf d amp idadel printf nNome da segunda pessoa scanf s amp string2 printf AnIdade da Segunda pessoa scanf J d amp idade2 if idadel idade2 printf ninAs pessoas t m a mesma idade else Fun es 81 if idade 1 gt idade2 strepy maior string1 strcpy menor string2 else strepy maior string2 strepy menor string1 clrscr printf O nome da pessoa mais velha s maior printf e o nome da pessoa mais nova s menor getch J que estamos falando em diretivas de pr processamento eis a diretiva include Ela utilizada para realizar a inclus o de um determinado programa fonte em outro qualquer Analise o exemplo a seguir Suponhamos que voc tenha escrito v rias f rmulas matem ticas para calcular reas de diversas figuras geom tricas Voc poder colocar essas f rmulas em ma cros em um programa separado No instante em que voc precisa reescrev las para a utiliza o em seu programa use a diretiva include define PI 3 14159 define AREA CIRCULO raio PI raio raio define AREA_RETANG base altura base altura 82 Aprendendo a Programar em Linguagem C define AREA TRIANG base altura base altura 2 define AREA ELIPSE raiol raiio2 PI raiol raio define AREA TRAPEZ alt ladol lado2 alt ladol lado2 2 Basta gravar o pro
58. ente ser ocultado N o podemos esquecer de citar que uma vari vel sem sinal representada pelo formatador u ao inv s de d no nos so exemplo Utilizando vari veis sem sinal include stdio h main unsigned int numl int num2 printf Entre com dois n meros inteiros scanf J u Jd amp numl amp num2 Tipos de Dados 29 VARI VEIS LOCAIS X VARI VEIS GLOBAIS Uma vari vel local aquela declarada dentro do corpo de uma certa fun o e so mente pode ser utilizada por aquela fun o e nenhuma outra mais J uma vari vel global que poder ser utilizada por todas as fun es existentes em seu programa declarada fora antes do in cio do corpo da fun o principal do programa main Num programa podem ser apresentadas tanto vari veis locais quanto vari veis globais Observe o exemplo abaixo Vari vel Local x Vari vel Global finclude lt stdio h gt finclude lt conio h gt inta Vari veis Globais float b main int c Vari veis Locais float d printf Entre com dois n meros inteiros scanf d Jd amp a amp c printf AnEntre com dois n meros reais scanf Jf Pf amp b amp d clrscr printf J od d 2 1f 2 1f a c b d getch 30 Aprendendo a Programar em Linguagem C CONSTANTES Uma constante representa um valor fixo constante durante todo o processamento de um certo pr
59. ento retornado e a busca termina Esse tipo de busca pode ser realizada em tabelas ordenadas ou n o A princ pio a maioria dos programado res de computadores realizam suas opera es de busca em tabelas ordenadas Vamos ent o verificar no exemplo a seguir a efici ncia desse m todo de busca 104 Aprendendo a Programar em Linguagem C Vamos Procurar pelo n mero 6 VET 1 o que estou procurando 1 4 N o Ent o v para o pr ximo 2 NS a 2 N o Ent o v para o pr ximo edi 3 3 4 N o Ent o v para o pr ximo 4 a N o Ent o v para o pr ximo so lt N o Mas este elemento j maior do que o que procuro 5 Ent o o que procuro n o existe no vetor 6 7 8 O Observe a seguir o c digo fonte em linguagem C e como funciona na realidade todo esse processo de busca Exemplo Pesquisa Segiiencial finclude stdio h include conio h define N 10 main Manipula o com Vetores 105 int ind chave tab N clrscr puts Entre com os valores da tabela for ind 0 ind lt N indt scanf d amp tab ind clrscr printf Entre com o valor a ser pesquisado scanf J d amp chave for ind 0 ind lt N amp amp tab ind chave ind if ind lt N printf A chave foi encontrada na posicao d n ind else printf Chave
60. es de Disco Fun o 04 Registradores de Entrada Registradores de Sa da Segue abaixo um exemplo de programa em lin guagem C que utiliza o recurso da interrup o de hardware atrav s das fun es de ROM BIOS Aprendendo a Programar em Linguagem C AL n mero de setores CH n mero de trilhas CL n mero de setor DH n mero de cabe a DL n mero de drive ES BX ponteiro para o buffer CF flag de sucesso falha AH c digo de estado veja fun o 01 AL n mero de setores gravados Verifica setores do disco AH 04 AL n mero de setores CH n mero de trilhas CL n mero de setor DH n mero de cabe a DL n mero de drive CF flag de sucesso falha AH c digo de estado veja fun o 01 AL n mero de setores verificados a Sum rio 189 Oculta e reexibe o cursor include stdio h include dos h define TAMCUR 1 define VIDEO 0x10 define STOPBIT 0x20 void main union REGS regs regs h ch STOPBIT regs h ah TAMCUR int86 VIDEO amp regs amp regs A fun o int86 cria uma interrup o atrav s do uso de registradores regs da linguagem C
61. es get Go zA che e getch n o temos a necessidade de pressionar a tecla enter esta opera o j impl cita da pr pria fun o Lembre se que a escolha da melhor fun o a ser utilizada no seu programa ir de pender exclusivamente da sua decis o pois quem sabe a real necessidade do seu programa voc mesmo Qy eriin y 1 Por que a fun o scanf considerada uma entrada de dados formatada 2 Podemos usar os mesmos formatadores para a fun o scanf que s o uti lizados para a fun o printf 3 Qual a diferen a entre entrada de dados formatada e entrada de dados n o formatada Para que serve a fun o getchar Qual a diferen a entre a fun o getche e a getch Para que serve a fun o gets E COM A Qual a diferen a b sica na utiliza o da fun o scanf e na utiliza o da fun o gets 8 Explique detalhadamente o que ir fazer cada um dos comandos abaixo citados a variavel getchar b variavel getche c variavel getch 5 OPERADORES Os operadores s o utilizados com o objetivo de auxiliar na forma o de uma certa express o Existem diversos tipos diferentes de operadores Fa amos ent o um es tudo mais detalhado sobre eles OPERADORES ARITM TICOS S MBOLOS OPERADORES ki Multiplica o Divis o M dulo Adi o Subtra o O operador de m dulo resto da divis o inteira n o
62. esentar o tipo de vari vel inteira cujo c digo de formata o utilizado d Ainda foi usado o s mbolo de que para a linguagem C interpretado como atribui o no PASCAL Em linguagem C o s mbolo representa igualdade e representa diferen a Tais s mbolos ser o mostrados mais tarde Podemos ainda utilizar os especificado res de vari veis short long e unsigned O especificador modificador de vari vel short representa um valor curto e o long um valor longo o dobro Observe que short int ocupa 2 bytes e long int ocupa o dobro 4 bytes J o especificador unsigned representa apenas a n o utiliza o de sinais logo unsigned int tamb m ocupar 2 bytes na mem ria Podemos ainda formatar o tamanho m nimo para impress o do conte do de uma determinada vari vel dependendo somente dos valores que ser o estipulados pelo pr prio programador de acordo com sua real necessidade Veja o pr ximo exemplo include stdio h main int ano 2002 printf Feliz 4d ano A sa da ser Feliz 2002 printf AnFeliz 6d ano A sa da ser Feliz 2002 20 Aprendendo a Programar em Linguagem C printf AnFeliz 8d ano A sa da ser Feliz 2002 Caso voc queira completar com zeros esquerda de um valor num rico do tipo inteiro poss vel Esse recurso tamb m pode ser aplicado vari vel inteira com o especificador unsigned Veja nosso pr ximo exemplo fin
63. grama digitado acima como areas h Recebe esta extens o h porque o mesmo ir fazer parte de sua biblioteca padr o Quando voc for escrever seu programa simplesmente inclua a seguinte linha de comando include lt areas h gt ou include areas h Vamos analisar o seguinte programa include pascal h program begin write Isto e linguagem C mesmo end Ser que estamos realmente falando de linguagem C r2 A lt Parece at Pascal n o mesmo ke Bem o segredo est no arquivo pascal h descrito logo a seguir define program main define begin define write x printf x define end Na verdade o que aconteceu foi uma redefini o de alguns comandos da lingua gem C mascarando os de tal forma que ficassem parecidos com os comandos da linguagem de programa o Pascal Fun es 83 Gostou do que voc viu a t tulo de curiosidade Ent o vamos observar em se guida como seria o processo inicial da escrita de uma linguagem de programa o nos padr es da l ngua portuguesa como se f ssemos escrever programas nos mo delos de algoritmos Suponha algo deste tipo finclude algoritmo h algoritmo in cio texto nome escreva Exemplo de algoritmo escreva Entre com seu nome leia nome escreva Ola nome fim O segredo est no arquivo algoritmo h a seguir conforme j foi apontado por e xemplo anterior na simula o do Pasca
64. grande aplica o Ao chegar a primeira guerra mundial v rias na es constru ram m quinas de co difica o mec nicas que permitiam facilmente codificar e decodificar textos u sando cifragens sofisticadas e complexas Aqui a hist ria da criptografia d uma leve virada para a hist ria da decifragem de c digos Antes da utiliza o de dispositivos mec nicos para codificar e decodificar mensagens cifragens complexas eram raramente usadas por causa do tempo e do trabalho necess rio para codificar e decodificar Assim a maioria dos c digos eram quebrados num per odo relativamente curto de tempo Logo poss vel a partir de qualquer linguagem de computador criar um processo de cifragem de c digos O programa em linguagem C a seguir permite que voc seja capaz de codificar qualquer texto usando qualquer descolamento ap s especi ficar com que letra come ar o alfabeto Segue um programa exemplo da utiliza o pr tica do processo de criptografia Criptografia atrav s da linguagem C finclude stdio h finclude conio h finclude ctype h 172 Aprendendo a Programar em Linguagem C main argc argv int argc char argv if argc 5 clrscr printf Uso Entrada Sa da Codifica o Decodifica o offset n exit if Isalpha argv 4 clrscr printf O offset tem que ser um caracter albaf ticon exit if toupper argv 3
65. hile ptratual struct prs NULL void main char ptrprim char struct prs NULL Estrutura de Dados 147 char op ch do clrscr printf AnOp es N ovo livro L istar livros S air op getch op toupper op switch op case N novonome break case L listatudo printf AnPressione qualquer tecla n ch getch break 148 Aprendendo a Programar em Linguagem C case S break default puts AnDigite somente op es v lidas printf AnPressione qualquer tecla In ch getch break while op S9 Aqui foram utilizadas as fun es atoi que convertem uma string em valor nu m rico inteiro e tamb m a fun o atof que converte uma string em valor num rico real USANDO RVORES BIN RIAS Embora existam muitos tipos de rvores as rvores bin rias s o especiais porque quando s o ordenadas elas se aplicam a buscas velozes inser es e dele es Cada item de uma rvore bin ria consiste em informa o com um elo no ramo esquerdo e um no ramo direito A tecnologia especial necess ria para discutir rvores um caso cl ssico de met foras misturadas A raiz o primeiro item da rvore Cada item dado chamado de n ou algumas vezes folhas da rvore e qualquer parte da rvore de sub rvore A altura da rvore igual ao n mero de camadas de profundidade que as ra zes
66. imo exemplo Exemplo Pr tico finclude stdio h include conio h union int numl num2 float num3 num4 exemp 133 134 void main Aprendendo a Programar em Linguagem C printf numl d num2 din exemp numl exemp num2 printf num3 2 1f num4 2 1An exemp num3 exemp num4 exemp numl 2 exemp num2 3 exemp num3 5 5 exemp num4 9 8 getch UNI O COMPOSTA Da mesma forma que as estruturas podem associar membros de outras estruturas as uni es tamb m podem Contudo tamb m podem ser referenciados membros de estruturas e uni es e vice versa Observe nosso pr ximo exemplo Exemplo Pr tico include lt stdio h gt struct alfa int n1 n2 3 struct gama float n3 n4 j union Uni es 135 struct alfa a struct gama 8 omega void main omega a nl 2 omega a n2 3 omega g n3 1 5 omega g n4 2 5 printf n1 Jd n n2 d n omega a nl omega a n2 printf n3 2 1f n n4 2 1fin omega g n3 omega g n4 Assim procuraremos utilizar uni es ou estruturas quando quisermos realmen te especificar uma estrutura de dados heterog nea qualquer NO 8 9 136 Aprendendo a Programar em Linguagem C Podemos ter em um programa de computador elaborado em linguagem C uma estrutura junto com uma uni o Justifique sua resposta O que e para que serve uma u
67. inha intj for j 1 j lt 20 j printf xDB printf n espa os x int x int i for 1 0 i lt x i printf 9 getch Como j t nhamos visto no in cio do estudo da linguagem C o caracter especial IX per mite ao programador representar um caracter s mbolo em hexadecimal Logo se esse s mbolo for um caracter gr fico o mesmo ser ent o representado 155 156 Aprendendo a Programar em Linguagem C 1 Escreva um programa em linguagem C que manipulando os chamados caracte res gr ficos tenha por objetivo gerar a seguinte figura 2 Gere o seguinte desenho atrav s de um programa escrito em linguagem C que realize a manipula o de caracteres gr ficos Eo 0 E 3 Como podemos representar em linguagem C um caracter da tabela ASCII em hexadecimal 15 OPERA ES COM ARQUIVOS Agora vamos aprender como realizar leituras e grava es em disco com a lingua gem C E importante saber que C trabalha com duas formas de manipula o de ar quivos ARQUIVOS TEXTOS e ARQUIVOS BIN RIOS Vamos abordar inicialmente os arquivos textos e logo em seguida os arquivos bin rios ARQUIVO TEXTO Um arquivo aberto de modo texto interpretado pela linguagem C como uma se qu ncia de caracteres agrupados em linha As linhas s o separadas por um nico caracter chamado caracter de nova linha ou LF Posso afirmar que esse tipo de ar quivo utilizado principalmente quando desej
68. l atrav s do arquivo pascal h define algoritmo main define in cio fidefine texto x string x define escreva x printf x tdefine leia x scanf x tdefine fim Ent o afirmo que a linguagem C n o simplesmente mais uma linguagem de pro grama o com base no poder que ela det m N o esque a que o sistema operacio nal UNIX por exemplo foi escrito em C 84 Aprendendo a Programar em Linguagem C FUN O RECURSIVA Uma fun o dita recursiva quando existe dentro de uma certa fun o uma cha mada para ela mesma por diversas vezes Logo a t cnica de recursividade cria consecutivos espelhos para refletir n vezes a chamada da fun o que est sendo referenciada include lt stdio h gt include lt conio h gt main int num char resp s long fac while resp s printf An Digite um numero scanf J d amp num printf nO fatorial de d e ld num fac num printf Continua s n resp getche calcula fatorial fun o recursiva long fac n intn Fun es 85 long resposta 8 resp Oba entendi Parece dif cil mas na verdade bem f cil de aprender if n 0 return 1 resposta fac n 1 n return resposta N o podemos deixar de mencionar que atrav s da fun o recursiva criada na mem ria do computador uma pilha que finita e conseq entemente caso o n me ro de chamada
69. m Interrup o 10 Hexa Servi os de Tela Fun o 06 Sobe a tela Registradores de Entrada AH 06 AL linha a subir BH atributo preenchedor CH linha superior CL coluna esquerda DH linha inferior DL coluna direita Registradores de Sa da nenhum Interrup o 10 Hexa Servi os de Tela Fun o 07 desce a tela Registradores de Entrada AH 07 AL linha a descer BH atributo preenchedor CH linha superior CL coluna esquerda DH linha inferior DL coluna direita Registradores de Sa da nenhum Interrup o 10 Hexa Servi os de Tela Sum rio 181 Fun o 08 L caracteres e atributos Registradores de Entrada AH 08 BH n mero de p gina de v deo Registradores de Sa da AH atributo AL caracter Interrup o 10 Hexa Servi os de Tela Fun o 09 Escreve caracteres e atributos Registradores de Entrada AH 09 AL caracter BH n mero da p gina BL atributo CX n mero de caracter a repetir Registradores de Sa da nenhum Interrup o 10 Hexa Servi os de Tela Fun o OA Escreve caracter Registradores de Entrada AH 0A AL caracter BH n mero da p gina BL cor do modo gr fico CX contador de caracteres Registradores de Sa da nenhum 182 Aprendendo a Programar em Linguagem C Interrup o 10 Hexa Servi os de Tela Fun o 0B Define paleta de cor Registradores de Entrada AH 0B BH identifica o da paleta BL cor a ser usada com a
70. main int a b soma puts Entre com dois numeros inteiros scanf d Jd amp a amp b soma a b printf Soma d An soma 34 Entrada de Dados 35 Na fun o scanf utiliza se o amp e comercial antes de cada vari vel para indicar o endere o de mem ria no qual o conte do da vari vel estar armazenado Este de uso obrigat rio quando tratamos vari veis do tipo num rica inteira ou real Outro exemplo include lt stdio h gt main char nome 30 printf Digite o seu nome scanf J s nome printf Como vai voce sin nome Observe que n o foi utilizado o operador amp antes da vari vel nome Isto ocorreu porque em C o nome de um vetor cont m o endere o do primeiro byte deste As sim n o h uma necessidade real de faz lo embora voc observe em diversas lite raturas a utiliza o do amp para esse tipo de vari vel scanf s amp nomel0 Os mesmos formatadores d f Jos c etc utilizados na fun o printf e j estudados ser o utilizados tamb m para a fun o scanf por se tratar de entrada e sa da de dados formatados OUTRAS FUN ES DE ENTRADA Como j foi comentado anteriormente o scanf n o a nica fun o utilizada para realizar as entradas de dados de um certo programa Iremos estudar a entrada de da dos n o formatadas atrav s das fun es gets getchar getche
71. mb m ser mostrado um exemplo de aplica o pr tica que manipula listas encadeadas USANDO FILAS Filas nada mais s o que estruturas lineares de informa o que s o acessadas na or dem FIFO primeiro que entra o primeiro a sair O primeiro item colocado na Fila o primeiro item a ser recuperado e assim por diante Uma caracter stica es pecial da fila n o permitir o acesso rand mico a seus dados 137 138 Aprendendo a Programar em Linguagem C As filas s o usadas em muitas situa es de programa o tal qual simula es dis tribui o de eventos armazenamento de entrada e sa da etc Considere o seguinte programa exemplo em linguagem C para representar o uso de filas que utiliza as fun es gstore para realizar armazenamento de dados elementos em uma certa fila verificando tamb m se a estrutura j est preenchida cheia e gretrieve para realiza o de leituras de elementos itens guardados em uma determinada fila fidefine MAX EVENT 100 char p MAX EVENT int spos int rpos qstore g char q if spos MAX_EVENT printf Estrutura Cheia n return p spos q spos qretrieve if rpos spos prtinf Nao ha eventos para executar n rpos return p rpos 1 Estrutura de Dados 139 Essas fun es requerem duas vari veis globais spos que cont m a posi o da pr xima posi o livre de armazenamento e rpos que cont m o
72. mento da tecla ENTER por parte do usu rio Isso j ocorre de forma autom tica include lt stdio h gt include lt conio h gt char ch main printf Digite uma tecla ch getche clrscr 38 Aprendendo a Programar em Linguagem C printf An A tecla que voc pressionou foi c ch Note que a vari vel ch foi declarada como global por estar fisicamente fora do cor po principal do programa FUN O getch A fun o getch permite que o usu rio forne a um caracter atrav s do teclado Este caracter n o ser mostrado na tela do computador tamb m dispensado o pressionamento da tecla ENTER por parte do usu rio pois a passagem para a pr xima linha j ocorre automaticamente como acontece com a fun o getche Tamb m esta fun o atende necessidade como recurso de parada tempor ria da execu o do programa como acontece na linguagem Pascal atrav s do comando ReadKey Programa exemplo finclude lt stdio h gt include lt conio h gt main char ch clrscr Limpa a tela do computador printf Digite uma tecla ch getch clrscr printf An A tecla que voc pressionou foi c ch getch Entrada de Dados 39 Logo podemos afirmar que ao utilizarmos a fun o getchar temos a obrigatoriedade de pressionarmos a tecla de entrada de t a dados para conclu rmos a opera o enquanto nas fun
73. miss o para leitura S IREADIS IWRITE Permiss o para leitura e grava o Independentemente da implementa o a ser feita atrav s de um programa escrito em linguagem C a forma de tratamento a mesma para qualquer tipo de argumen to de permiss o Dou visi JON A A Quais os tipos de arquivos existentes na linguagem C Na cria o de um arquivo texto quais os comandos utilizados para gravar um caracter por vez e uma string por vez Quanto cria o de um arquivo bin rio qual o comando utilizado para gravar um registro Escreva em linguagem C um programa que permita ao usu rio gerar e ler um arquivo texto para registrar os acontecimentos de sua vida pessoal como se fos se um di rio Utilize como base o seguinte menu de op es MEU DI RIO E screver no di rio L er o que est escrito no di rio F echar di rio Qual a diferen a das permiss es S_IWRITE e S_IREAD O que significa o flag O RDONLY Diferencie o modo de abertura de arquivo r de rb O que significa o modo de abertura de arquivo bin rio wb Opera es com Arquivos 169 9 Para que serve a fun o fgets 10 Qual o comando utilizado para fechar um determinado arquivo nomeado inter namente como ftpr 11 Qual o significado da linha das seguintes linhas de comandos a while Jetra getche x1b b while ch gete fp EOF c while fgets string 80 fp NULL 12 O que significa
74. nao encontrada n getch PESQUISA BIN RIA Tem por caracter stica reduzir sempre o espa o da tabela a ser procurado pela me tade objetivando assim um menor tempo de procura de um determinado elemento dentro da tabela Aconselha se que esse tipo de pesquisa deva ser feito apenas em tabelas ordenadas 106 Aprendendo a Programar em Linguagem C Z Y Jd Vamos Procurar pelo n mero 7 Valor existente Ed 1 Passo VET 1 Posi o Inicial Atual 1 e Posi o Final Atual 8 Primeiro devo apontar para o elemento cen gt tral do vetor Para calcular esta posi o somo a 1 posi o inicial com a final e divido por 2 ou seja Quociente l 8 2 Com isso conclu mos que devemos apontar 3 para o elemento de posi o 4 lt Em seguida perguntamos se o conte do da 4 l posi o para qual estamos apontando o que estamos procurando Como 5 n o o que es 5 tamos procurando a resposta N O 6 Conclu mos ent o que devemos continuar a pesquisa 7 8 0 Manipula o com Vetores 1 8 VET 1 107 2 Passo A seguir verifico que o n mero que estou procurando maior que o n mero que estou apontando logo concluo que o que procuro s pode estar da posi o posterior a que es tou apontando at o final do vetor Posi o Inicial Atual 5 e Posi o Final Atual 8 Ent o pego a minha nova
75. nclude lt stdio h gt include lt conio h gt define ANO 2002 main 32 Aprendendo a Programar em Linguagem C int anonasc 1968 clrscr Essa vale a pena prestar um pouco printf Idade din ANO anonasc mais de ATEN O geteh Para diferenciar as vari veis das constantes procu raremos sempre que poss vel utilizar letras min s culas para representar nossas vari veis enquanto u tilizaremos letras mai sculas para representar nos sas constantes Vari vel int numero Constante define MAX 30 Nos programas citados anteriormente n o citamos nenhuma constante do tipo lite ral Para termos essa vis o acompanhe atentamente as linhas de c digo do progra ma apresentado a seguir finclude lt stdio h gt finclude lt conio h gt define EU Renata Miranda Pires Boente main clrscr Tipos de Dados 33 printf Comunico a quem a turma X que todos foram aprovados com louvorn printf Desejo sucesso profissional a todos os formandos de 2002 n n n printf Assinado s EU getch Z Neste exemplo foi definido EU como constante cujo valor atribu do Renata Mi randa Pires Boente Logo toda vez que no programa for referenciada a constante EU na verdade ser referenciado como conte do Renata Miranda Pires Boente se 00 cd O a e Do a pa 11 12 Para que utilizamos uma vari vel Cite
76. ndice do pr ximo item a recuperar USANDO PILHAS Uma Pilha o contr rio de uma Fila porque usa o acesso LIFO o ltimo a entrar o primeiro a sair Imagine uma pilha de provas para serem corrigidas por um certo professor A prova da base da pilha ser a ltima a ser corrigida pelo professor e a prova do topo ser a primeira a ser corrigida Exemplo Pr tico finclude lt stdio h gt finclude lt conio h gt finclude lt ctype h gt finclude lt stdlib h gt int p tos bos void push int i if p gt bos printf Pilha cheia in return 140 Aprendendo a Programar em Linguagem C int pop pa if p lt tos printf Underflow da pilha n return 0 return p void mostraresult int result printf Resultado e Novo Elemento da Pilha 10 2f n result void main int a b char s 80 p int malloc 100 tos p Estrutura de Dados 141 bos p 100 sizeof int sizeof int clrscr printf Calculadora com 4 opera es b sicas Digite s para Sair n do printf Elemento da Pilha ou Opera o 9 gets s s toupper s switch s case a pop b popQ mostraresult a b push a b break case a pop 142 case case Aprendendo a Programar em Linguagem C b pop mostraresult a b push a b break a po
77. ni o Diferencie uni o simples de uni o composta Crie uma uni o chamada passageiros que tenha por objetivo juntar duas estru turas definidas como classe A e classe B Diferencie estrutura de uni o Escreva uma uni o para criar uma estrutura composta de clientes de uma certa papelaria Sabe se que estes clientes podem ser classificados como Pessoa F si ca ou Pessoa Jur dica Posso criar uma uni o e redefini la utilizando para isto o typedef Redefina o nome de uma uni o chamada Receitas para NotasDaMam e Crie uma uni o realmente homog nea 10 Escreva uma uni o de uni o uni o composta 13 ESTRUTURA DE DADOS Segundo o professor da COPPE UFRJ Jayme Luiz Szwarcfiter em seu livro Es truturas de Dados e seus Algoritmos As estruturas diferem uma das outras pela disposi o ou mani pula o de seus dados A disposi o de dados em uma estrutura obedece a condi es preestabelecidas e caracteriza a estrutura O estudo de estrutura de dados n o pode ser desvinculado de seus aspectos algoritmos A escolha certa da estrutura adequada a cada caso depende diretamente do conhecimento de algoritmos para manipular a estrutura de maneira diferente As estruturas de dados que aqui ser o representadas atrav s de programas escritos em linguagem C que objetivam expressar o entendimento concreto do que real mente vem a ser Fila Pilha Lista e rvore s o aquelas de maior difus o desse es tudo Ta
78. o din c printf Endereco de c Jun amp c geteh Ponteiros ou Apontadores 123 Sa da do Programa ALOCA O DIN MICA Vamos estudar uma varia o mais avan ada do programa anterior Atrav s dessa pr xima vers o trataremos aloca o de endere os de mem ria que tecnicamente denominada aloca o din mica include lt stdio h gt include lt alloc h gt main ptr ptr int malloc sizeof int ptr 3 printf Jo dn ptr Neste programa n o declaramos a vari vel i Em vez disso atribu mos ptr um valor retornado por uma fun o chamada malloc a qual declarada em alloc h 124 Aprendendo a Programar em Linguagem C Para que possamos entender a instru o ptr int malloc sizeof int vamos dividi la em partes a O operador sizeof devolve o tamanho em bytes do tipo ou da express o entre par nteses b A fun o malloc tem o objetivo de retornar um ponteiro para uma rea livre de mem ria a ser identificada por ela Assim a instru o ptr int malloc sizeof int cria dinamicamente uma va ri vel inteira referenciada por ptr Podemos trabalhar com v rias vari veis do tipo ponteiro na mem ria do computador A determina o referente quantidade necess ria para utiliza o em um determi nado programa depende exclusivamente a que o programa se prop e ARITM TICA COM PONTE
79. o em min sculo isalpha gt uma macro em C que tem por objetivo classificar um caracter de acordo com os c digos estabelecidos na tabela ASCII Existem muitos outros m todos utilizados atrav s da linguagem C para codificar e ou decodificar uma mensagem criptografada Para obter maiores informa es e um maior aprofundamento no assunto e outras varia es de programas exemplo em linguagem C voc poder fazer uma revis o de literatura em Schildt 89 17 ROTINAS DE ROM BIOS S Agora vamos aprender como funcionam as chamadas rotinas de Q Ec A ROM BIOS que nada mais s o do que interrup es em hexadecimal p a cuja fun o realizar um tipo de tratamento f sico na arquitetura de um computador As rotinas de ROM BIOS que s o encontradas neste livro foram elaboradas por Silvio Lago e resgatadas na ntegra do livro Treinamento em Linguagem C curso completo m dulo 2 das p ginas de 237 at 246 de Victorine Viviane Mizrahi Interrup o 05 Hexa Imprime Tela Fun o 05 Imprime tela na impressora Registradores de Entrada AH 05 Registradores de Sa da nenhum Interrup o 10 Hexa Servi os de Tela Fun o 00 Define modo de v deo Registradores de Entrada AH 00 AL modo de v deo Modos de V deo 00 40x25 texto 16 cinza 01 40x25 texto 18 8 cor 02 80x25 texto 16 cinza 178 Aprendendo a Programar em Linguagem C 03 80x25 texto 16 8 cor 04 320x200 gr f 4 cores 05
80. o par metro formal estiver sendo manipulado por um dado processamento calcula a rea da esfera define PI 3 14159 main float area float raio printf Digite o raio da esfera scanf 9f amp raio printf A area da esfera e 2f area raio fun o de c lculo float area r float r 78 Aprendendo a Programar em Linguagem C return 4 PI r r Observe que foi utilizada a diretiva ffdefine para definir uma constante simb lica que denominamos PI Logo a diretiva de pr processamento fdefine utilizada em C para defini o de constantes de um determinado programa Tamb m foi utilizado um fixador de n mero de casas decimais no formatador de vari veis reais float f ent o 2f significa dizer que o valor expresso em reais ter um n mero de casas decimais fixado em duas Tratamento de Strings finclude stdio h finclude conio h finclude string h char string1 80 Declara o de vari vel como Global void main char string2 80 caract1 caract2 clrscr printf Entre com a string origem scanf Js amp stringl printf AnEntre com a string resultante scanf Jos amp string2 printf AnCaracter a ser trocado velho caractl getche printf AnCaracter para mudar novo caract getche printf AnnN de ocorr ncias Jd substitui stringl string2 caract1 carac
81. ograma Em linguagem C utilizamos a cl usula de pr processamento fdefine para declararmos uma constante Para diferenciarmos as constantes das vari veis em linguagem C escrevemos estas constantes com letras mai sculas Exemplo 1 Usando constantes em seus programas include lt stdio h gt include lt conio h gt Defini o da constante DOIS com o valor num rico 2 define DOIS 2 main float num1 num2 result printf Entre com dois n meros scanf f f amp numl amp num2 result num1 num2 DOIS clrscr gotoxy 10 10 printf Resultado 2 1f result getch Tipos de Dados 31 Aqui foi criada uma constante chamada DOIS para representar o numeral 2 Na verdade a cria o de constantes n o feita para ser usada de forma ao acaso pois tudo aquilo que voc cria dentro do seu programa afinal de contas ocupa espa o f sico na mem ria do computador Exemplo 2 include lt stdio h gt define PI 3 14 main float s 5 s PI printf s 2 2f s No exemplo anterior foi criada uma constante PI para representar o valor da letra grega m Logo toda vez que quisermos representar o valor de x utilizaremos a constante PI No pr ximo exemplo ser criada a constante ANO para representar o valor 2002 toda vez que o quisermos referenciar no programa Ent o observe atentamente o programa exemplo a seguir Exemplo 3 i
82. p b pop mostraresult a b push a b break a pop b pop if a 0 printf Infinito An break Estrutura de Dados 143 mostraresult b a push b a break default push atoi s while s S Dessa forma para implementar uma pilha voc precisa de duas fun es push que coloca um valor na pilha e pop que recupera o valor do topo da pilha USANDO LISTAS ENCADEADAS Filas e Pilhas dividem caracter sticas comuns Primeiro ambas t m regras espec fi cas para referenciar estruturas de dados Segundo opera es de restaura o s o por natureza destrutivas isto acessar um item em uma pilha ou fila requer sua retira da e a menos que seja salvo em algum outro lugar destru do Essa vis o asso ciada aos elementos da tabela como forma de manipula o de dados de um vetor verdadeiro que tanto as pilhas como as filas reque rem pelo menos conceitualmente uma regi o cont nua de mem ria para operar Diferente das pilhas e filas uma lista encadeada pode acessar seu buffer de modo rand mico porque cada informa o carrega consigo um enlace ao pr prio item da corrente Uma lista encadeada requer uma estrutura de dados complexa ao contr rio das pilhas e filas que podem operar tanto com dados simples como complexos Observe o exemplo a seguir 144 Aprendendo a Programar em Linguagem C finclude lt stdio h gt fin
83. plo o PASCAL Ent o podemos afirmar que atrav s de fun es predefinidas teremos a possibilida de de criarmos outras fun es em nossos programas de computador ampliando assim a biblioteca padr o da linguagem C ELEMENTOS B SICOS Veja a estrutura do menor programa poss vel na linguagem C main Conceitos B sicos da Linguagem C 7 Este programa comp e se de uma nica fun o chamada main que significa principal main fun o principal de qualquer programa C e inicia o corpo da fun o BEGIN e termina a fun o END Logo a fun o main deve existir como parte integrante do seu programa pois ele marca o ponto de in cio da execu o de um programa escrito em linguagem C Quando voc tiver que utilizar a fun o main sem esperar nenhuma resposta dela nenhum tipo de retorno voc poder inici la com o especificador void da seguinte forma Void main corpo da fun o fg meie CSV p Quem s o os criadores da Linguagem C Explique a origem da Linguagem C Quais os nomes dos autores do livro cl ssico C The Programming Language Para que servem as fun es na Linguagem C mo e m oom Como representamos na Linguagem C o Begin e o End da linguagem de programa o Pascal 6 Como chamada a fun o principal de qualquer programa escrito em Lin guagem C 7 Qual o famoso sistema operacional escrito em Linguagem C 8 Descreva com suas palavras o q
84. printf Num d An num O especificador de fun o void quando utilizado para uma determinada fun o indica que esta fun o n o retornar valor algum Logo em certas literaturas ao inv s de encontrar por exemplo a fun o main escrita dessa forma voc pode r encontr la assim void main Na verdade isto quer dizer que ao utilizar a fun o main sem o especificador void o programador refere se a esta somente como o corpo principal de um pro grama em linguagem C CARACTERES ESPECIAIS A tabela a seguir mostra os c digos da linguagem C para caracteres que n o podem ser inseridos diretamente pelo teclado C DIGOS ESPECIAIS SIGNIFICADO m NOVA LINHA t TAB b RETROCESSO P ASPAS BARRA INVERSA f SALTA P GINA DE FORMUL RIO 0 NULO x MOSTRA CARACTER HEXADECIMAL Sa da de Dados 13 OUTRAS FUN ES DE SA DA Al m da fun o printf a linguagem C tamb m disponibiliza outras fun es para sa da de dados a fun o puts espec fica para strings e a fun o putchar espe c fica para caracteres Saiba ainda que voc tem a possibilidade de ampliar sua biblioteca padr o com at outras fun es de sa da Mas isso n s s falaremos melhor mais tarde FUN O puts Representa a sa da de uma nica STRING por vez seguida do caracter de nova linha ou seja a fun o muda de linha automaticamente sem que haja a necessida
85. que o la o externo executa 10 vezes enquanto o la o interno executa 10 vezes para cada passagem do la o externo totalizando assim 10 x 10 100 vezes LOOP WHILE E o mais gen rico dos tr s e pode ser usado para substituir os outros dois em ou tras palavras o la o while supre todas as necessidades J os outros dois s o usados por uma quest o de comodidade Vamos analisar o exemplo a seguir include lt stdio h gt include lt conio h gt main int x y x y 0 while y lt 10 x H y clrscr printf Anx d n y d n x y 66 Aprendendo a Programar em Linguagem C LOOP DO WHILE O comando do while semelhante ao comando while A diferen a est no mo mento da avalia o da express o o que ocorre sempre ap s a execu o do coman do Isto faz com que o comando do la o do while sempre execute pelo menos uma vez antes de realizar tal teste Observe no exemplo abaixo include lt stdio h gt main int i 1 do printf d n 1 while i lt 10 COMANDOS BREAK CONTINUE E GOTO O comando break quando utilizado em um bloco de comandos associado a um for while ou do while faz com que o la o seja imediatamente interrompido transferindo o processamento para o primeiro comando seguinte do la o Observe o programa exemplo a seguir include lt stdio h gt include lt conio h gt main char ch Estruturas d
86. r isso precisamos de uma vari vel auxiliar vamos cham la de Aux n o su gestivo NUMEROS 1 2 3 4 5 9 8 3 4 7 Primeiro eu guardo a conte do da posi o 1 na vari vel auxiliar AUX lt NUMEROS 1 AUX 9 A Ji Depois coloco o conte do da posi o 2 na posi o ARo k H NUMEROS 1 lt NUMEROS 2 hm NUMEROS 1 2 3 4 5 8 8 3 4 7 E por ltimo coloco na posi o 2 o valor da posi o 1 que guardei na vari vel au xiliar NUMEROS 2 lt AUX 96 Aprendendo a Programar em Linguagem C NUMEROS 1 2 3 4 5 8 9 3 4 7 Analisando o que ocorre nas trocas chegamos seguinte conclus o Pegamos a posi o E verificamos com as demais para saber se de vemos ou n o fazer a troca 1 2349 2 3 4 5 3 4 5 4 5 Analisando o quadro acima podemos chegar seguinte conclus o Quando I for J ser 1 2 3 4 5 2 3 4 5 3 4 5 4 5 gt i f Observe que a primeira posi o a ser verifica da ser sempre a primeira subseq ente ou seja se a posi o em quest o a primeira subsequente 1 Agora voc precisa saber que existem dois m todos ordena o ou classifica o a serem aplicados em seus programas Quick Sort e Bubble Sort Logo a seguir vamos analisar cada um deles detalhadamente para que possamos ent o fixar melhor toda essa nov
87. ra decidir qual o melhor tipo de mecanismo a ser utilizado pelo seu programa S n o esque a que a caracter stica primordial da busca bin ria realizar uma divis o sucessiva na tabela reduzindo sempre a mesma em 50 do seu tamanho real Isto ocorre de forma din mica tornando a assim bem mais r pi da que a busca sequencial Segue um exemplo pr tico de manipula o de vetores utilizando como base um poss vel cadastramento de alunos de uma determinada turma de uma certa institui o de ensino onde ser o impressos todos os nomes de alunos que pertencerem a uma turma especial m dia aritm tica maior ou igual a oito Exemplo pr tico para fixa o finclude lt stdio h gt finclude lt conio h gt finclude lt string h gt fidefine MAX 40 main int matr MAX a b aux1 troquei Manipula o com Vetores 115 char aluno MAX 30 aux2 30 float avi MAX av2 MAX med MAX aux3 Entrada de Dados for a 0 a lt MAX a clrscr printf Matr cula scanf J d amp matr a printf AnNome do aluno scanf s amp aluno a printf An 1 nota scanf tf amp avl a printf An2 nota scanf tf amp av2 a med a avl a av2 a 2 Ordena o Descrescente b MAX I1 do troquei 0 for a 0 a lt b a if matr a lt matr a 1 b Aprendendo a Programar em Linguagem C auxl matr a
88. ratura padr o para todo e qualquer programador C C The Programming Language escrito por Brian W Kernighan e Dennis M Richie o qual indicado como manual t cnico do programador C Equipara se ao exemplo de que n o existe falar de Engenharia de Software sem falar em Roger Pressman grande nome desta cadeira Bem mas isto assunto para outro livro n o mesmo A linguagem C uma linguagem de programa o t o poderosa que se adequa a qualquer tipo de sistema S a t tulo de curiosidade saibam que o sistema opera cional UNIX foi escrito em C por exemplo Quanto ao uso de compiladores para a linguagem C em geral utiliza se o TURBO C da BORLAND nada tendo contra a utiliza o de qualquer outro tipo de compi lador pertencente a outros fabricantes claro Existem muitas outras virtudes da linguagem C que voc poder conhecer ao longo do seu aprendizado Ser um programador C representa ser um profissional de pro grama o de computadores altamente qualificado em detrimento ao saber adquiri do por meio de uma linguagem de programa o poderos ssima que abre horizontes mil como a linguagem C A ESTRUTURA B SICA DE UM PROGRAMA EM LINGUAGEM C Um programa desenvolvido em linguagem C consiste em uma ou v rias fun es Os nomes programa e fun o se confundem em C pelo fato de que a linguagem C n o utiliza comandos como de costume em outras linguagens de programa o j conhecidas como por exem
89. rintf Primeira ocorrencia da frase n for p ptr 100 p lt ptr 100 p putchar p exit else ptr Utilizamos a fun o memchr que serve para procurar no buffer um determinado caracter especificado Tamb m usamos a fun o mememp que realiza compara es em conte dos de buffers de mem ria Mais um exemplo Gravando arquivos em baixo n vel finclude lt fcntl h gt finclude lt sysistst h gt usada para permiss es define TAMBUFF 4096 char buff TAMBUFF main argc argv int argc char argv int origem dest bytes Opera es com Arquivos 167 if argc 3 printf Formato C gt copy2 origem xxx dest xxx exit if origem open argv 1 ORDWR O BINARY lt 0 printf N o posso abrir o arquivo s argv 1 exit if dest open argv 2 O CREAT O WRONLY O BINARY S IWRITE lt 0 printf N o posso abrir o arquivo s argv 2 exit while bytes read origem buff TAMBUFF gt 0 write dest buff bytes close origem close dest clrscr printf FIM amp geteh 168 Aprendendo a Programar em Linguagem C J que manipulamos os chamados argumentos de permiss o existem tr s possibili dades poss veis S IWRITE S IREAD e S IREAD IS IWRITE Observe a tabela a seguir PERMISS O SIGNIFICADO S IWRITE Permiss o para grava o S IREAD Per
90. rn rio na ver dade n o importa muito pois ao utiliz lo voc estar eliminando por exemplo o uso da fun o condicional if que iremos abordar no pr ximo cap tulo If a gt b printf O maior deles e dn a else printf O maior deles e dn b Voc poder ainda ter uma estrutura tern ria encadeada a outra estrutura tern ria assim como tamb m pode acontecer com a estrutura condicional ninho de if s Ve ja a seguir finclude lt stdio h gt include lt conio h gt void main t int a b val clrscr printf Digite dois numeros scanf d God amp a amp b val a b a 4 b a gt b 2a b printf O maior deles e d n val 50 Aprendendo a Programar em Linguagem C De repente voc perguntaria Quando devo utilizar essa estrutura Na verdade n o existe uma regra que determine onde e como voc deva utilizar o operador condicional tern rio ou a fun o if Logo para a solu o de um determinado problema que envolva um tipo de teste l gico condicional cabe especificamente a voc decidir quem ir servi lo no momento p 1 Para que servem os operadores 2 Qual o s mbolo que representa o operador de m dulo da linguagem C 3 Qual a diferen a b sica na utiliza o do operador de pr incremento e p s incremento 4 O que significa dizer quando falamos que uma vari vel est sendo decre mentada Qual a fun o do
91. s para a fun o ultrapassar o limite m ximo dispon vel a mem ria alocada para armazenar os valores da pilha ir se esgotar Um estudo mais aprofundado a respeito do uso de estrutura de dados pilhas para ser mais espec fico ser abordado no cap tulo 13 a NC Exercici A 1 O que vem a ser a t cnica de Recursividade 2 Diga o que faz os comandos a seguir a stremp sl s2 b strcpy nome1l nome2 Para que serve a passagem de par metros 4 Diferencie passagem de par metro por valor e passagem de par metros por refer ncia 5 Defina modulariza o 86 Aprendendo a Programar em Linguagem C Na linguagem C qual a diferen a existente entre procedimentos e fun es ca so realmente exista O que fazem as linhas de comando abaixo a define Mostra x printf x b include minharotina h Diga o que faz a instru o return valor 9 MANIPULA O COM VETORES Primeiramente vamos tirar uma d vida cruel O que vetor Bem vetor representa um endere o de mem ria onde ser o armazenados diversos dados de acordo com o dimensionamento dado a ele na pr pria defini o cria o da vari vel vetor Isso poss vel na maioria das linguagens de programa o Um vetor representa ent o conjuntos indexados de elementos de um mesmo tipo Nota ei Vetor Nota com 5 posi es Essa forma de estrutura o j foi vista em outras linguagens de programa o
92. sar uma desestrutura o no programa que criado Na verdade quando um programador utiliza goto toda sua programa o estruturada desce privada abaixo Em outras palavras modulariza o n o combina com o uso do goto Analise o programa a seguir que mostra um jogo de adivinha o Jogo da Adivinha o finclude lt stdio h gt include lt conio h gt include lt stdlib h gt 2 id include lt time h gt a 70 Aprendendo a Programar em Linguagem C main int num secreto char resp s while resp s srand time NULL secreto rand 100 clrscr printf Qual o n secreto scanf d amp num if secreto num printf Acertou printf n o numero e d secreto else if secreto lt num printf Errado N muito alto else printf Errado N muito baixo geteh Estruturas de Itera o 71 printf Deseja jogar novamente s n resp getche Neste programa foi utilizada a biblioteca time h que associa fun es de tempo ao seu programa Tamb m utilizamos a fun o rand que retorna um n mero inteiro aleat rio sorteado internamente na mem ria do computador pelo pr prio tempori zador da linguagem C dog Benea NL p 1 Qual o uso pr tico das chamadas estruturas de itera o 2 Qual a diferen a b sica em utilizar a estrutura de repeti o repita at ou en quanto fa
93. semelhante aos da estrutura simples Exemplo Pr tico Estrutura Composta em C include lt stdio h gt include lt conio h gt struct cliente int codcli char nome 30 char tel 15 struct dtnasc int dia 130 Aprendendo a Programar em Linguagem C mes ano void main clrscr printf An C digo do Cliente gets cliente codcli printf An Nome gets cliente nome printf An Telefone gets cliente tel printf An Data de nascimento scanf J d Jd d amp cliente dtnasc dia amp cliente dtnasc mes amp cliente dtnasc ano clrscr printf Pressione uma tecla para continuar getch Podemos ter uma estrutura declarada e com seu nome redefinido atrav s da fun o da linguagem C typedef Ela permite criar novos nomes de tipos de dados defini dos Veja os exemplos a seguir Exemplo 1 E7 My typedef int INTEIRO GSE a AR Estruturas 131 Indica que INTEIRO a partir desse momento serve como sin nimo para a palavra reservada int Logo podemos representar da seguinte forma INTEIRO a b INTEIRO fp INTEIRO mat 50 Exemplo 2 struct end char nome 30 char rua 20 int num char bairro 15 char cidade 20 char uf 2 char cep 10 typedef struct end ENDERECO ENDERECO registro No pr ximo cap tulo iremos estudar as chamadas uni es unions realizando assim um comparativo das mesmas com as j vistas e
94. struturas structs Ser que muito diferente N o se trata da mesma coisa Ent o estrutura igual a uni o Fe pr A m 132 Aprendendo a Programar em Linguagem C Exerc cios Za O que e para que serve uma estrutura Diferencie estrutura simples de estrutura composta Escreva uma estrutura para compor um registro de alunos de uma turma Escreva uma estrutura para compor um registro de funcion rios de uma certa empresa Qual a fun o do typedef Redefina o nome atribu do a uma certa estrutura denominada Jogadores cuja fun o armazenar dados de jogadores de um certo time de futebol de sal o Escreva uma estrutura que seja caracterizada como homog nea Escreva uma estrutura de estrutura estrutura composta que seja caracterizada como homog nea 12 UNI ES Trata se tamb m de uma Estrutura ou seja tanto a Uni o quanto a Estrutura s o usadas para armazenar elementos de tipos diferentes em uma mesma vari vel A diferen a b sica em utilizar Estruturas ou Uni es est no fato de que ao declarar mos uma certa estrutura alocado a ela espa o suficiente para armazenar todos os elementos que fazem parte dela de uma s vez enquanto na uni o alocado um espa o por vez para cada elemento dela UNI O SIMPLES E o simples fato de utilizarmos uma nica uni o para concentrar um conjunto de elementos de tipos diferentes Funciona da mesma forma que a estrutura simples Observe o pr x
95. t2 getch Fun es 79 Declara o da fun o substitui int substitui char s1 80 char s2 80 char c1 char c2 int i n 0 if stremp s1 s2 0 return 0 else for i 0 i lt sizeof string1 i if s1 i c1 sl i c2 n return n No programa exemplo foi utilizada a fun o stremp conhecida como STRING COMPARE pois compara o conte do do primeiro par metro com o segundo Caso sejam iguais para o C tal refer ncia identificada pela igualdade ZERO Veja as poss veis varia es na utiliza o da fun o stremp VARIA ES SIGNIFICADOS stremp STRINGI STRING2 STRING igual STRING2 stremp STRINGI STRING2 0 STRINGI diferente de STRING2 stremp STRINGI1 STRING2 gt 0 STRING maior que STRING2 stremp STRINGI STRING2 lt 0 STRING menor que STRING2 Existe tamb m a fun o para tratamento de string cujo objetivo realizar c pia de um conte do string para outro strepy STRING COPY Veja como realizar tal opera o 80 Aprendendo a Programar em Linguagem C strepy STRING1 STRING2 strcepy endere o Rua Alfa 32 Exemplo Pr tico include lt stdio h gt include lt conio h gt include lt string h gt main char string1 80 string2 80 velha 80 nova 80 int idade 1 idade2 clrscr printf Nome da primeira pessoa scanf s amp string1 printf nIdad
96. tf stdout Mensagem Teste n n Sa da de Dados 15 getch Utilizamos a biblioteca dos h cuja fun o permitir ao programador a utiliza o de comandos ligados ao DOS atrav s da linha de comando de um programa em lin guagem C No nosso exemplo foi utilizado o comando date usado para exibi o e altera o da data do sistema operacional do DOS Como par metro especial de fun es de I O formatadas neste caso a fun o printf foram usados dois tipos de redirecionamentos stdout e stdprn Um redi recionamento tamb m aplic vel para a fun o scanf pois esta uma fun o de entrada de dados formatada Observe a tabela a seguir TIPOS DE REDIRECIONAMENTOS stdin Standard Input Device Utilizado para teclado stdout Standard Output Device Utilizado para monitor de v deo stderr Standard Error Device Utilizado para a tela do computador stsaux Standard Auxiliary Device Utilizado para porta serial stdprn Standar Printing Device Utilizado para impressora paralela O redirecionamento padr o que j fica impl cito na pr pria especifica o da fun o printf o sdtout para o monitor de v deo do seu computador 1 Para que utilizamos a fun o printf em nossos programas de computador 2 Qual a fun o dos formatadores na fun o printf 3 Qualo significado dos seguintes caracteres especiais a n b t 16 es AGO CNE 2
97. tor num rico do tipo inteiro de 5 elementos 1 9 8 3 4 17 7 3 4 J9 8 7 2 8 9 3 4 7 8 3 14 J9 8 I7 1 2 3 4 5 1 2 3 4 5 F 3 9 8 4 7 9 3 4 181917 1 2 3 4 5 1 2 3 4 5 4 319 8 4 7 10 3141 17 98 94 Aprendendo a Programar em Linguagem C 1 2 3 4 5 2 3 4 5 5 319 8 4 17 11 314171819 NM 6 3 8 9 4 7 A estrutura em destaque mostra como ficar o vetor ap s as compara es e devidas trocas Quando voc consegue acompanhar passo a passo o algoritmo desenvolvi do torna se muito mais f cil seu processo de aprendizagem de classifica o Tro cando em mi dos a primeira troca Ou melhor passando para algoritmo 1 2 3 4 5 9 8 3 4 T 1 2 3 4 5 8 9 3 4 7 Digamos que o vetor chame se Numeros para realizar esta troca eu irei precisar de uma vari vel auxiliar pois se eu disser que a posi o 1 recebe o conte do da posi o 2 ent o tanto a posi o 1 quanto a posi o 2 ir o conter o mesmo valor como mostrado a seguir Manipula o com Vetores 95 NUMEROS 1 2 3 4 5 8 8 3 4 7 E agora onde vou buscar o 9 que estava na posi o 2 Po
98. ue expresse o princ pio da pesquisa seq encial 10 Escreva um algoritmo que expresse o princ pio da busca bin ria T picos Avan ados em Linguagem C 10 PONTEIROS OU APONTADORES Um ponteiro ou apontador uma vari vel que no seu espa o de mem ria armaze na o endere o de uma segunda vari vel esta sim normalmente contendo o dado a ser manipulado pelo programa O endere o A tem como conte do o valor 58 58 A E O endere o B tem como conte do o Como o endere o de C aponta p Y A para o endere o de B que referencia o conte do do endere o de A portanto Pd F si AS 2A o conte do armazenado no endere o C ser igual ao endere o da vari vel A cujo valor armazenado em seu conte do ra Portanto o valor apontado pela vari vel C ser o conte do da vari vel A ou seja 121 122 Aprendendo a Programar em Linguagem C Observe o exemplo abaixo Exemplo Ponteiro include lt stdio h gt include lt conio h gt void main int a b c representa o de uma vari vel ponteiro b amp a b 58 c b clrscr printf Endereco de a Jun amp a printf Conteudo de a Y din a printf Conteudo de b u n b printf Valor apontado por b din b printf Endereco de b Jun amp b printf Conteudo de c un c printf Valor apontado por c J
99. ue o vetor um elemento est tico N o esque am que tais vetores s o chamados de ve tores unidimensionais COM MAIS DE UMA DIMENS O Observe a seguir a utiliza o de um vetor com mais de uma dimens o define NumeroDeProvas 5 define MaximoDeAlunos 50 float boletim MaximoDeAlunos NumeroDeProvas Como podemos referenciar a terceira nota do 15 aluno da turma Boletim 15 2 Veja agora um exemplo da utiliza o de vetor bidimensional matriz 90 Aprendendo a Programar em Linguagem C exemplo de MATRIZ finclude stdio h main static int a 3 4 14 36 62 78 77 14 92 17 67 51 18 60 b 4 2 7 34 23 69 32 1 3 int i j K c 3 2 for 1 0 i lt 3 i for j 0 j lt 2 j for c i j 0 k 0 k lt 4 k c i j a i k b k j printf c d d d n i j c i j D 91 Manipula o com Vetores Exemplo 2 finclude lt stdio h gt define LIN 2 define COL 2 main int mat LIN COL i j for i 1 i lt 3 i for j 1 j lt 3 j t printf AnEntre com o elemento d d 1 J scanf Jd amp mat i j for i 1 i lt 3 i for j 1 j lt 3 j if i j printf n d mat i J j D Imagine que baseado no exemplo anterior voc tamb m precisasse especificar que os elementos da matriz a serem impressos tamb m deveriam ser n meros pares
100. ue voc realmente espera da Linguagem C 2 SA DA DE DADOS Na verdade quando falamos em sa da de dados queremos dizer realmente sa da de informa es pois segundo os conceitos b sicos de processamento de dados tudo aquilo que inserido no computador atrav s de um INPUT dito dado e consegiientemente tudo aquilo que sai dito informa o Observe um exemplo em linguagem C do cl ssico programa Al Mundo Representa uma linha de coment rios include lt stdio h gt In cio do corpo principal do programa main Fun o utilizada para sa da de dados printf Al Mundo Aparecer ent o na tela do seu computador a mensagem Al Mundo como voc pode observar a seguir Sa da de Dados 9 Al Mundo Mensagem impressa FUN O DE SA DA FORMATADA printf O printf uma fun o utilizada para sa da de informa es Sua utiliza o equi para se ao comando WRITE da linguagem de programa o Pascal Observe finclude stdio h main printf Tenho d anos de idade 25 No nosso exemplo o c digo de formata o d solicita fun o printf imprimir o segundo argumento em formato decimal ou seja o n mero vinte e cinco 25 O printf uma fun o pertencente biblioteca padr o de C e pode receber um n mero de vari veis de argumentos onde cada arg
101. uivo referenci ado j existir ele ser sobreposto caso contr rio ser criado um novo a Abre um arquivo texto para grava o Os dados inseridos ser o adicio nados no final do arquivo mantendo assim os dados j gravados ante riormente Opera es com Arquivos 159 r Abre um arquivo texto para leitura e grava o O arquivo referenciado deve existir para ser atualizado w Abre um arquivo texto para leitura e grava o Caso o arquivo j exista o mesmo ser sobreposto Sen o o mesmo ser criado a Abre um arquivo texto para atualiza o e para adicionar dados no final do arquivo existente ou um novo arquivo ser criado Observe a seguir a codifica o de um arquivo texto criado para efetuar a leitura de dados j gravados l o arquivo texto anterior criado L um caracter por vez do arquivo texto include lt stdio h gt include lt conio h gt void main FILE fp int ch fp fopen argtext txt r clrscr while ch gete fp EOF printf J c ch fclose fp Algumas fun es e palavras reservadas utilizadas na cria o de arquivos EOF Determina o final do arquivo End Of File gete Realiza a leitura de um caracter por vez de um arquivo texto j criado 160 Aprendendo a Programar em Linguagem C Outro exemplo Um arquivo texto que grava uma string digitad
102. uma quantidade determinada de bits expressa em uma certa opera o Logo k lt lt 3 desloca a vari vel k esquerda de 3 bits preenchendo esses bits em branco vagos com zeros O operador un rio fornece o chamado complemento de um de um certo n mero inteiro isto ele realiza a invers o de cada bit 1 em O e tamb m ao contr rio 44 Aprendendo a Programar em Linguagem C OPERADORES L GICOS Esses operadores s o tamb m conhecidos como conectivos l gicos de opera o pois objetivam conectar express es l gicas que geralmente s o apresentadas atra v s de comandos de decis o S o eles OPERADOR FUN O amp amp E l gico II Ou l gico N o l gico Modelos if estado civil S amp amp idade gt 17 printf To dentro if uf R9 II uf S9 II uf M9 Il uf E9 printf Regi o Sudeste 1f sexo F9 printf MASCULINO if ano lt 1990 amp amp idade 20 Il idade 30 printf Mensagem Enviada else printf Mensagem interrompida An Operadores 45 OPERADORES RELACIONAIS S MBOLOS SIGNIFICADO gt Maior que lt Menor que gt Maior ou igual lt Menor ou igual Igualdade I Diferen a Atribui o simples EAN 2 6 td lt Existem ainda os chamados operadores de atribui o composta Bia CA r e GN S o aqueles que apresentam mais de uma atribui
103. umento deve ser separado por uma v rgula A seguir outro exemplo include lt stdio h gt main printf s tem d anos de idade Juan 25 No exemplo anterior utilizamos o c digo de formata o s para imprimir uma cadeia de caracteres Al m desse c digo de formata o a express o de controle usa 10 Aprendendo a Programar em Linguagem C o s mbolo in que representa um c digo especial que informa fun o printf que o restante da impress o deve ser feito em nova linha Na verdade ao represen tarmos An significa imprimir em uma nova linha A linha include lt stdio h gt ou Finclude stdio h informa ao compilador que ele deve incluir o arquivo bilioteca padr o stdio h Neste arquivo existem defini es de fun es de I O entrada e sa da padr o Standard Input Output como devemos efetuar a leitura de stdio h Exemplo Usando caracter e string include lt stdio h gt main printf A letra Jc j printf pronuncia se s jota Note que j um caracter e a palavra jota representa uma cadeia de caracteres que por esse motivo vem representado por aspas e n o por plicas como o caso Ainda o c digo de formata o para representa o de apenas um caracter Jc conforme podemos observar no exemplo a seguir Exemplo pr tico finclude stdio h main printf Ol eu estou aqui S

Download Pdf Manuals

image

Related Search

Related Contents

Alipal OS    Heuristic Algorithms for NP  Catalogue des contrats et des stages Armées - Jeunesse  ミニカウル  Ultrasónico - Hunter Home Comfort  PG Music Band in a Box - RealBand User Guide  Sites internet : sélection - Collège Travail Langevin - Bagnolet  operation manual  

Copyright © All rights reserved.
Failed to retrieve file