Escolar Documentos
Profissional Documentos
Cultura Documentos
Tipos de dados em C Tipo Espao Escala Char 1 byte -128 a +127 Int 2 bytes -32768 a +32767 Float 4 bytes 3.4e-38 a 3.4e+38 Double 8 bytes 1.7e-308 a 1.7e+308 Void Nenhum nenhuma Obs.: utilizando-se a clausula unsigned antes de declarar o tipo de varivel , dobramos o valor desta,pois declaramos que s sero aceitos valores positivos para a varivel. Unsigned int tem a a escala de 0 a 255,por exemplo. Como declarar: #include<stdio.h> #include<string.h> int valor ; char tecla ; char tecla[50] // Aqui temos uma varivel do tipo string,utilizando-se a biblioteca string.h int main() { Bloco de comandos }
printf(\n \a \t Teste ) ; \a \b \f \n \r \t \ \ \\ Entrada formatada de dados scanf(%d,&nome_da_variavel) ; gets(nome_da_variavel) ; // usado no tipo string com sua respectiva biblioteca <string.h> %c %o , %d , %x %u %ld %f , %lf %s %% Um nico caracter Um numero octal,um numero decimal ,um numero hexadecimal Um numero inteiro em base decimal sem sinal Um numero inteiro longo em base decimal Um numero real de preciso simples ou dupla Uma cadeia de caracteres Um nico sinal de porcentagem Soa alarme no computador O cursor retrocede uma coluna Alimenta pgina na impressora O cursor avana uma nova linha O cursor retrocede para a primeira coluna da linha O cursor avana para a prxima marca da tabulao Exibe uma nica aspa Exibe um nico apostrofo Exibe uma barra invertida
Para utilizarmos o tipo char podemos atribuir o valor varivel utilizando-se as funes : #include<conio.h> //Biblioteca de comandos que abriga a funo getche() nome_variavel = getche() ; //mostra a tecla pressionada na tela nome_variavel = getch() ; //no mostra a tecla pressionada na tela nome_variavel = getchar() ;//mostra a sequencia digitada,porem s aceita o primeiro caracter,depois de pressionada a tecla <enter>
Operadores matemticos Varivel++ ou variavel-Incrementa ou decrementa 1 ao valor da varivel , ps incremento,ou seja o valor ser atualizado na varivel na prxima passada do lao (loop) Incrementa ou decrementa 1 ao valor da varivel,pr incremento,ou seja o valor da varivel ser imediatamente atualizado Operador de adio Y=x+z ; Operador de subtracao Y=x-z ; * Operador de multiplicao Y=x*z ; / Operador de diviso inteira Y=x/z ; % Resto da diviso de dois nmeros inteiros Y=x%z ;
++varivel ou variavel
Algumas convenes utilizadas em C: i+=2 o mesmo que i = i+2 ; x*=y+1 o mesmo que x = x*(y+1) ; t/ = 2.5 ; o mesmo que t=t/25 ; p%=5; o mesmo que p=p%5 ;
Operadores relacionais X==y X!=y X<y x>y X<=y x>=y !x Verdade se x for igual a y Verdade se x for diferente de y Verdade se x for menor que y Verdade se x for maior que y Verdade se x for menor ou igual a y Verdade se x for maior ou igual a y Verdade se e s se x for falso Operador not X&&y Verdade se e s se x e y forem verdade Operador AND X || y Verdade se e s se x ou y for verdade Operador OR Obs.:em C no existe o tipo booleano , porem o C interpreta os valores lgicos da seguinte forma:0 falso , qualquer outro valor que no seja 0 ser interpretado como verdadeiro.
while(tecla!='n' && indice<=5) { clrscr() ; printf("\n Forneca o nome do indice %d:",indice) ; gets(nome[indice]) ; printf("\n Deseja continuar (s)im ou (n)ao:") ; tecla=getche() ; printf("\n") ; indice++; } clrscr() ;
if(strcmp(nome[indice],"alexandre")==0)
getche() ;
Operador condicional
(?)
condio ? expressao1 : expressao2 ; Funciona da seguinte forma: 1-avalia a condio 2-se for verdadeira,o resultado final o valor da expresso1 3-se for falsa , o resultado final o valor da expresso2 variavel_a>variavel_b ? (resultado=variavel_a) : (resultado=variavel_b) ; se a for maior que b , resultado=varivel_a seno resultado=varivel_b ;
Uso de switch case #include<stdio.h> #include<conio.h> //Uso de decises multiplas com o comando switch int main() { char tecla_pressionada ; do { printf ("\n Pressione uma tecla entre a e d:") ; tecla_pressionada=getche() ; switch(tecla_pressionada) { case 'a' : { printf("\n Pressionou A!") ; printf("\n Pressionou A mesmo !") ; break ; } case 'b' : printf("\n Pressionou B!") ; break ;
} while(tecla_pressionada != 's') ;
printf("\n Abortagem de programa executada conforme solicitacao...") ; printf("\n Pressione qualquer tecla para terminar!") ; getche() ; }
//Criao do novo tipo de variavel struct tcadastro { char nome[50] ; int escolaridade ; char sexo ; }; //Declarao de vetor com o novo tipo de variavel struct tcadastro cadastro[300] ;
OBSERVAO QUANTO AO ESCOPO DAS VARIAVEIS E SUAS RESPECTIVAS DECLARAES CLASSE LOCAL GLOBAL STATICA PALAVRA AUTO EXTERN STATIC ESCOPO FUNO PROGRAMA FUNO DURAO FUNO PROGRAMA PROGRAMA EXEMPLO AUTO INT N; EXTERN INT N; STATIC INT N;
UMA VARIAVEL ESTATICA TEM O ESCOPO DE UMA LOCAL E A DURAO DE UMA GLOBAL.ISSO QUER DIZER QUE ESSAS VARIAVEIS S SO ACESSIVEIS FUNO QUE AS DECLARA,MAS EXISTEM DURANTE TODA A EXECUO DO PROGRAMA.VARIAVEIS ESTATICAS TEM A VANTAGEM DE SEREM PRIVATIVAS E ,AO MESMO TEMPO,DE MANTEREM SEU VALOR ENTRE UMA CHAMADA E OUTRA DA FUNO.A PALAVRA STATIC DEVE PREFIXAR A DECLARAO DE VARIAVEIS ESTATICAS.
VETORES EM C //Vetores do tipo inteiro com indices pr inicializados #include<stdio.h> #include<conio.c> #include<conio.h> int main() { static int indice ; static int vetor[6] = {0,10,20,30,40,50} ; for (indice=1;indice<=5;indice++) { printf("\n %d-",vetor[indice]) ; } getche() ; }
Matrizes
Matrizes bidimensionais Matrizes de strings Matrizes multidimensionais Inicializao Inicializao sem especificao de tamanho
Matrizes bidimensionais J vimos como declarar matrizes unidimensionais (vetores). Vamos tratar agora de matrizes bidimensionais. A forma geral da declarao de uma matriz bidimensional muito parecida com a declarao de um vetor: tipo_da_varivel nome_da_varivel [altura][largura]; muito importante ressaltar que, nesta estrutura, o ndice da esquerda indexa as linhas e o da direita indexa as colunas. Quando vamos preencher ou ler uma matriz no C o ndice mais direita varia mais rapidamente que o ndice esquerda. Mais uma vez bom lembrar que, na linguagem C, os ndices variam de zero ao valor declarado, menos um; mas o C no vai verificar isto para o usurio. Manter os ndices na faixa permitida tarefa do programador. Abaixo damos um exemplo do uso de uma matriz:
#include <stdio.h> int main () { int mtrx [20][10]; int i,j,count; count=1; for (i=0;i<20;i++) for (j=0;j<10;j++) { mtrx[i][j]=count; count++; printf("\nLinha:%d Col:%d INT:%d",i,j,mtrx[i][j]); } return(0); }
No exemplo acima, a matriz mtrx preenchida, sequencialmente por linhas, com os nmeros de 1 a 200. Voc deve entender o funcionamento do programa acima antes de prosseguir.
Matrizes de strings Matrizes de strings so matrizes bidimensionais. Imagine uma string. Ela um vetor. Se fizermos um vetor de strings estaremos fazendo uma lista de vetores. Esta estrutura uma
matriz bidimensional de chars. Podemos ver a forma geral de uma matriz de strings como sendo: char nome_da_varivel [num_de_strings][compr_das_strings]; A surge a pergunta: como acessar uma string individual? Fcil. s usar apenas o primeiro ndice. Ento, para acessar uma determinada string faa: nome_da_varivel [ndice] Aqui est um exemplo de um programa que l 5 strings e as exibe na tela:
#include <stdio.h> int main () { char strings [5][100]; int count; for (count=0;count<5;count++) { printf ("\n\nDigite uma string: "); gets (strings[count]); } printf ("\n\n\nAs strings que voce digitou foram:\n\n"); for (count=0;count<5;count++) printf ("%s\n",strings[count]); return(0); }
Matrizes multidimensionais O uso de matrizes multidimensionais na linguagem C simples. Sua forma geral : tipo_da_varivel nome_da_varivel [tam1][tam2] ... [tamN]; Uma matriz N-dimensional funciona basicamente como outros tipos de matrizes. Basta lembrar que o ndice que varia mais rapidamente o ndice mais direita.
Inicializao Podemos inicializar matrizes, assim como podemos inicializar variveis. A forma geral de uma matriz como inicializao : tipo_da_varivel nome_da_varivel [tam1][tam2] ... [tamN] = {lista_de_valores}; A lista de valores composta por valores (do mesmo tipo da varivel) separados por vrgula. Os valores devem ser dados na ordem em que sero colocados na matriz. Abaixo vemos alguns exemplos de inicializaes de matrizes:
float vect [6] = { 1.3, 4.5, 2.7, 4.1, 0.0, 100.1 }; int matrx [3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; char str [10] = { 'J', 'o', 'a', 'o', '\0' }; char str [10] = "Joao"; char str_vect [3][10] = { "Joao", "Maria", "Jose" };
O primeiro demonstra inicializao de vetores. O segundo exemplo demonstra a inicializao de matrizes multidimensionais, onde matrx est sendo inicializada com 1, 2, 3 e 4 em sua primeira linha, 5, 6, 7 e 8 na segunda linha e 9, 10, 11 e 12 na ltima linha. No terceiro exemplo vemos como inicializar uma string e, no quarto exemplo, um modo mais compacto de inicializar uma string. O quinto exemplo combina as duas tcnicas para inicializar um vetor de strings. Repare que devemos incluir o ; no final da inicializao.
Inicializao sem especificao de tamanho Podemos, em alguns casos, inicializar matrizes das quais no sabemos o tamanho a priori. O compilador C vai, neste caso verificar o tamanho do que voc declarou e considerar como sendo o tamanho da matriz. Isto ocorre na hora da compilao e no poder mais ser mudado durante o programa, sendo muito til, por exemplo, quando vamos inicializar uma string e no queremos contar quantos caracteres sero necessrios. Alguns exemplos:
char mess [] = "Linguagem C: flexibilidade e poder."; int matrx [][2] = { 1,2,2,4,3,6,4,8,5,10 };
No primeiro exemplo, a string mess ter tamanho 36. Repare que o artifcio para realizar a inicializao sem especificao de tamanho no especificar o tamanho! No segundo exemplo o valor no especificado ser 5.
Funes teis
funo kbhit retorna 0 se o usurio no est precionando nenhuma tecla. Caso contrrio, retorna um valor diferente de 0. Exemplo:
code:
#include <stdio.h> #include <conio.h> void main(void) { printf("Aguardando tecla...%c", '\n'); while (kbhit()==0) { } printf("Tecla precionada! At logo!%c", '\n'); return; }
toupper() ; - transforma a varivel em maisculo #include<ctype.h> Resposta=toupper(getch()) ; tolower();-transforma o character em minuscule Resposta=tolower(getch()) ;
rand() % valor ;
You can make the characters blink by adding 128 to the foreground color. The predefined constant BLINK exists for this purpose. For example: textcolor(CYAN + BLINK);
codigo ascii - deste quadrado ao lado 219 utilize para formar as bordas da tela ou algo parecido printf(%c,219) ;
onde %.2f o 2 significa quantas casas decimais aps a virgula sero mostradas
Usando gets() possvel inserir caracteres pelo teclado at que o Enter seja pressionado. No final da string colocado um terminador nulo e ento a funo retorna.
A funo puts() pode receber os cdigos de barra invertida apresentados na tabela 2 neste artigo e considerada muito mais rpida do que o printf(). O nico problema que puts() trabalha apenas com string de caracteres enquanto que o printf() trabalha com todos os tipos de dados.
for (linha=0;linha<=5;linha++) { for(coluna=0;coluna<=5;coluna++) { gotoxy(1,coluna+1) ; textcolor(randomico()) ; textbackground(randomico()) ; cprintf("\n\rForneca o valor da linha %d,coluna %d:",linha,coluna) ; scanf("%d",&matriz[linha][coluna]) ;
6. strings
6.1 Determinando o tamanho de uma string
Para determinar o tamanho de uma string use a funo strlen( ). Esta funo faz parte do arquivo de cabealho string.h. Sua sintaxe : strlen(string) Exemplo:
/* Determinando o tamanho de uma string usando * a funo strlen() */ #include <stdio.h> #include <string.h> int main() { char string[20]; printf("\n"); printf("Determinando o tamanho de uma string\n"); printf("------------------------------------\n"); printf("\n"); printf("Digite a string :"); scanf("%s",&string); printf("\n"); printf("A string tem %d carateres.\n\n",strlen(string)); return(0);
printf("----------------------------\n"); printf("\n"); printf("Digite string1 :"); scanf("%s",&string1); printf("\n"); printf("string1 = %s\n",string1); printf("string2 = %s\n",strcpy(string2,string1)); return(0); }
#include <stdio.h> #include <string.h> int main() { char string1[20],string2[6]="aeiou"; printf("\n"); printf("Anexando caracteres de uma string em outra\n"); printf("------------------------------------------\n"); printf("Entre com string1 :"); scanf("%s",&string1); printf("\n"); printf("string2 = %s\n\n",string2); printf("string1 + 3 caracteres de string 2 = %s\n",strncat(string1,string2,3)); printf("\n"); return(0); }
int main() { char string[30] = "Teste da funo strchr()."; char *ptr; printf("\n%s\n",string); ptr = strchr(string, 's'); if (*ptr) { printf("\n"); printf("A primeira ocorrncia de s na posio %d\n",ptr string); } else printf("Caractere no encontrado.\n"); } return(0);
Abaixo segue um exemplo com a utilizao da funo contachar(). O exemplo considera que ela faz parte do arquivo de cabealho <samfunc.h>:
#include <stdio.h> #include <string.h> #include <samfunc.h> int main() { char *string[20]; char letra[2]; int nr; printf("Testando a funo contachar()\n"); printf("---------------------------\n"); printf("\n"); printf("Entre com a string :"); scanf("%s",&string); printf("\n"); printf("Entre com a letra :"); scanf("%s",&letra); nr = contachar(string,letra[0]); printf("\n"); printf("Contando o nmero de ocorrncias : %d\n",nr); return(0); }
printf("---------------------\n"); printf("\n"); printf("Entre com a string :"); scanf("%s",&string); printf("\n"); printf("Invertendo ==> %s",strrev(string)); return(0);
#include <stdio.h> #include <string.h> int main() { char string1[20],string2[20]; int retorno; printf("\n"); printf("Comparando duas strings\n"); printf("-----------------------\n"); printf("\n"); printf("Entre com a primeira string :"); scanf("%s",&string1); printf("\n"); printf("Entre com a segunda string :"); scanf("%s",&string2); printf("\n"); retorno = strcmp(string1,string2); if(retorno == 0) printf("As strings so iguais.\n"); else if(retorno < 0) printf("A string1 , maior.\n"); else printf("A string2 , maior.\n"); return(0); }
OBSERVAES: 1. A funo strcmp( ) possui uma variante, a funo strncmp( ) que compara os n primeiros caracteres de duas strings. Sua sintaxe : strncmp(string1,string2,nr_caracteres) 2. Existem ainda as funes stricmp( ) e strncmpi( ) que comparam duas strings sem considerar a caixa das letras (maisculas ou minsculas).
tamanho = strlen(substring); extrai = strstr(string,substring); if(extrai) { for(contador = 0;contador < tamanho; contador++) extrai[contador] = string[(extrai - string) + contador]; extrai[contador] = NULL; return(extrai); } else return(" ");
int main() { char string[20],substring[20]; printf("\n"); printf("Entre com a string :"); scanf("%s",&string); printf("\n"); printf("Entre com a substring :"); scanf("%s",&substring); printf("\n"); printf("substring ==> %s\n",sstr(string,substring)); } return(0);
int main() { char string[20],substring[20],nova[20]; printf("\n"); printf("Entre com a string :"); scanf("%s",&string); printf("\n"); printf("Entre com a substring :"); scanf("%s",&substring); printf("\n"); printf("Entre com a nova substring :"); scanf("%s",&nova); printf("\n"); printf("nova string ==> %s\n",subs_str(string,substring,nova)); return(0); }