You are on page 1of 12

main ( ) { lista de declarações seqüência de comandos }

1. Variáveis:
tipo lista_de_variáveis; tipo nome_da_variável = constante; ->inicialização da variável Tipo Tamanho aproximado em bits Faixa mínima Char 8 -127 a 127 int 16 -32.767 a 32.767 float 32 Seis dígitos de precisão double 64 Dez dígitos de precisão

2. Constantes:
Caracter: envolvidas por apostrofe ‘a‘, ‘%’ Inteiras: 10, -100 Ponto flutuante: 11,123, 0,12E3 String: entre aspas “a” Caracter de barra invertida: Código Significado \n nova linha ( LF) \t tabulação horizontal \¨ ¨ \' ' \0 Nulo \\ barra invertida

3. Vetores:
tipo nome_da_matriz [ tamanho]; - primeiro elemento nome_da_matriz [0] String: vetor de caracteres terminada por ‘\0’. Na declaração sempre usar um caracter a mais p/ o \0.

4. Matrizes:
tipo nome_da_matriz [nro_linhas] [ nro_colunas]; Inicialização de vetores e matrizes: tipo nome_da_matriz [tamanho1]...[tamanhoN] = {lista_de_valores};

5. Ponteiros:
são variáveis que contém endereços a) Declaração: tipo * nome_do_ponteiro; b)Operador &: nome_do_ponteiro = &valor; -> nome_do_ponteiro recebe o endereço da variável valor; c)Conteúdo armazenado endereçado por ponteiro: valor_aux = * nome_do_ponteiro; -> valor_aux recebe o valor apontado pelo ponteiro * nome_do_ponteiro.

-> declara um estrutura de variaveis com 50 posições. printf ( "%d". Operadores: Atribuição: nome_da_variável = expressão. struct <nome> { <tipo> <nome_da_variavel_1>. Usando ponteiros para estruturas: para que o ponteiro declarado aponte para uma estrutura. . pt_funci->idade = 21. <tipo> <nome_da_variavel_2>. * pt) *** 7. Aritiméticos: Operador Ação subtração. Por exemplo: gets ( pt_funci->nome). também + adição * multiplicação / divisão % resto -decremento ++ incremento Precedência: Mais alta ++ -*/% Mais baixa +Verdadeiro e falso: verdadeiro é qualquer valor diferente de zero Operadores relacionais: . Por exemplo: struct funcionario * pt_funci.d)Inicialização: ponteiros podem ser inicializado com a constante NULL.<nome_do_elemento> Pode-se utilizar estruturas em matrizes: struct funcionario funcis [ 50]. x. utiliza-se o operador &: pt_funci = & funcis [ 0]. e)Para acessar o primeiro endereço de um vetor: elem=valores[0]. Declarando um ponteiro para estrutura: declara-se ponteiros para estruturas colocando um * após o nome da estrutura (que identifica a definição da estrutura). Referenciando elementos de estruturas: <nome_da_variavel_estrutura>. } <variáveis estrutura>.. deve-se usar o operador -> ( sinal de menos seguido pelo de maior que). printf ( “%d”. Para acessar os elementos de uma estrutura usando um ponteiro. pt = & x. pt_funci->idade). pt_funci->end). fornecendo uma maneira conveniente de se ter informações relacionadas agrupadas. Estruturas: é uma coleção de variáveis. 6. <tipo> <nome_da_variavel_3>.. printf ( "%s". ou elem = * valores. int * pt. que podem ter tipos diferentes e que são referenciadas por um nome comum.

. . else { comando... comando}. Condicionais: IF: a) b) if ( expressao) comando. SWITCH: switch ( expressao) { case constante1: seqüência de comandos break. c) IF/ELSE: if ( expressao) comando. if ( expressao) comando. else if ( expressao) comando. else comando.Operador > >= < <= == != Operadores lógicos: Operador && || ! Precedência: maior Ação Maior que Maior ou Menor que Menor ou Igual Diferente Ação AND OR NOT ! > >= < <= == != && menor || 8. else if ( expressao) comando. comando}. else comando. if ( expressao) { comando.

Se houver laços aninhados.. >] } Passagem de argumentos por valor e por referência: . Comandos de interação: For: for ( inicialização. 10. >] [< return ( valor). Continue: Trabalha semelhante ao break. While: while ( condição) comando. condição. . [<tipo>] <nome_da_funcao> ( [<lista de parametros>]) { [< declaracao de variaveis locais. . Do While: do { comando. } while ( condição). pulando qualquer código intermediário. No while e do-while. Comando de desvio: Break: força a terminação imediata do laço. continue faz com que o teste condicional e o incremento do laço sejam executados. só que. provoca a próxima iteração do laço. 11. um comando break provoca a saída apenas do laço mais interno. >] [< comandos. Funções: são os blocos construcionais de C e o local onde toda a atividade do programa ocorre. ao invés de forçar a terminação. O programa retorna ao comando seguinte ao laço.case constante2: seqüência de comandos break. default: seqüência de comandos } 9. o controle do programa passa para o teste condicional. No for. incremento) comando.

o endereço de um argumento é copiado no parâmetro. quando é necessário um tipo de dado diferente. Protótipos permitem que C forneça uma verificação mais forte de tipos. deve ser dada à função um especificador de tipo explícito. d) Comando return: O comando return não é obrigatório. f) Funções que não devolvem valores inteiros: quando o tipo da função não é explicitamente declarado.a) Por valor . Se ele não aparecer na função. apenas um deles será executado. Da mesma forma. deve-se usar. alterações no parâmetro afetam a variável usada para chamar a rotina. o ponteiro para a matriz. ou seja. e) Funções do tipo void: são funçoes que não retornam valores. Assim. Apenas as funções que não são declaradas como void podem ser usadas como operando em qualquer expressão válida de C. A função deve receber o argumento num ponteiro do tipo apropriado. que é int. uma função pode conter vários comandos return. ela retornará após a execução do seu último comando. o compilador C atribui automaticamente a ela o tipo padrão. g) Protótipos de funções: é uma declaração expandida da função que abrange a quantidade e os tipos de argumentos que esta vai receber. como argumento. Obviamente. o processo envolve dois passos: · primeiro.nesse. No entanto. b) Por referência . · segundo. Dentro da função. . alterações feitas nos parâmetros não têm efeito nas variáveis usadas para chamá-la. Deve-se passar para a função o endereço da variável ( operador &) e esta deve receber o argumento num ponteiro do tipo apropriado. o seu identificador ( nome da matriz). o endereço é usado para acessar o argumento real.esse método copia o valor de um argumento no parâmetro formal . o tipo da função deve ser identificado antes da primeira chamada feita a ela. Assim. h) Funções que retornam ponteiros: são manipuladas da mesma forma que qualquer outro tipo de função. c) Chamando funções com matrizes: para passar matrizes para funções.

