• Nenhum resultado encontrado

Int programacao aula18

N/A
N/A
Protected

Academic year: 2018

Share "Int programacao aula18"

Copied!
42
0
0

Texto

(1)

MODULARIDADE E FUNÇÕES

(SUB-ROTINAS)

(2)

 O que são funções numa visão computacional?

 Uma caixa preta que recebe uma entrada e retorna uma saída

Introdução

sqrt

Entrada Ex.: 64

Saída Ex.: 8 Função

(3)

// exemplo do uso de funções

#include <stdio.h>

#include <stdlib.h> #include <math.h>

int main() {

double area;

printf ("Digite a área da sua casa em metros quadrados: ); scanf %lf ,&area);

double lado;

lado = sqrt(area); // chamada da função sqrt

printf("Isso é o equivalente a um quadrado com %f metros de

lado , lado ;

system("pause"); // chamada da função system

return 0; }

(4)

 O que são funções numa visão matemática?

f : D  Y

 Uma função é uma lei que associa elementos do conjunto D a elementos do conjunto Y

 D é chamado de domínio da função

 Y é chamado de imagem da função

Exemplos:

f(x)=2x+1 f: R  R f(x)=7 f: R  R

(5)

Introdução

 Domínio e imagem da função

1

2

5

f(x)=2x+1 f:RR

f(x)=7 f:RR

3

5

11

1

2

5

7

(6)

Introdução

 O domínio e imagem da função definem a

interface da função

f(x) = 2x+1 f:RR

sqrt

Entrada Ex.: 64

Saída Ex.: 8 Entrada

Ex.: 1

Saída Ex.: 3

(7)

Introdução

 A linguagem C exige a definição da interface

das funções

 A função sqrt possui a seguinte interface:

 A interface da função sqrt esta definida no arquivo de inclusão math.h

#include <math.h>

double sqrt(double);

Entrada Ex.: 64 Saída

(8)

Introdução

 Para utilizar a função sqrt é preciso:

 Incluir o arquivo de cabeçalho math.h

 Chamar a função dentro do programa:

x = sqrt(6.25);

Argumento

Passado para a função

Nome da função Valor de retorno

(9)

Introdução

 Uma chamada de função provoca um desvio na execução do programa

// retorna o valor 2.5 e o atribui para x x = sqrt(6.25);

int main() {

... ... ...

x = sqrt(6.25); ...

... ... }

double sqrt(double)

{ ... ... ... ... ... ...

return valor; } 1 2 3 4 5

(10)

Introdução

 Além de uma interface toda função precisa

ter um corpo

 Para funções de biblioteca:

 A interface da função é definida num arquivo de inclusão

 O corpo da função está num arquivo objeto/DLL previamente compilado e armazenado no sistema

(11)

Introdução

 Ao contrário das funções matemáticas, em C

as funções podem não retornar valor

system("pause");

Argumento

Passado para a função Nome da função

system

(12)

Introdução

 Uma função que não retorna valor executa uma tarefa sem retornar resultado

int main() {

... ... ...

system("pause"); ...

... ... }

void system(char *)

{ ... ... ... ... ... ... ... } 1 2 3 4 5

(13)

Introdução

 Uma função que não retorna valor possui tipo de retorno void na sua interface

 Uma função com tipo de retorno void não pode ser atribuída a uma variável

x = system("pause"); // INVÁLIDO

void system(char *); // interface da função system

system

(14)

Modularidade

 Para que servem as funções?

 Dividir o código em blocos

 A modularização de programas é a principal

característica da programação estruturada

 Facilita a manutenção de programas grandes

 Encapsula a solução

 Cria uma interface

double sqrt(double);

(15)

 Os programas em C são construídos a partir desses blocos chamados de funções

system

Modularidade

sqrt main

Programa

(16)

Bibliotecas de Funções

 Para usar uma função é preciso:  Fornecer uma interface para a função

 Fornecer um corpo para a função

 Chamar a função

#include <stdio.h> int main()

{

... ...

system("pause"); ...

... }

void system(char *)

{ ... ... ... ... ... ... } 1 2 3 4 5

(17)

Bibliotecas de Funções

 Ao usar uma função de biblioteca:

 A interface é obtida incluindo-se um arquivo de cabeçalho no programa

 O corpo da função já foi definido e pré-compilado num arquivo objeto/DLL

 Resta apenas chamar a função

#include < stdio.h > #include <math.h>

(18)

Bibliotecas de Funções

 A biblioteca padrão da linguagem C/C++

possui mais de 140 funções predefinidas

 Não reinvente o que já existe

Mesmo assim, muitas vezes é preciso

escrever suas próprias funções

 Uma função definida pelo programador funciona da mesma forma que uma função de biblioteca

(19)

Criando Funções

 Ao se criar funções, todos os aspectos devem

ser tratados:

 Interface: define que informações a função recebe e que informações a função retorna

(20)

Criando Funções

 Ao se criar funções, todos os aspectos devem

ser tratados:

 Definição: contém um conjunto de instruções que

realiza a tarefa para a qual a função foi criada

// definição da função simples

void simples() {

(21)

Criando Funções

 Ao se criar funções, todos os aspectos devem

ser tratados:

 Chamada: invoca a execução da função a partir do programa principal, ou a partir de uma outra

função

(22)

Criando Funções

#include <stdio.h>

#include <stdlib.h>

void simples(); // protótipo da função

int main() {

printf("main() vai chamar a função simples():\n ); simples(); // chamada da função

system("pause"); return 0;

}

// definição da função

void simples() {

(23)

Definindo Funções

 A forma geral de uma função:

tipo nome(parâmetros) {

instrução 1; instrução 2; ...

instrução n;

return valor;

}

Corpo da função Definição da função

Cabeçalho da função Nome da função

Lista de parâmetros da função Tipo de retorno da função

(24)

Definindo Funções

 Funções que não retornam valores são funções

de tipo void:

 A lista de parâmetros especifica as informações

(tipo e quantidade) passadas para a função

void nome (parâmetros) {

instruções

return; // opcional }

(25)

Definindo Funções

 Funções sem valor de retorno são usadas

para executar alguma ação:

 A chamada da função deve passar um valor inteiro

void tchau (int n) {

printf("Finalizando Sessão Número.\n ;

}

int main() {

printf("Encerrar sessão: \n); int sessao;

scanf %d , &sessao);

(26)

Definindo Funções

 Funções que retornam valores têm a seguinte

forma geral:

 O valor de retorno é obrigatório e pode ser uma constante, uma variável ou uma expressão

tipo nome (parâmetros) {

instruções

return valor; }

(27)

Definindo Funções

 Funções com valor de retorno são muito

usadas para encapsular cálculos:

 A chamada da função é substituída pelo retorno

int soma (int a, int b) {

int c = a + b; return c;

}

int main() {

int quant;

(28)

Definindo Funções

 Uma função pode ter vários return's mas

apenas um valor de retorno

 Chamada da função:

int maior (int a, int b) {

if (a > b) return a; else

return b; }

int main() {

printf("Digite dois números: ; int num1, num2;

scanf %d%d , &num , &num ;

(29)

Múltiplas Chamadas

// flexao.cpp - definindo uma função

#include <stdio.h> #include <stdlib.h>

void flexao(int); // protótipo da função flexao

int main() {

flexao(3); // chama a função flexao

printf ("Escolha um número inteiro: \n ; int cont;

scanf %d , cont&);

flexao(cont); // chama flexao novamente system("pause");

return 0; }

void flexao(int n) {

(30)

Múltiplas Chamadas

 Saída do programa:

 Uma função pode ser chamada várias vezes

O exemplo chama flexao() duas vezes:

 Uma com o argumento sendo o valor 3

 Outra com o argumento sendo uma variável

Faça 3 flexões.

Escolha um número inteiro: 512

(31)

Múltiplas Chamadas

 Na definição do corpo da função é preciso

dar nomes as informações recebidas

 Elas serão novas variáveis na função

void flexao(int n) // definição da função flexao {

printf( Faça %d flexões: \n\n , n); }

(32)

Ainda Sobre Funções

 Ao contrário de linguagens como PASCAL, a

linguagem C não permite a criação de uma

função dentro de outra

int main() {

void flexao(int n) {

printf( Faça %d flexões: \n\n , n); }

flexao(3); // chama a função flexao

printf("Escolha um número inteiro: "); ...

(33)

Ainda Sobre Funções

 A definição de várias funções é feita de forma

seqüencial num arquivo

#include <iostream>

void flexao(int);

void abdominal(int);

int main() {

...

return 0; }

void flexao(int n) {

... }

void abdominal(int n) {

... }

Função Principal Protótipos das funções

Função 1

(34)

Ainda Sobre Funções

 Funções podem estar em arquivos diferentes

void flexao(int);

void abdominal(int);

#include <iostream>

#include "ginastica.h"

int main() {

cout << "Fazendo Ginastica\n";

flexao(10); abdominal(20);

return 0; }

#include "ginastica.h"

void flexao(int n) {

... }

void abdominal(int n) {

... }

// Arquivo principal: // malhando.cpp

// Arquivo de inclusão: // ginastica.h

(35)

Ainda Sobre Funções

// converte metros em centímetros

#include <stdio.h>

float converte(float); // protótipo da função

int main() {

float val;

printf("Entre com a distância em metros: \n"); scanf %f , &val);

float centimetros = converte(val);

printf( %f metros = %f centimetros. \n\n , val, centimentros); system("pause");

return 0; }

float converte(float n) // definição da função

(36)

Ainda Sobre Funções

 Saída do programa:

Entre com a distância em metros: 30

(37)

Ainda Sobre Funções

 Funções que tem retorno diferente de void

devem usar a instrução return para prover o valor de retorno e finalizar a função

int main() // definição da função main

{

...

return 0; }

int converte(int n) // definição da função converte

{

(38)

 Uma instrução de retorno pode conter uma expressão não trivial

 Pode-se usar uma função que retorna valor

em uma expressão int converte(int n) {

return 100 * n; }

int converte(int n) {

int num = 100 * n; return num;

}

Ainda Sobre Funções

int a = converte(10);

int b = 20 + converte(15);

(39)

Ainda Sobre Funções

 Programadores C tem muita flexibilidade na

escolha de nomes para funções:

MinhaFuncao() minha_funcao()

minhafuncao() minha_func()

minhaFuncao() mf()

 Cada programador tem preferência por um

estilo particular, todos estão corretos

 O importante é manter os nomes das funções

(40)

Ainda Sobre Funções

 Palavras-chaves ou palavras reservadas são o

vocabulário de uma linguagem de programação

 Elas não podem ser usadas para dar nome a

uma função ou variável

 Até o momento foram utilizadas as seguintes

palavras-chaves:

int void

double using

(41)

Conclusão

 Um programa C consiste de um ou mais módulos chamados funções

 Programas começam a sua execução a partir

da função main()

 Uma função consiste em:

 Uma interface: define os tipos de valores recebidos e retornado pela função

(42)

Conclusão

 Em C o programador pode:

 Usar funções pré-definidas de bibliotecas (como sqrt e system)

 Criar suas próprias funções

 O uso de funções

 Facilita a manutenção de programas grandes

 Encapsula a solução

Referências

Documentos relacionados

Como ciência que processa dados com o fim de gerar informações de natureza fiscal e gerencial a partir da existência de um patrimônio, a conta- bilidade possui, dentre suas

A Tabela 18 mostra a presença de associação significativa entre a ocorrência de acidente de moto com o número de lesões, com o número de intervenções cirúrgicas e com a presença

Avaliar a atividade antifúngica de compostos utilizados em soluções antissépticas de uso oral como cloreto de cetilpiridíneo, gluconato de clorexidina, triclosan e timol frente

11:45 - 11:55 Paciente usuário de lentes de contato aparece no consultório com grande hiperemia conjuntival, úlcera de córnea e hipópio. Qual a

· Utilizações identificadas relevantes da substância ou mistura e utilizações desaconselhadas Não existe mais nenhuma informação relevante disponível.. · Utilização

falso), um determinado caminho é seguido dentro do algoritmo;.. Estruturas de Controle Condicionais.. 4) Escreva um algoritmo que leia três valores distintos, determine

RegFuncID int Não avaliação da função regional de um segmento miocárdico PK auto-incrementada que identifica univocamente uma ExameID int Não ID que identifica o exame de

sobre a realidade dos produtores com relação à obtenção da ração para os suínos (Anexoi).. Na oportunidade