Professional Documents
Culture Documents
Em C todas as aes ocorrem dentro de funes. A funo main sempre a primeira a ser executada. Com exceo da funo principal main, uma funo s pode ser usada dentro de outra funo. Com funes projetadas adequadamente, possvel, ignorar como uma ao feita; saber o resultado suficiente.
Funes so blocos de cdigo que podem ser nomeados e chamados de dentro de um programa. Forma geral: valor_retornado nome_funo ( parmetros ) { declaraes comandos } Exemplos de Algumas Funes da linguagem C (funes pr-definidas) Para utilizar funes pr-definidas nos programas, preciso incluir no incio do programa a biblioteca na qual est definida a funo.
Obs.: para que nenhum lixo do buffer de teclado atrapalhe o uso da funo getchar(), coloque fflush(stdin)(em Windows) ou __fpurge(stdin) (em Linux) antes da leitura do caracter. int putchar(int c); atalho para putc(ch, stdout) envia um nico caracter, c, para o dispositivo de sada padro sintaxe: putchar(c);
Exemplo: #include <stdio.h> int main() { char caracter; printf("Entre com um caracter :"); caracter = getchar(); printf("\nExibindo o caracter com putchar: "); putchar(caracter); return(0); } Obs.: Todos os comandos para vdeo e teclado so simplificaes dos comandos para arquivos. Quando um programa inicia, o sistema operacional responsvel por abrir trs arquivos: arquivo de entrada padro (stdin), saida padro (stdout) e erro padro (stderr). stdout e sterr so direcionados para o vdeo e stdin direcionado para o teclado.
e texto em nmeros, alocao de memria, nmeros aleatrios; e outras funes com vrias finalidades.
Algumas funes: int abs(int x); retorna o valor absoluto de x sintaxe: abs(x); Exemplo: int rand (void); devolve um nmero inteiro (pseudo)aleatrio entre 0 e RAND_MAX inclusive, (#define RAND_MAX 32767), ou seja, um nmero inteiro no intervalo fechado [0,RAND_MAX]. Uso tpico: i = rand (). sintaxe: rand(); A funo rand() gera uma sequncia de valores que se repete sempre que o programa executado. void srand (unsigned int x); define uma "semente" para a funo rand. Ela deve ser chamada antes do primeiro uso de rand para que a seqncia de nmeros devolvidos por rand no seja sempre a mesma. sintaxe: srand(x); int system(const char *command); command uma string que contm o nome do comando. sintaxe: system(comando) system() uma chamada ao sistema Exemplo: system(cls); //limpa tela
3) <time.h> - Contm prottipos e tipos de funes para manipular horrios e datas. time_t time(time_t *tp ); retorna a hora em segundos. uso tpico: tempo = time(NULL) double difftime(time_t hora2, time_t hora1 ) retorna a diferena hora2-hora1 em segundos, onde hora2 e hora1 so variveis do tipo tempo (time_t) sintaxe: difftime(hora2, hora1) Se a inteno gerar uma seqncia diferente de nmeros aleatrios sempre que o programa executado, e que no haja necessidade de mudar mecanicamente a semente, podemos usar a funo time() da seguinte forma: srand(time(NULL)); Exemplo: #include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ int i, vet[10], tempo, valor, a=0, p=0, logico; time_t tinicio, tfim; /* variaveis do "tipo" tempo */ printf("Inicio do jogo\n"); tinicio = time(NULL); /* marca o tempo inicial */ do{ /* Inicializa o gerador de numeros aleatorios */ srand(time(NULL)); /* Carregando o vetor com dez numeros aleatorios entre 1 e 10 */ for(i=0; i<10; i++){ vet[i] = rand()%10+1; /* gera numeros aleatrios entre 1 e 10 */ } printf("\nEscolha um valor entre 1 e 10: "); scanf("%d",&valor); /* calcula quantas vezes o valor aparece na sequencia */ for(i=0; i<10; i++){ if(valor==vet[i]) a++; } if(a) printf("\nVoce marcou %d ponto(s)!", a); /* a diferente de zero */ else printf("\nVoce nao marcou pontos! Este valor nao esta na sequencia!"); printf("\n\nSequencia: "); for(i=0; i<10; i++){ printf("%d ",vet[i]); } p+=a; /* acumula os pontos */ a=0; /* zera os pontos para uma nova jogada */
printf("\n\nDigite 0 (zero) para terminar o jogo\nou qualquer outro valor para continuar jogando: "); scanf("%d", &logico); }while(logico); tfim = time(NULL); /* marca o tempo final */ tempo= difftime(tfim, tinicio); /* marca a diferena tfim-tinicio */ printf("\nFim do jogo\n"); printf("Total de pontos: %d\n", p); printf("\n\nVoce jogou em %d segundo(s).\n", tempo); return 0; } NULL (zero) pointer value(Valor de ponteiro NULO).
A constante simblica NULL normalmente usada no lugar de zero, indica que este um valor especial para um ponteiro. Qualquer ponteiro pode ser comparado com o valor NULL.
double pow (double x, double y); xy (erro de domnio se x=0 e y<=0, ou se x<0 e y no for inteiro) sintaxe: pow (x, y); double ceil (double x); menor inteiro no menor que x (teto x) sintaxe: ceil (x); double floor(double x); maior inteiro no maior que x (piso x) sintaxe: floor(x); double fabs(double x); valor absoluto de x, |x| sintaxe: fabs (x);
int getche(void) l um caracter do teclado imprimindo-o na tela. sintaxe: getche() int getch(void) apenas l o caracter do teclado (sem imprimi-lo) sintaxe: getch(); Exemplo: #include <stdio.h> #include <conio.h> int main ( ){ char car1, car2; clrscr();//limpa a tela printf ( Digite um caracter\n); car1 = getche( ); printf ( Voc digitou %c\n\n, car1); printf ( Digite um outro caracter\n); car2 = getch( ); printf ( Voc digitou %c\n\n, car2); retun 0; } Executando: Digite um caracter: a Voc digitou a Digite um outro caracter: Voc digitou b Bibliografia HICKSON, Rosngela. Aprenda a programar em C, C++ e C#. Ed. Campus, 2002. GOTTFRIED, B. S. Programando em C. Editora LTC, 1993. KERNIGHAN, B. W., RITCHIE, D. M. C: A linguagem de programao Padro ANSI. Ed. Campus, 1989.