Subprogramas. Prof. Carlos Lopes

Documentos relacionados
Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

Programação I Funções. Prof. Carlos Alberto

Modularidade - Funções e Procedimentos

Linguagem C. Funções. Prof. Maurício Dias

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

Aula 13 Oficina de Programação Modularização. Profa. Elaine Faria UFU

Modularidade - Fun ções e Procedimentos

Aula 07 Introdução à Programação Subprogramas

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções

ESTRUTURA DE DADOS (TCC )

Aula 07: Introdução a Funções

Subprogramação. Subprogramação. Subprogramação. A subprogramação é uma ferramenta que contribui com a tarefa de programar:

Apontadores/ponteiros

Universidade Estadual de Maringá- UEM Centro de Tecnologia - CTC Departamento de Informática - DIN Fundamentos da Computação.

Programação de Computadores I Funções na Linguagem C PROFESSORA CINTIA CAETANO

Linguagem C: funções e ponteiros. Prof. Críston Algoritmos e Programação

Linguagem C. Programação Estruturada. Modularização (Funções) Prof. Luis Nícolas de Amorim Trigo

Explicação do programa:

Funções em Linguagem C Parte II

Linguagem C: Subprogramação

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Instituto de Física Segundo Semestre de Diurno. Prova Substitutiva 15/12/2000

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

ponteiros INF Programação I Prof. Roberto Azevedo

Aula 15 - Aula sobre Funções e Procedimentos

Funções em C. Funções em C. Funções em C. Prof. Yandre Maldonado e Gomes da Costa

Programação : Engenharia Informática 6619 : Tecnologias e Sistemas de Informação. Cap. 6 Subprogramas I Subprogramas I

Módulo 3 Controle de Fluxo

... Subprogramas Após fazer as tarefas previstas o nosso programa devolve o comando ao sistema operativo. Isto está numa hierarquia onde o nosso progr

Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre. T. 05 Subprogramas I

FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara

INF 1620 P1-13/09/02 Questão 1 Nome:

Sub Rotinas. Estrutura de Dados. Prof. Kleber Rezende

Sub-rotinas David Déharbe

Linguagem C. André Tavares da Silva.

Ponteiros. Baseado nos slides do Prof. Mauro.

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Funções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná

Métodos Computacionais. Funções, Escopo de Variáveis e Ponteiros

Podemos declarar um ponteiro para um ponteiro com a seguinte notação: tipo_da_variável **nome_da_variável;

Aula 9 Oficina de Programação Matrizes. Profa. Elaine Faria UFU

PROGRAMAÇÃO DE COMPUTADORES V - TCC Modulo 6 : Funções Escopo de Variáveis: Globais x Locais Aura - Erick

Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3

Aula 05: Condicionais (if / else)

Computação eletrônica: Funções

Algoritmos e Programação

Programação: Vetores

Programação de Computadores II. Cap. 5 Vetores

Controle de Fluxo Utilizando C

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Tipos de Dados, Variáveis e Entrada e Saída em C. DCC 120 Laboratório de Programação

Programação de Computadores II. Cap. 4 Funções

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

Dividir para Conquistar. Material da Prof. Ana Eliza

Fundamentos de Programação 1

Aula 2 Comandos de Decisão

SSC300- Linguagens de Programação e Aplicações Profa Vânia de Oliveira Neves. ICMC/USP São Carlos

Algoritmos e Introdução à Programação. Lógica e Linguagem de Programação

Variáveis, Tipos de Dados e Operadores

Permite modularidade (dividir programa em partes): Facilita a depuração (debug) e portabilidade.

Revisão para Prova 2. Mirella M. Moro

Programação científica C++

Subprogramas. (ou Sub-rotinas) em C: Procedimentos e Funções. 2015/1 Programação Básica de Computadores (INF 09325)

Algoritmos e Programação

INF1007: Programação 2. 0 Revisão. 06/08/2015 (c) Dept. de Informática - PUC-Rio 1

1. Escreva um programa que imprima a ordem reversa de caracteres de uma string digitada pelo usuário. Ex: Entrada: Hello World. Saída:.

12 - Dados Estruturados Vetores, Matrizes e Strings

MAC2166 Introdução à Computação para Engenharia Escola Politécnica Segunda Prova 19 de maio de 2008

Acadêmico: Subprogramação (funções)

INF 1620 P1-04/10/03 Questão 1 Nome:

a) Implemente uma função que retorne uma aproximação do valor de π, de acordo com a F órmula de Leibniz: ( 1)

MAC2166 Introdução à Computação para Engenharia Escola Politécnica Terceira Prova 20 de junho de 2011

ALGORITMOS I. Procedimentos e Funções

Linguagem C ponteiros

Aula 10 Oficina de Programação Matrizes. Profa. Elaine Faria UFU

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas

Algoritmos e Programação

Introdução a Programação. Tipos Estruturados de Dados

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C

Introdução à Programação Aula 09. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introdução à Ciência da Computação. Sumário. Modularização de Algoritmos. Agradecimentos. Modularização de Algoritmos e Funções em C

Estruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char?

Estruturas de Repetição

Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011

Introdução a Programação. Ponteiros e Passagem de Argumentos por Referência

Aula 11: Modularização

Aula 8 Oficina de Programação Vetores. Profa. Elaine Faria UFU

Atividade de laboratório listas encadeadas simples

INF 1007 Programação II

Linguagem C ESTRUTURA DE CONTROLE

Função. Unidade autônoma do programa desenvolvida para executar alguma atividade. A estrutura de uma função C é semelhante à da função main( )

Programação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO

Instituto Federal da Bahia Análise e Desenvolvimento de Sistemas INF029 Laboratório de Programação Aula 02: Modularização

MC-102 Aula 13. Instituto de Computação Unicamp. 29 de Setembro de 2016

Aula 1 Apresentação do Curso

ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória

Aula 08: Funções (Parte II)

Transcrição:

Subprogramas Prof. Carlos Lopes

Motivação Escreva um programa C capaz de calcular a combinação de n valores tomados p a p. Para realizar este cálculo, você deverá utilizar a seguinte fórmula: C n n! p = p! (n-p)! com n p

Descrição do Programa #include <stdio.h> int main(){ int i,n,p,fatn=1,fatp=1,fatnp=1,c; //leitura de n printf("digite um valor para n:"); scanf("%d",&n); //leitura de p printf("digite um valor para p:"); scanf("%d",&p); // calculo de fatorial de n for(i=2;i<=n;i++){ fatn *=i; for(i=2;i<=p;i++){ fatp *=i; for(i=2;i<=(n-p);i++){ fatnp *=i; c=fatn/(fatp*fatnp); printf("valor de c: %d\n",c); return 0;

Uma outra abordagem Suponha que tivéssemos um código fatorial já implementado (assim como temos sqrt, sin, cos etc). Como o programa seria reescrito?

Reescrevendo o Programa Algoritmo Usando o Fatorial como Função #include <stdio.h> int main(){ int n,p,c; //leitura de n printf("digite um valor para n:"); scanf("%d",&n); //leitura de p printf("digite um valor para p:"); scanf("%d",&p); c=fatorial(n)/(fatorial(p)*fatorial(n-p)); printf("valor de c: %d\n",c); return 0;