x ++) printf ( "%d ". printf ( "O valor da variavel double e: %e\n". fora: %d\n". -> o detalhe deste comando é que cont_t e cont_ind foram declaradas int e não float 3. printf("A media aritmetica e: %f\n". y = x * x.idade). real2). Saída de dados na tela: printf ( "\n"). for ( x = 1.Exemplo de instruções: 1. printf ( "O valor da variavel float e: %f\n". -> conversão de string para int data = aux [ 0]... -> entrada como string data = atoi ( aux). fora). -> imprime variáveis estrutura com indice printf ( "O numero de pessoas eh: %d. printf ( "O valor da variavel inteira e: %d\n". ( ( float) cont_t / cont_ind)). -> imprime um string de uma variável estrutura printf ( "%d". x != y.dentro. cont_t. printf ( "Resto: %d\n". func_003. -> ponto flutuante printf(“ Valor armazenado: %d \n”. gets ( aux). x <= 100. acumulador /nro_valores). printf ( "Divisao: %d\n". *ponteiro_valor). -> imprime o valor apontado por um ponteiro printf ( "%d". -> imprime um valor de uma variável estrutura printf ( "%s". x ++). Entrada de dados: char aux [ 100].nome [ i]). ch). for ( x = 1. printf ( "\nO numero de negativos e: %d\n".idade). -> entrada de dados numa variavel estrutura char gets ( aux). func. func_001. x <= 100. x ++) { y = x * x. ->armazena o valor em um vetor gets ( func. a / b). x.end). real1). a % b). printf ( "%d = %d / ". y = 101.end. -> conversão de string para float ou double vet [ i] = atoi ( aux).idade = atoi ( aux). -> data recebe apenas um caracter data = atof ( aux). } x = 1.nome). -> linha em branco printf ( "O valor da variavel caracter e: %c\n". . func_002. -> imprime variavel estrut. ->imprime a posição 3 da variavel estrutura printf ( "\n %s %s %d \n". func_002. i). printf("\nDentro do intervalo [10.nome. func_002. func_002. 2) . -> entrada de dados numa variável estrutura int 2. y). printf ( " %c ".cont_negativos). e o percentual eh: %f\n". x).idade).20]: %d. Loop: 1) for ( x = 1. printf ( "Entre com um numero: "). funcis [ 2].

x < 100 && y < 1000.nome).) { if ( ++ n > 100) break. n). .5 && media < 9. } While: 1) char ch. for ( i = 0. i ++) { printf ( "Entre com um numero: "). } 6) for ( i = 0. } 5) Faz uma pesquisa num vetor variaveis estrutura for ( i = 0.) { printf ( " x = %d e y = %d | ". i ++) printf ( "%c".for ( . y = x * x. printf ( "%d ". for ( . char ch. } 3) int n = 0. int cont_negativos = 0. while ( ch != 'a') { ch = getch ( ). y). } 2) . i ++) { if ( ( indvs [ i]. func_001. gets ( aux).sexo == 'm' || indvs [ i]. i < 10.idade <= 30)) cont_m1830++.nome [ i]). n). printf ( "%d ". ch). i < cont_ind. if ( a >= 10 && a <= 20) dentro ++. while ( ch != 'a') ch = getch ( ). -> imprime uma variável estrutura caracter a caracter 4. … if ( a < 0) cont_negativos ++. for ( n = 1. x. ch = 'a'.idade >= 18 && indvs [ i]. ch = 'a'. else fora ++. a = atoi ( aux). n <= 100. i < strlen ( func_001. x ++. n ++) { if ( n % 2) continue.sexo == 'M') && ( indvs [ i]. } 4) int n. Testes condicionais: if ( media >= 7.0) conceito = 'B'. printf ( "Foi teclado %c\n".

-> ponteiro_valor recebe o endereço da variável valor ponteiro_novo = ponteiro_valor. * pt_aux.. quantidade = atoi ( aux)..qtde + quantidade. Alocação dinâmica de elementos de um vetor: int tam. do { ch = getch ( ). 20. printf ( "Entre com a quantidade. gets ( aux). 30}. *ponteiro_novo. int valor. ch = 'a'. ch).. -> copia o valor de um ponteiro p/ outro.. . gets ( aux). vetor_inteiros[4] = {0. valor = 10. -> aux recebe o endereço inicial do vetor while ( * aux) printf ( "%c". ponteiro_valor = &valor. aux = frase.. Ponteiros: .. gets ( aux).qtde + quantidade. gets ( frase).qtde + quantidade. /* igual a: ponteiro = &vetor_inteiros[2]. break. *ponteiro). break. int i. 10. * aux ++).: ").. *ponteiro_valor.. } } while ( 1). * vet.. char aux [ 10]. . printf ( "Foi teclado %c\n"..qtde = prod [ 1]. -> imprime até que o valor do vetor for diferente de \0 5) do { printf ( "Entre com o codigo. case 3: prod [ 2]. case 2: prod [ 1]. ponteiro = &vetor_inteiros[0]. if ( codigo_informado < 1 || codigo_informado > 3) break.: "). 5. printf ( "Entre com o numero de elementos do vetor: "). int *ponteiro.. *ponteiro_novo). } while ( ch != 'a'). printf(“Valor armazenado: %d \n”. codigo_informado = atoi ( aux).. * aux. break. switch ( codigo_informado) { case 1: prod [ 0].qtde = prod [ 0].. */ printf(“Valor apontado: %d \n”. 4) while com ponteiros char frase [ 255].qtde = prod [ 2]. printf ( "Entre com uma frase qualquer: ").3) char ch. ->ponteiro recebe o endereço inicial do vetor ponteiro+= 2..

* aux. char end [ 50]. } for ( i = tam .. }. str [ i]). char end [ 50]. Estruturas: 1) struct funcionario { char nome [ 50]. char aux [ 10]. i --) { printf ( "%c". -> alocação dinâmica de vetores . free ( vet). gets ( frase). char **argv) { struct funcionario { char nome [ 50]. for ( i = 0. struct funcionario funcis [ NRO_FUNCIS]. int idade. vet = ( int *) malloc ( tam * sizeof ( int)). }. i < tam. int idade. for ( i = 0. ->liberar a memória no final da execução Imprime a frase um caracter por vez até que aux seja igual a \0 char frase [ 255]. struct funcionario func. tam.1. tam = strlen ( str). strcpy ( str. } func_001. int i. i >= 0. while ( * aux) printf ( "%c". 2) Estruturas com ponteiro: #define NRO_FUNCIS 3 int main(int argc. str [ i]). printf ( "Entre com uma frase qualquer: "). Grava a frase no vetor str e imprime caracter a caracter do primeiro ao ultimo e invertido: int i. char end [ 50]. i ++) { printf ( "%c". int idade. } 6.. aux = frase. "Este e o texto"). i < NRO_FUNCIS. struct funcionario { char nome [ 50]. struct funcionario * pt_funci. i ++) { .tam = atoi ( aux). * aux ++). char str [ 15].

end). } 2) Passagem de parâmetros através de ponteiros: int quadrado ( int *). return ( res). int -> declaração da variavel return mul ( int a.nome). res = a * b. printf ( "O resultado eh: %d\n". } int main( ) { int num = 5. y = 10. printf ( "%d \n". } int main( ) { int x = 10. %d : ". funcis [ i]. int). gets ( aux). } float mul ( float. Funções: 1) Passagem de parametros através de variaveis int mul ( int. i ++) { printf ( "%s\t".end). mul ( x. printf ( "%s\t". y)). pt_funci->idade). int b) { int res. funcis [ i]. return ( * x). printf ( "%d \n". printf ( "Idade. getch ( ). return ( res). i < NRO_FUNCIS. gets ( funcis [ i]. pt_funci->nome).0. y)). int quadrado ( int * x) { * x = * x * * x. } int main( ) { float x = 10. quadrado ( & num)). float mul ( float a. getch ( ). funcis [ i].idade).idade = atoi ( aux). printf ( "O resultado eh: %f\n". printf ( "%s\t". printf ( "%d\n". printf ( "%s\t". printf ( "End.0. mul ( x. . funcis [ i]. %d : ". i). } 7. float b) { float res. y = 10. i). } pt_funci = & funcis [ 1]. res = a * b. gets ( funcis [ i]. pt_funci->end). printf ( "%d\n".nome).printf ( "Nome. i). num). -> o valor de num será substituido pelo quadrado getch ( ). float). %d : ". } for ( i = 0.

if ( eh_positivo ( num)) printf ( "%d eh positivo\n". printf ( "O maior valor do vetor eh: %d\n". num). } int -> tipo da função maior (int vet [ ]. 15. for ( i = 1. i. int pos = 5. getch ( ). str [ i]. 10. -> chamada da função getch ( ). i ++) if ( vet [ i] > maior) maior = vet [ i]. int pos). } int main( ) { char string [ ] = "Testando". } . i ++).} Usando vetores e ponteiros para achar o maior valor: int maior ( int * vet. int pos) -> também pode ser int * vet -> nome da função e os parâmetros { int maior. getch ( ). num). } int eh_positivo ( int x) { if ( x >= 0) return ( 1). i < pos. } Função sem variável de retorno: int eh_positivo ( int). -> declaração de variáveis internas da função maior = vet [ 0]. return ( i).> declaração da função na rotina principal int main( ) { int vetor [ ] = { 112. . else return ( 0). maior ( vetor. } Usando strings: int tam_str ( char * str). int main( ) { int num = 10. for ( i = 0. 25. 9}. else printf ( "%d eh negativo\n". return ( maior). tam_str ( string)). pos)). int tam_str ( /* char * str */ char str [ ]) { int i. printf ( "O tamanho da string eh: %d\n".

numb). getch ( ). } . } int main( ) { int numa = 5. char). getch ( ). * pt.Retorno de uma função usado numa expressão: int quadrado ( int). return ( x). printf ( "%d \n". pt ++) if ( * pt == c) return ( pt). for ( . return ( NULL). } int main( ) { printf ( "Comecando pelo caracter %s\n". int quadrado ( int x) { x = x * x. } Função que retorna NULL: char * comeca_em ( char *. 's')). comeca_em ( "testando". numb. numb = quadrado ( numa) + 1. char c) { char * pt = str. char * comeca_em ( char str [ ] /* char * str */.