Turbo C - Parte 2 - Turbo c
Turbo C - Parte 2
Apostila de Linguagem de Programação "C" - Módulo I
. Conceituação . Passagem de parâmetros por valor; . Passagem de parâmetros por referência.
. Operadores associados a ponteiros;
. Ponteiros e Matrizes 3. Tipos Estruturados
. Estruturas; . Uniões; . Enumeração e
. Tipo Definido.
. Operações Básicas com arquivos; . Operações Básicas com registros; . Modos de acesso a registros.
As funções permitem ao programador separar um programa longo em várias partes menores, cada qual com uma finalidade específica, tornando assim o programa modular. Além desta vantagem podemos destacar outras como: a repetição das mesmas instruções de programa em diferentes pontos do programa, clareza na representação de lógica, portabilidade no caso da criação de bibliotecas e etc.
Sendo assim a função é um seguimento independente do programa que executa uma tarefa específica. Todo o programa em "C" é formado por uma ou mais funções. Uma dessas funções deve ser a função main(). As funções adicionais do programa estarão subordinadas à função main() ou a alguma outra função. Se um programa contém várias funções, suas definições podem aparecer em qualquer ordem. Uma função será executada quando for chamada. Após a execução, o controle retorna para o ponto no qual a função foi chamada.
Forma Geral:- tipo nome_da_função (lista de parâmetros) { corpo da função; }
tipo – define o tipo da informação que a função vai retornar, podendo ser qualquer tipo válido. Se nenhum tipo for especificado o compilador assume que a função devolve um resultado inteiro (default), quando a função não retorna nenhum resultado coloca-se void;
Apostila de Linguagem de Programação "C" - Módulo I nome_da_função – identificador criado pelo programador; lista de parâmetros – são as informações passadas para a função também conhecidas como argumentos. Uma função pode não conter argumentos, lista vazia entre parênteses. Todos os parâmetros da função devem conter o tipo e o nome da variável.
As variáveis declaradas dentro de uma função não podem interagir com o código ou os dados definidos em outra função, conceito de variáveis locais.
O padrão ANSI expandiu a declaração de funções colocando-se a utilização de protótipos. Sua finalidade é a de informar ao compilador a existência de outras funções no programa além da função main(). Isto faz com que o compilador avalie os tipos especificados nos parâmetros evitando incompatibilidade de tipo na chamada a função.
void tela1(); // protótipo da função tela1()
void tela2(); // protótipo da função tela2()
gotoxy(20,10);printf("Digite o Registro Acadêmico ");
gotoxy(20,12);printf("Digite o nome do aluno ");
gotoxy(20,14);printf("Digite a média do aluno ");
void tela1() { clrscr(); } void tela2() { clrscr();
gotoxy(20,10);printf("A média geral da classe é ");
A função pode retornar um tipo de dado através do comando return. Esse comando tem dois importantes usos: provoca uma saída imediata da função retornando ao código chamador e ele pode ser usado também para devolver uma informação. Todas as funções podem devolver uma informação exceto as do tipo
Apostila de Linguagem de Programação "C" - Módulo I void (vazio). O default é o tipo int, ou seja, uma função para a qual não declaramos o tipo de retorno é considerada como retornando um inteiro.
Além de retornar informações as funções podem receber informações através dos argumentos (passagem de parâmetros).
Exemplo1:- O programa abaixo verifica se um número é par ou ímpar. #include <stdio.h>
{ int num,resp;
else printf(" O número é par!! \n");
#include <conio.h> int verifica( int a); int verifica ( int a) if (a % 2) return (0); else return (1); } void main() clrscr(); printf("Entre com um numero inteiro : "); scanf("%d",νm); resp=verifica(num); if (resp==1) printf(" O número é impar !! \n"); }
Exemplo2:- O programa abaixo retorna o quadrado de um número dado.
#include <stdio.h> #include <conio.h> int quadrado( int x);
void main() clrscr(); printf("Entre com um numero inteiro : "); scanf("%d",&n); printf(" \n\n O quadrado do número é : %d", quadrado(n)); }
int quadrado( int x)
Em "C" podemos ter dois tipos de parâmetros: passagem de parâmetros por valor e passagem de parâmetros por referência.
Na passagem de parâmetros por valor as informações dos parâmetros são copiadas para a função receptora. As alterações nesses parâmetros não tem nenhum efeito na função de origem da informação.
Na passagem de parâmetros por referência, é enviado o endereço do parâmetro para a função receptora, dessa forma o endereço é usado para acessar as informações originais. Isto significa que qualquer alteração efetuada no parâmetro estará modificando o conteúdo original da informação enviada.
Exemplo3:- O exemplo abaixo envia duas variáveis numéricas para uma função utilizando passagem de parâmetros por referência.
#include <stdio.h> #include <conio.h> void calculo (int *a,int *b); void main() { int num1=100,num2=200; calculo (νm1,νm2); printf("\n Os valore atuais de num1= %d e num2 = %d",num1,num2); } void calculo (int *a, int *b) { *a = *a *2;
O resultado será: num1=200 e num2=150;
Exemplo4 :- O programa abaixo lê uma string e conta quantos caracteres são dígitos, quantos são vogais, quantos são consoantes e quantos são espaços em branco. O exemplo usa passagem de parâmetros e aritmética de ponteiros
#include <conio.h> #include <ctype.h> void analisa (char linha[], int *pv, int *pc,int *pd, int *pb, int *po); void main() { char linha[80]; int vogais=0,consoantes=0,digitos=0,brancos=0,outros=0; clrscr(); printf("Digite uma linha de texto:\n"); gets(linha); analisa(linha, &vogais, &consoantes, &digitos, &brancos,&outros); printf("\n No de vogais: %d",vogais); printf("\n No de consoantes: %d",consoantes); printf("\n No de digitos: %d",digitos); printf("\n No de brancos: %d",brancos); printf("\n No de outros: %d",outros); getchar();getchar(); } void analisa (char linha[], int *pv, int *pc, int *pd, int *pb, int *po) { char c; int cont=0; while ((c=toupper(linha[cont])) != '\0') { if (c=='A' || c=='E' || c=='I' || c=='O'|| c=='U')
Exemplo5:- O programa abaixo lê um vetor de números inteiros e eleva cada um dos seus elementos ao quadrado armazenado o resultado no próprio vetor. Os elementos do vetor são enviados um por um para uma função que calcula o quadrado do número.