Buscar

Parte 1 _ Funções

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Prof. Edson J. R. Justino
Prof. Claudio Carvilhe
Parte 1
Pontifícia Universidade Católica do Paraná - PUCPR
Sub-Rotinas
� Sub-rotinas, também chamadas de 
subprogramas, são blocos de instruções que 
realizam tarefas específicas. O código de uma 
sub-rotina é carregado uma vez e pode ser 
executado quantas vezes for necessário.
� Desta forma os programas tendem a ficar 
menores e mais organizados.
� De maneira geral os programas são 
executados linearmente até o fim. Entretanto, 
quando são utilizadas sub-rotinas, é possível 
a realização de desvios na execução do 
programa principal. 
Sub-Rotinas em C
� Um importante recurso apresentado nas 
linguagens de programação é a 
modularização. 
� A linguagem C possibilita a 
modularização por meio de funções.
� Um programa em C possui no mínimo 
uma função (main), por onde a 
execução do programa começa. 
Sub-Rotinas em C
� Existem muitas outras função predefinidas 
na linguagem C, por exemplo, printf, scanf, 
gets, puts e outras. Estas funções são 
adicionadas aos programas pela diretiva 
#include e no momento da link edição 
através da chamada às bibliotecas.
� O usuário também pode criar quantas 
funções quiser, dependendo do problema 
que está sendo resolvido pelo programa.
Sub-Rotinas em C
� As Sub-Rotinas em C são chamadas 
Funções
� Passagem de Parâmetros e tipo de 
retorno
� Cada função pode receber vários valores 
(parâmetros) e pode devolver um valor 
(retorno).
� Dessa maneira, quando se especifica uma 
função deve-se deixar claro qual será o tipo 
de retorno e quais os parâmetros
necessários para a execução da função.
Sub-Rotinas em C
� Exemplo 1:
int soma (int a, int b){
int s;
s = a + b;
return s;
}
Dados de EntradaDado de Saída
Indicação do dado de saída
Sub-Rotinas em C
� Exemplo 2
float divisao (int dividendo, int divisor){
float q;
q = dividendo / divisor;
return q;
}
Dados de Entrada
Dado de Saída
Indicação do dado de saída
Sub-Rotinas em C
� Exemplo 3
int main(int argc, char *argv[]){
int i;
if (argc != 2){
printf(“ Número de parâmetros incorreto!\n);
return -1;
}
for (i= 0; i <= argc ;++i){
printf(“argv[%d] -> \”%s\”\n”,i, argv[i]);
}
printf(“\n”);
return 0;
}
Dados de Entrada
Dado de Saída
Indicação do dado de saída
Indicação do dado de saída
Sub-Rotinas em C
� Podemos resumir função então, em um conceito mais 
moderno, como sendo um trecho independente de programa 
com atribuições definidas.
� A função, uma vez desenvolvida e testada, passa a ser 
completamente transparente ao usuário, que só necessita 
saber sua utilidade, entrada e saída.
Sintaxe:
Qualquer função em C tem o seguinte formato:
tipo de retorno nome (declaração dos tipos de parâmetros) 
{
[ declaração de variáveis locais]
comandos
}
Funções
� Em C uma função pode retornar apenas um valor ou nenhum. Este 
retorno é feito pelo comando return.
#include <stdio.h>
long pot(int, int);
long resposta;
void main( ) {
int a, b;
a = 10; b = 3;
resposta = pot(a, b);
printf(“%d\n”,resposta);
}
long pot (int x, int y) {
long i, potencia = 1;
for (i = 0; i < y; i++)
potencia *= x;
return(potencia);
}
Função main(){
Resposta = Pot()
}
Função Pot(){
Return(potência)
}
Que tipo de dado a 
função retorna ?
p/ main()
p/ S.O.
Chamando um função em C
sem parâmetros de passagem
#include <stdio.h>
#include <stdlib.h>
// Declaração do cabeçalho da função
void pot(void);
//Função principal
int main( ){
pot();
return 0;
}
// Inicio da Função
void pot(void) {
int i,potencia = 1;
int x=2, y=3;
for (i = 0; i < y; i++)
potencia *= x; // potência = potência * x 
printf("%d\n",potencia);
system("PAUSE");
}
OBS: Quando as funções 
precederem a função 
principal o cabeçalho 
pode ser omitido
Chamando um função em C
sem parâmetros de entrada e com retorno
#include <stdio.h>
#include <stdlib.h>
int pot(void);
int main( ){
int c;
c = pot();
printf("%d\n",c);
system("PAUSE");
return 0;
}
/* Inicio da Função*/
int pot(void) {
int i,potencia = 1;
int x=2, y=3;
for (i = 0; i < y; i++)
potencia *= x; // potência = potência * x
return potencia;
}
#include <stdio.h>
#include <stdlib.h>
void pot(int, int);
int main( ){
int a, b;
a = 10;
b = 3;
pot(a,b);
return 0;
}
// Inicio da Função
void pot(int x,int y) {
int i,potencia = 1;
for (i = 0; i < y; i++)
potencia *= x; // potência = potência * x 
printf("%d\n",potencia);
system("PAUSE");
}
Chamando um função em C
sem parâmetros de saída e com entrada
#include <stdio.h>
#include <stdlib.h>
int pot(int, int);
int main( ){
int a, b, c;
a = 10;
b = 3;
c = pot(a,b);
printf("%d\n",c);
system("PAUSE");
return 0;
}
// Inicio da Função
int pot(int x,int y) {
int i,potencia = 1;
for (i = 0; i < y; i++)
potencia *= x; // potência = potência * x 
return potencia;
}
Chamando um função em C
com parâmetros de saída e com entrada
Sub-Rotinas em C -
exercícios
� 1) Faça uma função em 
C que retorne 1 se o 
número passado como 
parâmetro for positivo e 0 
se negativo. Os 
parâmetros devem ser 
valores inteiros.
int pos_neg (int val){
if (val < 0)
return 0;
else
return 1;
}
Sub-Rotinas em C -
exercícios
� 2) Faça uma função em 
C que receba dois 
números inteiros e 
positivos por parâmetro 
e retorne a soma dos N 
números inteiros 
existentes entre eles. 
int soma_intervalo (int val_1, int val_2){
int i, soma = 0;
if (val_1 >= val_2)
return soma;
else{ 
for (i = val_1+1; i< val_2; i++)
soma += i;
return soma;
}
}
Sub-Rotinas em C -
exercícios
� 3) Faça uma função 
em C que receba 
como parâmetros 
três números 
inteiros: a, b, e c, 
sendo a maior que 
1. A função deve 
somar todos os 
inteiros entre b e c
que sejam divisíveis 
por a (inclusive b e 
c) e retornar o 
resultado.
int soma_intervalo(int a, int b, int c){
int i, soma = 0;
if (b >= c)
return soma;
else{ 
for (i = b; i<= c; i++){
if ((i%a) == 0)
soma += i;
} 
return soma;
}
}
Sub-Rotinas em C -
exercícios
� 4) Faça uma 
função em C que 
converta horas, 
minutos e 
segundos em 
segundos. A 
função recebe os 
valores das horas 
minutos e 
segundos e 
retorna o total de 
segundos.
int calc_segundos(int hora, int min, int seg){
int soma = 0;
//Converte hora em minutos
soma = hora*60;
//Converte minutos em segundos
soma = soma*60 + min*60;
//Calcula total de segundos
soma = soma + seg;
return soma;
}
Sub-Rotinas em C -
exercícios
� 5) Faça uma 
função que 
receba o total de 
segundos e 
converta o valor 
em horas, 
minutos e 
segundos. A 
função deve 
imprimir os 
valores.
void calcula_hora (int seg){
int h, m, s, r;
h = seg / 3600;
r = seg % 3600;
m = r / 60;
s = r % 60;
printf("%d:%d:%d\n",h,m,s);
}
Sub-Rotinas em C -
exercícios
� 6) O número 3.025 
possui a seguinte 
característica:
� 30 + 25 = 55
� 552 = 3.025
� Faça uma função 
em C que receba 
um inteiro de 
quatro dígitos e 
retorne 1 se o 
número possuir 
essa característica 
e 0, caso contrário.
int verifica (int numero){
int primeiro, segundo, 
soma, quadrado;
//separa as duas parte do número
primeiro = numero / 100;
segundo = numero % 100;
// determina característica
soma = primeiro + segundo;
quadrado = soma*soma;
if (quadrado == numero)
return 1;
else
return 0;
}
Sub-Rotinas em C -
exercícios
� 7) Faça uma função em C que recebe 
como parâmetro um inteiro no intervalo de 
1 a 9 e mostre a seguinte tabela de 
multiplicação.
� 1
� 2 4
� 3 6 9
� 4 8 12 16
� 5 10 15 20 25
� 6 12 18 2430 36
� 7 14 21 28 35 42 49
� 8 16 24 32 40 48 56 64
� 9 18 27 36 45 54 63 72 81
int multiplica(int numero){
int i, soma;
if(( numero < 1)||(numero >9)){
printf("valor fora do intervalo \n");
return 0;
}
for(i=1, soma= numero; i<=numero; i++){
printf("%d ", soma);
soma += numero;
}
printf("\n"); 
return 0;
}
Sub-Rotinas em C -
exercícios
� 8) Faça uma função e C que receba as três notas de um 
aluno como parâmetro e uma letra. Se a letra for A a 
função calcula a média aritmética das notas do aluno, se 
for P a função calcula a média ponderada com pesos 5, 3 e 
2. A média calculada deve ser devolvida como parâmetro 
de saída da função. 
float media(int n1,int n2, int n3, char letra){
if (letra == 'A')
return ((n1+n2+n3)/3.);
else
return ((float)(n1*5 + n2*3 + n3*2)/(5+3+2));
}
Exercício Proposto
� 1) Usando funções para cada operação, 
desenvolva um programa que implemente 
uma calculadora com as seguintes 
operações:
� Adição (a+b) - float adic(float a, float b); 
� Subtração (a-b) - float subt(float a, float b);
� Multiplicação (a.b) – float multi(float a, float b);
� Divisão (a/b) – float divi(float a, float b);
� Expoente (a**b) – float expo(float a, float b);
� Quadrado (a**2) – float quad(float a);
� Inverso (1/x) – float inv(float x);
� Valor absoluto – float abs(float a).

Outros materiais