Home

Linguagem C - Prof. Dr. Paulo Roberto Gomes

image

Contents

1. imprime_erro void imprime_erro int erro switch erro case FALTA DE MEMORIA printf nERRO Falta de mem ria tecle algo n case FILA VAZIA VERO Fila vazia tecle algoin break getch 20 3 Lista duplamente encadeada Uma lista duplamente encadeada possui um elo para o elemento anterior e um elo para o elemento posterior Possui uma vantagem sobre a lista encadeada pois este tipo de lista pode ser percorrida em duas dire es para a direita e para a esquerda Programa exemplo 77 O programa permite inserir n meros inteiros em uma lista duplamente encadeada A inser o pode ser pela esquerda ou a direita A exibi o dos elementos da lista pode ser feita pela esquerda ou direita dupla c Finclude lt stdio h gt Finclude lt conio h gt Finclude lt alloc h gt Finclude lt ctype h gt finclude lt string h gt struct ELEMENTO struct ELEMENTO anterior int dado struct ELEMENTO posterior y 179 struct DESCRITOR struct ELEMENTO primeiro int n struct ELEMENTO ultimo da void inicializa_descritor struct DESCRITOR d void insere direita struct DESCRITOR d int n void insere esquerda struct DESCRITOR d int n void exibir lista direita struct DESCRITOR d void exibir lista esquerda struct DESCRITOR d void main void struct DESCRITOR d int n char op inicializa descritor amp d do clrscr
2. Exemplo 60 3600 Graus 45 lt enter gt Minutos 45 lt enter gt Segundos 45 lt enter gt ngulo em Graus 45 76 Continua S im ou N o s Graus 45 lt enter gt Minutos 10 lt enter gt Segundos 15 lt enter gt ngulo em Graus 45 17 Continua S im ou NJ o N OBSERVA O Imprimir mensagens de erro se os valores de entrada estiverem fora da faixa ERRO Graus fora da faixa ERRO Minutos fora da faixa ou ERRO Segundos fora da faixa Y Escreva um programa em C que recebe via teclado sexo MJasculino ou F Jeminino altura e peso da pessoa O programa deve calcular e imprimir na tela peso ideal diferenca de peso e situac o MAGRO IDEAL ou GORDO conforme exemplo abaixo Exemplo Sexo M asculino ou F eminino M SEM enter Altura 1 65 lt enter gt Peso 92 lt enter gt PIM 72 7 x altura 58 Peso Ideal 62 0 PIF 62 1 x altura 44 7 Diferen a de Peso 30 0 Situa o GORDO Sair S N s AQ MAGRO IDEAL GORDO Observa o O programa termina quando o usu rio digitar S ou s na pergunta Sair S N 11 Vetores matrizes e strings Um vetor uma colec o de vari veis de mesmo tipo que s o referenciadas pelo mesmo nome utilizando se um ndice para diferencia los Um vetor consiste em loca es cont guas de mem ria ou seja os elementos encontram se em sequ ncia contiguidade f sica O menor endere o corresponde ao primeiro elemento e o maior co
3. re nc ono cono cnn conan nc nannnann cnica 158 Figura 20 Representa o de uma fila e uma pilha eee cono cnn conan non nannc cnc 159 Lista de tabelas 1 Introduc o 1 1 Hist rico A linguagem de programa o C foi desenvolvida nos anos 70 por Dennis Ritchie em um computador DEC PDP 11 que utilizava Sistema Operacional UNIX 1 2 Evoluc o A partir de uma linguagem mais antiga chamada BCPL desenvolvida por Martin Richards surgiu uma linguagem chamada B inventada por Ken Thompson que influenciou o desenvolvimento da linguagem de programa o C 1 3 Caracter sticas e Linguagem de n vel m dio combina recursos de alto e baixo n vel e Bastante port vel N o fortemente tipada e Permite a manipula o de bits bytes e endere os e Permite escrever programas modulares e estruturados 1 4 Utiliza o Permite o desenvolvimento e implementa o de software b sico tais como e Sistemas Operacionais e Interpretadores e SGBD Sistema Gerenciador de Banco de Dados e Editores de texto e gr ficos Compiladores e Programas educacionais 2 Ambiente Turbo C 2 01 File Edit Run Compile Project Options Debug B reak watch Edit Line 1 Coll Insert Ident TabFill Unident A NONAME C janela de edi o Message Watch janela de mensagens do ambiente janela de assist ncia debug Fl Help F5 Zoom F6 Switch F7 Trace F8 Step F9 Make F10 Menu Alt F1 L
4. while botao DIREITO finaliza tela grafica E inicializa_tela_gr fica void inicializa_tela_gr fica void E placa modo placa DETECT EA amp modo d te bgi finaliza_tela_gr fica 142 void finaliza_tela_gr fica void closegraph inicializa mouse void inicializa mouse void union REGS regs regs x ax 0x0 int86 0x0033 amp regs amp regs mostra_cursor_mouse void mostra_cursor_mouse void union REGS regs regs x ax 0x1 int86 0x0033 amp regs amp regs apaga_cursor_mouse void apaga_cursor_mouse void union REGS regs regs x ax 0x2 int86 0x0033 amp regs amp regs le_posicao_cursor_mouse void le_posicao_cursor_mouse int xmouse int ymouse int botao union REGS regs regs x ax 0x3 int86 0x0033 amp regs amp regs botao regs x bx xmouse regs x cx ymouse regs x dx posiciona_cursor_mouse void posiciona_cursor_mouse int x int y AE REGS regs regs x cx X regs x dx y 144 regs x ax 0x4 int86 0x0033 amp regs amp regs 20 Listas lineares As listas lineares encadeadas filas e pilhas alocadas dinamicamente permitem alocac o indeterminada de elementos em uma estrutura de dados Os elementos s o alocados na mem ria RAM dinamicamente Uma lista encadeada tem por caracter stica um e
5. else printf Ok arquivo criado com sucessoln 15 2 2 putc A fun o putc utilizada para gravar caracteres em um arquivo Sintaxe int putc int ch FILE fp Prototype stdio h ch o caracter a ser gravado fp o ponteiro do arquivo aberto pela fun o fopen Observa o Se uma grava o for bem sucedida putc devolver o caracter gravado caso contr rio devolver um EOF EOF End of File Fim de Arquivo 15 2 3 getc A fun o getc utilizada para ler caracteres de um arquivo Sintaxe int getc FILE fp Prototype stdio h fp o ponteiro do arquivo aberto por fopen 15 2 4 feof A fun o feof file end of file determina se o fim de arquivo foi encontrado Devolve 0 se n o chegou ao fim do arquivo Sintaxe int feof FILE fp Prototype stdio h Programa exemplo 48 O programa lista na tela todas as linhas de um arquivo texto numerando as Observa o Este programa deve ser compilado e executado pelo sistema operacional EXE da seguinte forma A gt LISTA lista c lt enter gt Funcionamento Todas as linhas do programa fonte lista c s o exibidos na tela com as linhas numeradas Ao preencher toda a tela ocorre uma pausa A cada 119 parada informado o nome do arquivo texto que est sendo listado e o n mero de bytes listados Finclude lt stdio h gt Finclude lt conio h gt void main int argc char argv FILE fp inti n uns
6. char s1 41 s2 41 clrscr printf String 1 gets s1 printf String 2 gets s2 if stremp s1 52 0 printf String 1 IGUAL a String 2 else if stremp s1 s2 gt 0 printf String 1 MAIOR a String 2 else printf String 1 MENOR a String 2 getch 12 3 strcat C que A func o strcat concatenac o de duas strings pr definida do C que permite a concatenac o de uma string no final da outra string Sintaxe char strcat char destino const char origem Prototype string h en Funcionamento A string origem copiado para o final da string destino Programa exemplo 29 O programa c pia e concatena caracteres a uma string resultando na palavra Pelotas Hinclude lt stdio h gt HFinclude lt conio h gt Finclude lt string h gt void main void char s1 Pel s2 ota s3 s char sr 15 clrscr printf Ysin s 1 printf Ysin s2 printf Ysin s3 strepy sr s1 IF sr Pel strcat sr s2 IF sr Pelot strcat sr s3 sr Pelotas printf Ysin sr getch 12 4 strlen A func o strlen comprimento de uma string pr definida do C que retorna o comprimento de uma string ou seja a quantidade de caracteres que a string possui no momento Observa o O NULL n o contado Sintaxe int strlen const char s Prototype string h Programa exemplo 30 O programa imprime na tela a quantidade d
7. Programa exemplo 7 O usu rio digita um n mero e o programa diz se este par ou mpar include lt stdio h gt include lt conio h gt void main void int numero clrscr printf Digite um n mero scanf d amp numero if numero 2 0 printf N mero PARin comando simples else printf N mero IMPARIn comando simples getch 7 2 1 if encadeados Um if aninhado ou encadeado um comando if dentro de outro comando if ou if else Programa exemplo 8 O usu rio digita um n mero e o programa diz se este zero positivo ou negativo Finclude lt stdio h gt Finclude lt conio h gt void main void int num AA clrscr printf Digite um n mero scanf d num if num 0 printf Zeroin comando 1 do primeiro if else if num gt 0 printf Positivoln else comando 2 do primeiro if printf Negativoin getch Observa o Note que no comando 2 do primeiro if existe outro if Exemplo if x primeiro if if y segundo if printf 1 else printf 2 Primeira d vida O else pertence a qual if Funcionamento Em C o else est ligado ao if mais pr ximo mais interno ou seja neste exemplo o else pertence ao segundo if Segunda d vida Como fazer para que o else do exemplo acima perten a ao primeiro if Resposta Deve se utilizar chaves para
8. apaga_cursor_mouse void apaga_cursor_mouse void union REGS regs regs x ax 0x2 int86 0x0033 amp regs amp regs le_posicao_cursor_mouse void le_posicao_cursor_mouse int xmouse int ymouse int botao union REGS regs regs x ax 0x3 int86 0x0033 amp regs amp regs botao regs x bx xmouse 1 regs x cx 8 ymouse 1 regs x dx 8 posiciona cursor mouse void posiciona cursor mouse int x int y union REGS regs regs x cx x 8 1 regs x dx y 8 1 regs x ax 0x4 149 int86 0x0033 amp regs amp regs Programa exemplo 74 O programa utiliza o mouse em modo gr fico include lt stdio h gt include lt dos h gt include lt graphics h gt void inicializa_tela_grafica void void finaliza_tela_grafica void void inicializa_mouse void void mostra_cursor_mouse void void apaga_cursor_mouse void void le_posicao_cursor_mouse int xmouse int ymouse int botao void posiciona_cursor_mouse int x int y fdefine ESQUERDO 1 define DIREITO 2 int xmouse ymouse botao void main void int raio 50 inicializa_tela_grafica inicializa_mouse posiciona_cursor_mouse 40 12 mostra cursor mouse do le posicao cursor mouse amp xmouse amp ymouse amp botao if botao ESQUERDO setcolor WHITE circle xmouse ymouse raio delay 500 setcolor BLACK circle xmouse ymouse raio
9. switch ch case l erro incluir_fila f valor if erro SUCESSO imprime_erro erro break case E erro excluir_fila f if erro SUCESSO imprime_erro erro break case C erro consultar fila f amp valor if erro SUCESSO imprime erro erro else clrscr printf Valor din valor getch break 190 while ch l F cria_fila void cria_fila struct FILA f f gt primeiro NULL f gt tamanho 0 f gt ultimo NULL ERES incluir_fila int incluir_fila struct FILA f int valor struct DADO t t struct DADO malloc sizeof struct DADO if t NULL return FALTA DE MEMORIA else t gt info valor t gt elo NULL if f gt ultimo NULL f gt ultimo gt elo t f gt ultimo t if f gt primeiro NULL f gt primeiro t f gt tamanho f gt tamanho 1 return SUCESSO excluir_fila int excluir_fila struct FILA f struct DADO t if f5 primeiro NULL return FILA_VAZIA else t f gt primeiro f gt primeiro t gt elo f gt tamanho f gt tamanho 1 free t if f5 primeiro NULL f gt ultimo NULL return SUCESSO REN consultar_fila int consultar fila struct FILA f int j struct DADO t if f5 primeiro NULL return FILA_VAZIA else t f gt primeiro j t gt info return SUCESSO
10. 0 printf Determinante ZERO n else if retorno gt 0 printf Determinante POSITIVO else printf Determinante NEGATIVO n getch fun o definida pelo programador int verifica_determinante float a float b float c float det det b b 4 a c if det 0 return 0 else if det gt 0 return 1 else return 1 c Fun es que n o retornam nenhum valor ou seja s o puramente procedimentos Programa exemplo 35 O programa possui uma fun o que limpa toda a tela include lt stdio h gt include lt conio h gt void limpa_tela void void main void limpa_tela getch fun o definida pelo programador void limpa_tela void int c l for I 1 lt 25 I for c 1 c lt 80 c gotoxy c 1 ee printf c 32 32 c digo do caracter espa o 13 2 Passagem de par metros por valor Forma de chamada de uma fun o onde o valor do argumento apenas copiado para o par metro formal da fun o Portanto altera es feitas nos par metros n o ter o efeito nas vari veis utilizadas para cnam la Programa exemplo 36 O programa possui uma fun o que pinta uma parte da tela Hinclude lt stdio h gt include lt conio h gt void pinta janela int ci int li int cf int If int cor void main void textbackground WHI
11. Sintaxe do comando while condi o Repete o la o enquanto a condi o for verdadeira e Testa a condi o no final fazendo com que o la o seja executado pelo menos uma vez Programa exemplo 15 Imprime na tela de 1 at 10 Finclude lt stdio h gt Finclude lt conio h gt void main void inti 41 clrscr do printf d n i i while i lt 10 7 7 Interrup o de loops 7 7 1 O comando break Quando o programa encontra o comando break dentro de um la o ele imediatamente encerra o la o e o controle do programa segue para o pr ximo comando ap s o la o Programa exemplo 16 O programa imprime na tela a tecla digitada pelo usu rio at que ele digite lt esc gt Hinclude lt stdio h gt Finclude lt conio h gt fdefine ESC 27 void main void char tecla clrscr do tecla getche if tecla ESC encerra o la o quando o usu rio teclar ESC break printf Tecla c n tecla K while 1 la o eterno 7 7 2 O comando continue O comando continue em vez de for ar o encerramento for a a pr xima intera o do la o e pula ou seja n o executa o c digo que estiver depois do comando continue Programa exemplo 17 O programa imprime na tela somente os n meros pares de 0 at 100 Hinclude lt stdio h gt finclude lt conio h gt void main void i int i clrscr for i 0 i lt 100 i if i
12. Sintaxe double atan double x Prototype math h Faixa pi 2 pi 2 AR 6 6 cos A fun o cos retorna o valor do cosseno A vari vel x deve estar em radianos Sintaxe double cos double x Prototype math h Faixa 1 1 6 7 sin A fun o sin retorna o valor do seno A vari vel x deve estar em radianos Sintaxe double sin double x Prototype math h Faixa 1 1 6 8 exp A fun o exp retorna o valor do expoente ex Sintaxe double exp double x Prototype math h 6 9 pow A fun o pow power retorna o valor da pot ncia xy Sintaxe double pow double x double y Prototype math h 6 10 sqrt A fun o sqrt square root retorna o valor da raiz quadrada Sintaxe double sqrt double x Prototype math h 6 11 log A fun o log retorna o valor do logaritmo natural 27 Sintaxe double log double x Prototype math h 6 12 atof A fun o atof converte string em ponto flutuante Sintaxe double atof const char s Prototype math h e stdlib h 6 13 atoi A fun o atoi converte uma string em inteiro Sintaxe int atoi const char s Prototype stdlib h 6 14 atol A fun o atol converte uma string em inteiro longo Sintaxe long int atol const char s Prototype stdlib h 6 15 log10 A fun o log10 retorna o logar tmo na base 10 Sintaxe double log10 double x Prototype math h 6 16 tan A fun
13. e Tiny Menor de todos modelos de mem ria Existe 64K bytes para programa dados e vetores Utiliza se ponteiro near Este programa pode ser convertido para COM e Small 64K bytes para dados e 64K bytes para c digo Utiliza se ponteiro near Bom tamanho para aplica es m dias e Medium 64K bytes para dados e 1M bytes para c digo Utiliza se ponteiro far para c digo e n o para dados Este o melhor modelo para programas grandes mas n o armazena muitos dados na mem ria e Compact Inverso do medium 64k bytes para c digo e 1M bytes para dados Utiliza se ponteiro far para dados Este melhor quando seu c digo pequeno e voc precisa endere ar uma por o de dados e Large 1M bytes para c digo e dados Utiliza se ponteiro far para ambos necess rio somente em aplica es muito grandes e Huge Dados est ticos ocupam mais do que 64k bytes Utiliza se ponteiro far para c digo e dados e Code Generation gera o de c digo e Calling comention C ou Pascal e Instruction set 8088 8086 ou 80186 80286 e Floating point Emulation 8087 80287 ou none Default char type Signed ou Unsigned e Alignment Byte ou Word e Generate underbar ON ou OFF Merge duplicate string ON ou OFF Standard stack frame ON ou OFF Test stack overflow ON ou OFF Line Numbers ON ou OFF OBJ debug information ON ou OFF e Optimization otimiza o Optimize for Speed ou Size Use register varia
14. imprime c 32 imprime c caracter switch tecla case UP l if I lt 1 25 break case DOWN I if I gt 25 1 break case LEFT c if c lt 1 c 80 break case RIGHT c if c gt 80 c 1 break case HOME c 1 canto superior esquerdo 1 break case END c 1 canto inferior esquerdo 154 25 break case PGUP c 80 canto superior direito l 1 break case PGDN c 80 canto inferior direito 25 break case F1 car S seleciona moldura simples break case F2 car D seleciona moldura dupla break case ENTER if primeiro x C marca o canto superior esquerdo da moldura yi l primeiro FALSE else xf c desenha a moldura yf 1 inverte amp xi amp yi amp xf amp yf inverte os cantos retangulo car xi yi xf yf primeiro TRUE c xi xf 2 yi yf 2 break while tecla ESC 8 retangulo void retangulo char c int xi int yi int xf int yf int col lin if c D moldura DUPLA for col xi col lt xf col imprime col yi 205 imprime col yf 205 for lin yi lin lt yf lin imprime xi lin 186 imprime xf lin 186 imprime xi yi 201 imprime xf yi 187 imprime xf yf 188 imprime xi yf 200 147 else
15. printf P ush P O p Clonsultar ou Flim 2 do ch toupper getche while Istrchr POCF ch if ch P printf Valor scanf Yd 8valor switch ch case P erro push amp p valor if erro SUCESSO imprime_erro erro break 147 case O erro pop amp p amp valor if erro SUCESSO imprime erro erro else printf Informa o Exclu da Y din valor break case C erro consulta pilha p amp valor if erro SUCESSO imprime erro erro else printf Valor din valor break while ch l F cria_pilha void cria_pilha struct PILHA p p gt topo NULL int push struct PILHA p int valor struct DADO t t struct DADO malloc sizeof struct DADO if t NULL return FALTA DE MEMORIA else t gt info valor t gt elo p gt topo if p gt topo NULL t gt elo NULL p gt topo t return SUCESSO pop int pop struct PILHA p int info struct DADO t if p gt topo NULL return PILHA_VAZIA else t p gt topo info t gt info p gt topo t gt elo 148 free t return SUCESSO consultar_pilha int consulta_pilha struct PILHA p int info struct DADO t if p topo NULL return PILHA_VAZIA else t p topo info t
16. 10 7 wherex e wherey A fun es wherex e wherey informa a posi o do cursor que indicam a posi o corrente do cursor A Sintaxe int wherex void e int wherey void Prototype conio h Programa exemplo 22 O programa exibe a posi o do mouse coluna e linha Hinclude lt stdio h gt include lt conio h gt void main void int coluna linha coluna wherex linha wherey printf Coluna d n coluna printf Linha din linha getch 10 8 textmode A fun o textmode permite alterar o modo de texto pr definida do C que permite redefinir o modo do texto na tela ou seja colorido ou preto e branco 80 ou 40 colunas Sintaxe void textmode int modo Prototype conio h Tabela 15 Modos de texto Modos Resolu o da tela colunas x linhas c80 Colorido 80 x 25 C40 Colorido 40 x 25 BW80 Preto e branco 80 x 25 BW40 Preto e branco 40 x 25 10 9 Lista de exerc cios comandos v Escreva um programa em C que recebe dois valores via teclado cateto adjacente b e cateto oposto a e calcula o valor da hipotenusa dado pela seguinte f rmula Y hZ Cateto oposto Hipotenusa A Ed gt VA b Cateto adjacente RA AS Exemplo Tela Cateto adjacente b 3 lt enter gt Cateto oposto a 4 lt enter gt Hipotenusa 5 Y Escreva um programa em C que l 4 notas via teclado n1 n2 n3 e n4 obtidas por um aluno em 4
17. Ilnclus oin printf Alltera oin printf T rminoin printf Qual a op o opcao getche switch opcao case i case l inclusao break case a case A alteracao break case t case T termino break default printf ERRO Op o Inv lidan getch void inclusao void alteracao void termino 7 4 Comando while O comando while um comando de repeti o que permite executar um comando simples ou v rios comandos composto diversas vezes Isto feito atrav s da avalia o de uma condi o Enquanto a condi o for verdadeira os comandos s o repetidos Quando a condi o se tornar falsa o comando while finalizado O teste da condi o feita no in cio do comando ou seja antes que todos os comandos sejam executados Observa o Note que os comandos podem n o ser executados nenhuma vez basta a condi o come ar como falsa AQ san Sintaxe while condi o ou while condi o comando comando 1 comando 2 comando simples comando composto Condi o Qualquer express o v lida em C com resultado O false ou 0 true Na condi o podem ser utilizados ainda vari veis constantes fun es operadores aritm ticos relacionais e l gicos Funcionamento do comando O loop la o repetido enquanto a condi o for verdadeira Quando a condi o se tornar falsa o controle do programa
18. Programa exemplo 1 Imprimir a data no seguinte formato Data dd mm aaaal Finclude lt stdio h gt finclude lt conio h gt void main void int dia mes ano vari veis locais utilizadas somente na fun o main clrscr fun o limpa a tela clear screen dia 23 mes 5 ano 2003 printf Data 02d 02d 04din dia mes ano getch 3 4 Palavras reservadas Definidas por K amp R ANSI Turbo C Kernighan amp Ritchie auto double if static const asm pascal break else int struct enum ss es case entry long switch signed interrupt huge char extern register typedef void _CS continue float return union volatile decl default for sizeof unsigned near do goto short while _ds Observac o As palavras reservadas n o podem ser utilizadas pelo programador como nome de vari veis constantes ou fun es ou seja n o servem como identificadores DA 3 5 Declarac o de vari veis Sintaxe tipo dado base lista de vari veis tipo dado base deve ser um tipo de dado v lido int char float double ou void lista de vari veis um ou mais identificadores separados por v rgula Exemplo void main void int i j K float a b char ch 3 5 1 Onde as vari veis podem ser declaradas e Definidas fora de todas as fun es incluindo a fun o main s o chamadas de vari veis globais e podem ser acessadas em qualquer parte do programa Estas vari veis s o alocadas estaticame
19. printf ndice de Reajuste scanf Yf amp indice sal REAJUSTE salario indice printf Sal rio Atualizado R 2An sal getch Y Escreva em C a fun o CENTRALIZA A fun o recebe linha mensagem e cor A fun o deve imprimir na tela a mensagem centralizada na linha especificada com a cor especificada include lt stdio h gt include lt conio h gt include lt string h gt CENTRALIZA void main void clrscr 07 CENTRALIZA 12 Jogo de Damas BLUE getch Y Escreva em C a fun o HIPOTENUSA A fun o recebe o valor da base e da rea de um tri ngulo A func o deve devolver na vari vel altura a altura do tri ngulo A fun o deve retornar tamb m o valor da hipotenusa Finclude lt stdio h gt HFinclude lt conio h gt HIPOTENUSA void main void float base area h altura base altura clrscr rea printf Base 9 2 scanf Yf amp base printf rea do C rculo scanf f amp area hipotenusa base altura h HIPOTENUSA base area amp altura printf Hipotenusa 1fin h printf Altura 1fn altura getch v Escreva em C a fun o VERIFICA A fun o recebe um n mero inteiro n A fun o deve devolver na vari vel resto o resto inteiro da divis o A fun o deve retornar se o n mero n par 1 ou mpar 0 Finclude lt
20. travar o programa 11 2 Strings Uma string cadeia de caracteres um tipo de dado que consiste de um conjunto de caracteres Uma string pode armazenar qualquer tipo de caracter v lido da tabela ASCII ASCII Americam Standard Code for Information Interchange url http www asciitable com Em C uma string consiste em um vetor de caracteres finalizado por um zero Um zero representado como 0 ou NULL Observa o Na inicializa o de uma constante string teste n o necess rio acrescentarmos o NO pois o compilador faz isso automaticamente char string teste Observa o Note que no exemplo acima n o foi necess rio especificar o n mero de elementos da string O compilador C interpreta que o tamanho da string a quantidade de caracteres da inicializa o 5 mais um 1 para o NULL totalizandom neste caso seis 6 elementos Isto um problema se quisermos mais tarde acrescentar mais caracteres na vari vel string pois n o foi reservado espa o pr viamente para estes novos caracteres 11 3 Matrizes Multidimensional tipo dos dados nome vari vel tamanho_1 tamanho_2 tamanho_n Exemplo float y 5 5 matriz 2D Para acessar o elemento 3 4 da matriz y deve se escrever y 3 4 Note que o primeiro elemento y 0 0 e o ltimo elemento y 4 4 O total de elementos 25 11 4 Vetor de strings 71 Para criar um vetor de strings deve se utilizar uma mat
21. Comando correto for x 1 x lt 10 x printf x din x Programa exemplo 12 O programa imprime caracteres de A at Z na tela Finclude lt stdio h gt Finclude lt conio h gt void main void char letra A inicializa o da vari vel de controle clrscr while letra Z printf Letra cln letra letra incremento getch 7 5 O comando for O comando for um comando de repeti o que permite executar um comando comando simples ou v rios comandos comando composto diversas vezes Isto feito atrav s da avalia o de uma condi o Enquanto a condi o for verdadeira os comandos s o repetidos Quando a condi o se tornar falsa o comando for finalizado Sintaxe for inicializa o condi o incremento ou decremento comando Inicializa o um comando de atribui o ou v rios separados por v rgula que o compilador utiliza para inicializar a s vari vel is de controle do la o Condi o uma express o qualquer que testa a vari vel de controle do la o contra algum valor para determinar quando o la o terminar Incremento ou decremento Define a maneira como a s vari vel is de controle do laco ser o alteradas ap s a repetic o do laco e Ola o for repetido enquanto a condi o verdadeira e A condi o sempre testada no come o do la o e Qualquer uma das 3 partes do comando for inici
22. G Endere o 87D8 0FBB Valor x 7 H Endere o 87D8 0FBC Valor x 8 Endere o 87D8 0FBD Valor x 9 J Programa exemplo 44 O programa mostra um ponteiro apontando para os elementos de um vetor Isto feito atrav s da aritm tica de ponteiros Compile o programa utilizando o modelo de mem ria large Finclude lt stdio h gt Finclude lt conio h gt void main void int x 10 0 1 2 3 4 5 6 7 8 9 y inti p clrscr p amp x 0 for i 0 i lt 9 i printf Endere o p Valor x d d n p i p p 109 getch Resultado na Tela Endere o 87D8 0FAA Valor x 0 O Endere o 87D8 0FAC Valor x 1 1 Endere o 87D8 0FAE Valor x 2 2 Endere o 87D8 0FBO Valor x 3 3 Endere o 87D8 0FB2 Valor x 4 4 Endere o 87D8 0FB4 Valor x 5 5 Endere o 87D8 0FB6 Valor x 6 6 Endere o 87D8 0FB8 Valor x 7 7 Endere o 87D8 0FBA Valor x 8 8 Endere o 87D8 0FBC Valor x 9 9 14 3 2 2 Decremento Faz com que o ponteiro aponte para a localiza o do elemento anterior Exemplo p ponteiro aponta para o elemento anterior p conte do do ponteiro incrementado 14 3 3 Soma e subtra o Exemplo p p 9 Faz com que o ponteiro p aponte para o nono 9 elemento do tipo_dado_base ap s aquele que o ponteiro estava apontando no momento Observa o Somente p
23. Nome do arquivo texto LISTA C lt enter gt N mero de linha 7 lt enter gt 192 7 inti j K N mero de linha 70 lt enter gt ERRO Linha n o existe N mero de linha 0 lt enter gt ou ERRO Arquivo n o existe Y Escreva um programa em C que recebe via teclado o nome de dois arquivos texto origem e destino O programa deve copiar o conte do do arquivo origem para o arquivo destino Exemplo Arquivo origem LISTA C lt enter gt Arquivo destino LISTA tmp lt enter gt 20345 Bytes copiados Y Escreva um programa em C que recebe via teclado o nome do arquivo texto fonte e o nome do arquivo texto destino O programa deve converter o arquivo fonte para mai sculo ou min sculo conforme escolha do usu rio gerando o arquivo texto destino Exemplo Arquivo fonte LISTA C lt enter gt Arquivo destino LISTA TMP lt enter gt Mai sculo ou Min sculo 1234 Bytes convertidos Y Escreva um programa em C que recebe via teclado o nome de um arquivo texto e uma palavra O programa deve imprimir todas as linhas que possuem esta palavra Exemplo Nome do arquivo texto PALAVRA C lt enter gt Palavra if lt enter gt 23 if fp NULL 33 if ch n 37 if compara linha palavra 41 if ch An 59 if linha i palavra 0 65 if linha k palavra j 69 if achei Y Escreva um programa em C que recebe via teclado o nome de um arquivo texto O programa deve permitir
24. Tetto A ERRO 57 10 5 WindOWs secas sais iara ON 57 10 6 sound e noso nd sar A A E Pe Sei 58 LOPE where X e Where y E er em merece cen A EEA E E R EEA EEA 58 108 teximode aan 59 10 9 Lista de exerc cios comandos ice nccnnc nono narco raareac ana non nn nan ne nn nn ran nn can ccnnnnnns 59 11 Vetores matrizes e Strid8S ocoonoomsmsssmssssmmsmsrrmrrrrrrrrrr ca aaa sans Sese Sotonin 64 11 1 Vetores css correr NN 64 1152 SEEN OS easier iss negra NN 65 11 3 Matrizes Multidimensional rr cereceeeacera acena ne recarencanacae ataca na cnn ran aerea nernaroa 65 11 4 Vetor de SO ccoo e EA EEEE E EREE ESE EE EK E DEE E REEE Edo RTENE 65 11 5 Inicializa o de matrizes vetores crecen niine En EE E E E IEEE O NE ikea s 66 11 6 Inicializa o de um vetor de caracteres s ssesesseeseeeeeseeesseessstesertesteeesstssssissertestresstrssssesseresseeeesersss 66 11 7 Inicializa o de matrizes multidimensionais ssssseeneseeessessseeeeettseeessesssstssereesreessstessseeseressereeseesss 66 11 8 Inicializa o de vetores e matrizes sem tamanho ssesesssssssssessesteseressssssstsserteseressersssseeseresseeesersss 67 11 9 Classifica o de dados ou ordena o sort sessessesssessesssesseessesseeseesseestessessttssesstesresstesressesseessessees 68 110 Lista de exercicios MEMO iria EKTE E EE E REEE EE EE E ES 70 12 Manipula o de StringS ssssssss sosser sossrssso ssop sos
25. char reg 40 117 char nome do arquivo 14 unsigned int n ok long int posicao char ch clrscr printf Nome do arquivo scanf Y s nome do arquivo if fp fopen nome do arquivo r b NULL printf ERRO Arquivo n o EXISTE n getch else do clrscr printf N mero do registro scanf d amp n posicao n sizeof reg fseek fp posicao SEEK SET ok fread reg sizeof reg 1 fp if ok printf d Palavra sin n reg else printf ERRO Registro N O existein printf Continua S N do ch getch while Istrchr SsNn ch while strchr Ss ch fclose fp 15 3 Sistema de arquivo n o bufferizado Ao contr rio do sistema de entrada e sa da de alto n vel sistema bufferizado o sistema de baixo n vel sistema n o bufferizado n o utiliza ponteiros de arquivo do tipo FILE mas sim descritores de arquivos chamados handles do tipo int ou seja uma vari vel inteira 15 3 1 open creat e close A fun o open permite abrir criar um arquivo em disco Func o Abre um arquivo open Sintaxe int open char nomearquivo int acesso Prototype io h Tabela 21 Tipos de acessos em arquivos 118 Acesso Efeito O_RDONLY Apenas leitura O WRONLY Apenas grava o O RDWR Leitura e grava o O CREAT Cria e abre O TRUNC Abre com truncation O_EXCL Abre exclusiva O_APPEND Abre par
26. clrscr do printf Valor 9 scanf Yd amp n while n lt 0 n gt 15 resposta fatorial n printf Fatorial de d d n n resposta getch long int fatorial unsigned int n long int resp valor if n lt 0 return 0 if n 1 return 1 valor fatorial n 1 resp valor n return resp 13 7 Lista de exerc cios fun es v Escreva em C a fun o PALAVRAS A fun o recebe uma string nome e retorna o n mero de palavras do nome veja exemplo abaixo include lt stdio h gt include lt conio h gt PALAVRAS j void main void Exemplo char nome 256 int n Nome Paulo Roberto Gomes Luzzardi lt enter gt Seu nome tem 4 palavra s clrscr printf Nome gets nome n PALAVRAS nome printf Seu nome tem d palavra s n n getch Observa o N o utilizar a fun o strlen do Turbo C Y Escreva em C a fun o VERIFICA DATA A fun o recebe uma string data no formato dd mm aaaa e devolve via par metros dia m s e ano A fun o al retorna 1 se o dia for inv lido 2 se o m s for inv lido 3 se o ano for inv lido 4 formato inv lido e 5 se a data estiver correta Finclude lt stdio h gt HFinclude lt conio h gt Hinclude lt string h gt Hinclude lt stdlib h gt VERIFICA_DATA void main void char data 11 int dia mes ano erro clrscr printf
27. direita Marca in cio do bloco Marca fim do bloco Marca uma palavra Copia um bloco Elimina um bloco Esconde mostra marcas de um bloco Desloca um bloco L um bloco do disco Grava um bloco no disco Move bloco para direita Move bloco para esquerda Aborta qualquer opera o Auto indenta o on off Prefixo do caracter de controle Procura Find Procura e substitui Find In cio do texto at o cursor Texto inteiro Procura a nesima ocorr ncia 91 N N o pede confirma o U Mai sculas e min sculas iguais W Somente palavras inteiras CTRL Qn Procura uma marca CTRL KD ou CTRL KQ Sai do editor n o salva CTRL L Repete procura CTRL QL Recupera linha CTRL KS Salva e edita CTRL Kn Coloca uma marca CTRL I ou TAB Tabula o CTRL OT Liga e desliga modo TAB 2 11 6 Ajuda on line F1 Help CTRL F1 Help por comando Funcionamento Coloque o cursor sobre o comando ou fun o que deseja ajuda on line e digite CTRL F1 99 3 Estrutura de um programa em C 3 1 Identificadores S o os nomes criados pelo programador para fazer refer ncia a vari veis contantes fun es e r tulos Regras para a criac o de identificadores Turbo C 2 01 O primeiro caracter deve ser uma letra ou sublinha _ e Os caracteres seguintes devem ser letras n meros ou sublinhas e Os primeiros 32 default caracteres s o significativos e N o permitido a utiliza o de caracteres em branco caracter esp
28. gt info return SUCESSO imprime_erro void imprime_erro int erro switch erro case FALTA_DE_MEMORIA printf ERRO Falta de mem ria tecle algo n break case PILHA VAZIA printf ERRO Pilha vazia tecle algo n break 20 2 Implementa o de uma fila Programa exemplo 76 O programa permite inserir n meros inteiros em uma fila Quando o n mero digitado for igual zero 0 todos os n meros da fila s o listados Ffila c include lt stdio h gt include lt conio h gt include lt stdlib h gt include lt alloc h gt include lt ctype h gt include lt string h gt define SUCESSO 1 define FALTA_DE_MEMORIA 2 define FILA_VAZIA 3 void cria_fila struct FILA f int incluir_fila struct FILA f int valor int excluir fila struct FILA f 140 int consultar fila struct FILA f int j void imprime_erro int erro struct DADO int info informa o struct DADO elo elo para o pr ximo elemento struct FILA struct DADO primeiro int tamanho struct DADO ultimo struct FILA f main void main void int valor erro char ch cria_fila f do clrscr printf I ncluir E xcluir C onsultar ou F im 2 do ch toupper getche while Istrchr lECF ch if ch 19 clrscr printf Valor scanf d 8valor
29. lt conio h gt Hinclude lt string h gt void main void float a b h clrscr printf Cateto Adjacente scantf f amp b printf Cateto Oposto scant f amp a h HIPOTENUSA a b printf Hipotenusa 2fin h getche Y Escreva em C a fun o CONTA A fun o recebe uma string nome e devolve via par metros n mero letras mai sculas e o n mero letras min sculas A func o retorna o total de letras do nome veja exemplo abaixo OA Finclude lt stdio h gt Finclude lt conio h gt finclude lt string h gt CONTA void main void Exemplo char nome 256 int n maiusculas minusculas Nome Paulo Roberto Gomes Luzzardi lt enter gt Mai sculas 4 clrscr Min sculas 21 printf Nome Total de letras 25 gets nome n CONTA nome amp maiusculas amp minusculas printf Mai sculas dn maiusculas printf Min sculas din minusculas printf Total de letras din n getch Y Escreva em C a fun o REAJUSTE A fun o recebe o valor do sal rio e o ndice de reajuste e retorna o sal rio atualizado Finclude lt stdio h gt HFinclude lt conio h gt REAJUSTE void main void float salario indice sal Exemplo Sal rio R 1000 lt enter gt Indice de Reajuste 10 lt enter gt clrscr Sal rio Atualizado R 1100 printf Sal rio R 9 scanf f amp salario
30. ocoocccocccoonanonnconnnnonnononcconnnnonn cnn non nn non noc n nr nn narra CR nn nn rana cane non KAPSE nOA bN eo Reen ikete 94 14 31 Atribui es COM PON EITOS A de 94 14 32 Atitm tica com ponteiros cda 94 143 2 Incremento AA a e a da ta R 95 1432 2 Decremento sis EL DIC ec ET DADA aa aaa a 96 14 3 3 s ma F Je subtra o E 96 14 3 4 Compara o de ponteiros e a O PRE EAN REATOR A 96 14 4 Ponteiros E Vetores css sr IE E OLA ROLAND OEA AA 97 14 4 Indexando um ponteiro pesam serras Ada a 97 1442 PODIO SE SINES asa R IS OTIS a DO E RIR NL RATO VR DADA NDA PIU DA 97 14 4 3 Obtendo o endere o de um elemento de um vetor oooococcccnoooncconnncnonnononnnnccnnnnnnonn nn cono nnccnnnnnnannnnns 98 14 44 Vetores de ponteiros sra LR LI Aa RT 98 14 5 Ponteiros para ponteiros O da 99 14 6 Inicializa o de ponteiros sacas erra veriis icini onis e EEEE esa Dre OAE Lada avi cs inato area tirar De 99 14 7 Aloca o din mica de Mem TlA ooonooccconooncconnnnnoonnnnnonnnononnnnnonn ne EE E E O REEE EEE a osea 99 147 1 ae D o e E E EE EE EEE EEE 100 A NS 101 15 Entrada e saida NAAA O 101 15 b Fila de bytes Stream AA AS 101 TS tI Filas O A NN 102 E EE O 102 15 2 Sistema de arquivo bufferizado ice cono nnr nn conan nr EE EKE EEEE ESEESE 103 A NN 103 A E NN 105 ALI AC A A SER EO AO Da 105 IS LATA rr E Ii A A A AAA A AAA Cata 105 A 06 A NN 106 ES NN 106 A NN 107 15 278 fgets Uli a
31. strcpy nomeli nome i 1 strepy nomef i 1 temp sort TRUE k while sort printf nNomes ORDENADOS An for i 0 i lt n i printf Nome s n nomeli getch 11 10 Lista de exerc cios vetores Y Escreva um programa em C que recebe via teclado um conjunto de letras m ximo 20 Armazene todas as letras em um vetor letras at que o usu rio digite um ESC c digo 27 Logo ap s copie todas as letras em ordem inversa para outro vetor inverso Ao final imprima os dois vetores letras inverso 0 T 0 TN Exemplo 1 T 1 M Letra 2 M 2 Pp 3 A 3 T Letra M Letra A Letra lt esc gt LIMA TA Letra L Y Escreva um programa em C que recebe via teclado n mero de idades m ximo 50 e as respectivas idades Armazene todas as idades em um vetor idade Logo ap s a entrada de todas as idades o programa deve receber via teclado idade para consulta O programa deve imprimir na tela o n mero de idades antes da idade de consulta e o n mero de idades depois da idade de consulta Exemplo N mero de idades 6 lt enter gt Idade 30 lt enter gt Idade 60 lt enter gt Idade 10 lt enter gt Idade 50 lt enter gt Idade 20 lt enter gt Idade 40 lt enter gt Idade para consulta 50 lt enter gt Antes 3 Depois 2 Continua S N n Y Escreva um programa em C que recebe via teclado um conjunto de n meros i
32. todas as instru es abaixo s o de sequ ncia clrscr limpa a tela printf Digite uma letra imprime na tela letra getch atribui o printf Digite um valor scanf f amp Valor entrada de dados via teclado resp valor 1 25 atribui o um comando de seq ncia Observac o A func o getche permite a entrada de um caracter via teclado N o necess rio o usu rio digitar lt enter gt 7 1 2 Selec o S o comandos que no fluxo de controle do programa permitem a selec o entre duas ou mais instru es ou seja este tipo de comando faz com que alguns comandos n o sejam executados Exemplo if numero 2 0 testa se o n mero par ou mpar printf N mero PAR n else printf N mero MPARIn ou Hinclude lt stdio h gt Hinclude lt conio h gt Hinclude lt math h gt por causa da fun o fabs Hinclude lt stdlib h gt por causa da fun o fabs void main void float x raiz clrscr AD printf Digite um valor scant f amp x if x lt 0 x fabs x esta instru o s executada se o valor de x for negativo raiz sqrt x printf Raiz Quadrada 2fn raiz getche 7 1 3 Repeti o S o comandos que no fluxo de controle do programa permitem a repeti o de uma ou mais instru es Programa Exemplo 6 O programa exibe na tela a tecla e o c digo ASC Il da
33. vel global void main void float base expoente defini o das vari veis locais clrscr printf Base fun o que permite imprimir dados na tela scanf Y f amp base fun o que permite a entrada de dados via teclado printf Expoente scanf Y f amp expoente resultado POT base expoente chamada da fun o POT printf Resposta 7 2fAn resultado getch float POT float x float y corpo da fun o POT definida pelo programador os par metros x e y s o vari veis locais float resp defini o das vari veis locais resp exp log x y return resp retorno da fun o Vari veis globais resultado POT Vari veis locais base expoente resp x y 3 5 2 Inicializa o de vari veis Em C poss vel fornecer valores iniciais a maioria das vari veis ao mesmo tempo em que elas s o declaradas colocando um sinal de igual e uma constante ap s o nome da vari vel tipo dado base nome da vari vel constante Exemplos char ch a tipo dado base nome da vari vel constante caracter char s UCPel tipo dado base nome da vari vel constante string int n 0 tipo dado base nome da vari vel constante inteira float y 123 45 tipo dado base nome da vari vel constante real 3 6 Constantes Valores fixos que o programa n o pode alterar As constantes podem ser de qualquer tipo b
34. 2 O par 1 impar continue printf Par d n i imprime somente n meros pares Nos la os while e do while um comando continue faz com que o controle do programa execute diretamente o teste da condi o e depois continue o processo do la o No caso do comando for o programa primeiro executa o incremento ou decremento do la o e depois executa o teste da condi o antes de finalmente fazer o la o continuar 7 8 A fun o exit A fun o exit aborta o programa em qualquer situa o Modo de usar exit 0 ou exit 0 8 Entrada e sa da Em C as entradas e sa das s o realizadas atrav s da utiliza o das fun es da biblioteca padr o do C algumas s o encontradas no arquivo stdio h 8 1 Entrada e sa da do console KA As seguintes fun es est o definidas em stdio h e conio h Tabela 10 Fun es de entrada e sa da via console Fun o Efeito Entrada getchar L um caracter do teclado espera por lt enter gt getche L um caracter e imprime na tela n o espera por lt enter gt getch L um caracter sem imprimir na tela n o espera por lt enter gt putchar Escreve um caracter na tela gets L uma string do teclado aceita espaco puts Escreve uma string na tela 8 2 Entrada e sa da formatada 8 2 1 Sa da formatada printf Sintaxe printf string de controle lista de vari veis String de controle
35. avalia es Calcule a m dia utilizando a seguinte f rmula nt n2 2 n3 3 n4 A seguir imprima na tela a m dia e o conceito do aluno baseado na seguinte tabela M dia Conceito 9 0 ou acima de 9 0 A entre 7 5 inclusive e 9 0 B entre 6 0 inclusive e 7 5 C abaixo de 6 0 D Y Escreva um programa em C que recebe via teclado comprimento da circunfer ncia O programa deve calcular e imprimir na tela o di metro e o raio da circunfer ncia veja exemplo abaixo Exemplo Comprimento da circunfer ncia 36 lt enter gt Di metro 11 46 Raio 5 73 Continua S N N comprimento da circunfer ncia 2 x raio x 3 1416 di metro 2 raio Observa o O programa termina quando o usu rio digitar N ou n na pergunta Continua S N Y Desenvolva um programa em C que recebe via teclado peso da carne que ser vendida em quilos e pre o por quilo O programa deve calcular e imprimir na tela o total a pagar o valor pago ao ICMS 17 e o lucro l quido do a ougue Exemplo Tela Peso 3 5 lt enter gt Pre o por Kg R 4 90 lt enter gt Total a pagar 17 15 ICMS 17 2 91 Lucro l quido do a ougue R 14 24 Sair S N n Peso 1 5 lt enter gt Pre o por Kg R 9 00 lt enter gt Total a pagar 13 5 ICMS 17 2 29 Lucro l quido do a ougue R 11 21 AR Sair S N S Escreva um programa em C que recebe via teclado tipo de animal 1 Gado 2 Eq
36. char s UCPel correto ou s 0 U correto elemento por elemento s 1 C s 2 P s 3 e s 4 1 s 5 NULL ou s UCPel incorreto erro GRAVE em C 12 1 strcpy A fun o strcpy c pia de string pr definida do C que permite copiar uma string para outra ou inicializar uma string Sintaxe char strcpy char destino const char origem Prototype string h Funcionamento A string de origem copiada para a string destino Programa exemplo 27 Os programas abaixo mostram como copiar caracteres para uma string Finclude lt stdio h gt Finclude lt conio h gt Finclude lt string h gt void main void char erro Arquivo n o Existen printf ERRO s erro getch ou Hinclude lt stdio h gt Finclude lt conio h gt void main void char erro 20 7a strcpy erro Arquivo n o existen printf ERRO s erro getch 12 2 stremp A fun o stremp compara o de duas strings pr definida do permite comparar duas strings s1 maior que s2 gt resultado gt O s1 menor que s2 gt resultado lt O s1 igual a s2 gt resultado s1 diferente de s2 gt resultado 0 Sintaxe int stremp const char s1 const char s2 Prototype string h Programa exemplo 28 O programa compara duas strings Finclude lt stdio h gt HFinclude lt conio h gt Hinclude lt string h gt void main void
37. de atribuir lhe um valor endere o Podemos inicializar um ponteiro para caracteres string da seguinte forma Exemplo void main void char p Paola char erro Falta de mem rialn 14 7 Aloca o din mica de mem ria Permite alocar e liberar uma rea de mem ria para vari veis durante a execu o de um programa Qualquer outro tipo de vari vel que n o seja um ponteiro deve ser alocada estaticamente ou seja a vari vel n o pode ocupar mais espa o do que foi declarado Exemplo int x 10 um inteiro ocupa 2 bytes logo 10 inteiros ocupam 20 bytes na mem ria RAM durante toda a execu o do programa 14 7 1 malloc INA A fun o malloc memory allocation permite alocar uma por o de mem ria dinamicamente Sintaxe void malloc int n mero de bytes Prototype alloc h e stdlib h A fun o malloc reserva espa o na mem ria RAM aloca a quantidade de bytes especificada pelo par metro da fun o n mero de bytes devolvendo um ponteiro do tipo void apontando para o primeiro byte alocado O tipo void representa um ponteiro sem tipo que deve ser tipado de acordo com o tipo de dado base do ponteiro Isto pode ser feito utilizando se um cast Quando n o houver mem ria suficiente para alocar o ponteiro a fun o malloc devolve um ponteiro nulo NULL Exemplo Hinclude lt stdio h gt include lt conio h gt Hinclude lt alloc h gt Hinclude lt stdlib h g
38. for col xi col lt xf col imprime col yi 196 imprime col yf 196 for lin yi lin lt yf lin imprime xi lin 179 imprime xf lin 179 imprime xi yi 218 imprime xf yi 191 imprime xf yf 217 imprime xi yf 192 imprime void imprime int c int char letra long int indice indice 160 1 1 2 c 1 plindice letra imprime diretamente na mem ria de v deo gotoxy c ES recupera char recupera int c int long int indice char car indice 160 1 1 2 c 1 car char p indice recupera um caracter diretamente da mem ria de v deo return car EEN inverte void inverte int xi int yi int xf int yf int temp if xi gt xf temp xi xi xf xf temp if yi gt yf 1549 temp yi yi yf yf temp Resultado do programa na tela coluna 36 Linha 9 Moldura DUPLA Figura 18 Utiliza o da mem ria de v deo via ponteiro 19 interrup es Um computador PC Personal Computer possui um circuito integrado respons vel pela interrup o do processamento do microprocessador principal 8086 chamado PIC 8259 Programmable Interrupt Controller controlador de Interrup es programado possuindo 256 tipos de interrup es diferentes As interrup es podem ser de hardware ou software Por ex
39. idade 41 Acesso ao ltimo elemento da estrutura strcpy cliente 99 nome Renato 197 cliente 99 salario 1500 00 cliente 99 idade 37 16 1 3 Passando estruturas para fun es 16 1 3 1 Passando elementos da estrutura Desta forma passado apenas uma c pia do valor para a fun o Chamada da fun o fun o cliente idade 16 1 3 2 Passando estruturas inteiras poss vel passar uma estrutura struct inteira para uma fun o Observa o O tipo do argumento deve coincidir com o tipo do par metro Exemplo Finclude lt stdio h gt Finclude lt conio h gt struct TIPO int a b char ch void function struct TIPO parm void main void struct TIPO arg clrscr arg a 1000 arg b 500 arg ch A function arg arg o argumento void function struct TIPO parm parm o par metro tipo estrutura printf d parm a printf d parm b printf c parm ch 16 1 4 Ponteiros para estruturas C permite que ponteiros apontem para estruturas da mesma maneira como permite ponteiros para qualquer outro tipo de vari vel 192 Exemplo struct reg_cliente char nome 30 float salario int idade cliente struct reg cliente p Neste caso p um ponteiro para a estrutura reg cliente p amp cliente o ponteiro p aponta para a vari vel cliente Para acessar um elemento de cliente atrav s do ponteiro p deve se
40. matriz resultante C Finclude lt stdio h gt Finclude lt conio h gt define MAX 10 void main void float a MAXI IMAX b MAX MAX c MAX MAX int col lin j m n clrscr printf Informe a ORDEM da MATRIZ mxn in do printf N mero de linhas m scanf Y d amp m while m lt 1 m gt MAX Fmde1a10 do printf N mero de colunas n scant d 8n while n lt 1 n gt MAX Fnde1 a10 for lin 1 lin lt mjlin for col 1 col lt n col printf A d d lin col scanf d amp a lin col printf B d d lin col scanf d amp b lin col printf n for lin 1 lin lt m lin for col 1 col lt n col cllin col a linl col b lin col printf C d d din lin col c lin col getch 11 9 Classifica o de dados ou ordena o sort Para exemplificar melhor as vari veis do tipo vetor abaixo s o mostrados dois tipos de ordena o tamb m chamado sort classifica o de dados Programa exemplo 25 O programa classifica os nomes digitados pelo usu rio include lt stdio h gt include lt conio h gt include lt ctype h gt include lt string h gt TA tdefine QUANT 50 void main void char nome QUANT 40 char temp 40 int i j n char tecla 1 do n clrscr printf Nome gets nome n gets permite a entrada de um nome printf Continua
41. mem riain else if d gt n 0 171 p gt anterior NULL p gt dado n p gt posterior NULL d gt primeiro p d gt n 1 d gt ultimo p else q d gt ultimo p gt anterior q p gt dado n p gt posterior NULL q gt posterior p d gt ultimo p d gt n d gt n 1 exibir_lista_direita void exibir_lista_direita struct DESCRITOR d struct ELEMENTO p p d ultimo while p gt anterior NULL printf Valor din p5 dado p p gt anterior printf Valor din p5 dado PO exibir_lista_esquerda void exibir_lista_esquerda struct DESCRITOR d struct ELEMENTO p p d primeiro while p gt posterior NULL printf Valor d n p gt dado p p gt posterior printf Valor d n p gt dado 21 Lista de exerc cios gerais Y Escreva um programa em C que exibe um rel gio na tela O formato do rel gio deve ser hh mm ss Y Escreva um programa em C que exibe a data na tela O formato da data deve ser dd mm aaaa 176A
42. modo c Ntchbgi se os arquivos bgi e chr est o diret rio corrente if Igraphresult 12A do circle 319 99 raio raio 5 while raio lt 200 getch closegraph else printf Erro Fatal Problema na inicializa o da placa gr ficain ou Programa exemplo 56 O programa seleciona a placa gr fica como VGA e o modo gr fico como VGAHI Um c rculo exibido na tela include lt graphics h gt include lt conio h gt void main void int placa modo raio placa VGA modo VGAHI initgraph amp placa amp modo if Igraphresult raio 5 do circle 319 239 raio raio 5 while raio lt 200 getch closegraph else printf Erro Fatal Problema na inicializa o da placa gr fica n ou Programa exemplo 57 O programa detecta a placa gr fica e desenha um c rculo na na tela include lt graphics h gt include lt conio h gt void main void int placa modo raio 5 int y 3 99 174 239 posi o Y central das placas placa DETECT detecta placa initgraph amp placa 8modo inicializa modo gr fico if Igraphresult verifica se houve erro 127 switch placa case CGA modo CGAHI 1 640 x 200 break case EGA modo EGAHI 1 640 x 350 break case VGA modo VGAHI 640 x 480 break setgraphmode modo seta modo do circle 319 y plac
43. nnn econ eran nn nn nara nereanannarennos 123 16 5 1 Modificadores de aCes soc see iesmeserteiactese ni iinenioeronndena do crerie ebala e dan DE nn de Ro dino sane ele Rea da Caco g cada an 123 16 5 1 1 O modificador const cer ncon nn ron ne recae nn na nnn rro n nano acena ne eenereaneraaareanos 123 16 5 1 2 O modificador volatile ooonccnnnnninccconccnonnconccnonnnonncnnncconno non connnnoon conan cnn nn non nac n coco nnrannccncnrnnos 123 16 5 2 Especificadores de classe de armazenamento ooocococccconnconncconaconnccnncconnnnnnc nro non nn corno cnn ran nannnccnnnos 123 16 32 O especrficador auto rias 123 16 32 20 especrticador EXTERNA dias 123 1652 3 0 especrticador St Os 123 16 3 2 4 0 especificado Tesla 123 165 3 Operadores avan ados santa care ss dra Tens dnda aa DE A IR DUDA pa Tede ra 124 16 5 3 1 Operadores Bita DIL nad IA aa aaa 124 16 5 3 2 0 Operador A ins ETER E Tao Dae NUS DE ga AO DU ST RIR AT Sr a 124 16 5 3 3 Formas abreviadas de CA ri Aa IT ATE R Va 125 1653 4 0r0petrador nasais E A E ai a 125 MAA isento ego onto AE T cl ceto T Chato E caes CE dE Sen EE do Taca nda A te ssEEE 126 UT Placas graficas ei A SIL DA A a a 126 O ANN 126 17AZ EGA catala 126 17 13 A NN 126 SAA AAA O 126 172 CGA cali a 127 17 2 2 2EGA eE 127 1723 VGA cian ii 127 17 3 Detec o e inicializa o da tela gr fica rr conan nc onncnon ocn n oran acena ne eenceeanenacarennos 127 174 putpixel initial ile Rda 130 MM td lec
44. o primeiro a sair dela Fila Estrutura linear organizada em forma que a entrada dos dados feita por uma extremidade da lista linear e a sa da feita na outra extremidade Forma de acesso FIFO First Input First Output ou seja o primeiro elemento a entrar na fila o primeiro a sair da fila E Entrada de Dados S Sa da de Dados entrada sa da entrada FILA PILHA rd sa da Figura 20 Representa o de uma fila e uma pilha Funcionamento desta pilha Funcionamento desta fila Entrada 1 2 e 3 Entrada 1 2 e 3 Sa da 3 2 e 1 Sa da 1 2 e3 20 1 Implementa o de uma pilha 146 Programa exemplo 75 O programa permite inserir n meros inteiros em uma pilha Quando o n mero digitado for igual zero 0 todos os n meros da pilha s o listados II pilha c Finclude lt stdio h gt Finclude lt conio h gt Finclude lt alloc h gt Finclude lt stdlib h gt include lt string h gt define SUCESSO 1 define FALTA_DE_MEMORIA define PILHA_VAZIA 3 struct DADO int info informa o struct DADO elo elo para o pr ximo elemento struct PILHA struct DADO topo void cria_pilha struct PILHA p int push struct PILHA p int valor int pop struct PILHA p int info int consulta_pilha struct PILHA p int info void imprime_erro int erro void main void struct PILHA p int valor erro char ch cria pilha amp p do clrscr
45. o tan retorna o valor da tangente A vari vel x deve estar em radianos Sintaxe double tan double x Prototype math h 6 17 max A fun o max retorna o maior valor entre dois valores 28 Sintaxe int max int a int b Prototype stdlib h 20 6 18 min A fun o min retorna o menor valor entre dois valores Sintaxe int min int a int b Prototype stdlib h 6 19 rand A fun o rand retorna um n mero aleat rio entre 0 at 32767 Sintaxe int rand void Prototype stdlib h Faixa 0 32767 6 20 random A fun o random retorna um n mero aleat rio entre O at limite 1 Sintaxe int random int limite Prototype stdlib h Faixa O limite 1 6 21 randomize A fun o randomize inicializa a gera o de n meros aleat rios Sintaxe void randomize void Prototype stdlib h 6 22 system A fun o system executa comandos e arquivos COM e EXE do sistema operacional Sintaxe int system const char comando Prototype process h e stdlib h Retorna O ok e 1 erro Exemplos system dir system sk system dir c AN A1 7 Comandos 7 1 Tipos de Comandos 7 1 1 Sequ ncia S o comandos que no fluxo de controle do programa s o sempre executados passando a execuc o para a pr xima instruc o ou seja todos os comandos de sequ ncia s o executados desde que eles n o dependem de um comando de sele o Exemplo
46. operando Quando precede seu operando C efetua a opera o de incremento ou decremento antes de utilizar o valor do operando Quando o operador vier depois do operando C utiliza o valor do operando antes de increment lo ou decrement lo Exemplo x 10 y ser 11 y x P x ser 11 x 10 I y ser 10 y X P x ser 11 5 5 Operador de atribui o O operador de atribuic o o sinal de igual A sintaxe do operador de atribui o pode ser escrito em uma das seguintes formas vari vel constante x 3 vari vel vari vel X y vari vel express o x a b vari vel fun o x x sqrt y Programa exemplo 3 O programa calcula a idade de uma pessoa Finclude lt stdio h gt Finclude lt conio h gt void main void int idade ano atual ano nasceu clrscr printf Ano ATUAL 29 scanf Y d amp ano atual leitura do ano atual printf Ano em que NASCEU scanf d amp ano nasceu leitura do ano de nascimento idade ano atual ano nasceu atribui o c lculo da idade printf Sua IDADE eY din idade getch A linguagem de programa o C permite utilizar o operador de atribui o em express es junto com operadores matem ticos l gicos relacionais cnamada de fun es e outros como foi mencionado acima if produto x y lt 0 Funcionamento Primeiramente C atribui o valor x y a vari vel produto para depois ava
47. passa para a pr xima instru o O loop while verifica a condi o no in cio do la o por causa disto normalmente a vari vel de controle do la o deve ser inicializado Exemplo inti 0 inicializa o da vari vel de controle while i lt 10 condi o i lt 10 printf i din i i i 1 incremento Comando Pode ser um comando vazio simples ou composto que ser o repetidos Comando vazio while kbhit comando while n o repete nenhum comando for i 0 i lt 1000 i comando for n o repete nenhum comando Verifique Note que no final dos dois comandos while e for existe apenas um ponto e v rgula isto o sinal de comando vazio ou seja os comandos while e for que teriam outros comandos n o os tem caracterizando comandos vazios Problema frequente de digita o Muitas vezes o programador insere um ponto e v rgula no final de um comando for ou while por engano Isto um grave problema pois este ponto e v rgula inserido acidentalmente faz com que os comandos que seriam repetidos n o s o Veja o exemplo abaixo Exemplo for x 1 x lt 10 x note o ponto e v rgula no final do comando for printf x din x impresso x 11 na tela porque Explica o O comando printf n o faz parte do comando if devido ao ponto e v rgula no comando for O comando for termina quando a vari vel de controle x chega ao valor 11 41
48. printf N mero scanf Yd amp n if n 0 printf Inserir a E squerda ou D ireita do op toupper getche while strchr ED op switch op case E insere_esquerda amp d n break case D insere_direita amp d n break while n 0 clrscr do printf Listar E squerda Dlireita ou F im do op toupper getch while Istrchr EDF op printf Y cin op switch op case E exibir lista esquerda d break case D exibir lista direita d break while op F 172 PO inicializa_descritor void inicializa descritor struct DESCRITOR d d gt primeiro NULL d gt n 0 d gt ultimo NULL PO insere_esquerda void insere_esquerda struct DESCRITOR d int n struct ELEMENTO p q p struct ELEMENTO malloc sizeof struct ELEMENTO if p NULL printf ERRO Falta de Mem riain else if d gt n 0 p gt anterior NULL p gt dado n p gt posterior NULL d gt primeiro p d gt n 1 d gt ultimo p else q d gt primeiro p gt anterior NULL p gt dado n p gt posterior q q gt anterior p d gt primeiro p d gt n d gt n 1 insere_direita void insere_direita struct DESCRITOR d int n struct ELEMENTO p q p struct ELEMENTO malloc sizeof struct ELEMENTO if p NULL printf ERRO Falta de
49. printf Um n break case 2 printf Doisin break case 3 printf Tr sin break case 4 printf Quatroin break case 5 printf Cincoln break case 6 printf Seisin AT break case 7 printf Setein break case 8 printf Oitoin break case 9 printf Novein break default printf ERRO N o um digitoin getch Programa exemplo 10 O programa recebe um d gito de O 9 e imprime na tela este d gito por extenso Neste exemplo a vari vel d gito caracter por causa disto as constantes est o entre apostrofes include lt stdio h gt include lt conio h gt void main void char digito clrscr printf D gito O 9 scanf c amp digito switch digito case 0 printf Zero n break case 1 printf Um n break case 2 printf Dois n break case 3 printf Tr s n break case 4 printf Quatroin break case 5 printf Cincoln break case 6 printf Seisin break case 7 printf Setein break case 8 printf Oitoln break case 9 printf Novein break default printf ERRO N o um digitoin getch Programa exemplo 11 O programa constr i um menu com tr s fun es inclus o altera o e t rmino AR Hinclude lt stdio h gt Finclude lt conio h gt void main void char opcao clrscr printf
50. s sesep conero stosto pisses se sopss sps osso sisp ss santana ea aaa seas son stops nas sata a 72 ER ESI K oN ARAA AR E E ed o A 73 IESS D a a A ela ela ds qa lo bol 73 LI da eto das cabra adiado e 74 IA e o o eo ar de UE ind o 75 A A UN NO 75 12 6 Tistade exercicios MMS 76 13 Fun es definidas pelo programador oocooccoononnoonnonnncnnnonnononononononnconnonaconocnnoonocnnonnncnoonn cnn asas essas sas sn ronca 78 13 EN O A O E O 80 13 2 Passagem de par metros por valor ooooccnnoccnocanoccconnnnonncnnnnonnnonnocnn ccoo aerea co onnnronn cone non nn cnn ne carr conan nan ccnnnnnns 82 13 3 Passagem de par metros por refer ncia cr conan co nnnaronn cono non nn non nena nn cnn nananccnnnanns 83 13 4 Fun es que devolvem valores n o inteiros ooococnoccnocaconcnonnnnonnccnnncnn conan cc nnnoronccnnn non n anno non nn con nanan croacia 84 13 5 Argumentos argc argv do Mal ccoooccnoccconcconncnoncconnnnonoconononnnnnn re rencree aerea stenten sts cane ron arara nena nn ran nnnnnccnnnanos 84 ERA AAA E NS NN 86 13 7 Lista de exerc cios fun es ir no cnn nccnnnc nono con ce onnnronn nano non nn aan ne cnn ran nannnccnnnnnns 87 14 lara VE1S PONTOS e rise borr acereia E AA OAA EEE N EEA dd Roe nen On again 93 14 2 Operadores de ponteiros ooooooocccococoonanonnconnanonnononnconnnnnnn non non no non neon nr ra nara stent a rana anne sts stts ses none ran ses sees tenete 94 14 3 Express es com PON EITOS
51. setcolor cor line xi yi xf yf while kbhit closegraph 17 6 rectangle A fun o rectangle ret ngulos permite que um ret ngulo seja plotado na tela gr fica atrav s de dois pontos Pi xiyi e Pf xf yf Estes dois pontos representam a diagonal do ret ngulo Sintaxe void rectangle int xi int yi int xf int yf Prototype graphics h Programa exemplo 60 O programa exibe ret ngulos aleat rios na tela include lt graphics h gt include lt conio h gt kbhit Hinclude lt stdlib h gt random void main void 12Q int placa modo int xi yi xf yf cor placa VGA modo VGAHI initgraph amp placa amp modo randomize do xi random 640 yi random 480 xf random 640 yf random 480 cor random 16 setcolor cor rectangle xi yi xf yf while kbhit closegraph 17 7 circle A fun o circle c rculos permite que um c rculo seja plotado na tela gr fica atrav s do ponto central Xc e Yc e raio Sintaxe void circle int Xc int Yc int raio Prototype graphics h Programa exemplo 61 O programa exibe c rculos aleat rios na tela Hinclude lt graphics h gt HFinclude lt conio h gt kbhit Hinclude lt stdlib h gt random void main void int placa modo int xc yc raio cor placa VGA modo VGAHI initgraph amp placa amp modo randomize do xc ran
52. sico Tipo Exemplos de constantes char a n 9 int 1 123 2100 234 MA float 123 23 4 34e 3 char Turbo C 2 2 forma de definir uma string 3 6 1 Constantes hexadecimais e octais A linguaguem de programa o C permite especificar constantes inteiras em hexadecimal ou octal Uma constante octal come a com um 0 zero enquanto que uma hexadecimal come a por 0x Exemplos void main void int hexadecimal OxFF 255 em decimal int octal 011 9 em decimal Observa es e Qualquer n mero octal formado por oito n meros 0 7 e Qualquer n mero hexadecimal formado por dezesseis n meros 0 9 A B C D E F 3 6 2 Constantes strings Uma string um conjunto de caracteres delimitados por aspas duplas Em C n o existe um tipo de dado especifico para definir uma string Uma string definida como um vetor unidimensional de caracteres Toda string deve ser finalizada pelo caracter especial 40 chamado de NULL Exemplo char s 6 UCPel ou char s 6 U C P e NULL dO igual a NULL 0 1 2 3 4 5 Y C P e P NULL Figura 2 Vetor de caracteres Mem ria ocupada 6 bytes Observa o a diferente de a a ocupa 1 byte na mem ria RAM do tipo char a ocupa 2 bytes na mem ria toda string terminada com o caracter 0 A palavra NULL quer dizer nulo est definida dentro do arquivo de header cab
53. string Exemplo char str 4 alo 0 1 2 3 a T o NULL 79 11 7 Inicializac o de matrizes multidimensionais int y 4 12 1 1 2 4 3 9 4 16 5 y 0 0 1 y 2 0 3 y 01 1 1 y 21 1 9 y 1 0 2 y S 0 4 y 4 y S1 1 16 11 8 Inicializac o de vetores e matrizes sem tamanho Na inicializa o de uma matriz ou vetor se n o for especificado seu tamanho ent o o compilador C cria uma matriz ou vetor grande o suficiente para conter todos os inicializadores presentes Exemplo char s UCPel s ocupa 6 bytes Programa exemplo 23 O programa permite armazenar n nomes e idades em dois vetores Finclude lt stdio h gt HFinclude lt conio h gt define MAX 10 void main void char nome MAX 41 int idade MAX inti n char ch i 0 do clrscr printf Nome scanf s nomeli entrada de um nome flushall limpa o buffer de entrada printf Idade scanf d 8idadeli entrada de uma idade printf Continua S N do ch getch while ch S 88 ch s 88 ch N 88 ch n while ch N 88 ch I n 88 i lt MAX n i 1 n mero de elementos clrscr for i 0 i lt n i printf s d An nomefi idadeli getch 74 Programa exemplo 24 O programa realiza a soma de duas matrizes A e B bidimensionais gerando uma
54. tecla digitada pelo usu rio O programa encerra quando o usu rio digitar a tecla lt esc gt escape Finclude lt stdio h gt finclude lt conio h gt fdefine ESC 27 void main void char tecla clrscr do tecla getch printf Tecla c gt C digo din tecla tecla while tecla ESC 7 1 4 Atribui o Veja tem 5 5 Operador de atribui o 7 2 Comando if O comando if um comando de selec o que permite selecionar um comando entre dois outros comandos comandos simples ou dois conjuntos de comandos comandos compostos Isto feito atrav s da avalia o de uma condi o O resultado desta avalia o teste da condi o pode ser verdadeiro ou falso Dependendo deste resultado um dos comandos executado e o outro n o Sintaxe if condi o if condi o comando 1 ou comando else comando 2 todos os comando s o simples AR Observac o O else opcional Se a condi o for avaliada como verdadeira qualquer valor diferente de 0 o comando 1 ser executado caso contr rio condi o falsa valor igual a zero o comando 2 ser executado Comando 1 comando 2 ou comando podem ser simples ou compostos quando h mais de um comando ligado a outro deve se utilizar chaves Veja exemplos abaixo if condi o if condi o comando 1 comando 1 comando 2 comando 2 comando 3 else comando 3 comando 4 todos os comando s o compostos
55. um programa em C que recebe via teclado uma password senha m ximo 8 d gitos Na entrada da senha deve ser exibido na tela um asterisco para cada letra digitada Quando o usu rio teclar lt enter gt ou digitar 8 d gitos o programa deve imprimir na tela a senha digitada Exemplo Password lt enter gt Senha digitada pelotas Sair S N s Observa o O programa deve ser encerrado quando o usu rio digitar S ou s na pergunta Sair S N Y Escreva um programa em C que recebe via teclado uma palavra m ximo 20 caracteres in cio e fim Logo ap s a entrada de todos os dados imprima a string resultante ou ERRO Fim inv lido ou In cio inv lido conforme exem plos abaixo Exemplo Palavra universidade lt enter gt In cio 7 lt enter gt Fim 11 lt enter gt String resultante idade Continua S N s Palavra eletricidade lt enter gt In cio 7 lt enter gt Fim 15 lt enter gt QA ERRO Fim Inv lido Continua S N N Observa o O programa termina quando o usu rio digitar N ou n na pergunta Continua S N 13 Fun es definidas pelo programador C permite que o programador crie e utilize suas pr prias fun es Forma Geral tipo do retorno nome da fun o par metros tipo dado base par metros tipo dado base vari veis defini o das vari veis locais corpo da fun o return ou tipo_do_retorno nome tipo_dado_base par metr
56. 0 ARA A E AN 41 TALA AMOO E N O AR AE AE DO a DELA RA da 41 IAEA 41 lis fr encadeadoS ca a ei lidia ETEA A EEN I do cada ed idosa den ai nd Code ni aU Sae 42 7 3 O comando switch ooconoocnccnonononacononononononononanononononnnnnnnconnnnnonncononnnnnncorononn nn nnnononnnnonononnn nn naronanananaconos 43 7 4 Comando while ocooooconcnconuoucccononononacononononononononanononononnnnnnnconnnnnnnncononnnnnncorononn nn norononn nono nononnnnnncnnannnanacono 46 To Ocomando forsa nannan RR SUAR RR DOS UR ORE UC RA a 48 1 0 O loopido E While sercon eia das 49 Ed Interr pcao del e Ri E RE a RR A a AR 50 to 1 0 comando Dicas sessenta iaa 50 ARS A comando contine a sis ras aa a ED IS e DO ada 51 LOA TUN O CX siso ur a RU Aga RD DT a i 51 SEntrada e saidas es semear TAO 51 8 1 Entrada esalda do console iii e aaa de ED A Tea Saga a cota dE alv 51 8 2 Entrada Suda formatada ic TEE A DA EIN TS AE O ID RR 52 8 2 1 Saida formatada dp a O E ADA Ad EI ERR 52 8 2 2 Entrada formatada Scanf esar ga Aaa 53 8 34 Saida nasimpressora Tprintl esa lana ada DD VER a 54 9 Controle do video e teclado ss esceesssseseiinssisao sonoros ias edastaeTestainch ads taaieSEadaio do pads IO IRON cnn toss sosea dans atesaadons bossa dc oa 54 ITESO RS S 54 DD DOLORY RN 55 A RR SERA SA PE RAN DO RD RE AREA A OS ERR E REAR E TE 55 DA deles A A AA isa 56 10 Comandos especiais issnin seres rers se e E o SEE aasi 56 TOt NN 56 IO ON 56 IAS A NN 56 104
57. 1 para 1 com os bytes do dispositivo externo Portanto nenhuma tradu o de caracteres ocorrer Um arquivo bin rio pode conter tipos de dados diferentes como por exemplo char int float vetores ponteiros strings etc 1na campos ndice registros Arquivo Bin rio Figura 8 Representa o de um arquivo 15 2 Sistema de arquivo bufferizado A liga o comum que mant m unido o sistema de entrada e sa da bufferizado um ponteiro que aponta para o arquivo O ponteiro do arquivo identifica um determinado arquivo em disco e usado pela fila associada a ele para direcionar cada uma das fun es de entrada e sa da bufferizada para o lugar em que elas operam Um ponteiro de arquivo uma vari vel de ponteiro do tipo FILE A palavra FILE pr definida em stdio h Exemplo Hinclude lt stdio h gt void main void FILE fp 15 2 1 fopen A fun o fopen file open permite abrir um arquivo ligando o a uma fila de bytes Sintaxe FILE fopen char nome arquivo char modo Prototype stdio h nome arquivo Deve ser uma string que contenha drive lpathlnome do arquivo modo E uma string que cont m as caracter sticas desejadas veja tabela abaixo Observa o t arquivo texto e b arquivo bin rio 11N Tabela 19 Modo de abertura de arquivos Modo Significado tr Abre um arquivo texto para leitura w Cria um arquivo texto para grava o a Anex
58. 131 AR NO 132 LC A E E EE E A A A A A ETE 132 VES A A A A A A A A EE 133 A A NN NN 134 17 10 setcolor e setbkcolor jersesess sseaerarrerseaess nissene E psd este Ea ene dunas Erie 135 ANS AO AAA NO 135 17412 Preenchimento v eicnoncononiinio seres ae AR 137 A NO 137 17 12 2 SN ANO 138 17 13 Ativa o de janelas Pr CaS enssins oeenn EEE nn cnn cono nn ron conan nr EEE ocn EEEE ENEE iTS 141 AER INEA NN 141 EA Limpar janela ativas A NN 143 17 13 3 Salvar e recuperar janelas gr ficas erre conan nono REE E ANERO ENEE Eite 143 17 14 Lista de exerc cios gr ficos arquivos estruturas e campos de bits 146 LS Mem ria de vide ii enn Riosa asda incidan ice 550553 146 19 InterrupcO S ocooonoonconnconnonnnnnonancnnnonnocanonnoonconnconncnnconncnnoonncanonnncannnnn ES AAA AAA AA 0a a nata nooo non nt ant ise esse pisso ones 152 20 Listas lineares sssusa sir nico rrnaee ac sueca dano 157 20 1 Implementa o de UM Plis a E E ope ara q lsa dessa d A 159 20 2 Implementa o de ima fila ii ais 162 20 3 Easta duplamente encadeada sei cad 165 21 Listado exercitio a Aena 168 Figura 1 Figura 2 Figura 4 Figura 5 Figura 6 Figura 7 Figura 8 Figura 9 Figura 10 Figura 11 Figura 12 Figura 13 Figura 14 Figura 15 Figura 16 Figura 17 Lista de figuras Ambiente de programa o do Turbo C 2 01 rece nccnncon nn cnn nonn nn ranccnnc conan 10 Vetorde caracteres nt AA IS 27 Tela
59. 159 1 147 int placa modo estilo cor 1 placa VGA modo VGAHI initgraph amp placa amp modo setbkcolor WHITE for estilo O estilo lt 12 estilo setfillstyle 0 0 bar 0 0 319 199 setcolor GREEN cor da borda drawpoly 17 rosa imprime rosa dos ventos circle 159 99 20 imprime c rculo setfillstyle estilo cor define estilo e cor floodfill 10 99 GREEN preenchimento cor if cor gt 15 cor 1 getch closegraph Resultado do programa na tela Figura 12 Pol gono preenchido 17 13 Ativa o de janelas gr ficas 17 13 1 Janela ativa Permite definir uma rea da tela como janela ativa ou seja nada pode ser desenhado fora desta rea Sintaxe void setviewport int xi int yi int xf int yf int recorta Prototype graphics h 118 0 0 fest YE Xmax Ymax Figura 13 Coordenadas de uma janela xi yi ponto inicial xf yf ponto final recorta true 0 ou false 0 vari vel indica se haver recorte na janela ou n o Programa exemplo 68 O programa define uma janela ativa colocando um minicursor que se movimenta dentro desta janela finclude lt graphics h gt Hinclude lt conio h gt Hdefine ENTER 13 Hdefine ESC 27 Hdefine UP 72 Hdefine DOWN 80 fdefine LEFT 75 define RIGHT 77 Hdefine TRUE 10 Hdefine FALSE 0 void main void int placa modo int x y c
60. 349 Tabela 26 Coordenadas de tela VGA Resoluc o xi yi Xf Yf 640 x 200 0 0 639 199 640 x 350 0 0 639 349 640 x 480 0 0 639 479 17 3 Detec o e inicializa o da tela gr fica Para inicializar a tela em modo gr fico ou seja sair do modo texto devem ser definidas duas vari veis inteiras placa e modo podem ter qualquer nome placa define o tipo de placa gr fica que ser utilizada podendo assumir um dos seguintes tipos de placas modo define a resolu o da placa gr fica alta m dia ou baixa podendo ser Tabela 27 Tipos de placas N mero Nome DETECT CGA MCGA EGA EGA64 EGAMONO IBM8514 HERCMONO ATT400 C JO IN ID UN BRIWO IN A O VGA o PC3270 Tabela 28 Modos das placas gr ficas Modo Resoluc o N mero de cores CGACO 320 x 200 4 cores palette 0 CGAC1 320 x200 4 cores palette 1 CGAC2 320 x200 4 cores palette 2 CGAC3 320x200 4 cores palette 3 CGAHI 640 x200 2 cores MCGACO 320 x 200 4 cores palette 0 MCGAC1 320x200 4 cores palette 1 MCGAC2 320 x 200 4 cores palette 2 MCGAC3 320 x200 4 cores palette 3 MCGAMED 640x200 2 cores MCGAHI 640 x 480 2 cores EGALO 640x200 16 cores EGAHI 640 x 350 16 cores EGA64LO 640 x 200 16 cores EGA64HI 640 x 350 4 cores E
61. 9 Tipos de fontes N mero Fontes Dire es Tamanhos 0 DEFAULT_FONT HORIZ_DIR ou VERT_DIR 0 10 1 TRIPLEX_FONT HORIZ_DIR ou VERT_DIR 0 10 2 SMALL_FONT HORIZ_DIR ou VERT_DIR 0 10 3 SANS_SERIF_FONT HORIZ_DIR ou VERT_DIR 0 10 4 GOTHIC_FONT HORIZ_DIR ou VERT_DIR 0 10 A fun o outtextxy permite que um texto seja escrito na tela gr fica na posi o x y Sintaxe void outtextxy int x int y char texto Prototype graphics h Programa exemplo 64 O programa exibe textos com fontes diferentes na tela Hinclude lt graphics h gt finclude lt conio h gt void main void int placa modo placa VGA modo VGAHI initgraph amp placa amp modo setbkcolor YELLOW bar 0 0 319 199 bar desenha um ret ngulo cheio pintado setcolor GREEN settextstyle TRIPLEX FONT HORIZ DIR 5 seta a fonte dire o e tamanho do texto 112 outtextxy 10 10 Turbo C V2 01 imprime texto na tela gr fica setcolor RED settextstyle SANS SERIF FONT HORIZ DIR 4 outtextxy 10 50 Turbo C V2 01 setcolor BLACK settextstyle SMALL FONT HORIZ DIR 7 outtextxy 10 90 Turbo C V2 01 while kbhit pausa at que o usu rio digite uma tecla qualquer Aten o Para imprimir n meros inteiros ou reais int ou float deve se convert los para string Verifique o exemplo abaixo Exemplo O programa imprime um n mero intei
62. A fun o recebe um valor para x e um valor para y e retorna o n mero do quadrante 1 2 3 ou 4 Finclude lt stdio h gt Finclude lt conio h gt VERIFICA_QUADRANTE void main void int x y n Quadrantes printf x scanf d amp x printf y scanf d amp y 3 n VERIFICA_QUADRANTE x y printf Quadrante din n getch clrscr 2 12 v Escreva a fun o final da placa A fun o recebe uma placa de autom vel placa no formato xxx9999 e retorna o ltimo d gito da placa Hinclude lt stdio h gt include lt conio h gt finclude lt string h gt void main void char placa 8 int final clrscr printf Qual a placa de seu carro xxx9999 os scanf Ys placa final final_da_placa placa printf Final da Placa din final getche Y Escreva a fun o VOGAIS A fun o recebe uma string nome e retorna a quantidade de vogais da string Hinclude lt stdio h gt include lt conio h gt Hinclude lt string h gt void main void char nome 256 int vogais clrscr printf Nome gets nome vogais VOGAIS nome printf Vogais Ydin vogais getche Y Escreva a fun o HIPOTENUSA A fun o recebe o cateto adjacente b e o cateto oposto a e retorna o valor da hipotenusa dado pela seguinte f rmula Finclude lt stdio h gt Finclude
63. Data dd mm aaaa scant s data erro VERIFICA DATA data amp dia amp mes gano if erro 1 printf ERRO Dia inv lidoin else if erro 2 printf ERRO M s inv lidoin else if erro 3 printf ERRO Formato inv lidoin else if erro 4 printf ERRO Ano Inv lidoin else printf Dia d n dia printf M s d n mes printf Ano d n ano getch Exemplo Data dd mm aaaa 11 07 2002 lt enter gt Dia 11 M s 07 Ano 2002 Valores V lidos Dia 1 31 M s 1 12 Ano 2000 2999 Escreva em C a fun o PREENCHE A fun o recebe coluna c linha l n mero de caracteres n e caracter ch A fun o deve imprimir na tela na posi o c n caracteres ch include lt stdio h gt include lt conio h gt PREENCHE void main void clrscr PREENCHE 3 10 5 P getch linha 10 gt 04 HHHH Y Escreva em C a fun o GERA STRING A fun o recebe via par metros n mero de caracteres n e caracter ch A fun o devolve na vari vel s n caracteres ch Hinclude lt stdio h gt include lt conio h gt GERA STRING void main void char s 10 s clrscr ase a sra 5 GERA_STRING 5 s gotoxy 3 10 P RP FP F F NULL printf s s A is getch Y Escreva em C a fun o VERIFICA_QUADRANTE
64. Formada pelos caracteres que a fun o imprime na tela e pelos comandos de formata o c s Yd f que definem a maneira como as vari veis ser o impressas e caracteres especiais In t Tabela 11 Comandos de formata o C digo Tipo Formato s char String vetor de caracteres d int Inteiro decimal com sinal Hi int Inteiro decimal com sinal o int Inteiro octal sem sinal Yu int Inteiro decimal sem sinal Y x int Inteiro hexadecimal sem sinal com a b c d e f X lint Inteiro hexadecimal sem sinal com A B C D E F f float Valor com sinal da forma Jdddd dddd e float Valor com sinal da forma d dddd e Jddd g float Valor com sinal na forma e ou f baseado na precis o do valor dado HE float Mesmo que e mas com E para expoente G float Mesmo que g mas com E para expoente c char Um caracter nada O caracter impresso Y n int Armazena o n mero de caracteres escritos at o momento p ponteiro imprime como um ponteiro Flags Bandeiras e Alinha o resultado esquerda Preenche o restante do campo com brancos Se n o colocado alinha o resultado direita e preenche o restante esquerda com zeros ou brancos e O resultado sempre come a com o sinal ou e Especifica que o argumento ser impresso usando uma das formas alternativas 47 Formas alternativas e 0
65. GAMONOHI 640 x 350 2 cores VGALO 640 x 200 16 cores VGAMED 640 x 350 16 cores VGAHI 640 x 480 16 cores HERCMONOHI 720x348 2 cores As vari veis placa e modo devem ser utilizadas na fun o initgraph Esta fun o permite a inicializa o do modo gr fico Sintaxe void initgraph int placa int modo char path Prototype graphics h ATEN O Se o caminho path for vazio sinal de que os arquivos relacionados as placas gr ficas bgi por exemplo CGA BGI EGAVGA BGI e os relativos as fontes de caracteres chr por exemplo GOTH CHR LITT CHR SANS CHR e TRIP CHR est o localizados no diret rio corrente Observa o O diret rio corrente pode ser consultado ou modificado no item de menu Change Dir do Turbo C 2 01 Forma de utilizar placa DETECT initgraph amp placa amp modo CMTCWBG Os programas 55 56 e 57 exemplificam algumas formas de inicializar a tela em modo gr fico Programa exemplo 55 O programa detecta a placa gr fica devido a instru o placa DETECT normalmente como VGA Sempre que o modo gr fico n o for selecionado o programa utiliza a maior resolu o poss vel No caso de VGA ser VGAHI Um c rculo exibido na tela finclude lt graphics h gt finclude lt conio h gt void main void int placa modo int raio 5 placa DETECT vai haver uma detec o autom tica da placa gr fica initgraph amp placa amp
66. I initgraph amp placa amp modo Mo n a rosto drawpoly 9 rosto A olho esquerdo circle 109 74 7 olho direito circle 209 74 7 nariz circle 159 99 15 o nas nannonancaanaanna boca rectangle 109 120 209 128 AAA A orelha esquerda arc 59 99 90 270 20 E orelha direita arc 259 99 270 90 20 cabelos arc 139 39 0 105 20 arc 179 39 75 180 20 while kbhit closegraph Resultado do programa na tela Figura 10 Rosto desenhado 17 10 setcolor e setbkcolor setcolor Fun o que permite a mudan a da cor da frente ou seja a cor do objeto que ser desenhado Sintaxe void setcolor int n mero_da_cor Prototype graphics h setbkcolor fun o que permite mudan a da cor de fundo da tela Sintaxe void setbkcolor int n mero_da_cor 149 Prototype graphics h getcolor Fun o que retorna a cor da frente desenho corrente Sintaxe int getcolor void Prototype graphics h getbkcolor Fun o que retorna a cor de fundo corrente Sintaxe int getbkcolor void Prototype graphics h 17 11 outtextxy e settextstyle settextstyle Modifica o tipo de fonte caracter dire o e o tamanho do texto Sintaxe void settextstyle int fonte int dire o int tamanho Prototype graphics h Tabela 2
67. Linguagem C Prof Dr Paulo Roberto Gomes Luzzardi FaceBook Paulo Roberto Gomes Luzzardi WhatsApp 91648037 e mail pluzzardi Dgmail com e pluzzardi Dyahoo com br e mail Senac prgomesluzzardi Dsenacrs edu br DropBox https www dropbox com sh kea9kr4j2qttnjg 4xXvwOpvxX m Hostinger http pluzzardi w pw e http pluzzardi zz mu Home Page OS X Server Apple http pluzzardi no ip info 8080 Home Page Co Autor Ricardo Andrade Cava Revis o Maio 2003 Bibliografia SCHILDT Herbert Turbo C Guia do Usu rio Editora McGraw Hill Pelotas domingo 21 de setembro de 2014 00 15 33 am Sum rio LLAMA dec E tara ECO ROEE E E aE EESE ado sia E EE Tara des EE cxusiada lc 9 A ONO 9 1 2 EVOCA a A ER E MO A e 0 e a EL 9 3 iCaracieristICaS A E NE AO NR AO 9 Ee Uliliza os ti e e E RAE EA A El E E e Lo e a 9 2 Ambiente Turbo C2 Ol ica seio ceescsa toada eae eee roa erao aeee a os AE EEEE EEr a EE E or EENren ias donas tendes 10 EJA R EEN E EEEE O ON 10 A RN NON 11 A A RON 11 A E NE O ON RAN 12 AR A A NR RN 13 O NR NN 14 27 O NR E A SA k 17 2 8 Break WatCh aa da 10 18 2 9 Comotisar o DEDUS sc A RT DR CABO Sa IS 19 2 10 Teclas de Tun eS ice A a a E A a 20 2 1 1 Comandos do edinor A A A Saia a 20 2 11 1 Movimento b sico do cursor a E E E E A E acena cercar 20 2 11 2 Movimento r pido do cursor a E E E A a ron nn non e E 20 2 11 3 Inser o e dele
68. MOORE a 55 Coordenadas de tela em modo teXtO oooooocononacoccconnnoonnconononnnnonncconoconnonnnccnnn anno conan E R A aA 58 Representa o de um ponteiro na MeM TlA ooooccccnccconoconcnonnnononocnnaconnanoncconnnnonn conc non acena nac nn ran aerea cronicas 92 Endere amento de um ponteiro rece nocnnc nn acena cr onn a rana carr ron n naar nc narran naar croacia 93 Representa o de um ArQU VO ooooccconcconcconaconnanoncconnnnnnccnnn non nn non non E EEEE EKS A acena ne nana r an SEEE 103 Coordenadas de tela em modo gr fico rr conan ccnnnonan ocn nnon nn cnn ne cnn nrannannncrnnos 127 Rosto desenhado iccncconniocincio dicos coscnene ino cote ci recerd iss reta inde bean CE ng adenda reci apena dea 135 Pol gono preenchido assess assa reiii n een ai e aE sra ESEESE nd calada daria ara ideo dada das 139 Pol gono preenchido nasrini reiii miene neS E alT casa dad rE ae CLANS ENO raiado aaa Cida a 141 Coordenadas de uma janela rir eereeceererrea cercar acena ne ranae ra nannnran narran ncninss 141 Janela atiVa s NR una cs aba nano 143 Sobreposi o de janelas ssa cestecsaeecassamaracres A 145 Mem ria de v deo atributos de tela rir cereacera ce rener ea aeraa cera areacennneana 147 Am buLOS da CU A AA aa aaa ENE AO ERR 147 Figura 18 Utiliza o da mem ria de v deo via ponteiro rr cnn cono nornn conc nr onn anna rancios 152 Figura 19 Representa o de uma lista encadeada
69. S N do tecla toupper getche toupper converte o caracter para mai sculo while Istrchr SN tecla strchr verifica se um caracter pertence a string while tecla N amp amp n lt QUANT for i 0 i lt n 1 i for j 1 1 j lt n j if stremp nomeli nomel gt 0 stremp permite comparar strings strepy temp nomeli strcpy permite copiar strings strcpy nomeli nomel strcpy nomel temp printf nNomes ORDENADOS for i 0 i lt n i printf Nome s n nomeli getch Observa o As fun es strcpy stremp e strchr s o discutidas na pr xima se o Programa exemplo 26 O programa utiliza um m todo de sort chamado bubble sort m todo da bolha para classificar nomes Hinclude lt stdio h gt Hinclude lt conio h gt finclude lt ctype h gt Hinclude lt string h gt fdefine TRUE 0 fdefine FALSE O tdefine QUANT 50 void main void char nome QUANT 40 TR char temp 40 tecla int i k n int sort n 0 do clrscr printf Nome gets nome n entrada de um nome n printf Continua S N do tecla getche while Istrchr SsNn tecla while strchr Nn tecla amp amp n lt QUANT n n 1 n gt n mero de elementos sort FALSE for i 0 i lt k i if stremp nomefi nome i 1 gt 0 strcpy temp nomeli Buble sort
70. SHIFT F10 Exibe o n mero da vers o 2 11 Comandos do editor 2 11 1 Movimento b sico do cursor Seta esquerda ou CTRL S Seta direita ou CTRL D CTRL Seta esquerda ou CTRL A CTRL Seta direita ou CTRL F Seta cima ou CTRL E Seta baixo ou CTRL X CTRL W CTRL Z PGUP ou CTRL R PGDN ou CTRL C 2 11 2 Movimento r pido do cursor Caracter esquerda Caracter direita Palavra esquerda Palavra direita Linha acima Linha abaixo Deslocar texto para cima Deslocar texto para baixo P gina para cima P gina para baixo NA HOME ou CTRL QS END ou CTRL QD CTRL HOME ou CTRL QE CTRL END ou CTRL QX CTRL PGUP ou CTRL QR CTRL PGDN ou CTRL QC CTRL QB CTRL QK CTRL QP 2 11 3 Inser o e dele o INS ou CTRL V CTRL N CTRL Y CTRL QY CTRL H ou Backspace DEL ou CTRL G CTRL T 2 11 4 Manipula o de blocos CTRL KB CTRL KK CTRL KT CTRL KC CTRL KY CTRL KH CTRL KV CTRL KR CTRL KW CTRL KI CTRL KU 2 11 5 Comandos variados CTRL U CTRL OI CTRL P CTRL QF CTRL QA 500 Vai para in cio da linha Vai para fim da linha Vai para comeco da tela Vai para fim da tela Vai para come o do arquivo Vai para fim do arquivo Vai para come o do bloco Vai para fim do bloco Vai para ltima posi o do cursor Liga e desliga modo de inser o Insere uma linha em branco Apaga toda linha Apaga at o fim da linha Apaga o caracter esquerda Apaga caracter sob cursor Apaga palavra
71. TE clrscr pinta janela 20 5 40 20 BLUE getch void pinta_janela int ci int li int cf int If int cor window ci li cf If textbackground cor clrscr window 1 1 80 25 Aten o Os par metros da fun o recebem respectivamente ci 20 li 5 cf 40 e If 20 13 3 Passagem de par metros por refer ncia Forma de chamada de uma fun o onde o endere o do argumento passado como par metro Significa que as altera es feitas nos par metros afetar o a vari vel utilizada para chamar a fun o Programa exemplo 37 O programa tem uma fun o que troca o valor de duas vari veis Hinclude lt stdio h gt HFinclude lt conio h gt void troca int x int y void main void int a b ga clrscr printf a scanf Yd amp a printf b 9 scanf Yd amp b printf a d b din a b troca amp a amp b printf a d b din a b getch void troca int x int y int temp temp x x y y temp imagine que o usu rio digitou 3 imagine que o usu rio digitou 4 foi impresso na telaa 3 b 4 foi impresso na tela a 4 b 3 IF x e y s o ponteiros Aten o Os par metros da fun o recebem respectivamente x Sa e y amp b 13 4 Fun es que devolvem valores n o inteiros Todas as fun es que devolvem valores n o inteiros devem ter seu tipo de r
72. UT free p janela Resultado do programa na tela Figura 15 Sobreposi o de janelas 17 14 Lista de exerc cios gr ficos arquivos estruturas e campos de bits v Escreva um programa em C grava c que desenha c rculos coloridos aleat rios na tela em modo gr fico com raio igual 5 Quando o usu rio digitar alguma tecla grave toda a imagem gerada em um arquivo chamado imagem pic Observa o Note que o arquivo gerado imagem pic possui 307 200 bytes pois a cor de cada pixel armazenada no arquivo com 1 byte tipo char ou seja 16 bits A resolu o da tela 640 x 480 placa VGA modo VGAHI totalizando 307 200 pixels Y Escreva um programa em C exibe c que l o arquivo imagem pic e exibe na tela a imagem gravada neste arquivo ou seja a imagem que foi gerada e armazenada pelo programa anterior Y Re escreva o programa bits c de forma que o novo arquivo gerado imagem bit ocupe apenas a metade do espa o utilizado pelo arquivo imagem pic Observa o Isto pode ser conseguido utilizando uma estrutura com dois campos de bits ou seja cada um com 4 bits Note que utilizando a placa VGA e modo VGAHI temos apenas 16 cores Para armazenar 16 cores necess rio apenas 4 bits e n o 8 como foi utilizado anteriormente Esta economia de bits far com que o arquivo ocupe apenas 153 600 bytes 142 Y Agora re escreva o programa exibe c de forma a mostrar na tela o ar
73. Y Cinza claro 8 DARKGRAY Cinza escuro 9 LIGHTBLUE Azul claro 10 LIGHTGREEN Verde claro 11 LIGYTCYAN Azul claro 12 LIGHTRED Vermelho claro 13 LIGHTMAGENT Rosa claro A 14 YELLOW Amarelo 15 WHITE Branco 128 BLINK Piscante A fun o window define uma janela ativa pr definida do C que permite uma mudan a na janela de texto ativa ou seja parte da tela onde caracteres podem ser impressos Normalmente a janela ativa toda tela ou seja window 1 1 80 25 Sintaxe void window unsigned int left unsigned int top unsigned int right unsigned int bottom Prototype conio h 159 a o Colunas 80 el Left Top Linhas Right Bottom Figura 5 Coordenadas de tela em modo texto Observa o Ap s selecionar uma janela ativa a posi o 1 1 passa a ser o canto superior esquerdo da janela selecionada 10 6 sound e nosound sound Fun o pr definida do C que ativa o auto falante do computador Sintaxe void sound unsigned int frequ ncia Prototype dos h nosound Fun o pr definida do C que desativa o auto falante do computador Sintaxe void nosound void Prototype dos h Programa exemplo 21 O programa ativa e desativa o auto falante do computador include lt conio h gt include lt dos h gt void main void sound 220 ativa o auto falante com a frequ ncia 220 delay 200 per odo de dura o do som pausa nosound desativa o auto falante
74. a 1 raio raio 5 while raio lt 100 getch closegraph sa da do modo gr fico retorna ao modo texto else printf Erro Fatal Problema na inicializa o da placa gr ficain 17 4 putpixel A fun o putpixel desenha pontos permite que um pixel seja exibido na tela gr fica Sintaxe void putpixel int x int y int cor_pixel Prototype graphics h Programa exemplo 58 O programa exibe pontos aleat rios na tela include lt graphics h gt include lt conio h gt kbhit Hinclude lt stdlib h gt random void main void int placa modo int x y cor placa VGA modo VGAHI initgraph amp placa amp modo randomize do x random 640 y random 480 cor random 16 putpixel x y cor while kbhit closegraph 122 17 5 line A fun o line linhas permite que uma linha seja plotada atrav s de dois pontos Pi xi yi e Pf xf yf Sintaxe void line int xi int yi int xf int yf Prototype graphics h Programa exemplo 59 O programa exibe linhas aleat rios na tela finclude lt graphics h gt Finclude lt conio h gt kbhit Hinclude lt stdlib h gt random void main void int placa modo int xi yi xf yf cor placa VGA modo VGAHI initgraph amp placa amp modo randomize do xi random 640 yi random 480 xf random 640 yf random 480 cor random 16
75. a em milisegundos na execu o de um programa Sintaxe void delay unsigned int x x em milisegundos Prototype dos h 10 2 sleep A fun o sleep pausa pr definida do C que permite uma parada tempor ria em segundos na execu o de um programa Sintaxe void sleep unsigned int x x em segundos Prototype dos h 10 3 textbackground A fun o textbackground altera a cor de fundo pr definida do C que permite a mudan a na cor de fundo da tela Podem ser utilizadas 8 cores Sintaxe void textbackground int cor Prototype conio h Tabela 13 Cores de fundo N mero Nome Cor 0 BLACK Preto 1 BLUE Azul 2 GREEN Verde 3 CYAN Azul claro 4 RED Vermelho 5 MAGENTA Rosa Al 6 BROWN 7 LIGHTGRAY Marrom Cinza claro Observac o Para a cor pode ser utilizado o n mero da cor ou o nome em letras mai sculas 10 4 textcolor A func o textcolor altera a cor de frente ou seja a cor do texto pr definida do C que permite mudanca na cor de texto exibido na tela E poss vel utilizar 16 cores Sintaxe void textcolor int cor cor n mero ou nome da cor Prototype conio h 10 5 window Tabela 14 Cores da frente texto N mero Identificador Cor 0 BLACK Preto 1 BLUE Azul 2 GREEN Verde 3 CYAN Azul claro 4 RED Vermelho 5 MAGENTA Rosa 6 BROWN Marrom 7 LIGHTGRA
76. a o Exemplos em vari veis intnum dentes 32 float infla o chara a Exemplos em constantes tdefine ESC 27 define ENTER 13 Exemplos em fun es x raiz_quadrada y printf Valor 2f n inverso n definida pelo programador 3 2 Coment rios do programador Os coment rios do programador s o linhas de c digo que n o s o compiladas pelo compilador ou seja servem apenas como anota es para serem lembradas mais tarde por exemplo quando forem feitas manuten es no programa Em C os coment rios podem ser feitos da seguinte maneira Isto um coment rio em Turbo C II Isto um coment rio no Borland C Um coment rio pode ainda utilizar v rias linhas do programa Veja o exemplo abaixo Fun o STRING Par metros de entrada x y Par metros de sa da c t Retorno Sem Retorno a 3 3 Regras gerais para escrever um programa em C Um programa em C constitu do de uma ou mais fun es delimitadas por chaves onde uma destas fun es obrigatoriamente chamada main As principais regras s o e Letras mai sculas e min sculas s o tratadas como caracteres diferentes e O formato do texto livre e A fun o main especifica onde o programa come a e termina de ser executado e Todos os comandos s o terminados por ponto e v rgula e Todas as vari veis devem ser declaradas e fun o come a a ser executada e fun o termina de ser executada
77. a a um arquivo texto rb Abre um arquivo bin rio para leitura wb Cria um arquivo bin rio para grava o ab Anexa a um arquivo bin rio r Abre um arquivo texto para leitura grava o w Cria um arquivo texto para leitura grava o a Abre ou cria um arquivo texto para leitura grava o r b Abre um arquivo bin rio para leitura grava o w b Cria um arquivo bin rio para leitura grava o a b Abre um arquivo bin rio para leitura grava o rt Abre um arquivo texto para leitura wt Cria um arquivo texto para grava o at Anexa a um arquivo texto r t Abre um arquivo texto para leitura grava o w t Cria um arquivo texto para leitura grava o a t Abre ou cria um arquivo texto para leitura grava o Observac o Se ocorrer ERRO na abertura de um arquivo fopen devolver um ponteiro nulo ou seja se fp NULL erro Exemplos Finclude lt stdio h gt HFinclude lt conio h gt void main void FILE fp clrscr if fp fopen teste dat r NULL printf Erro Fatal Imposs vel abrir o arquivoln else printf Ok arquivo abertoin ou Hinclude lt stdio h gt include lt conio h gt void main void FILE fp clrscr fp fopen a Monteslteste dat w if fo NULL printf Erro Fatal Imposs vel criar o arquivoln
78. a da 107 A A TN 107 SRL Ai A 108 US 2 Ll TPL AO sec cas queries una AEE EEEE EEEE E EEEE EE EEEE S EE SEEE SNE 108 15 212 NA NN 108 15 3 Sistema de arquivo n o bufferizado ssesssesseessesseeseesseeseesstssttsstsstestessttstessrsstestesesstssteseeseesseeseesees 111 53l OPEN ereat e Close y e rosa da ke 111 TELE dans 112 II ed dd 112 io e e lr ed a a o dde et EA E 113 LN rr o td do 113 A A O O E E E 113 13 4 Eista de exercicios argui VOS inde 116 16 Tipos de dados definidos pelo programador e sessssssessessoesoeseoesoeseoseoesossooesoesooscoeseosoessossocssesseesesssessees 119 10 7L ESTUtUTAS Asi tas 119 16 1 1 Refer ncia aos elementos da estrutura ir conan AE O cnn ron nn narco E e 120 16 1 2 Matrizes de ESTU rad 120 16 1 3 Passando estruturas para fun es e nonoconnonnn nc on nn nnn conce non acena ne eenareaaeranareanos 120 16 1 3 1 Passando elementos da estrutura crer nooo n oran cnn nn ron acena neeenereaneraaareanos 120 16 1 3 2 Passando estruturas inteiras ni rreecrecerecareacareaceracareneananeeencreaneranareanos 120 16 1 4 Ponteiros para estruturas rece non nn corno cnn nr ea acena cerne arara encara acena nerenareaneranarennos 121 16 2 Campos de Di tc Ei ENE E EE E E AA DO LED PRO CARE SORO Ve EVA da Cidade nda Veda 122 A A NN 122 O RT 122 16 5 Tipos de dados avan ados erre cre nn conc ona ran n anar nr an na
79. a express o em C qualquer combina o v lida de operadores aritm ticos relacionais ou l gicos constantes fun es e vari veis Exemplo c sqrt a b 3 4 5 8 1 Convers o de tipos em express es Quando uma express o composta de tipos diferentes C converte todos os operandos para o tipo do maior operando Antes os tipos abaixo s o convertidos para char convertido para int float convertido para double Exemplo char ch int i float f double d float result 21 result float ch Y dA To id ratnbu os int int double double double int int double double Toenn double double Figura 3 Convers o de tipos em express es 24 6 Fun es padr es 6 1 abs A fun o abs retorna o valor inteiro positivo absoluto Sintaxe int abs int x Prototype math h e stdlib h 6 2 fabs A fun o fabs retorna o valor real positivo absoluto Sintaxe float fabs float x Prototype math h e stdlib h 6 3 asin A func o asin retorna o valor do arco seno A vari vel x deve estar em radianos Sintaxe double asin double x Prototype math h Faixa pi 2 pi 2 6 4 acos A fun o acos retorna o valor do arco cosseno A vari vel x deve estar em radianos Sintaxe double acos double x Prototype math h Faixa O pi 6 5 atan A fun o atan retorna o valor do arco tangente A vari vel x deve estar em radianos
80. a incluir no fim O_TEXT Translac o CR para LF O_BINARY Sem translac o Observac o Se a func o open obtiver sucesso na abertura do arquivo ser devolvido um inteiro positivo Um valor de retorno 1 EOF significa que open n o pode abrir o arquivo O acesso se relaciona ao Ambiente UNIX A fun o creat cria um arquivo para opera es de leitura e grava o Fun o Cria um arquivo creat Sintaxe int creat const char nomearquivo int modo Prototype io h Tabela 22 Modos de acessos em arquivos Modo Efeito S IFMT Arquivo tipo m scara S IFDIR Diret rio S IFIFO FIFO especial S IFCHR Caracter especial S IFBLK Bloco especial S IFREG Arquivoregular S IREAD Propriet rio pode ler S IWRITE Propriet rio pode escrever S IEXEC Propriet rio pode executar A fun o close fecha um arquivo Devolve 1 EOF se n o for capaz de fechar o arquivo Fun o Fecha um arquivo close Sintaxe int close int fd Prototype io h 15 3 2 write e read A func o write grava tantos caracteres quantos forem o tamanho do buffer apontado pelo ponteiro buf para o arquivo em disco especificado por fd Func o Grava caracteres no arquivo write Sintaxe int write int fd void buf int tamanho Prototype io h 110 A func o read copia os dados lidos no buffer apontado pelo ponteiro buf Func o L caracteres do arquivo read Sintaxe int read i
81. aliza o condi o incremento podem ser qualquer express o v lida em C Programa exemplo 13 O programa imprime de 1 at 10 na tela Hinclude lt stdio h gt 9 HFinclude lt conio h gt void main void int i clrscr for i 1 i lt 10 i inicializa o i 1 printf d n i condi o i lt 10 getch incremento Programa exemplo 14 O programa imprime na tela i 15 i 2 gt j include lt stdio h gt i 3 gt j include lt conio h gt i 4 gt j void main void int i j clrscr for i 1 j 9 i j i j printf i d gt j d n i j getch O la o for equivalente ao seguinte comando inicializa o while condi o comando incremento ou decremento ou inicializa o do comando incremento ou decremento while condi o 7 6 O loop do while ON O O O comando do while um comando de repeti o que permite executar um comando comando simples ou v rios comandos comando composto diversas vezes Isto feito atrav s do teste de uma condi o Enquanto a condi o for verdadeira os comandos s o repetidos Quando a condi o se tornar falsa o comando do while finalizado O teste da condi o feita no final do 2 comando ou seja depois que os comandos s o executados Note que os comandos s o executados pelo menos uma vez KA
82. anular a associa o normal veja exemplo abaixo Exemplo if x if y printf 1 else printf 2 7 3 O comando switch O comando switch um comando de selec o que permite selecionar um comando entre v rios outros comandos Isto feito atrav s da compara o de AS uma vari vel a um conjunto de constantes Cada um dos comandos est ligado a uma constante NA Sintaxe switch vari vel case constante 1 case constante 2 sequ ncia de comandos break sequ ncia de comandos break default sequ ncia de comandos O programa testa uma vari vel sucessivamente contra uma lista de constantes inteiras ou caracteres int ou char Depois de encontrar uma coincid ncia o programa executa o comando ou bloco de comandos que estejam associados quela constante O comando default executado se n o houver nenhuma coincid ncia O comando break utilizado para obrigar a sa da do comando switch A op o default opcional Observa o A vari vel n o pode ser uma string char e nem real float Programa exemplo 9 O programa recebe um d gito de O 9 e imprime na tela este d gito por extenso Neste exemplo a vari vel d gito inteira include lt stdio h gt include lt conio h gt void main void int digito clrscr printf D gito O 9 scanf Yd amp digito switch digito case 0 printf Zero n break case 1
83. ao usu rio consultar o arquivo atrav s da entrada via teclado do n mero inicial e n mero final O programa deve imprimir desde a linha inicial at a linha final ou ERRO Linhas n o existem Exemplo 194 Nome do arquivo texto LISTA C lt enter gt N mero inicial 7 lt enter gt N mero final 9 lt enter gt 7 inti j K 8 char tecla 9 long int bytes 0 ou N mero inicial 70 lt enter gt N mero final 90 lt enter gt ERRO Linhas n o existem Y Escreva um programa em C grava c que recebe via teclado o nome de um arquivo bin rio O programa deve permitir ao usu rio inserir nomes m ximo 30 caracteres neste arquivo via teclado O programa termina quando o usu rio digitar lt enter gt na entrada do nome Exemplo Nome do arquivo bin rio NOMES DAT lt enter gt Nome Beatriz lt enter gt Nome Eva lt enter gt Nome Debora lt enter gt Nome Carla lt enter gt Nome Fatima lt enter gt Nome Ana lt enter gt Nome lt enter gt Y Escreva um programa em C ler c que recebe via teclado o nome de um arquivo bin rio O programa deve ler e imprimir na tela todos os nomes armazenados no arquivo pelo programa grava c Exemplo Nome do arquivo bin rio NOMES DAT lt enter gt Nome Beatriz Nome Eva Nome Debora Nome Carla Nome Fatima Nome Ana Y Escreva um programa em C sort c que recebe via teclado o nome de um arquivo bin rio O programa deve ler ordenar
84. ast help F3 Pick F6 Swap F7 F8 Prev next error Figura 1 Ambiente de programa o do Turbo C 2 01 2 1 File A op o File arquivo permite criar um novo programa fonte carregar um arquivo salvar um arquivo trocar diret rio corrente renomear arquivos sa da tempor ria ao DOS Disk Operation System sistema operacional em disco e sair para o sistema operacional O atalho pelo teclado ALT F Load carregar F3 exibida uma caixa de di logo solicitando o nome do arquivo a ser carregado se for pressionado a tecla lt enter gt exibida uma outra caixa de di logo contendo os nomes de todos os arquivos c contidos no disco O programador seleciona um arquivo seta direita esquerda acima ou abaixo e pressiona lt enter gt logo ap s o arquivo carregado do disco para o editor Pick pegar ALT F3 exibida uma lista com os nomes dos ltimos arquivos que foram carregados O programador seleciona um deles seta acima ou abaixo e ent o este carregado do disco para o editor Os nomes dos arquivos ficam armazenados em um arquivo disco chamado tcpick tcp New novo Permite ao programador criar e editar um novo arquivo Este arquivo possui o nome noname c sem nome este nome deve ser alterado quando o arquivo for salvo no disco Save salvar F2 Salva o conte do do editor no disco Se o arquivo n o possuir nome ele ser gravado como noname c Este nome pode ser renomeado Tod
85. bles ON ou OFF Register optimization ON ou OFF Jump optimization ON ou OFF e Source fonte Identifier length 1 32 Nested coments ON ou OFF ANSI keywords only ON ou OFF e Errors erros Errors Stop after 0 255 Aborta ap s n erros Warnings Stop after 0 255 Aborta ap s n advert ncias Display warnings ON ou OFF Exibe ou n o as advert ncias Portability warnings advert ncias de portabilidade A Non portable point conversion ON ou OFF B Non portable point assigment ON ou OFF C Non portable point comparison ON ou OFF D Constant out of range in comparison ON ou OFF E Constant is long ON ou OFF F Conversation may lose significant digits ON ou OFF G Mixing pointers to signed and unsigned char ON ou OFF O0O0O0O0OOOOO ANSI violations viola es ao padr o ANSI Ident not part of structure ON ou OFF Zero length structure ON ou OFF Void function may not return a value ON ou OFF Both return and return of a value used ONouOFF Suspicius pointer conversation ON ou OFF Undefined structure ident ON ou OFF Redefinition of ident is not identical ONouOFF Hexadecimal or octal constant too large ON ou OFF TOTMMOOU gt e Common errors erros comuns A Function should return a value ON ou OFF B Unreachable code ON ou OFF C Code has no effect ON ou OFF D Possible use of ident before definit
86. dade da seguinte forma anos meses e dias vividos O programa deve calcular e imprimir a data de nascimento no seguinte formato dd mm aaaa Exemplo Tela Qual a data de hoje Dia 16 lt enter gt M s 6 lt enter gt Ano 2003 lt enter gt Qual a sua idade Anos 41 lt enter gt Meses 4 lt enter gt A7 Dias 6 lt enter gt Data de Nascimento 10 02 1962 Continuar S N s Y Escreva um programa em C que recebe via teclado um n mero inteiro de 0 99 O programa deve imprimir na tela este n mero por extenso conforme exemplo abaixo O programa termina quando o usu rio digitar O zero Exemplo N mero 0 99 23 lt enter gt Vinte e tr s N mero 0 99 45 lt enter gt Quarenta e cinco N mero 0 99 O lt enter gt Y Escreva um programa em C que recebe via teclado quantidade de litros vendidos tipo de combust vel Alicool Glasolina ou DJiesel e o tipo de pagamento PJrazo ou V ista O programa deve calcular e imprimir na tela total prazo desconto e o total vista O programa termina quando o usu rio digitar N ou n na pergunta Continua S N Tela de execuc o Valores Quantidade de litros 50 lt enter gt lcool gt 1 23 Tipo de combust vel Alicool Glasolina ou Dliesel g Gasolina gt 2 19 Tipo de pagamento PJrazo ou a V ista v Diesel gt 1 46 Total prazo R 109 50 Desconto R 5 48 Desconto vista 5 Total vista R 104 02 Conti
87. dade de mulheres no aquivo criado pelo programa salva c Exemplo Nome do arquivo bin rio DADOS DAT lt enter gt 2 Homens 1 Mulheres 16 Tipos de dados definidos pelo programador 194 16 1 Estruturas Em C uma estrutura struct uma cole o de campos que fazem refer ncia a uma vari vel ou seja uma vari vel possui um conjunto de valores que podem ser de tipos iguais ou diferentes Uma estrutura propicia uma maneira conveniente de manter se juntas informa es relacionadas struct nome da estrutura tipo nome vari vel tipo nome vari vel klista de vari veis Na defini o de uma estrutura pode se omitir o nome da estrutura ou a lista de vari veis deste tipo mas n o ambos Exemplo struct reg cliente nome da estrutura char nome 30 float salario int idade cliente fornecedor lista de vari veis 16 1 1 Refer ncia aos elementos da estrutura Para fazer refer ncia aos elementos individuais de uma estrutura deve se utilizar o operador ponto que as vezes chamado de operador de sele o nome vari vel estrutura nome campo Exemplo cliente idade 18 16 1 2 Matrizes de estruturas poss vel criar matrizes de estruturas Exemplo struct reg cliente cliente 100 Cria se um array vetor para guardar 100 ocorr ncias de cliente Acesso ao primeiro elemento da estrutura strepy cliente 0 nome Paulo cliente 0 salario 500 00 cliente 0
88. definida do C que permite o posicionamento do cursor em qualquer posic o da tela Sintaxe void gotoxy int coluna int linha Prototype conio h O 1 Colunas 80 Tela em modo texto Linhas w n Figura 4 Tela em modo texto Programa exemplo 20 O programa imprime o t tulo calculadora centralizado na primeira linha da tela include lt stdio h gt include lt conio h gt include lt string h gt devido a fun o strlen void main void int col lin 1 n char titulo Calculadora a string t tulo definida com 11 caracteres NULL clrscr n strlen titulo strlen tirulo igual a 10 ou seja quantidade de caracteres da string col 80 n 2 c lculo da centraliza o do t tulo na linha gotoxy col lin printf s titulo getch 9 3 clreol A fun o clreol clear end of line pr definida do C que permite que uma linha seja apagada desde a posi o do cursor p x y at o final da linha Deve ser utilizado a fun o gotoxy c para posicionar o cursor Sintaxe void clreol void AN Prototype conio h 9 4 delline A fun o delline delete line pr definida do C que permite que uma linha seja apagada Deve ser utilizado a fun o gotoxy c antes Sintaxe void delline void Prototype conio h 10 Comandos especiais 10 1 delay A fun o delay pausa pr definida do C que permite uma parada tempor ri
89. dom 640 yc random 480 raio random 50 cor random 16 setcolor cor circle xc yc raio while kbhit closegraph 14N 17 8 arc A fun o arc arcos permite desenhar um arco na tela gr fica atrav s do ponto central Xc Yc ngulo inicial ngulo final e raio Sintaxe void arc int Xc int Yc int ang_inic intang_fim int raio Prototype graphics h Programa exemplo 62 O programa exibe arcos aleat rios na tela Hinclude lt graphics h gt HFinclude lt conio h gt kbhit Hinclude lt stdlib h gt random void main void int placa modo int xc yc raio cor int angulo_inicial angulo_final placa VGA modo VGAHI initgraph amp placa amp modo randomize do xc random 640 yc random 480 raio random 20 angulo inicial random 360 angulo final random 360 cor random 16 setcolor cor arc xc yc angulo inicial angulo final raio while kbhit closegraph 17 9 drawpoly A func o drawpoly pol gonos permite desenhar um pol gono qualquer na tela Sintaxe void drawpoly int n mero pontos int vetor pontos Prototype graphics h Programa exemplo 63 O programa desenha uma careta na tela Hinclude lt graphics h gt finclude lt conio h gt void main void int rosto 18 109 149 209 149 259 124 259 74 209 39 109 39 59 74 59 124 109 149 int placa modo placa VGA modo VGAH
90. e alho stdio h standard input output define NULL 0 97 3 6 3 Constantes especiais As constantes especiais s o utilizadas para representar caracteres que n o podem ser inseridos pelo teclado S o elas Tabela 1 Constantes especiais Constante Significado b Retrocesso f Alimenta o de formul rio An Nova linha Ar Retorno de carro lt CR gt At Tab horizontal eS Aspas duplas y Aspas simples Ao Zero AV Barra invertida da Alerta Ao Constante octal AX Constante hexadecimal 3 7 Comandos do pr processador do C 3 7 1 O comando define O comando define utilizado para definir uma macro substitug o O compilador substitui o identificador pelo valor cada vez que aquele for encontrado no programa fonte antes da compilac o do programa define identificador valor Exemplos fdefine TRUE 0 ou define TRUE 1 fdefine FALSE 0 define UP 72 fidefine DOWN 80 defiine LEFT 75 define RIGHT 77 fdefine ENTER 13 fdefine ESC 27 3 7 2 O comando finclude O comando finclude faz o compilador incluir um arquivo fonte dentro de outro arquivo fonte include lt header h gt arquivo de header padr o do C IQR ou Finclude header h arquivo de header escrito pelo programador Observa es Normalmente os arquivos de header est o localizados em c ltclinclude E os arquivos de header do programador est o localizados em seu d
91. e lt stdio h gt finclude lt conio h gt include lt string h gt void main int argc char argv inti n if argc 2 printf Sintaxe INVERTE lt palavra gt else n strlen argv 1 for i n 1 i gt 0 i printf c argv 1 i Programa exemplo 40 O programa recebe par metros pelo Sistema Operacional conjunto de caracteres e ordena coloca em ordem alfab tica imprimindo os a seguir Execu o pelo DOS A gt ordena dbeacgf lt enter gt 01 Resultado na tela abcdefg Programa recebe argc 2 argv 0 Alordena exe agv 1 dbeacgf ordena c Finclude lt stdio h gt HFinclude lt conio h gt Hinclude lt string h gt void main int argc char argv int i j int n_car char temp if argc 2 printf Sintaxe ORDENA lt palavra gt else n_car strlen argv 1 for i 0 i lt n_car 1 i for j i 1 j lt n car j if argv 1 i gt argv 116 temp argv 1 i argv 1 i argv 1 j argv 1 j temp for i 0 i lt n car i printf c argv 1 i 13 6 Recursividade Uma fun o recursiva se esta fizer uma chamada a si pr pria Programa exemplo 41 Este programa calcula o fatorial de um n mero recursivamente include lt stdio h gt include lt conio h gt long int fatorial unsigned int n void main void a unsigned int n long unsigned int resposta
92. e caracteres de uma vari vel string neste caso a vari vel nome Finclude lt stdio h gt HFinclude lt conio h gt Hinclude lt string h gt void main void char nome 41 clrscr printf Qual o seu nome gets nome printf s seu nome tem d caracteresin nome strlen nome 21 getch 12 5 strchr A fun o strchr Verifica se um caracter pertence a uma string pr definida do C que verifica se um caracter chr pertence a uma string str Sintaxe int strchr const char s char ch Prototype string h Programa exemplo 31 O programa imprime na tela o n mero de caracteres de um nome Hinclude lt stdio h gt HFinclude lt conio h gt Hinclude lt string h gt void main void char nome 41 char ch do clrscr printf Qual o seu nome gets nome printf Seu nome tem d caracteresin strlen nome printf Continua S im ou NJ o do ch getche while Istrchr SsNn ch while strchr Ss ch 12 6 Lista de exerc cios strings Y Escreva um programa em C que recebe via teclado um nome m ximo 256 caracteres Logo ap s a entrada do nome imprima n mero de letras mai sculas n mero de letras min sculas n mero de vogais e o n mero de consoantes conforme exemplo abaixo Exemplo Nome Universidade Cat lica de Pelotas lt enter gt 3 Letras mai sculas 26 Letras min sculas 14 Vogais 15 Consoantes Y Escreva um programa e
93. e gravar novamente os nomes no mesmo arquivo Exemplo Nome do arquivo bin rio NOMES DAT lt enter gt Ok arquivo ordenado Observac o Utilize o programa anterior ler c para ver os nomes ordenados Y Escreva um programa em C salva c que recebe via teclado o nome de um arquivo bin rio O programa deve permitir ao usu rio inserir nome m ximo 30 caracteres idade e sexo MJasculino ou Fleminino neste arquivo via teclado O programa termina quando o usu rio digitar lt enter gt na entrada do nome Exemplo Nome do arquivo bin rio DADOS DAT lt enter gt Nome Paulo Roberto lt enter gt Idade 41 lt enter gt Sexo M F m lt enter gt Nome Renato Luis lt enter gt Idade 38 lt enter gt Sexo M F m lt enter gt Nome Ana Maria lt enter gt Idade 44 lt enter gt Sexo M F f lt enter gt Nome lt enter gt Y Escreva um programa em C list c que recebe via teclado o nome de um arquivo bin rio O programa deve ler e imprimir na tela todos os dados nome idade e sexo armazenados no arquivo pelo programa salva c veja exemplo abaixo Exemplo Nome do arquivo bin rio DADOS DAT lt enter gt Nome Paulo Roberto Idade 41 Sexo MASCULINO Nome Renato Luis Idade 38 Sexo MASCULINO Nome Ana Maria Idade 44 Sexo FEMININO Y Escreva um programa em C conta c que recebe via teclado o nome de um arquivo bin rio O programa deve verificar a quantidade de homens e a quanti
94. e xouX colocado zeros 0 antes do argumento E colocado 0x ou 0X antes do argumento Especificadores de largura do campo a ser impresso exemplos Tabela 12 Especificadores de largura do campo Prefixo 6d 60 8x 10 2e 10 2f H0 00555 01053 0x0022b 5 50e 000 000005 50 555 01053 0x22b 5 50e 000 5 50 0 00555 01053 000022b 5 50e 000 000005 50 555 1053 22b 5 50e 000 5 50 0 000555 001053 0x00022b 05 50e 000 0000005 50 555 01053 0x22b 5 50e 000 5 50 0 000555 01053 0000022b 05 50e 000 0000005 50 Yo 555 1053 22b 5 50e 000 5 50 HO 00555 01053 0x0022b 5 50e 000 000005 50 Yo 555 01053 0x22b 5 50e 000 5 50 0 00555 01053 000022b 5 50e 000 000005 50 555 1053 22b 5 50e 000 5 50 H0 000555 001053 0x00022b 05 50e 000 0000005 50 Yo 555 01053 0x22b 5 50e 000 5 50 0 000555 001053 0000022b 05 50e 000 0000005 50 555 1053 22b 5 50e 000 5 50 8 2 2 Entrada formatada scanf Sintaxe scanf string de controle lista de vari veis String de controle Local onde definido o tipo de dado d c s amp f que ser lido pelo teclado n o deve conter mais nenhum caracter Lista de vari veis Nome da s vari vel is que ser o lida s pelo teclado Observa o Deve ser passado o endere o do argumento a ser lido int x sca
95. emplo Ctrl Break uma interrup o de hardware via teclado Fun o de interrup o Sintaxe int int86 int n mero da interrup o union REGS regs in union REGS regs out Observa o regs in e regs out podem ser a mesma vari vel union REGS um tipo de dado pr definido do C que permite manipular diretamente os registradores do microprocessador Aten o Para utilizar esta fun o necess rio inserir finclude lt dos h gt 1540 Programa exemplo 71 O programa possui uma fun o que permite posicionar o cursor na tela ou seja o programa possui uma fun o GOTOXY c Hinclude lt stdio h gt finclude lt conio h gt Hinclude lt dos h gt void GOTOXY int c int void main void clrscr GOTOXY 38 1 printf UCPel getch om GOTOXY void GOTOXY int c int union REGS regs regs h ah 2 regs h dl c 1 regs h dh 1 1 regs h bh 0 int86 0x10 amp regs amp regs Programa exemplo 72 O programa testa se uma impressora IBM 2390 est on line ligada ou off line desligada Hinclude lt stdio h gt finclude lt conio h gt finclude lt dos h gt int impressora_ligada void void main void clrscr do if impressora ligada printf Aten o Impressora est ligadaln else printf Aten o Impressora est desligadaln while kbhit mm impressora_ligada int impressora_ligada void union REGS regs 140 re
96. escrever das seguintes formas p idade 21 ou p gt idade 21 16 2 Campos de bit C possui um m todo inerente de acesso a um nico bit em um byte Este baseado na estrutura Um campo de bit apenas um tipo especial de estrutura que define o comprimento em bits que cada elemento ter struct nome tipo estrutura tipo nome 1 comprimento tipo nome 2 comprimento tipo nome 3 comprimento x Observa o Um campo de bit deve ser do tipo int unsigned int ou signed int Exemplo struct dispositivo unsigned ativo 1 unsigned pronto 1 unsigned erro 1 codigo disp Esta estrutura define tr s vari veis de um bit cada os outros 5 bits ficam desocupados pois codigo disp ocupa 8 bits ou seja 1 byte 16 3 Union 190 Em C uma union uni o uma localizac o de mem ria que utilizada por v rias vari veis diferentes que podem ser de tipos diferentes int ou char Exemplo union u_type int i char ch Neste caso a vari vel i e ch ocupam a mesma localiza o da mem ria 16 4 typedef C permite que o programador defina explicitamente novos nomes de tipos de dados utilizando a palavra reservada typedef Realmente n o se cria uma nova classe de dados mas sim um novo nome para um tipo existente typedef tipo existente novo nome de tipo Exemplo typedef float real real salario 16 5 Tipos de dados avan ados C permite que seja aplicado v rios modificadores de
97. etorno declarado tipo do retorno nome da fun o tipo dado base par metros Programa exemplo 38 O programa calcula e imprime na tela a divis o de dois valores Finclude lt stdio h gt include lt conio h gt float divisao int x int y void main void int x y float resposta clrscr printf x scanf d amp x printf y scanf d amp y resposta divisao x y printf Divis o 7 2f n resposta getch ri Fun o definida pelo programador an float divisao int x int y return float x y 13 5 Argumentos argc e argv do main A fun o main possui dois argumentos argc e argv intr nsecos utilizados para receber par metros da linha de comando do DOS Sistema Operacional argc cont m o n mero de argumentos na linha de comando argv ponteiro para uma matriz 2D de caracteres vetor de strings Programa exemplo 39 O programa recebe par metros do Sistema Operacional uma palavra qualquer e imprime a palavra em sentido inverso O programa compilado e executado no Sistema Operacional da seguinte forma Execu o pelo DOS A gt inverte pelotas lt enter gt Resultado na tela satolep Programa recebe argc 2 argv 0 Alinverte exe agv 1 pelotas inverte c obrigatoriamente este programa deve ser gravado como inverte c depois de compilador ser gerado o execut vel inverte exe Hinclud
98. ge Sintaxe int putimage int xi int yi void pointer int modo Prototype graphics h Tabela 31 Modos de exibi o Modos Efeito COPY PUT copia imagem XOR PUT ou exclusivo com a imagem contida na tela OR PUT ou com a imagem contida na tela AND PUT e com a imagem contida na tela NOT PUT n o com a imagem contida na tela Para definir o ponteiro que ir conter os pixels da tela necess rio saber a quantidade de bytes mem ria para salvar a janela gr fica isto feito utilizando se a fun o imagesize Sintaxe long int imagesize int xi int yi int xf int yf Prototype graphics h A fun o imagesize retorna o n mero de bytes necess rios para armazenar a janela definida pelos pontos Pi xi yi e Pf xf yf Sintaxe void malloc int n mero_bytes Prototype alloc h e stdlib h A fun o malloc memory allocation permite aloca o din nica de mem ria para o ponteiro pointer que ocupar n bytes na mem ria RAM Sintaxe void free void pointer Prototype alloc h e stdlib h A func o free libera uma rea de mem ria alocada para o ponteiro pointer Programa exemplo 69 O programa exibe tr s janelas sobrepostas na tela permitindo retira las sem apagar o conte do das informa es que est o por baixo finclude lt graphics h gt Finclude lt conio h gt Finclude lt alloc h gt Hinclude lt stdlib h gt define JANELAS 10 void moldura in
99. gs h ah 0x02 regs x dx 0x00 int86 0x17 amp regs amp regs if regs h ah 144 return 1 else return 0 Programa exemplo 73 O programa utiliza o mouse em modo texto Hinclude lt stdio h gt finclude lt conio h gt Hinclude lt stdlib h gt include lt dos h gt void inicializa mouse void void mostra cursor mouse void void apaga cursor mouse void void le posicao cursor mouse int xmouse int ymouse int botao void posiciona cursor mouse int x int y fdefine ESQUERDO 1 fdefine DIREITO 2 int xmouse ymouse botao void main void clrscr inicializa mouse posiciona cursor mouse 40 12 mostra cursor mouse le posicao cursor mouse amp xmouse amp ymouse amp botao gotoxy 1 1 printf x 02d xmouse gotoxy 1 2 printf y 02d ymouse gotoxy 1 3 printf b d botao do le posicao cursor mouse amp xmouse amp ymouse amp botao if botao ESQUERDO gotoxy xmouse ymouse printf Ok delay 500 gotoxy xmouse ymouse clreol gotoxy 1 1 printf x 02d xmouse gotoxy 1 2 printf y 02d ymouse gotoxy 1 3 printf b d botao while botao DIREITO inicializa mouse void inicializa mouse void union REGS regs regs x ax 0x0 int86 0x0033 amp regs amp regs mostra_cursor_mouse void mostra_cursor_mouse void union REGS regs regs x ax 0x1 int86 0x0033 amp regs amp regs
100. har tecla placa VGA modo VGAHI initgraph amp placa amp modo setfillstyle 1 1 bar 0 0 319 199 setviewport 19 19 300 180 TRUE setcolor 2 clearviewport x 159 y 99 do setcolor 2 teste usando FALSE 110 rectangle x y x 10 y 10 tecla getch setcolor 0 rectangle x y x 10 y 10 switch tecla case UP y y 5 break case DOWN y y 5 break case LEFT x x 5 break case RIGHT x x 5 break while tecla ENTER 84 tecla ESC Resultado do programa na tela Figura 14 Janela ativa 17 13 2 Limpar janela ativa Sintaxe void clearviewport void Prototype graphics h Fun o que limpa a janela ativada pela fun o setviewport se nenhuma janela for ativada por falta default a janela ativa toda a tela 17 13 3 Salvar e recuperar janelas gr ficas Quando necess rio colocar janelas sobrepostas ou outras informa es na tela deve se antes salvar a rea da coloca o da nova janela 140 Para salvar e recuperar janelas na mem ria RAM reas da tela s o utilizados os seguintes procedimentos A fun o getimage armazena na mem ria uma rea da tela Sintaxe int getimage int xi int yi int xf int yf void pointer Prototype graphics h A func o putimage carrega para a tela uma rea da mem ria que cont m uma por o de mem ria armazenada anteriormente pela fun o getima
101. i o n mero de bytes do tipo Tabela de tipos b sicos modificados 0 Tabela 4 Tipos de dados b sicos modificados Tipo Bits Faixa de valores Bytes unsigned char 8 0 255 1 signed char 8 128 127 1 unsigned int 16 0465535 2 signed int 16 32768 32767 2 short int 16 32768 32767 2 long int 32 2147483648 21474483647 4 unsigned short int 16 0465535 2 signed short int 16 32768 32767 2 unsigned long int 32 0 4294967295 4 signed long int 32 2147483648 21474483647 4 long double 64 1 7E 308 1 7E 308 8 5 Operadores 5 1 Operadores aritm ticos S o operadores que realizam uma opera o matem tica Tabela 5 Operadores aritm ticos S o s mbolos especiais que obrigam o compilador a executar determinadas opera es Estas opera es podem ser aritm ticas comparativas ou l gicas Operador aritm tico A o Subtra o Adi o Multiplicac o Divis o Resto inteiro da divis o Decremento incremento Tabela 6 Preced ncia dos operadores aritm ticos Hierarquia Opera o Par nteses Fun es menos un rio 1 O O Aajw D an Preced ncia dos operadores aritm ticos Hierarquia nas Opera es Observa o Quando houver duas ou mais opera es de mesma hierarquia o com
102. id int fd char reg 40 char nome do arquivo 14 unsigned int n long int posicao char ch clrscr printf Nome do arquivo scanf s nome do arquivo if fd open nome do arquivo O RDWR w EOF printf ERRO Arquivo N O existe n getch 199 else do clrscr printf Registro scanf d amp n posicao n sizeof reg Iseek fd posicao SEEK SET if read fd reg sizeof reg printf d Palavra s n n reg flushall printf NOVA PALAVRA scanf s reg Iseek fd posicao SEEK SET write fd reg sizeof reg else printf ERRO Registro n o existein printf Continua S im ou NJ o do ch getch while Istrchr SsNn ch while strchr Ss ch close fd 15 4 Lista de exerc cios arquivos Y Escreva um programa em C que recebe via teclado o nome de um arquivo texto O programa deve imprimir na tela o n mero de bytes caracteres e o n mero de linhas do arquivo ou ERRO Arquivo n o existe Exemplo Nome do arquivo texto LISTA C lt enter gt 12345 Bytes 44 Linhas ou ERRO Arquivo n o existe Y Escreva um programa em C que recebe via teclado o nome de um arquivo texto O programa deve permitir ao usu rio consultar o arquivo atrav s da entrada via teclado do n mero da linha O programa deve imprimir a linha especificada ou ERRO Linha n o existe Exemplo
103. igned int v char ch if argc 2 printf Sintaxe LISTA lt nome do arquivo gt else if fp fopen argv 1 r NULL printf ERRO Arquivo s n o EXISTE n else i n v 1 printf d i do ch getc fp v if ch n lo if n lt 23 n else n 1 printf N printf s Bytes d W lt ENTER gt argv 1 v getch printf n d i else printf c ch printf N printf s Bytes d argv 1 v fclose fp 15 2 5 fclose A fun o fclose file close utilizada para fechar um arquivo aberto Antes de fechar o arquivo os dados que ainda estavam no buffer s o gravados Sintaxe int fclose FILE fp 112 Prototype stdio h Observa o Retorna 0 se a opera o foi bem sucedida 15 2 6 rewind A func o rewind estabelece o localizador de posic o do arquivo para o in cio do arquivo especificado Sintaxe void rewind FILE fp Prototype stdio h 15 2 7 getw e putw As fun es getw e putw s o utilizadas para ler e gravar respectivamente inteiros em um arquivo Fun o Leitura de inteiros getw Sintaxe int getw FILE fp Prototype stdio h Fun o Grava o de inteiros putw Sintaxe int putw int x FILE fp Prototype stdio h 15 2 8 fgets e fputs As fun es fget
104. in void char s1 41 s2 41 clrscr printf String 1 gets s1 printf String 2 gets s2 if compare s1 s2 0 s1 igual s2 0 printf s1 igual a s2 n else printf s1 diferente de s21n getch int compare char s1 char s2 while s1 quando o s1 for igual 0 termina o la o if s1 s2 return s1 s2 else s1 s2 return 0 14 4 3 Obtendo o endere o de um elemento de um vetor p amp x 2 14 4 4 Vetores de ponteiros Declara o de um vetor de ponteiros de inteiros de tamanho 10 int x 10 Atribui o do endere o de uma vari vel ao terceiro elemento da matriz de ponteiros x 2 amp vari vel Logo Para obter o valor da vari vel utiliza se x 2 14 5 Ponteiros para ponteiros Uma matriz de ponteiros igual a apontar ponteiros para ponteiros Um ponteiro para um ponteiro uma forma de indire o m ltipla 10 Programa exemplo 46 O programa utiliza uma vari vel ponteiro para ponteiro Hinclude lt stdio h gt Finclude lt conio h gt void main void int x int p int t clrscr x 10 p 8x t amp p printf Yod t imprime o valor de x getch 14 6 Inicializa o de ponteiros Ap s declarar um ponteiro e antes de haver uma atribui o de um valor inicial o ponteiro ter um endere o desconhecido lixo ou seja nunca se deve utilizar um ponteiro antes
105. ion ON ou OFF E ident is assigned value which is never used ON ou OFF F Parameeter ident is never used ON ou OFF G Possibly incorrect assigment ON ou OFF e Less common errors erros menos comuns A Superfuous amp with function or array ON ou OFF B ident declared but never used ON ou OFF C Ambiguous operators need value ON ou OFF D Structure passed by value ON ou OFF E No declaration for functions ident ON ou OFF F Call to function with no prototype ON ou OFF Names nomes Code names Segment name Group names ou Class names e Data names Segment name Group names ou Class names BSS names Segment name Group names ou Class names Linker ligador e Map file ON ou OFF e Initialize segments ON ou OFF e Default libraries ON ou OFF e Graphics library ON ou OFF e Warm duplicate symbols ON ou OFF e Stack warning ON ou OFF e Case sensitive link ON ou OFF Environment ambiente Permite configurar o ambiente de trabalho e Message tracking All Files Current Files ou Off Keep messages No ou Yes e Config auto save ON ou OFF Se ligado atualiza o arquivo de configura o teconfig tc quando o programador sai do Turbo C Edit auto save ON ou OFF Salva automaticamente o arquivo fonte quando o arquivo for executado Run ou quando da sa da para o sistema operacional quit ou Os shell Backup files ON ou OFF Gera arquiv
106. iret rio corrente c ltclfontes Exemplos include lt stdio h gt arquivo de header padr o do Turbo C c tc include include luzzardi h arquivo de header definido pelo programador diret rio corrente 4 Tipo de dados 4 1 Tipos b sicos A tabela abaixo exibe os cinco 5 tipos de dados b sicos que podem ser utilizados pelo programador para definir suas vari veis S o exibidos os tipos b sicos a quantidade de bits a faixa de valores v lida e o n mero de bytes que cada tipo de dados ocupa na mem ria RAM mem ria principal ou em disco quando armazenados na mem ria secund ria Tabela 2 Tipos de dados Tipo Bits Faixa de valores Bytes char 8 128 127 1 Int 16 32768 32767 2 float 32 34E 38 3 4E 38 4 double 64 1 7E 308 1 7E 308 8 void 0 Sem valor 0 4 2 Modificadores de tipo Os modificadores de tipo s o utilizados para modificar os tipos de dados base ou seja se adaptando s necessidades do programador Os modificadores modificam a quantidade de bits e bytes dos tipos base alterando desta forma a faixa de valores destes novos tipos de dados Tabela dos modificadores de tipos Tabela 3 Modificadores de tipos Modificador de tipo Modifica o Descri o signed c sinal N meros positivos e negativos unsigned s sinal N meros positivos long longo Aumenta o n mero de bytes do tipo short curto Diminu
107. ivo de configura o tc default tcconfig tc Retrieve options Carrega o arquivo de configura o tc default tcconfig tc 2 7 Debug A op o debug depurador possui os itens relacionados a depura o de um programa O atalho de teclado ALT D Evaluate CTRLI F4 Exibe uma janela de avalia o com tr s op es Evaluate Result e New name e Evaluate Permite identificar uma express o ou uma vari vel a ser submetida ao Debug e Result exibido o resultado da avalia o da express o ou vari vel selecionada acima New name Permite atribuir novo valor Call stack CTRLI F3 Durante a depura o este tem permite chamar uma janela da pilha que cont m uma lista de fun es que mostra a posi o atual mostrando tamb m os par metros de cada chamada Find function posiciona o cursor no in cio de uma fun o Refresh display Retorna para a tela do ambiente Display swapping None Smart ou Always Permite estabelecer modos de visualiza o de outputs de tela durante a depura o do programa e None n o mostra a tela de sa da do programa e Smart mostra os efeitos da tela somente quando houver um comando sa da Always mostra sempre a tela resultante Source debugging ON Standalone ou None 2 8 Break watch Na op o Break watch pode se adicionar deletar editar remover todos os watches assistidos ou colocar retirar procurar breakpoints pontos de
108. lacionados ao arquivo prim rio Primary File Primary C file arquivo principal Arquivo principal utilizado pelas op es Make Build e Link Get info mostra informa es Exibe uma janela contendo informa es do arquivo fonte 2 5 Project A op o Project projeto possui os itens relativos ao projeto O atalho de teclado ALTI P Project name nome do projeto Nome do arquivo de projeto principal ou seja o arquivo OBJ e EXE ter o o nome do projeto Este arquivo cont m os nomes de todos os fontes e ou objetos que ser o linkados ao arquivo principal Possui a extens o PRJ Break make on parada da op o Make For a a parada da op o Make quando Warnings Houver advert ncias Errors Houver erros Fatal errors Houver erros fatais Link Antes de Linkar OOOO Auto dependencies auto depend ncia e ON Verifica as depend ncias de todos os arquivos OBJ dentro do Project e OFF N o verifica Clear project apagar projeto Permite deletar o nome do projeto colocado na op o Project name Remove messages remove mensagens Apaga ou n o as mensagens de erros da janela de mensagens 2 6 Options Possui alguns itens de configura o O atalho de teclado ALT O Compiler compilador Permite a inser o de diretivas de compila o sem escrev las no programa fonte e Model Modelo de mem ria Por default o modelo de mem ria small
109. lema no disco n getch else n 0 do clrscr printf d Palavra n scanf Ys reg write fd reg sizeof reg n printf Continua S im ou NJ o 7 do ch getch while Istrchr SsNn ch while strchr Ss ch close fd else printf ERRO Arquivo j EXISTE n getch close fd Programa exemplo 53 O programa permite abrir o arquivo de palavras e exibe os na tela lista c Finclude lt stdio h gt Finclude lt io h gt Finclude lt conio h gt HFinclude lt fcntl h gt Hinclude lt sysistat h gt void main void int fd char reg 40 char nome do arquivo 14 unsigned int n clrscr printf Nome do Arquivo scanf s nome do arquivo if fd open nome do arquivo O RDONLY r EOF printf ERRO Arquivo N O existe n getch else n 0 do read fd reg sizeof reg printf d Palavra s n n reg n getch while leof fd close fd Programa exemplo 54 O programa permite alterar o arquivo de palavras Para tanto solicitado ao usu rio o n mero do registro para ser calculado a posi o deste registro no arquivo Logo ap s o registro exibido na tela e solicitada a nova palavra altera c Hinclude lt stdio h gt include lt string h gt include lt io h gt include lt conio h gt include lt fcntl h gt include lt sys stat h gt void main vo
110. liar a express o ou seja comparar se o produto menor lt que zero 5 6 O operador sizeof O operador sizeof tamanho de retorna o tamanho em bytes de uma vari vel ou de um tipo que est em seu operando Programa exemplo 4 O programa exibe a quantidade de bytes das vari veis e tipos Finclude lt stdio h gt include lt conio h gt void main void int x y clrscr x sizeof float Fx vale 4 printf Ydin d x sizeof y sizeof y 2 getch 5 7 Casts poss vel for ar que o resultado de uma express o seja de um determinado tipo Para tanto deve ser utilizado uma constru o chamada de cast ou seja pode ser utilizado para tipar uma vari vel com um tipo diferente do resultado da express o vari vel tipo express o Programa exemplo 5 O programa imprime na tela o resultado de uma divis o Hinclude lt stdio h gt include lt conio h gt 22 void main void int x y float resp clrscr printf x scanf d amp x printf y scanf d amp y resp float x y necess rio um cast float pois a divis o de dois printf Divisao 2fin resp inteiros resulta em um inteiro getch Observa o Em C o tipo resultante de um inteiro dividido por outro inteiro um inteiro logo deve se utilizar um cast float para que o tipo resultante atribu do a vari vel resp seja float 5 8 Express es Um
111. lo de ligac o entre um elemento e outro Ao contr rio de um vetor onde os elementos s o alocados estaticamente e em posi es cont guas na mem ria RAM uma lista encadeada alocada dinamicamente tendo como caracter stica b sica que os elementos s o alocados em posi es diferentes aleat rias na mem ria As listas lineares encadeadas possuem um header cabe a que armazena o primeiro elemento da lista header primeiro elemento C b a ltimo elemento 3 b 2 a 1 NULL elo elo elo Figura 19 Representa o de uma lista encadeada Dois problemas existem em uma lista encadeada a Primeiro que as listas s o percorridas seq encialmente apenas numa dire o ou seja do primeiro ao ltimo elemento b Segundo que a informa o do n mero de elementos da lista obtido somente por uma varredura completa na lista Para resolver estes dois problemas pode se utilizar um descritor da seguinte maneira descritor primeiro n mero de elementos ltimo As vantagens de um descritor s o e Conhecer o n mero de elementos da lista linear sem ter que percorr la e Acessar o ltimo elemento facilitando a inser o ou remo o no final da lista As listas podem ser organizadas como pilhas ou filas Pilha Estrutura linear organizada de forma que a entrada e a sa da dos dados feita na mesma extremidade Forma de acesso LIFO Last Input First Output ou seja o ltimo elemento a entrar na pilha
112. m C que recebe via teclado uma palavra m ximo 40 caracteres e uma letra Logo ap s a entrada do nome e da letra imprima o e n mero de letras que existe no nome ou ERRO N o existe a letra na palavra conforme exemplo abaixo Exemplo Palavra Luzzardi lt enter gt Letra z 2 letra s Continua S im ou NJ o s Palavra Luzzardi lt enter gt Letra w ERRO N o existe a letra w na palavra Luzzardi Continua S im ou NJ o N Observa o O programa deve ser encerrado quando o usu rio digitar N ou n na pergunta Continua S im ou NJ o Y Escreva um programa em C que recebe via teclado uma palavra m ximo 20 letras e uma posi o O programa deve imprimir na tela a letra antecessora a letra da referida posi o e a letra sucessora conforme exemplo abaixo Exemplo Palavra Universidade lt enter gt Posi o 7 lt enter gt Antecessora s Letra i Sucessora d OBSERVA O O programa deve imprimir na tela as seguintes mensagens de erro se for o caso Letra antecessora n o existe Letra sucessora n o existe ou Posi o inv lida Y Escreva um programa em C que recebe via teclado um nome m ximo 80 letras O programa deve imprimir na tela as palavras do nome em_ordem inversa uma por linha conforme exemplo abaixo Exemplo Nome Paulo Roberto Gomes Luzzardi lt enter gt Luzzardi Gomes Roberto Paulo Escreva um programa em C que recebe via teclad
113. malmente um erro grave Programa exemplo 66 O programa exibe um objeto preenchido com doze estilos diferentes Hinclude lt graphics h gt Hinclude lt conio h gt void main void int objeto 10 159 0 0 50 159 199 319 50 159 0 int placa modo estilo cor 1 placa VGA 114 modo VGAHI initgraph amp placa amp modo setbkcolor WHITE setcolor 2 seta cor do desenho for estilo 0 estilo lt 12 estilo setfillstyle estilo cor define estilo e cor fillpoly 5 objeto pinta pol gono cor if cor gt 15 cor 1 getch closegraph Resultado do programa na tela Figura 11 Pol gono preenchido b floodfill Fun o preenche um pol gono ao redor de um ponto fun o recursiva Sintaxe void floodfill int x int y int cor_da_borda Prototype graphics h Para preencher um pol gono a fun o floodfill utiliza o estilo definido pela fun o setfillstyle descrito anteriormente A fun o floodfill parte de um ponto central x y do objeto e preenche ao redor deste ponto at encontrar uma borda com a cor especificada Programa exemplo 67 O programa exibe uma esp cie de rosa dos ventos include lt graphics h gt include lt conio h gt void main void int rosa 34 159 1 189 49 279 24 239 72 319 99 239 123 279 173 189 149 159 198 109 149 39 173 79 123 1 99 79 72 39 24 109 49
114. nf d amp x Programa exemplo 18 O programa permite a entrada via teclado do nome idade e sal rio de uma pessoa Finclude lt stdio h gt HFinclude lt conio h gt void main void KR int idade float sal rio char nome 40 clrscr printf Qual seu nome scant s nome ATEN O nome igual ao amp nomel0 printf Idade scanf d amp idade amp idade o endere o da vari vel idade printf Sal rio scanf d amp sal rio amp sal rio o endere o da vari vel sal rio getch 8 3 Sa da na impressora fprintf Sintaxe fprintf stdprn string de controle lista de vari veis stdprn Fila de impress o standard printer Programa exemplo 19 O programa imprime UCPel na impressora Hinclude lt stdio h gt Finclude lt conio h gt void main void clrscr fprintf stdprn UCPel Universidade Cat lica de Pelotasin Observa o ES Salta uma p gina na impressora fprintf stdprn cin 12 Comprime os caracteres na impressora fprintf stdprn c n 15 9 Controle do v deo e teclado 9 1 clrscr A fun o clrscr clear screen pr definida do C que permite limpar toda tela o cursor permanece no canto superior esquerdo Sintaxe void clrscr void Prototype conio h KA 9 2 gotoxy A fun o gotoxy coluna linha v para posi o x y pr
115. nnonnncnnonnncnn ee aa ea CMAS AA conoce non coca non as nto anca atenta a aceno sas cnn conc assa aaa 29 A Tipos D SICOS ces ei araras eae e ce E A Aide 29 42 Modificadores dE tIpO iienaa e i doa testo ope A SS aro Crea EEEE ali 29 DE Operadores A A A O NN 30 5 Operadores aritm tICOS A ii A AE 30 5 2 Operadores Td AS A AA Ai A ed 30 Jo Operadores OC iii o e RIA E A araras seres 31 As Incremento decremento norisei ar a E E a O TERATE RENA Le RENAS EAT 31 A AAA E RN 32 30 O operador SIZCOL tetona E A EE E AEE EAEE E A a 33 SECAS E AA A A 33 0 EXPLESSO Sections tania DIE EE en RE ed a RETNA A Aa 34 5 8 1 Convers o de tipos em express es c coooconcccoonoconncnonoconnccnncconncnnn con nn non nccnnnronnnrnn nc on nn ran nnnnn con nn nan nccnncrinss 34 6 Fun es AAA 36 A O Ea do Sha E SOR danosa RSS 36 A A AS 36 CAZAS rata as 36 O NN 36 GO C0S A arta 36 NN NN 37 O NON 37 CIP Mii A A a a 37 A NN 37 O O O ONO NO 37 CLIO iaa ER paca 38 oP De E N oT EEIE E EEOAE AA A E ita 38 O PORRA RR O CN 38 O OOO NN 38 OLMO aia 38 6 17 o CN NN 38 o O RA NN NO 39 A PARADA PDR RA RNA ER RD ERRO OD SR ERRAR RONDA ERRAR RR 39 6 20 random assess giisere sis Tei na e si anima os REE 39 6 21 xando mi ZE st eat 39 AA eet O NON 39 Te Comandos ces screoeseso nta da in Hn Ein dd AGAR IAEA EA A ARA DEU CON DANO ITA TALARA RAEE sisko vorko NO OC UO Edna nan da ainda e cesen ici 40 TA Tipos EA E ON 40 ileal ES A E E E O 40 A AA O NA 4
116. nt fd void buf int tamanho Prototype io h 15 3 3 unlink A fun o unlink elimina um arquivo do disco retorno O sucesso ou 1 erro Sintaxe int unlink const char nomearquivo Prototype dos h io h e stdio h 15 3 4 Iseek A fun o Iseek devolve o n mero de bytes num bytes se obtiver sucesso Sintaxe long int Iseek int fd long int num bytes int origem Prototype io h e stdio h fd descritor do arquivo num bytes n mero de bytes desde a origem at a nova posi o origem SEEK SET in cio SEEK CUR corrente SEEK END fim 15 3 5 eof A fun o eof end of file devolve 1 fim de arquivo 0 n o fim de arquivo ou 1 erro Sintaxe int int eof int fd Prototype io h 15 3 6 tell A fun o tell devolve a posi o corrente do descritor Sintaxe long int tell int fd Prototype io h Programa exemplo 52 O programa permite criar um arquivo de palavras permitindo a grava o destas palavras FF cria c Finclude lt stdio h gt Hinclude lt io h gt include lt conio h gt Hinclude lt string h gt Hinclude lt fentl h gt Hinclude lt sysistat h gt void main void int fd char reg 40 char nome do arquivo 14 unsigned int n char ch clrscr printf Nome do arquivo scanf s nome do arquivo if fd open nome_do_arquivo O_RDONLY r EOF if fd creat nome do arquivo S IWRITE EOF printf Erro Fatal Prob
117. nte 4 bits total 16 cores Programa exemplo 70 O programa escreve diretamente na mem ria de v deo include lt stdio h gt include lt conio h gt define UP 72 define DOWN 80 define LEFT 75 define RIGHT 77 define HOME 71 define END 79 define PGUP 73 define PGDN 81 define ENTER 13 seleciona o in cio e fim da moldura define ESC 27 define F1 59 moldura SIMPLES define F2 60 moldura DUPLA fdefine TRUE 10 fdefine FALSE 0 define CURSOR 219 void retangulo char c int xi int yi int xf int yf void imprime int c int char letra char recupera int c int void inverte int xi int yi int xf int yf char far p char far 0xb8000000I pois o n mero long void main void int c 20 12 ct 20 It 12 int xi yi xf yf char tecla car S int primeiro TRUE char caracter 32 textbackground BLACK window 1 1 80 25 clrscr gotoxy 1 1 printf Coluna 2d c gotoxy 1 2 printf Linha 2d gotoxy 1 3 if car S printf Moldura SIMPLES else printf Moldura DUPLA 9 do gotoxy 10 1 printf 2d c gotoxy 10 2 printf 2d gotoxy 10 3 if car S printf SIMPLES else printf DUPLA ct c t l caracter recupera ct It imprime c CURSOR tecla getch if tecla O tecla ENTER if tecla ENTER tecla getch
118. nte a tela dividida em 80 colunas por 25 linhas Em modo texto pode se exibir apenas os 256 caracteres da tabela ASCII e poucas cores A tela em modo gr fico dividida normalmente em 1280 pixels na horizontal por 122 1024 pixels na vertical Em modo gr fico poss vel exibir qualquer tipo de objeto imagem ou texto com milhares ou milh es de cores Pixel Elemento gr fico menor ponto representado em modo gr fico 17 1 1 CGA Resolu o 640 x 200 alta resolu o 2 cores 320 x 200 baixa resolu o 4 cores de um palette de 16 cores Observa o Palette o conjunto de cores dispon veis cada palette CGA possui 4 cores dentre as 16 cores dispon veis 17 1 2 EGA Resolu o 640 x 350 alta resolu o 16 cores e 2 p ginas gr ficas 640 x 200 baixa resolu o 16 cores e 4 p ginas gr ficas 17 1 3 VGA Resolu o 640 x 480 alta resolu o 16 cores e 1 p gina 640 x 350 m dia resolu o 16 cores e 2 p ginas gr ficas 640 x 200 baixa resolu o 16 cores e 4 p ginas gr ficas 17 2 Coordenadas de tela gt HA 2 Xf NA Pl Modo gr fico Yf Figura 9 Coordenadas de tela em modo gr fico 17 2 1 CGA Tabela 24 Coordenadas de tela CGA Resolu o xi yi xf Yf 320 x 200 0 0 319 199 640 x 200 0 0 639 199 17 2 2 EGA Tabela 25 Coordenadas de tela EGA 17 2 3 VGA Resolu o xi yi Xf Yf 640 x 200 0 0 639 199 640 x 350 0 0 639
119. nte na mem ria RAM Random Access Memory Mem ria de acesso rand mico e Definidas dentro de uma fun o s o chamadas de vari veis locais e s podem ser acessadas dentro desta fun o Estas vari veis s o alocadas dinamicamente na mem ria RAM Depois que uma fun o executada estas vari veis s o desalocadas Na declara o de par metros formais de uma fun o Sendo estas locais e alocadas dinamicamente na mem ria RAM Observa o Mem ria ROM Read Only Memory Mem ria somente de leitura Aloca o de mem ria Reserva de espa o de mem ria RAM para alocar uma vari vel Aloca o est tica de mem ria Tipo de aloca o de mem ria em que uma vari vel alocada tem um espa o reservado na mem ria RAM durante toda a execu o do programa Este espa o de mem ria desalocado somente quando o programa acaba Aloca o din mica de mem ria Tipo de aloca o de mem ria em que uma vari vel alocada tem um espa o reservado na mem ria RAM temporariamen te Este espa o de mem ria desalocado quando o espa o n o mais necess rio Programa exemplo 2 O programa realiza uma opera o de pot ncia X Hinclude lt stdio h gt o arquivo stdio h inserido dentro deste programa Hinclude lt conio h gt o arquivo conio h inserido dentro deste programa 9 amp float POT float base float expoente prot tipo da fun o POT float resultado vari
120. nteiros m ximo 50 Armazene todos os n meros inteiros em um vetor at que o usu rio digite O zero Logo ap s permita ao usu rio consultar um n mero informando o seu valor O programa deve imprimir na tela a posi o do n mero no vetor ou ERRO N mero n o encontrado veja exemplos abaixo Exemplo N mero 50 lt enter gt N mero 30 lt enter gt N mero 20 lt enter gt N mero 10 lt enter gt N mero 40 lt enter gt N mero 0 lt enter gt Valor 20 lt enter gt Posic o no vetor 2 Valor 40 lt enter gt Posi o no vetor 4 Valor 60 lt enter gt ERRO N mero n o encontrado Valor O lt enter gt Observa o O programa termina quando o usu rio digitar O zero Y Escreva um programa em C que recebe via teclado n conceitos A B C De E m ximo 25 at que o usu rio digite ESC Armazene todos os conceitos em um vetor conceito Imprima na tela o n mero de alunos aprovados A B e C reprovados D e os infrequentes E conceito Exemplo Conceito B 0 B Conceito A J N Conceito E 2 E Conceito B 3 B 4 D 5 C 77 R A Conceito D Conceito C Conceito A Conceito E Conceito lt esc gt 4 Aprovado s 1 Reprovado s 3 Infrequente s Y Escreva um programa em C que recebe via teclado n m ximo 50 nomes m ximo 80 letras A entrada dos nomes termina quando o usu rio digitar apenas lt enter gt Logo ap s a entrada de todos os nome
121. nua S N N Y Escreva um programa em C que recebe via teclado duas notas nota1 e nota2 O programa deve imprimir na tela a m dia o conceito do aluno dado pela tabela abaixo e a situac o aprovado exame ou reprovado Conceito M dia Situac o A 90a10 0 Aprovado B 7 0 8 9 Aprovado C 60a 6 9 Exame D 0 0 5 9 Reprovado Nota1 Nota2 Exemplo M dia 2 Nota1 7 lt enter gt Nota2 8 lt enter gt M dia 7 5 Conceito B Situa o Aprovado Sair S N s Observa o O programa termina quando o usu rio digitar S ou s na pergunta Sair S N AR Y Escreva um programa em C que recebe via teclado uma temperatura e o tipo de convers o converter para Clelsius ou F ahrenheit Calcule e imprima na tela a temperatura correspondente a solicitac o do usu rio conforme exem plos abaixo Exemplo Temperatura 30 lt enter gt Tipo de convers o converte para Clelsius ou F ahrenheit F Temperatura em Fahrenheit 86 Continua S N S Temperatura 86 lt enter gt Tipo de convers o converte para Clelsius ou F ahrenheit C Temperatura em Celsius 30 Continua S N n F rmula Y Escreva um programa em C que recebe via teclado graus 0 360 minutos 0 59 e segundos 0 59 O programa deve calcular e imprimir na tela o ngulo em graus dado pela seguinte f rmula minutos segundos ngulos em graus graus
122. o BAK quando o arquivo fonte for salvo Tab size 8 Especifica o n mero de espa os da tabula o horizontal tecla Tab do editor 2 at 16 brancos Zoom windows ON ou OFF se ligada as janelas Edit Watch ou Message est o expandidas Screen size 25 line display ou 43 50 line display Permite selecionar o n mero de linhas na tela 25 placa CGA 43 placa EGA e 50 placa VGA Directories diret rio Permite especificar drive lpath para diret rios dos arquivos utilizados e que ser o gerados pelo Turbo C por exemplo programas fontes c Include directories permite alterar drive lpath indicando a localiza o dos arquivos de includes ou seja H normalmente c Wtclinclude Library directories permite alterar drivelpath indicando a localizac o dos arquivos LIB e OBJ normalmente c tc lib Output directory permite alterar drivelpath indicando diret rio de sa da Todos os arquivos lidos ou gerados ser o armazenados neste diret rio Turbo C directory permite drivelpath indicando o diret rio onde o Turbo C est instalado Pick File Name permite altera drivelpathinome do arquivo de sele o PCK Current Pick File Indica o drive caminho e nome do arquivo de sele o corrente Arguments Argumentos Permite a especifica o de par metros quando um programa for executado na mem ria ou seja os argumentos da linha de comando aceitos pelo argc e argv Save options Salva o arqu
123. o arquivo deve ter um nome que n o seja noname c Write to escrever como Escreve o conte do do editor num outro arquivo indicado pelo usu rio conserva o antigo no disco e o novo no editor Directory diret rio A op o directory mostra um diret rio de acordo com uma m scara especificada permite ainda que um arquivo seja carregado Change dir trocar de diret rio Permite trocar o drive e ou subdiret rio drive Ipath corrente Os Shell sair temporariamente ao sistema operacional Sa da tempor ria do Turbo C para o sistema operacional Para retornar ao ambiente deve se digitar exit Quit sair ALT X Sa da definitiva do Turbo C Volta ao sistema operacional 2 2 Edit A op o Edit editar permite a cria o ou edi o de programas fontes Para sair do editor deve se pressionar a tecla F10 ou ALT mais a letra mai scula da op o do menu principal O atalho pelo teclado ALTI E 2 3 Run A op o Run executar permite executar um programa antes o programa compilado Possui ainda algumas op es para depudar debug o programa O atalho de teclado ALT R Run executar CTRL F9 Compila o programa linka as unidades e executa o programa Program reset resetar o programa CTRL F2 Termina a execu o de um programa que est sendo executado com o debug ou seja desmarca a linha atual de execu o do debug Go to cursor ir para o posi o do curso
124. o um nome m ximo 60 caracteres Logo ap s a entrada do nome o programa deve imprimir EM LETRA MAIUSCULA o sobrenome da pessoa conforme exemplos abaixo Exemplo Nome Paulo Roberto Gomes Luzzardi lt enter gt Sobrenome LUZZARDI Sair S N N Nome Renato Souza lt enter gt Sobrenome SOUZA Sair S N s Observa o O programa termina quando o usu rio digitar S ou s na pergunta Sair S N Y Escreva um programa em C que recebe via teclado um nome m ximo 80 caracteres Logo ap s a entrada do nome o programa deve imprimir na tela 22 sobrenome primeiro nome e demais nomes abreviados conforme exe mplos abaixo Exemplo Nome Paulo Roberto Gomes Luzzardi lt enter gt Autor Luzzardi Paulo R G Sair S N N Nome Renato Lima Souza lt enter gt Autor Souza Renato L Sair S N s Observa o O programa termina quando o usu rio digitar S ou s na pergunta Sair S N Y Escreva um programa em C que recebe via teclado o nome de um estado m ximo 80 caracteres Logo ap s a entrada do nome do estado imprima a sigla do estado 2 letras mai sculas conforme exemplos abaixo Exemplo Estado Rio Grande do Sul lt enter gt Sigla RS Estado s o paulo lt enter gt Sigla SP Estado rio de janeiro lt enter gt Sigla RJ Estado lt enter gt Observa o O programa encerra quando o usu rio digitar apenas lt enter gt na entrada do nome do estado Y Escreva
125. ode se somar e subtrair n meros inteiros a ponteiros 14 3 4 Compara o de ponteiros poss vel comparar dois ponteiros atrav s utilizando os operadores relacionais Exemplo if p lt q printf Endere o de p menor do que q n 14 4 Ponteiros e vetores Em C o nome de um vetor sem ndice o endere o do primeiro elementos da matriz 1n2 Exemplo Finclude lt stdio h gt Finclude lt conio h gt void main void int x 10 0 1 2 3 4 5 6 7 8 9 y int p p amp x 0 igual a p x Para acessar o quinto 5 elemento podemos escrever x 4 ou p 4 Observac o Aritm tica de ponteiros pode ser mais r pida que a indexac o de vetores e matrizes 14 4 1 Indexando um ponteiro Exemplo Finclude lt stdio h gt HFinclude lt conio h gt void main void int x 5 0 1 2 3 4 int p t p x igual a p amp x 0 for t 0 t lt 4 t printf din p t getch 14 4 2 Ponteiros e strings Como o nome de um vetor sem ndice um ponteiro que aponta para o primeiro elemento do vetor quando utiliza se fun es que recebem strings como par metros estas recebem apenas um ponteiro para a string e n o o valor real da string em si ou seja sempre a passagem de par metro de uma string por refer ncia Programa exemplo 45 Hinclude lt stdio h gt Finclude lt conio h gt 101 int compare char s1 char s2 void ma
126. op o Step over do menu Run ou F7 op o Trace into do menu Run F8 executa o programa linha linha sem entrar nas fun es F7 executa o programa linha linha entrando tamb m nas fun es 6 Passo Pode se ainda Delete watch deletar vari vel Edit watch editar vari vel ou Remove all watches remover todas as vari veis no menu Break watch 7 Passo Pode se ainda desviar a execu o do debug para a linha em que o cursor est F4 ou a op o Goto cursor do menu Run 8 Passo Para encerrar a execu o do debug CTRL F2 ou a op o Program reset do menu Run deve se ainda desmarcar todos os breakpoints atrav s da op o Clear all breapoints do menu Break watch 2 10 Teclas de fun es Podem ser acessadas em qualquer ponto do ambiente de programac o F1 Ativa o help F2 Salva Save o arquivo corrente no editor F3 Carrega Load ao arquivo F5 Aproxima Zoom a janela ativa F6 Troca Switch a janela ativa F7 Executa uma linha na depura o Debug entra na fun o F8 Executa uma linha na depura o Debug n o entra na fun o F9 Compila e liga o programa Make F10 Ativa o menu principal Alt F1 Traz de volta a ltima tela de ajuda Alt F3 Pick carrega um dos 8 ltimos arquivos lidos Alt F9 Compila o arquivo no editor para OBJ AIt F File Alt R Run Alt C Compile Alt P Project Alt O Options Alt D Debug Alt B Break watch Alt X Sai para o DOS
127. os tipo_dado_base vari veis corpo da fun o return tipo_do_retorno Especifica o tipo de dado do retorno da fun o O retorno da fun o feita pelo comando return valor par metros uma lista separada por v rgulas com os nomes das vari veis e seus tipos que receber o os argumentos quando a fun o for chamada Observa o O tipo default de uma fun o int ou seja se n o for especificado o tipo da fun o o compilador assume int Fun o procedural um tipo especial de fun o que n o possui retorno ou seja simplesmente um procedimento Uma fun o deste tipo void Exemplo void imprime_string int coluna int linha char mensagem gotoxy coluna linha QRA printf s mensagem Chamada da fun o imprime string 10 7 Calculadora Programa exemplo 32 O programa possui uma fun o que calcula o inverso 1 x Finclude lt stdio h gt finclude lt conio h gt float inverso float x void main void float inv x clrscr printf x 9 scanf f amp x inv inverso x chamada da fun o inverso printf Inverso 2fAn inv getch Pri Fun o definida pelo programador float inverso float x float i i float 1 x return i ou float inverso x float x return float 1 x 13 1 Valores de retorno Todas as func es exceto aquelas que s o declaradas como sendo do tipo void devolvem
128. os ii A AA Aa 21 2 1 1 4 Manipula o de bloc sairam e dia A QTDE ED E Ce da 21 2 111 5 Comandos Variados anere inerte Ido A PD Ae Ea DATA DARE DO o SA 21 2 11 6 Aguda on l en isinisisi onii A ano do dd ONE ARES riales died 22 3 Estrutura de um programa em Cooooncocnonnoonoonnconocnnonnncnnonnncnnnonocnnconnonononnocononnocnnonnconocanconncnnonnncn conan cnn connono nas 23 341 NN 23 3 2 Coment rios do programador c erre crrcereaceeacaraneananeraneeaa nora ar encarece nn ana nccnnncinss 23 3 3 Regras gerais para escrever um programa em Coocooccconcconnconnnconnnonnnonnnconnocnnnnonnannnnconn nr onn nan n non nn ron nccnnncinss 23 3 4 AC E NN 24 IS Declara o de VIV CS chi A A rie 24 3 5 1 Onde as vari veis podem ser declaradas oooonccnonninocococnconnnonnncnnnconnoconnconnonnn conan nronannnn conc cnn nccnnccinss 25 3 5 2 Inicializa o de VAT V CIS ui eri ii 26 A A NN 26 3 6 1 Constantes hexadecimais octais 0oooooccncccconoconccnonaconcconnnoonnonon cono non nn conc canon ano ne nan nr an nan cnc nn non nccnnncinos 26 3 0 2 CONSTantes MI ii rs A it 27 30 3 Constantes ESPECIA A e PAS ES o ear Ud a ES 27 3 7 Comandos do pr processador do C nn e nE EEE E REEE ccoo nro encara non nn ron e 28 ALO comando Refine assar A A e A eder aa pe 28 3 14 20 comando FnCIUdE cs tres corar a a EE a OOE AE 28 4 Tipo de dadOS ocooonoonoonnonnnnnnonononocanonconanonaconocnnconoc
129. ototype stdio h num bytes o n mero de bytes desde origem at chegar a posi o desejada Tabela 20 Origem em arquivos Origem Identificador In cio do arquivo SEEK SET Posi o corrente SEEK CUR Fim do arquivo SEEK END 15 2 11 fprintf e fscanf As fun es fprintf e fscanf se comportam exatamente como printf e scanf exceto pelo fato de que elas operam com arquivos em disco Fun o Grava o de dados formatados fprintf Sintaxe int fprintf FILE fp char formato lista argumentos Prototype stdio h Fun o Leitura de dados formatados fscanf Sintaxe int fscanf FILE fp char formato lista argumentos Prototype stdio h 15 2 12 remove A fun o remove apaga do disco o arquivo especificado Sintaxe int remove char nome_arquivo Prototype stdio h Exemplos Abaixo s o listados tr s programas cria c lista c consulta c os quais possuem como registro uma palavra com no m ximo 40 caracteres Programa exemplo 49 O programa permite criar um arquivo de palavras permitindo a grava o destas palavras FF cria c Finclude lt stdio h gt Finclude lt conio h gt Hinclude lt string h gt void main void FILE fp char reg 40 char nome do arquivo 14 unsigned int n char ch clrscr printf Nome do arquivo scanf Y s nome do arquivo if fp fopen nome do arquivo r b NULL printf ERRO Arq
130. p1 recebe o endere o de x p2 p1 p2 recebe o endere o de x printf Y pin 8x impresso endere o de x printf pin p1 impresso endere o de x printf Y pin p2 impresso endere o de x printf Yod p1 impresso valor de x conte do de p1 printf Yoc p1 impresso caracter 7 Bell conte do de p1 getch 14 3 2 Aritm tica com ponteiros 14 3 2 1 Incremento Faz com que o ponteiro aponte para a localiza o de mem ria do pr ximo elemento de seu tipo dado base Exemplo p ponteiro aponta para o pr ximo elemento p conte do do ponteiro incrementado Programa exemplo 43 O programa mostra um ponteiro apontando para os elementos de um vetor Isto feito atrav s da aritm tica de ponteiros 11 Compile o programa utilizando o modelo de mem ria large Finclude lt stdio h gt finclude lt conio h gt void main void char x 10 65 66 67 68 69 70 71 72 73 74 y char p int i clrscr p amp x 0 for i 0 i lt 9 i printf Endereco p Valor x d c n p i p p getch Resultado na tela Endere o 87D8 0FB4 Valor x 0 A Endere o 87D8 0FB5 Valor x 1 B Endere o 87D8 0FB6 Valor x 2 C Endere o 87D8 0FB7 Valor x 3 D Endere o 87D8 0FB8 Valor x 4 E Endere o 87D8 0FB9 Valor x 5 F Endere o 87D8 0FBA Valor x 6
131. parada O atalho de teclado ALTI B Add watch CTRL F7 Permite que a vari vel sob o cursor seja exibida na janela de assist ncia quando o debug for executado Delete watch Permite que uma vari vel da janela de assist ncia seja deletada Edit watch Permite que uma vari vel da janela de assist ncia seja editada Remove all watches Remove todas as vari veis da janela de assist ncia Toggle breakpoint CTRL F8 Permite que breakpoints pontos de parada sejam colocados ou retirados Clear all breakpoints Permite que todos os breakpoints sejam removidos View next breakpoint Permite visualizar o pr ximo breakpoint 2 9 Como usar o Debug 1 Passo Ter as duas janelas na tela janela de edi o e janela de assist ncia F5 2 Passo Marcar um breakpoint ponto de parada CTRL F8 ou op o Toggle breakpoint do menu Breaklwatch 3 Passo Rodar o programa Run ou CTRL F9 o programa executado at a linha anterior ao breakpoint Observa o Para visualizar o resultado obtido na tela de execu o ALT F5 ou a op o User screen do menu Run 4 Passo Para selecionar as vari veis que se deseja assistir posiciona se o cursor sobre uma vari vel e CTRL F7 ou a opc o Add watch do menu Breaklwatch ap s aparecer uma janela com a vari vel dentro podendo se alterar ou mudar a vari vel pressiona se RETURN 5 Passo Para visualizar a execu o do programa linha linha pressiona se F8
132. pilador executa as da esquerda para a direita 5 2 Operadores relacionais S o operadores que permitem comparar valores ou seja s o utilizados principalmemte em comandos que possuem condi es Tabela 7 Operadores relacionais Operador A o gt Maior que gt Maior ou igual a lt Menor que lt Menor ou igual Igual a l Diferente de 5 3 Operadores l gicos S o operadores utilizados em comandos que tem mais de uma condi o Exemplo if condi o1 amp amp condi o condig o3 Tabela 8 Operadores l gicos Operador l gica A o amp amp AND e OR ou NOT n o Preced ncia Hierarquia dos operadores relacionais e l gicos Tabela 9 Preced ncia dos operadores relacionais e l gicos Hierarquia Opera o gt gt lt lt 8 8 Il da Aaju nN Observa o As express es que utilizam operadores relacionais e l gicos retornam 0 zero para falso e 0 n o zero para verdadeiro ou seja fdefine TRUE 0 fdefine FALSE O 5 4 Incremento e decremento 21 S o operadores aritm ticos que permitem realizar opera es de soma e subtra o de forma simplificada e adiciona 1 ao operando e subtrai 1 ao operando As seguintes opera es s o equivalentes X x x 1 X x x 1 Observa o Os operadores ou podem ser colocados antes ou depois do
133. ponteiro p getch aa endere os Figura 7 Endere amento de um ponteiro Resumo x lt 65 8x 100 p 8x 100 p 65 8p 200 Um ponteiro pode ocupar 2 ou 4 bytes na mem ria RAM No modelo de mem ria model small um ponteiro ocupa 2 bytes tipo near perto e no modelo de mem ria large ocupa 4 bytes tipo far longe 14 1 Vari veis ponteiros Defini o tipo dado base nome do ponteiro tipo dado base qualquer tipo b sico v lido em C nome da ponteiro nome da vari vel que representa o ponteiro O tipo de dados do ponteiro define para que tipos de vari veis o ponteiro pode apontar e qual o tamanho ocupado na mem ria por estas vari veis 14 2 Operadores de ponteiros 8 gt endere o de mem ria do operando gt conte do do endere o apontado pelo ponteiro Exemplo ponteiro amp vari vel 1AN Logo vari vel ponteiro Observac o Como C sabe quantos bytes copiar para a vari vel apontada pelo ponteiro Resposta O tipo_dado_base do ponteiro determina o tipo de dado que o ponteiro est apontando 14 3 Express es com ponteiros 14 3 1 Atribui es com ponteiros Pode se atribuir o valor endere o de um ponteiro para outro ponteiro Programa exemplo 42 O programa mostra atribui es utilizando dois ponteiros Hinclude lt stdio h gt Finclude lt conio h gt void main void int x 7 int p1 p2 clrscr p1 amp x
134. quivo imagem bit gerado pelo programa bits c Este programa chama se mostra c 18 Mem ria de v deo Em C pode se escrever diretamente na mem ria de v deo sem utilizar o comando printf isto feito enderecando um vetor de 4000 bytes a partir do endereco 0xb8000000 endereco na placa de v deo Este endereco o in cio da tela em modo texto Isto feito atrav s de um ponteiro que aponta diretamente para o endereco da mem ria de v deo Como foi visto anteriormente um ponteiro em C pode ser indexado ou seja a primeira posi o da tela est em p 0 a segunda em p 2 pois p 1 o atributo de cor do primeiro caracter atributo de cor A 1 e 80 HA colunas linhas posi o na mem ria de v deo Figura 16 Mem ria de v deo atributos de tela Localizac o na mem ria de v deo A tela bidimensional ou seja para imprimir um caracter na tela necess rio utilizar duas vari veis coluna e linha gotoxy col lin O ponteiro utilizado para apontar para a mem ria de v deo unidimensional ou seja precisa apenas de uma vari vel ndice do vetor O c lculo deste ndice feito atrav s da posi o coluna e linha O c lculo ndice 160 linha 1 2 coluna 2 Atributo COR 1 byte 144 tributo da cor P fundo i frente Figura 17 Atributos da cor Onde p caracter piscante i intensidade da cor fundo cor de fundo 3 bits total 8 cores frente cor de fre
135. r F4 For a o debug a executar todas as linhas at a posi o do cursor ou seja pula todas as linhas intermedi rias executando as Trace into tra ar dentro de uma fun o F7 For a o debug a executar linha a linha do programa entrando executando dentro das fun es definidas pelo programador Step over passar sobre a fun o F8 For a o debug a executar linha a linha sem entrar nas fun es definidas pelo programador User screen visualizar a tela de usu rio ALT F5 Exibe a tela de execu o ou seja mostra o resultado do programa 2 4 Compile A op o Compile compilar possui os itens de compila o e configura o da compila o O atalho de teclado ALT C Compile to OBJ compilar ALTI F9 Compila o programa fonte e linka as unidades gerando o arquivo OBJ O nome do programa objeto o mesmo do programa fonte ou do Primary File OBJ Make EXE file fazer F9 Compila o arquivo prim rio Primary File ou o arquivo presente no editor Todos os arquivos que dependem deste s o compilados inclusive as unidades que foram alteradas gerando o arquivo EXE O nome do programa execut vel o mesmo do programa fonte ou do Primary File EXE Link EXE file ligar Obriga a link edi o liga o dos arquivos secund rios e bibliotecas LIB e OBJ ao arquivo prim rio Build all construir Recompila todos os arquivos re
136. rintf b 9 scanf Yd amp b a gt b printf Maior a gt din a printf Maior b gt Y din b getch 129 16 5 3 3 Formas abreviadas de C C tem abreviac es especiais que simplificam a codificac o de um certo tipo de comando de atribui o Exemplo x x 10 gt pode ser escrito como gt x 10 Esta forma abreviada funcionar com todos os operadores aritm ticos de C Forma normal vari vel vari vel operador constante Xx x 7 Forma abreviada vari vel operador constante x 7 16 5 3 4 O operador Pode se utilizar a v rgula para juntar v rias express es O compilador sempre avalia o lado esquerdo da v rgula como void Assim a express o do lado direito ficar sendo o valor de toda express o separada por v rgula Exemplo x y 3 y 1 Primeiramente atribu do o valor 3 a y e depois atribu do o valor 4 a x Os par nteses s o necess rios porque a v rgula tem preced ncia mais baixa que o operador de atribui o 17 Gr ficos 17 1 Placas gr ficas Dispositivos gr ficos que permitem trabalhar com resolu es maiores do que o modo texto permite ou seja imprimir informa es com mais detalhes Uma placa gr fica possui uma mem ria interna que permite operar com grandes resolu es Resolu o Quantidade de pixels na horizontal x quantidade de pixels na vertical A tela do computador pode operar em modo texto ou modo gr fico Em modo texto normalme
137. riz bidimensional de caracteres onde o tamanho do ndice esquerdo determina o n mero de strings e o tamanho do ndice direito especifica o comprimento m ximo de cada string Exemplo char nome 3 8 Tabela 17 Exemplo de um vetor de strings 0 1 2 3 4 5 6 7 0 U C P e Y NULL lixo lixo 1 U C Ss NULL lixo lixo lixo lixo 2 U F P e T NULL lixo lixo Cria um vetor com 3 strings com 7 caracteres NO NULL cada uma Para acessar uma string particular deve se especificar apenas o ndice esquerdo ou seja nome 0 nome 1 ou nome 2 nome 0 UCPel nome 1 UCS nome 2 UCFel Observac o Pode se acessar tamb m qualquer caracter de qualquer uma das strings isto feito utilizando os dois ndices como por exemplo nome 2 1 caracter F 11 5 Inicializa o de matrizes e vetores tipo dos dados nome matriz tam 1 tam n lista valores lista valores lista de constantes separadas por v rgulas que s o compat veis em tipo com o tipo base da matriz Exemplo int i 10 0 1 2 3 4 5 6 7 8 9 vetori 1D ou int il 0 1 2 3 4 5 6 7 8 9 Observa o Quando um vetor declarado e inicializado ao mesmo tempo o n mero de elementos neste caso 10 pode ser suprimido ou seja neste caso opcional veja exemplo anterior 11 6 Inicializa o de um vetor de caracteres char nome vetor tamanho
138. ro int um real positivo float e um real negativo float finclude lt graphics h gt Hinclude lt stdlib h gt void insere virgula na string char s int casas int sinal void main void int placa DETECT modo int inteiro 123 float float pos 123 45 float neg 1234 56 char s 10 int casas sinal initgraph amp placa 8modo d lingua 1 tc fontes exibi o de um inteiro itoa inteiro s 10 10 gt decimal settextstyle SMALL FONT HORIZ DIR 10 outtextxy 10 10 s exibi o de um float positivo strcpy s ecvt float_pos 5 amp casas amp sinal ecvt converte de float para string insere_virgula_na_string s casas sinal outtextxy 10 50 s exibi o de um float negativo strcpy s ecvt float_neg 6 amp casas amp sinal insere virgula na string s casas sinal outtextxy 10 80 s getch insere_virgula_na_string void insere_virgula_na_string char s int casas int sinal 141 inti n t n strlen s for i n i gt casas i s i s i 1 s casas s n 1 NULL if sinal 1 float negativo n strlen s for i n i gt 0 i s i s i 1 s 0 th s n 1 NULL 17 12 Preenchimento 17 12 1 Pintura de ret ngulos Sintaxe void bar int xi int yi int xf int yf Prototype graphics h Para preencher pintar um ret ngulo deve
139. rresponde ao ltimo elemento Uma vantagem na utiliza o de uma vetor poder armazenar v rios valores elementos na mem ria RAM ao mesmo tempo permitindo por exemplo compar los e classific los Exemplo Vetor unidimensional de inteiros idades Tabela 16 Exemplo de um vetor unidimensional ndice Valor 0 24 1 12 2 36 3 41 11 1 Vetores Vetor matriz de uma dimens o 1D um tipo especial de matriz que possui apenas um ndice ou seja permite armazenar vari veis unidimensionais permite representar uma tabela tipo dos dados nome do vetor n mero de elementos Onde tipo dos dados tipo de dado de cada elemento char int float double nome do vetor nome da vari vel que ir representar o vetor n mero de elementos n mero total de elementos do vetor primeiro elemento O ltimo elemento n mero de elementos 1 n mero de bytes ocupados na mem ria RAM n mero de elementos x quantidade de bytes de um elemento Exemplo int x 10 10 elementos x 0 x 9 TA primeiro elemento x 0 ltimo elemento x n mero_de_elementos 1 ou seja x 9 n mero de bytes 10 x 2 20 bytes um inteiro ocupa 2 bytes Observa o O programador deve verificar os limites do vetor pois o compilador C n o verifica estes limites ou seja o programador pode referenciar qualquer elemento do vetor inclusive um que n o existe Isto pode causar um grave erro
140. s o armazenadas normalmente E pr prio para vari veis de loop s la os pois torna o la o mais r pido Observa o S pode ser utilizado em vari veis locais 16 5 3 Operadores avan ados 16 5 3 1 Operadores bit a bit Se referem ao teste ajuste ou troca de bits reais por um byte ou palavra podem ser de tipos char ou int Tabela 23 Operadores bit a bit Operador A o amp And Or A Or exclusivo XOr Es Complemento de um Not gt gt Deslocar para a direita shift lt lt Deslocar para a esquerda shift Deslocamento shift vari vel gt gt n mero de deslocamentos Exemplo Finclude lt stdio h gt HFinclude lt conio h gt void main void int a 128 b c la 128 gt 10000000 clrscr b a gt gt 1 b 64 gt 0100000 c b lt lt 1 c 128 gt 1000000 printf a d n a printf b din b printf c Y din c getch 16 5 3 2 O operador Pode se utilizar o operador para substituir comandos if else que tenham a seguinte forma geral if condi o comando 1 else comando 2 A principal restri o do operador que os comandos do if else devem ser comando simples n o podendo serem comandos compostos Forma geral condi o comando 1 comando 2 Exemplo Finclude lt stdio h gt HFinclude lt conio h gt void main void inta b clrscr print a scanf d amp a p
141. s e fputs s o utilizadas para ler e gravar strings Fun o Leitura de strings fgets Sintaxe char fgets char str int comprimento FILE fp Prototype stdio h Fun o Grava o de strings fputs Sintaxe char fputs char str FILE fp Prototype stdio h Observa o A fun o fgets l uma string do arquivo especificado at que leia ou um n ou comprimento 1 caracteres 15 2 9 fread e fwrite As fun es fread e fwrite s o utilizadas para ler e gravar blocos de dados normalmente uma struct Fun o Leitura de blocos fread Sintaxe int fread void buffer int num bytes int cont FILE fp Prototype stdio h Func o Gravac o de blocos fwrite Sintaxe int fwrite void buffer int num_bytes int cont FILE fp Prototype stdio h buffer um ponteiro para a regi o da mem ria ou o endereco de uma vari vel que receber os dados lidos do arquivo pela fun o fread ou que ser gravada no arquivo pela func o fwrite num_bytes Especifica a quantidade de bytes a serem lidos ou gravados cont Determina quantos blocos cada um com comprimento de num_bytes ser o lidos ou gravados fp o ponteiro para o arquivo 15 2 10 fseek A fun o fseek utilizada para ajustar o localizador de posi o do arquivo ou seja permite selecionar a posi o para efetuar opera es de leitura e grava o aleat rias Sintaxe int fseek FILE fp long int num bytes int origem Pr
142. s o programa deve permitir a entrada via teclado de uma letra O programa deve imprimir na tela todos os nomes que comecam com a letra especificada pelo usu rio O programa termina quanto o usu rio digitar lt esc gt na entrada da letra conforme exemplos abaixo Exemplo Nome Paulo lt enter gt Nome Roberto lt enter gt Nome Renato lt enter gt Nome Pedro lt enter gt Nome Fabio lt enter gt Nome lt enter gt Letra R Nome Roberto Nome Renato Letra P Nome Paulo Nome Pedro Letra T Letra lt esc gt Y Escreva um programa em C que recebe via teclado n m ximo 30 nomes m ximo 40 letras e idades A entrada dos dados termina quando o usu rio digitar N ou n na pergunta Continua S N Logo ap s a entrada de todos os dados o programa deve imprimir na tela todos os nomes e idades desde o mais velho at o mais novo Exemplo Nome Ana lt enter gt Idade 12 lt enter gt Continua S N s Nome Beatriz lt enter gt Idade 13 lt enter gt Continua S N s Nome Carla lt enter gt Idade 14 lt enter gt Continua S N N Carla 14 Beatriz 13 Ana 12 12 Manipula o de strings TR As fun es strcpy stremp strcat s o necess rias pois uma string nada mais do que um vetor de caracteres ou seja n o se pode atribuir v rios valores ao mesmo tempo para os elementos de um vetor Isto s pode ser feito quando o vetor declarado e inicializado ou um de cada vez Exemplo
143. se definir o estilo de preenchimento utilizando a fun o Sintaxe void setfillstyle int estilo int cor Prototype graphics h Tabela 30 Estilos de preenchimento N mero Nome do estilo EMPTY FILL SOLID FILL LINE FILL LTSLASH FILL SLASH FILL BKSLASH FILL LTBKSLASH FILL HATCH FILL XHATCH FILL INTERLEAVE FILL 10 WIDE DOT FILL 11 CLOSE DOT FILL 12 USER FILL O IOIN JD GI B IOIN nO EMPTY FILL Preenche com a cor de fundo Programa exemplo 65 O programa desenha doze ret ngulos cheios mostrando os estilos de preenchimento Hinclude lt graphics h gt finclude lt conio h gt Hinclude lt stdlib h gt void main void int placa modo unsigned int estilo int cor 1 placa VGA modo VGAHI initgraph amp placa amp modo for estilo 1 estilo lt 12 estilo setfillstyle estilo cor bar 0 O 100 100 cor if cor gt 15 cor 1 getch closegraph 17 12 2 Pintura de pol gonos a fillpoly Desenha um pol gono preenchido com um estilo selecionado pela fun o setfillstyle Sintaxe void fillpoly int estilo int cor Prototype graphics h Para preencher um pol gono a fun o fillpoly utiliza o estilo definido pela fun o setfillstyle descrito anteriormente Esta fun o preenche qualquer pol gono fechado se o pol gono estiver aberto esta fun o preenche at encontrar um objeto fechado isto nor
144. stdio h gt HFinclude lt conio h gt VERIFICA y void main void int n resto clrscr printf N mero scanf Y d amp n if VERIFICA n amp resto printf Parn else printf mparin printf Resto Inteiro da Divis o d n resto getch Y Escreva as seguintes fun es STRCPY copia strings e STRCAT concatena strings ar Finclude lt stdio h gt HFinclude lt conio h gt STRCPY STRCAT void main void char s Liber r dade t 10 clrscr STRCPY t s fun o copia s para t gt Liber STRCAT t r insere r no final de t gt Liberdade printf s n t Ft gt liberdade getch 14 Ponteiros Um ponteiro uma vari vel que cont m um endere o de mem ria O endere o pode ser a localiza o de uma ou mais vari veis na mem ria RAM ou qualquer outro endere o da mem ria RAM como por exemplo a mem ria da tela Vari vel comum Vari vel PONTEIRO Figura 6 Representa o de um ponteiro na mem ria Exemplo Hinclude lt stdio h gt include lt conio h gt void main void char x 65 char p p amp x p recebe o endere o de x 8x printf Valor de x din p p valor 65 printf Caracter cin p caracter A printf Endere o de x pin p endere o de x printf Endere o de p pln amp p endere o do
145. t void main void int p n clrscr printf Quantidade de elementos scanf Y d amp n p int malloc n sizeof int if p NULL ou if tp printf ERRO FATAL Falta de mem riain else printf Ok mem ria alocadain printf Endere o reservado pin p printf Quantidade de elementos alocados d n n printf Quantidade de bytes alocados d n n sizeof int 197 14 7 2 free A fun o free livre permite liberar a por o de mem ria alocada pela fun o malloc Sintaxe void free void p Prototype alloc h e stdlib h A fun o free libera a rea de mem ria alocada pela fun o malloc Programa exemplo 47 O ponteiro p aponta para uma regi o da mem ria com 80 bytes reservados alocados ou seja 40 inteiros Finclude lt stdio h gt Finclude lt conio h gt Finclude lt alloc h gt Finclude lt stdlib h gt void main void int p t clrscr p int malloc 40 sizeof int if 1p printf Erro Fatal Falta de mem riain else for t 0 t lt 39 t p t t for t 0 t lt 39 t printf d p t free p 15 Entrada e sa da em disco Existem dois sistemas de arquivo definidos em C O primeiro definido pelo padr o ANSI e UNIX chamado sistema de arquivo bufferizado formatado ou de alto n vel e o segundo definido apenas pelo UNIX chamado sistema de arquivos n o b
146. t xi int yi int xf int yf int frente int fundo void salva_janela int janela int xi int yi int xf int yf void restaura_janela int janela int xi int yi int xf int yf unsigned int numero_de_bytes JANELAS void p JANELAS void main void int placa modo int cor placa VGA modo VGAHI initgraph amp placa amp modo setfillstyle 0 0 bar 0 O 639 479 salva_janela 1 10 10 100 50 moldura 10 10 100 50 BLUE LIGHTBLUE getch salva_janela 2 30 30 130 80 moldura 30 30 130 80 GREEN LIGHTGREEN getch salva_janela 3 50 50 150 100 moldura 50 50 150 100 RED REDLIGHT getch restaura_janela 3 50 50 150 100 getch restaura_janela 2 30 30 130 80 getch restaura_janela 1 10 10 100 50 getch closegraph void moldura int xi int yi int xf int yf int frente int fundo setcolor fundo setfillstyle SOLID_FILL fundo bar xi yi xf yf setcolor frente rectangle xi yi xf yf rectangle xi 2 yi 2 xf 2 yf 2 void salva_janela int janela int xi int yi int xf int yf numero_de_bytes janela imagesize xi yi xf yf pljanela void malloc numero_de_bytes janela getimage xi yi xf yf pljanela 149 void restaura_janela int janela int xi int yi int xf int yf setfillstyle O 0 bar xi yi xf yf putimage xi yi panela XOR P
147. tipo aos tipos de dados b sicos modificador tipo tipo b sico lista vari veis 16 5 1 Modificadores de acesso 16 5 1 1 O modificador const Durante a execu o o programa n o poder alterar uma vari vel declarada com o modificador const exceto dar a vari vel um valor inicial Exemplo const float versao 3 30 16 5 1 2 O modificador volatile Utiliza se o modificador volatile para dizer ao C que o valor de uma vari vel pode ser alterado sem uma especifica o expl cita do programa Exemplo volatile int clock 120 16 5 2 Especificadores de classe de armazenamento 16 5 2 1 O especificador auto O especificador auto utilizado para declarar vari veis locais Por default as vari veis locais s o auto 16 5 2 2 O especificador extern O especificador extern diz ao compilador que os tipos de dados e nomes de vari veis que se seguem j foram declarados em um outro lugar por exemplo outro programa fonte 16 5 2 3 O especificador static As vari veis static s o vari veis permanentes dentro de suas pr prias fun es S o diferentes das vari veis globais porque n o s o conhecidas fora de suas fun es mas mant m seus valores entre as chamadas 16 5 2 4 O especificador register Se aplica apenas as vari veis int ou char O especificador register faz com que o compilador mantenha o valor das vari veis declaradas dentro dos registradores da CPU e n o na mem ria onde as vari veis normais
148. ufferizado n o formatado ou de baixo n vel 15 1 Fila de bytes stream A fila de bytes um dispositivo l gico de entrada ou sa da de dados independente do dispositivo real Um arquivo dispositivo externo deve ser associado a uma fila de bytes 1NQ C utiliza 5 filas de texto pr definidas s o elas Tabela 18 Filas de texto Fila Fun o da fila stdin Entrada padr o standard input stdout Sa da padr o standard output stderr Erro padr o standard error stdprn Sa da para impressora standard printer stdaux Sa da auxiliar standard auxiliary 15 1 1 Filas de texto Uma fila de texto uma sequ ncia de caracteres organizada em linhas Cada linha finalizada por um caracter n Pode ocorrer certas tradu es de caracteres tal como n ser convertida em CR 13 LF 10 Dessa forma pode n o haver correspond ncia de 1 para 1 entre os caracteres que o computador escreve l e aqueles no dispositivo externo CR Carriage Return retorno do carro cursor LF Line Feed avan o de linha CR LF lt enter gt Exemplo de um arquivo texto ABCIn ABCDERn in ABCDEFGHIn EOF Observa es EOF End Of File fim do arquivo Todo arquivo texto possui um nome Nome do arquivo 8 caracteres nome 3 caracteres extens o Exemplos turboc txt turboc tex turboc doc 15 1 2 Filas bin rias Uma fila bin ria possui correspond ncia un voca
149. uinos ou 3 Ovinos pre o unit rio do animal e quantidade de animais comprados O programa deve calcular e imprimir na tela pre o total pago e a comiss o do escrit rio de remate gado gt 5 equinos gt 7 e ovinos gt 3 conforme exemplo abaixo Exemplo Tela Tipo de animal 1 Gado 2 Equinos ou 3 Ovinos 1 SEM ENTER Pre o unit rio do animal R 200 lt enter gt Quantidade de animais 10 lt enter gt Pre o total pago R 2100 00 Comiss o a pagar R 100 00 Continua S N s Tipo de animal 1 Gado 2 Equinos ou 3 Ovinos 2 Pre o unit rio do animal R 1000 lt enter gt Quantidade de animais 1 lt enter gt Pre o total pago R 1070 00 Comiss o a pagar R 70 00 Continua S N N Reescreva o programa anterior recebendo via teclado uma letra para o tipo de animal Glado Elquinos ou Olvinos pre o unit rio do animal e quantidade de animais comprado O programa deve calcular e imprimir na tela pre o total pago e a comiss o do escrit rio de remate gado gt 5 equinos gt 7 e ovinos gt 3 conforme exemplo abaixo Exemplo Tela Tipo de animal G ado Elquinos ou Olvinos g SEM ENTER Pre o unit rio do animal R 200 lt enter gt Quantidade de animais 10 lt enter gt Pre o total pago R 2100 00 Comiss o a pagar R 100 00 Continua S N s Escreva um programa em C que recebe via teclado a data de hoje da seguinte forma dia m s ano e a sua i
150. uivo j existe n getch fclose fp else if fp fopen nome_do_arquivo w b NULL printf Erro Fatal Problema no disco n getch else n 0 do clrscr printf d Palavra n scanf s reg scanf n o aceita espa os fwrite reg sizeof reg 1 fp grava o registro n printf Continua S im ou NJ o 2 do ch getch while Istrchr SsNn ch 114 while strchr Ss ch fclose fp Programa exemplo 50 O programa permite abrir o arquivo de palavras e exibe os na tela lista c Hinclude lt stdio h gt Hinclude lt conio h gt void main void FILE fp char reg 40 char nome do arquivo 14 unsigned int n clrscr printf Nome do arquivo scanf s nome do arquivo if fp fopen nome do arquivo rb NULL printf ERRO Arquivo n o EXISTE n getch else n 0 fread reg sizeof reg 1 fp while feof fp printf d Palavra s n n reg n getch fread reg sizeof reg 1 fp fclose fp Programa exemplo 51 O programa permite consultar o arquivo de palavras Para tanto solicitado ao usu rio o n mero do registro para ser calculado a posi o deste registro no arquivo Logo ap s o registro exibido na tela consulta c Hinclude lt stdio h gt finclude lt conio h gt Hinclude lt string h gt void main void FILE fp
151. um valor O valor devolvido retornado pela func o atrav s do comando return Normalmente s o escritas tr s tipos de fun es a Fun es que efetuam opera es com os par metros e retornam um valor com base nas opera es R Programa exemplo 33 O programa calcula e imprime na tela o valor da pot ncia x Finclude lt stdio h gt Finclude lt conio h gt include lt math h gt float potencia float x int y void main void float base resp int expoente clrscr printf Base scanf Y f amp base printf Expoente scanf d 8 expoente resp potencia base expoente chamada da fun o potencia printf Potencia 7 2fin resp getch Fun o definida pelo programador float potencia float x int y float valor valor exp log x y return valor b Func es que manipulam informacdes e retornam um valor que simplesmente indica o sucesso ou o fracasso da manipulac o Programa exemplo 34 O programa calcula e verifica o determinante de uma equac o de segundo grau Finclude lt stdio h gt Finclude lt conio h gt int verifica_determinante float a float b float c void main void float a b c int retorno clrscr printf a scanf f 8a printf b 9 scanf Y f amp b e7 printf c scanf f amp c retorno verifica_determinante a b c if retorno

Download Pdf Manuals

image

Related Search

Related Contents

setup basics questions media controls  Trisquel GNU/Linux  

Copyright © All rights reserved.
Failed to retrieve file