Como Criar uma Função em C? Forma Geral de Definição de uma função: <tipo do valor_retornado> <nome_função> (<lista de parâmetros>){ <declarações> <comandos>

Criando a Função Fatorial int fatorial(int n){ int i,fat=1; if (n == 0 n == 1) return 1; else for (i=2;i<=n;i++) fat *=i;

Exemplo de Programa com Função #include <stdio.h> int fatorial(int n){ int i,fat=1; if (n == 0 n == 1) return 1; else for (i=2;i<=n;i++) fat *=i; int main(){ int n,p,c; //leitura de n printf("digite um valor para n:"); scanf("%d",&n); //leitura de p printf("digite um valor para p:"); scanf("%d",&p); c=fatorial(n)/(fatorial(p)*fatorial(n-p)); printf("valor de c: %d\n",c); return 0;

Funcionamento do Programa com Função #include <stdio.h> int fatorial(int n){ int i,fat=1; if (n == 0 n == 1) return 1; else for (i=2;i<=n;i++) fat *=i; return fat; int main(){ int n,p,c; //leitura de n printf("digite um valor para n:"); scanf("%d",&n); //leitura de p printf("digite um valor para p:"); scanf("%d",&p); c=fatorial(n)/(fatorial(p)*fatorial(n-p)); printf("valor de c: %d\n",c); return 0; Depois da execução do comando return volta-se a executar a instrução da função main que sucede a a chamada da função Quando a função é chamada suas instruções são executadas.

Declaração de Funções Funções devem ser definidas ou declaradas antes de serem utilizadas, ou seja, antes da cláusula main. A declaração apenas indica a assinatura ou protótipo da função: <tipo_valor_retornado> <nome_função>(<declaração_parâmetros>);

Programa com Declaração de Função #include <stdio.h> int fatorial(int n); int main(){ int n,p,c; Declaração da função //leitura de n printf("digite um valor para n:"); scanf("%d",&n); //leitura de p printf("digite um valor para p:"); scanf("%d",&p); c=fatorial(n)/(fatorial(p)*fatorial(n-p)); printf("valor de c: %d\n",c); return 0; int fatorial(int n){ int i,fat=1; if (n == 0 n == 1) return 1; else for (i=2;i<=n;i++) fat *=i; return fat;

Subprogramação Funções são também conhecidas como subprogramas; A subprogramação é uma ferramenta que contribui com a tarefa de programar: Favorecendo a estruturação do programa; Facilitando a correção do programa; Facilitando a modificação do programa; Melhorando a legibilidade do programa; Divisão do problema a ser resolvido em partes (modularização);

Exercícios Crie um programa que some dois números. O programa deverá conter uma função que recebe como parâmetro dois inteiros e devolve um inteiro que é o resultado da soma. O programa principal deverá fazer a leitura dos dois inteiros que o usuário digitar e imprimir o resultado da soma.permita que o programa calcule a multiplicação por somas. Escrever um programa C que verifique se um número inteiro é par. O programa principal deverá fazer a leitura do número e imprimir a mensagem especificando se o número é par ou não.

Escopo de Variáveis Funções também estão sujeitas ao escopo das variáveis O escopo é o conjunto de regras que determinam o uso e a validade de variáveis nas diversas partes do programa. Variáveis Locais, variáveis Globais e Parâmetros formais.

Variáveis Locais Variáveis locais são aquelas que só têm validade dentro do bloco no qual são declaradas. Um bloco começa quando abrimos uma chave e termina quando fechamos a chave. Exemplo: variáveis declaradas dentro da função são variáveis locais.

Parâmetros Formais Parâmetros formais são declarados como sendo as entradas de uma função. O parâmetro formal é uma variável local da função. Exemplo: int fatorial(int n); n é um parâmetro formal

Variáveis Globais Variáveis globais são declaradas fora de todas as funções do programa. Elas são conhecidas e podem ser alteradas por todas as funções do programa. Quando uma função tem uma variável local com o mesmo nome de uma variável global a função dará preferência à variável local.

Passagem de Parâmetros Em C os argumentos para uma função são sempre passados por valor, ou seja, uma cópia do argumento é feita e passada para a função. Mesmo que esse valor mude dentro da função, nada acontece com o valor de fora da função.

Passagem de Parâmetros include <stdio.h> float sqr (float num); Existem duas variáveis locais num e elas são independentes int main (){ float num, sq; printf ("Entre com um numero: "); scanf ("%f", &num); sq = sqr(num); printf ("\n\n O numero original e: %f\n", num); printf ("O seu quadrado vale: %f\n", sq); return 0; float sqr (float num){ num = num*num; return num;

Passagem de Parâmetros Quando se quer que o valor da variável mude dentro da função, usa-se passagem de parâmetros por referência. Neste tipo de chamada, não se passa para a função os valores das variáveis,mas sim suas referências (endereço das variáveis na memória); Utilizando o endereço da variável, qualquer alteração que a variável sofra dentro da função será refletida fora da função.

Passagem por Referência Para passar um parâmetro por referência, usa-se o operador * na frente do nome da variável durante a declaração. Ex.: float sqr (float *num); Ao se chamar a função, é necessário utilizar agora o operador &. Ex.: sq = sqr(&num);

Diferença entre * e & * Declara um ponteiro. Ex: int *x; Devolve o conteúdo para onde o ponteiro aponta. Ex: int y = *x; & Devolve o endereço onde uma variável está guardada na memória. Ex: int *x = &y;

Diferença entre * e & (cont.) #include <stdio.h> #include <stdlib.h> int main (){ int x; int *y; int z; x = 10; y = &x; z = *y; printf("%d\n",x); printf("%d\n",y); printf("%d\n",*y); printf("%d\n",z); return 0;

include <stdio.h> float sqr (float *num); Passagem de Parâmetros: exemplo int main (){ float num, sq; printf ("Entre com um numero: "); scanf ("%f", &num); sq = sqr(&num); printf ("\n\n O numero original e: %f\n", num); printf ("O seu quadrado vale: %f\n", sq); return 0; float sqr (float *num){ *num = (*num)*(*num); return *num;

Exercícios Crie uma função que troque o valor de dois números inteiros passados por referência.

Vetores como Parâmetros Quando vamos passar um vetor (referência) como argumento de uma função, podemos declarar a função de três maneiras equivalentes. int m [5]; void imprime (int m[5]); ou void imprime (int m[]); ou void imprime (int*m);

Vetores como Parâmetros (cont.) void imprime (int *m){ int i; for (i=0; i< 5;i++) printf ("%d \n", m[i]); int main (){ int n[5] = {1,2,3,4,5; imprime(n); return 0;

Exercícios Faça uma função em C que receba um conjunto de valores e retorne o maior entre eles Faça uma função que recebe um vetor X(15) de inteiros, por parâmetro, e retorna a quantidade de valores pares em X Faça uma função que recebe, por parâmetro uma matriz A(6,6) e retorna a soma dos elementos da sua diagonal principal