Modularidade - Fun ções e Procedimentos

Documentos relacionados
Modularidade - Funções e Procedimentos

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

MC102 - Algoritmos e programação de computadores. Aula 14: Funções e Procedimentos

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

Procedimentos e Funções

Sub Rotinas. Estrutura de Dados. Prof. Kleber Rezende

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

Procedimentos e Funções

Sub-rotinas em C. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto

Subprogramas. Prof. Carlos Lopes

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.

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

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

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

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

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.

Sub-rotinas David Déharbe

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

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

Explicação do programa:

ESTRUTURA DE DADOS (TCC )

ALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal

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

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

Aula 7: Sub-rotinas e Funções

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Introdução à Programação. Funções e Escopo de Variáveis

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

Aula 12: Funções. CI208 - Programação de Computadores. Prof. MSc. Diego Roberto Antunes

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

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

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

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

ALGORITMOS I. Procedimentos e Funções

Aula 1 Apresentação do Curso

Aula 15 - Aula sobre Funções e Procedimentos

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

Variáveis, Tipos de Dados e Operadores

Linguagem C: Introdução

Linguagem C Funções. André Tavares da Silva.

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

SSC INTRODUÇÃO À COMPUTAÇÃO PARA ENGENHARIA AMBIENTAL MODULARIZAÇÃO. Profa. Dra. Milena Guessi Margarido

Algoritmos e Programação

2º Roteiro de Laboratório Estruturas condicionais

Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

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

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

Funções em Linguagem C Parte II

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Conhecendo a Linguagem de Programação C

ECT1203 Linguagem de Programação

Algoritmos II Aula 11 Funções e Procedimentos

Universidade Estadual do Maranhão Curso de Engenharia da Computação Mestrado em Engenharia da Computação e Sistemas

char *strchr (const char *str, int ch);

DAS5102 Fundamentos da Estrutura da Informação

Aula 05. Modularização Função Subrotina Recursividade

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

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

Introdução a Programação de Jogos

Programação em Linguagem C

1ª Lista de Exercícios

Computação 2. Aula 2. Profª. Fabiany Vetores e Matrizes

Introdução à Programação

Linguagem C. André Tavares da Silva.

Linguagem C ponteiros

Algoritmos e Programação

Aula 03 -Introdução àlinguagc Programação: Estrutura-Repetição. OPL e IC1 Prof: Anilton Joaquim da Silva

MESMO QUE ESTAS VARIÁVEIS TENHAM NOME IDÊNTICOS

5 Funções. Site: BAC004 at Source page: 5 Funções at

Programação: Vetores

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C

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

Ponteiros de Variáveis

Aula 7 Oficina de Programação Estruturas de Repetição no C. Profa. Elaine Faria UFU

Linguagem C - Introdu ção

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

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

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

Programação 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação. Cap. 7 Arrays. Arrays

1) Operadores de auto incremento ++ e auto decremento --

Lista de Exercícios de Algoritmos - 04 Para cada um dos exercícios abaixo, faça um programa (em laboratório) que teste a função.

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

Encapsulamento de Código: Funções e Procedimentos

Introdução a Computação

#include <stdio.h> main() { int i; // Cabeçalho for (i = 1; i <=20; i++) putchar( * ); putchar( \n ); puts( Numeros entre 1 e 5 );

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

Ponteiros e Tabelas. K&R: Capítulo 5

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

Algoritmos e Programação. Linguagem C Procedimentos e. Eliane Pozzebon

Índice. Índice... 0 Passagem de parâmetros... 3 Procedures... 5 Funções... 5

INTRODUÇÃO À LINGUAGEM C. Prof. Msc. Luis Filipe Alves Pereira 2015

Arranjos. David Déharbe

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

Linguagem C Estruturas de Repetição

LISTA DE EXERCÍCIOS MÊS 04

Introdução à Computação

Apontadores/ponteiros

Comandos de entrada. e saída. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada.

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

Transcrição:

Modularidade - Fun ções e Procedimentos José Gustavo de Souza Paiva Problema Em diversas situa ções, é preciso executar uma tarefa específica diversas vezes em um programa, variando apenas os dados de entrada dessa tarefa Exemplo: Combinação simples C n, p n! p!( n p)! 1

Problema Outros exemplos : Mostrar mensagens na tela Zerar um vetor Fazer uma operação matricial Modularização: divisão de um programa em módulos responsáveis por tarefas específicas Modularização Motivações Evitar repetição de código Dividir e estruturar melhor a resolução de um problema Aumentar a legibilidade do c ódigo Benefícios Manutenção mais simples, pois os m ódulos são (idealmente) independentes e menores Elaboração e testes em separado Reutilização do módulo em outros programas 2

