You are on page 1of 6

UNIPLI Linguagem de Programao I Professora Simoni Rangel de Freitas Oliveira

Principais funes da linguagem C Utilizando funes

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.

1) <stdio.h> - Contm prottipos de funes da biblioteca padro de entrada/sada e as


informaes utilizadas por elas. Algumas funes: printf mostra dados formatados no dispositivo de sada padro scanf l dados formatados do dispositivo de entrada padro int getchar(void); atalho para getc(stdin)

l um caracter individual do dispositivo de entrada padro sintaxe: getchar();

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);

UNIPLI Linguagem de Programao I Professora Simoni Rangel de Freitas Oliveira

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.

2) <stdlib.h> - Contm prottipos de funes variadas para: converso de nmeros em texto

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

UNIPLI Linguagem de Programao I Professora Simoni Rangel de Freitas Oliveira

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 */

UNIPLI Linguagem de Programao I Professora Simoni Rangel de Freitas Oliveira

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.

4) <math.h> - Contm prottipos de funes da biblioteca matemtica.


Algumas funes: double sin (double x); seno de x sintaxe: sin(x); double cos (double x); co-seno de x sintaxe: cos(real); double tan (double x); tangente de x sintaxe: tan(x); double sqrt (double x); raiz quadrada de x (x>=0) sintaxe: sqrt(x); double exp (double x); ex (e aproximadamente 2,718) sintaxe: exp(x); double log (double x); ln(x) (logaritmo natural- base e) (x>0) sintaxe: log (x); double log10 (double x); log10(x) (logaritmo base 10) (x>0) sintaxe: log10 (x);

UNIPLI Linguagem de Programao I Professora Simoni Rangel de Freitas Oliveira

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);

5) <ctype.h> - Contm prottipos de funes e macros que permitem verificar se um


determinado caracter ASCII, se numrico, se maiscula, minscula, etc. Algumas funes: Considere c um caracter no formato inteiro int isalnum(int c); verifica se o caracter alfa-numrico. devolve zero (falso) se no for caracter alfa-numerico e um valor no-zero se for. int isalpha(int c); verifica se o caracter uma letra (A-Z ou a-z) ou no. devolve zero se no for uma letra e um valor no-zero se for. int isdigit(int c); verifica se o caracter uma algarismo (0-9) ou no. devolve zero se no for um algarismo e um valor no-zero se for. int islower(int c); verifica se o caracter uma letra minscula. devolve zero se no for (0-verdadeiro)um valor no-zero se for(!0-verdadeiro). int isupper(int c); verifica se o caracter uma letra maiscula. devolve zero se no for (0-verdadeiro)um valor no-zero se for(!0-verdadeiro). int tolower(int c); converte uma letra para o formato minsculo. int toupper(int c); converte uma letra para o formato maisculo. A Biblioteca conio.h - con(console) para compiladores DOS ou Windows no padro. Geralmente as funes desta biblioteca no esto disponvel em ambiente Unix (compiladores cc e gcc. Algumas funes da biblioteca conio.h: void clrscr (void); limpa a tela.

UNIPLI Linguagem de Programao I Professora Simoni Rangel de Freitas Oliveira

sintaxe: clrscr ();

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.

You might also like