Sub-rotinas Blocos de instruções que realizam alguma tarefa espec ífica Seu código é carregado uma vez, e pode ser utilizado diversas vezes no programa Vantagens Evitar que os blocos do programa fiquem grandes demais e, por conseqüência, mais difíceis de entender Facilitar a leitura do programa-fonte Separar o programa em partes (blocos) que possam ser logicamente compreendidos de forma isolada Permitir o reaproveitamento de c ódigo já construído (por você ou por outros programadores) Evitar que um trecho de c ódigo seja repetido v árias vezes dentro de um mesmo programa Permitir a alteração (manutenção) de um trecho de c ódigo de uma forma mais rápida (é preciso alterar apenas dentro da fun ção que se deseja) Sub-rotinas O fluxo de um programa é normalmente seqüencial, e o programa é executado no estilo top-down A utilização de uma sub-rotina pode, entretanto, desviar o fluxo do programa O programa pára o que está fazendo, executa o código correspondente ao código da sub-rotina, e depois volta para a primeira instrução subsequente 3

Sub-rotinas em C Todo programa escrito na linguagem C tem pelo menos uma sub-rotina Ela se chama main, e representa o programa principal Toda vez que um programa escrito em C é executado, a primeira sub-rotina a ser executada é a função main Dentro da sub-rotina main, é possível chamar outras sub-rotinas que realizem tarefas relativas ao programa Sub-rotinas em C A linguagem C possui muitas sub-rotinas pr é- definidas em bibliotecas que acompanham o compilador Exemplos printf scanf pow sqrt Os códigos destas sub-rotinas est ão definidos dentro de bibliotecas, chamadas com o comando #include O programador pode criar novas sub-rotinas, e utilizá-las dentro do código onde foram definidas 4

Sub-rotinas em C As sub-rotinas dividem-se em Funções: retornam um valor, uma resposta ao programa Procedimentos: não retornam valores para o programa Na linguagem C, ambas as sub-rotinas são definidas como fun ções Sub-rotinas em C Construção de sub-rotinas em C O tipo de retorno da sub-rotina define se ela é uma função ou um procedimento Procedimentos possuem sempre tipo void Funções possuem sempre tipos definidos, tais como int, float, char, etc. 5

Sub-rotinas em C Pode-se atribuir qualquer nome para uma função/procedimento em C, desde que n ão seja um nome reservado da linguagem Duas funções não podem ter o mesmo nome no mesmo programa Uma função pode possuir par âmetros Parâmetros são informações necessárias para a realização da tarefa definida na fun ção Os parâmetros são definidos como uma lista na função Para cada parâmetro, especifica-se um tipo e um nome qualquer Exemplo de função em C Definição Chamada 6

Funções em C O resultado de uma fun ção é sempre uma expressão Como tal, uma fun ção pode ser chamada dentro de outra Exemplo de Procedimento em C Definição Chamada 7

Função int main() O programa principal é uma função especial, que possui um tipo fixo (int) e é invocada automaticamente pelo sistema operacional quando este inicia a execu ção do programa Quando utilizado, o comando return informa ao sistema operacional se o programa funcionou corretamente ou n ão O padrão é que um programa retorne zero caso tenha funcionado corretamente ou qualquer outro valor caso contr ário Variáveis Globais e Locais Uma variável é chamada local se ela foi declarada dentro de uma fun ção ou bloco de código Nesse caso, ela existe somente dentro desse escopo, e após o término da execução do mesmo, a variável deixa de existir Uma variável é chamada global se ela for declarada fora de qualquer fun ção ou bloco de código (ou seja, no mesmo lugar onde registros, tipos enumerados e funções são declarados) Essa variável é visível em todas as fun ções, qualquer função pode alterá-la e ele existe durante toda a execução do programa 8

Variáveis Globais Variáveis Globais e Locais É possível declarar vari áveis locais com o mesmo nome de vari áveis globais Neste caso, a vari ável local esconde a variável global 9

int quadrado(){ int num, quad; scanf("%d", &num); quad = num * num; return (quad); Exemplo [2] int main(){ int result; printf("digite o numero: "); result = quadrado(); printf("quadrado do numero: %d", result); return 0; Exemplo [2] int quadrado(){ int num, quad; scanf("%d", &num); quad = num * num; return (quad); Erro! int main(){ printf("digite o numero: "); quad = quadrado(); printf("quadrado do numero: %d", quad); return 0; 10

Parâmetros Chamada por valor: é passado uma c ópia da variável para a subrotina Qualquer alteração feita no parâmetro não reflete em altera ção no argumento Chamada por refer ência: é passado o endereço da variável para a subrotina Ambas as variáveis apontam para o mesmo endereço de memória Todas as alterações realizadas no parâmetro refletem em altera ções no argumento Parâmetros Parâmetros passados por valor s ão declarados como variáveis comuns float f1(int a, float b, int c) Parâmetros a, b, c são passados por valor Parâmetros passados por refer ência devem ser passados como ponteiros, utilizando o símbolo * antes do nome do parâmetro float f2(int *a, float b, double *c) Parâmetros a e c são passados por refer ência, parâmetro b é passado por valor void p2(int *n, float a[]) Parâmetros n, a são passados por referência Nesse caso, o acesso dentro das fun ções deve ser feito respeitando a nota ção de ponteiro 11

Exemplo - Parâmetros por Valor [2] #include <stdio.h> int quadrado(int x){ int q = x * x; return (q); int main(){ int num, result; printf( Digite um numero: ); scanf( %d, &num); result = quadrado(num); printf( \nresultado: %d, result); return 0; Exemplo - Parâmetros por Valor [2] #include <stdio.h> void quadrado(int x){ x = x * x; int main(){ int num; printf( Digite um numero: ); scanf( %d, &num); printf( \nvalor antes: %d, num); quadrado(num); printf( \nvalor depois: %d, num); return 0; 12

Exemplo - Parâmetros por Valor [2] #include <stdio.h> float media(float a, float b){ return ((a+b)/2); int main(){ float x, y, med; printf("digite dois valores:"); scanf("%f %f", &x, &y); med = media(x,y); printf("a media eh %f :,med); return 0; Exemplo - Parâmetros por Referência 13

Parâmetros: Comparação [3] Arrays como parâmetros [2] Para utilizar arrays como par âmetros de funções alguns cuidados simples s ão necessários Arrays são sempre passados por refer ência para uma função A passagem de arrays por refer ência evita a cópia desnecessária de grandes quantidades de dados para outras áreas de memória durante a chamada da fun ção 14

Arrays como parâmetros [2] Geralmente utiliza-se um segundo par âmetro (variável inteira) para passar para a fun ção o tamanho do array separadamente Quando passamos um array por par âmetro, independente do seu tipo, o que é de fato passado é o endereço do primeiro elemento do array Ex: void imprime (int m[5], int n); Observação: Ao passar um elemento de um vetor, ele é passado por valor Exercícios [3] Considere o código abaixo usando passagem por referência. Analise-o e explique o resultado mostrando passo a passo as altera ções ocorridas no vetor a void incrementa(int *x, int *y){ *x = *x + (*y); (*y)++; int main(){ int a[] = {1,2,3; for (int i=0; i<3; i++){ incrementa(&a[i],&a[1]); printf("\n %d",a[i]); 15

Exercícios Escreva uma fun ção C chamada media, que recebe três notas e calcula a m édia Escreva uma fun ção C chamada media2, que recebe quatro par âmetros, sendo os tr ês primeiros as notas e o último um parâmetro de retorno, contendo o resultado. Este último parâmetro deve ser passado como refer ência Defina uma função troca, que permute o valor de uma variável do tipo double por outra, ambas passadas por refer ência Exercícios Crie um programa em C que contenha um procedimento que recebe como entrada uma nota e imprime na tela se o aluno passou ou foi reprovado (nota menor que 7). O programa principal dever á fazer a leitura da nota informada pelo usu ário Escreva uma fun ção chamada find_abs que aceite um número real do tipo double passado para ela, calcule seu valor absoluto, e mostre o valor absoluto. O valor absoluto é o próprio número se for positivo, e o negativo do n úmero se o número for negativo 16

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 mostre na tela os elementos de um vetor, que é passado como parâmetro 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 Referências 1. Baranauskas, J. A., Notas de Aula de Sub-algoritmos: Funções e Procedimentos, dispon ível em: http://dcm.ffclrp.usp.br/~augusto/teaching/ici/funcoese-procedimentos.pdf 2. Paiva, E. R., Slides de Modulariza ção da disciplina de Oficina de Programa ção, Faculdade de Computa ção, Universidade Federal de Uberl ândia 3. Vidigal, M. A., Slides de Programa ção Procedimental, Faculdade de Computa ção, Universidade Federal de Uberlândia, disponível em http://www.facom.ufu.br/~madriana/ 17