Programação Aplicada à Engenharia

Documentos relacionados
Programação de Computadores I

UNIVERSIDADE DO VALE DO RIO DOS SINOS - UNISINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS - CENTRO 06. Funções, variáveis, parâmetros formais

Conteúdo programático

Universidade Federal de Uberlândia Faculdade de Computação. A Linguagem C

1) <stdio.h> - Contém protótipos de funções da biblioteca padrão de entrada/saída e as informações utilizadas por elas.

Algoritmo e Técnica de Programação - Linguagem C

INF 1005 Programação I

Simulado de Linguagem de Programação Java

UNIVERSIDADE DO TOCANTINS TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PRÁTICA EM PROGRAMAÇÃO DE SISTEMAS

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

Capítulo 2: Introdução à Linguagem C

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Linguagem C. Programação Estruturada. Funções Matemáticas. Prof. Luis Nícolas de Amorim Trigo

Componentes da linguagem C++

Introdução à Linguagem C

Linguagem e Técnicas de Programação I Operadores, expressões e funções. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

Estrutura de um programa em linguagem C

Resumo da Introdução de Prática de Programação com C. A Linguagem C

Inteligência Artificial

Programação 2009/2010 MEEC - MEAer Laboratório 5 Semana de 26 de outubro de 2009

Introdução a Computação

Programação de Computadores I. Linguagem C Função

Conceitos de Linguagens de Programação

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

INF1007: Programação 2 9 Tipos Abstratos de Dados. (c) Dept. Informática - PUC-Rio 1

Lógica de Programação. Profas. Simone Campos Camargo e Janete Ferreira Biazotto

Carlos de Salles Soares Neto Segundas e Quartas, 17h40 às 19h10

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

Apostila de Linguagem C (Conceitos Básicos)

ESTRUTURA DE UM PROGRAMA EM C++ Estrutura de um Programa em C++

Método de ordenação - objetivos:

AULA 1 AULA 2. Estudo dirigido para as três primeiras AULAS de LPI Professora ANITA MACIEL 1º ESTUDO DIRIGIDO

17 - Funções e Procedimentos em C Programação Modular

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

Mestrado em Engenharia Física Tecnológica

Curso de C. Procedimentos e Funções. 6/4/200901/04/09 09:42 Copyright@Arnaldo V Moura, Daniel F Ferber 1

Curso Prático de C++

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

Olimpíadas de Informática

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Programação em C++: Introdução

Introdução à Programação de Computadores Parte I

INFORMÁTICA APLICADA AULA 02 LINGUAGEM DE PROGRAMAÇÃO C++

Algoritmos e Programação

FastCube 2.0 Programmer Manual

Introdução à orientação a objetos

Laboratório de Programação 02

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

Introdução à Informática

2 Segmentação de imagens e Componentes conexas

Fundamentos de Programação. Diagrama de blocos

Aula 1. // exemplo1.cpp /* Incluímos a biblioteca C++ padrão de entrada e saída */ #include <iostream>

Algoritmos e Programação Estruturada

Curso C: Ponteiros e Arrays

Algoritmos APRENDENDO A PROGRAMAR COM C#

INTRODUÇÃO À LINGUAGEM C++

TUTORIAL MATLAB Victor Breder 2016

PROGRAMAÇÃO DE COMPUTADORES

Aula 11: Desvios e Laços

Departamento de Informática - PUC-Rio INF 1005 Programação I P1 22/09/2010 Nota

Banco de Dados I. Prof. Edson Thizon

ALGORITMOS E COMPLEXIDADE PROBLEMAS E ALGORITMOS

Informática I. Aula Aula 19-20/06/06 1

OPERAÇÕES COM FRAÇÕES

MDS II Aula 04. Concepção Requisitos Diagrama de Casos de Uso (Use Cases)

3/19/2014. Compilador DEV C++ ENGENHARIAS LÓGICA DE PROGRAMAÇÃO Henry Lubanco/ Joelio Piraciaba

Introdução ao. Script. Baltazar Tavares (Psycho Mantys)

Curso de Linguagem C

Introdução à Programação

Exercício 1. Tabela 1: Cadastro de usuários, senhas e privilégios (exemplo). Login Senha Privilégio Armamento

MC Teste de Mesa e Comandos Repetitivos

Programação: Tipos, Variáveis e Expressões

Técnicas de Programação I

Operaçõe õ s c om o Strings Intr oduç ão a o Ponte iros o e Funçõe õ s

ADMINISTRAÇÃO DE BANCOS DE DADOS MÓDULO 8

Manipulação de Arquivos

Flávia Rodrigues. Silves, 26 de Abril de 2010

Capítulo 1. Importação de Dados de Instituições Financeiras - Arquivo TXT 3

Estruturas de Repetição

Introdução a C Tipos de Dados Variáveis Operadores

ENG1000 Introdução à Engenharia

Estruturas de entrada e saída

AULA 12 FUNÇÕES Disciplina: Algoritmos e POO Professora: Alba Lopes alba.lopes@ifrn.edu.br

Funções e Estrutura de Blocos

INTRODUÇÃO À LINGUAGEM PASCAL PREFÁCIO

Para programadores de Pascal

14. Arquivos. W. Celes e J. L. Rangel. Estruturas de Dados PUC-Rio 13-1

SISTEMAS OPERACIONAIS. 3ª. Lista de Exercícios

Leiaute de arquivos XML para Carta-Circular 3254

Sistemas Operacionais. Rodrigo Rubira Branco

Tipos de Dados Simples

Esta apresentação ensinará os conceitos de Orientação a Objetos com C++, do mais básico para o mais avançado. É suposto que o aluno já tenha

9. Estruturas em C Registros

Introdução à Linguagem C

Transcrição:

Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Programação Aplicada à Engenharia Aula 09: Funções Silvio Fernandes 2009.1 1

Introdução A melhor maneira de desenvolver e manter um grande programa é construí-lo a partir de pequenas partes ou componentes Técnica Dividir para Conquistar Os módulos em C++ são chamados funçõese classes Combinação entre funções novas que o programador escreve e funções préempacotadas da biblioteca padrão 2

Introdução Funções definem tarefas específicas que podem ser usadas em muitos pontos de um programa Um função é invocada(executar a tarefa designada por ela) por uma chamada de função Uma chamada de função especifica o nome da função e fornece informações (argumentos) necessária para a função executar 3

Introdução Uma analogia: o chefe (chamador de função) pede para um funcionário (função chamada) executar uma tarefa e retornar(devolver) os resultados main worker1 worker2 worker3 worker4 worker5 4

Funções da biblioteca matemática Permitem o programador executar cálculos matemáticos comuns As funções normalmente são chamadas escrevendo o nome da função seguido pelo parêntese esquerdo, depois pelo argumento (ou uma lista separados por vírgula) e o parêntese direito cout << sqrt(900.0); 5

Funções da biblioteca matemática A função sqrt é chamada para calcular a raiz quadrada de 900.0. Essa função recebe um double e retorna um double Todas as funções da biblioteca matemática retornam double Para usar as funções da biblioteca matemática, inclua o arquivo de cabeçalho <cmath> ou <math.h> 6

Funções da biblioteca matemática Os argumentos de funções podem ser constantes, variáveis ou expressões Se c1 = 13.0, d = 3.0 e f = 4.0, o comando cout << sqrt(c1+d*f); Calcula e imprime a raiz quadrada de 25, ou seja, 5 A seguir alguma funções da biblioteca matemática, onde as variáveis xe ysão double 7

Funções da biblioteca matemática Método Descrição Exemplo ceil( x ) arredonda x para o menor inteiro não menor que x ceil( 9.2 ) é 10.0 ceil( -9.8 ) é -9.0 cos( x ) co-seno trigonométrico de x (radianos) cos( 0.0 ) é 1.0 exp( x ) função exponencial e x exp( 1.0 ) é 2.71828 fabs( x ) valor absoluto de x fabs( 5.1) é 5.1 fabs( -8.6) é 8.6 floor( x ) arredonda xpara o maior inteiro não maior que x floor( 9.2 ) é 9.0 floor( -9.8 ) é -10.0 fmod( x, y ) resto de x/y como ponto flutuante fmod(13.657, 2333) é 1.992 log( x ) logaritmo natural de x (base e) log(2.718282 ) é 1.0 log10( x ) logaritmo de x (base 10) log10( 100.0 ) é 2.0 pow( x, y ) x elevado à potência de y pow( 2, 7 ) é 128 sin( x ) seno trigonométrico de x (em radianos) sin( 0.0 ) é 0 sqrt( x ) raiz quadrada de x sqrt( 900.0 ) é 30.0 tan( x ) tangente trigonométrica de x (radianos) tan( 0.0 ) é 0 8

Definições de funções Todas as variáveis declaradas em definições de função são variáveis locais elas só são conhecida na função na qual são definidas A maioria das funções tem uma lista de parâmetrosque provêem os meios para transferir informações entre funções Os parâmetros de uma função também são variáveis locais 9

Definições de funções Cada programa consiste em uma função main que chama as funções da biblioteca padrão ou definidas pelo programador para realizar as tarefas #include <iostream> int square( int ); //protótipo da função int main(){ for ( int x = 1; x <= 10; x++ ) cout << square( x ) << " ; cout << endl; return 0; } // Definição da função int square( int y ){ return y * y; } 10

Definições de funções O formato de uma definição de função é tipo do valor de retorno nome da função(lista de parâmetros){ } declarações e comandos //corpo da função ou bloco Um tipo de retorno voidindica que a função não retorna um valor A lista de parâmetros é separada por vígula, incluindo o tipo de cada parâmetro. Se a função não possui parâmetros a lista é voidou simplesmente vazia 11

Definições de funções Há três maneiras de retornar o controle para o ponto no qual a função foi chamada return; //para funções void Se a função não retorna nenhum valor o } indica fim da função então é retornado returnexpressao; // quando a função retorna algum valor como resultado 12

Protótipos de Funções Diz ao compilador o nome da função, o tipo dos dados retornados pela função, o número de parâmetros que a função espera receber, os tipos dos parâmetros e a ordem na qual esses parâmetros são esperados Ex: int maximum(int, int, int); 13

Protótipos de Funções Os protótipos permitem o compilador converter tipos automaticamente A tabela a seguir classifica os tipos do maior tipo para menor tipo 14

Protótipos de Funções Tipos de Dados long double double float unsigned long int sinônimo de unsigned long long int sinônimo de long unsigned int sinônimo de unsigned int unsigned short int sinônimo de unsigned short short int sinônimo de short unsigned char char bool false torna-se 0, true torna-se 1 15

Arquivos de cabeçalho Cada biblioteca padrão tem um arquivo de cabeçalhocorrespondente contendo os protótipos de todas as funções daquela biblioteca e definições dos vários tipos de dados e constantes necessários por elas Os arquivos de cabeçalho terminam com.h Os arquivos de cabeçalho definidos pelo programador deve terminar com.h 16

Principais arquivos de cabeçalho Arquivo de cab. Explicação <cassert> <cctype> <cfloat> <climits> <cmath> <cstdio> <cstdlib> Contém macros e informações para adicionar diagnósticos que ajudam o programador a realizar depuração. Ver. antiga <assert.h> Contém protótipos para funções que examinam caracteresem busca de determinadas propriedades dos caracteres e para funções que podem ser usadas para converter letras maiúsculas em minúsculas e vice-versa. Ver. antiga <ctype.h> Contémlimites do sistema para o tamanho dos números de ponto flutuante. Ver. antiga <float.h> Contém os limites do sistema para os tamanhosdos números inteiros. Ver. antiga <limits.h> Contém protótipos de funçõesda biblioteca matemática. Ver. antiga <math.h> Contém proptótiposde funções de entrada/saídae as informações utilizadas por elas. Ver. antiga <stdio.h> Protótipos de funções para conversãode números em texto e texto em números, alocação de memória, números aleatórios e outras funções com várias finalidades. Ver. antiga <stdlib.h> 17

Principais arquivos de cabeçalho Arquivo de cab. <cstring> <ctime> <iostream> <iomanip> <fstream> <utility> <vector>,<list>, <deque>, queue>, <stack>, <zmap>, <set>, <bitset> Explicação Protótipos de funções para processamento de strings. Ver. antiga <string.h> Funções para manipular horários e datas. Ver. antiga <time.h> Funções padrão de entrada e saída. Ver. antiga <iostream.h> Funções para os manipuladores de streamque permitem a formatação de dados. Ver. antiga <iomanip.h> Funções que executam operações de entrada e saída de arquivos em disco. Ver. antiga <fstream.h> Contém classes e funções que são usadas por muitos arquivosde cabeçalho da biblioteca padrão Contém classes que implementam contêineres, usados para armazenar dados durante a execução de um programa. 18

Principais arquivos de cabeçalho Arquivo de cab. Explicação <functional> <memory> <iterator> <algorthm> <exception> <stdexcept> <string> <sstream> <typeinfo> Contém classes e funções usadas por algoritmosda biblioteca padrão Contém classes e funções usadas paraalocar memória para os contêineres da biblioteca padrão Contém classes para acessar dados nos contêineres da biblioteca padrão Contém funções para manipular dados nos contêineres Estes arquivos contêm classes que são usadas para tratamento de exceções(erros) Contém a definição da classe string Funções que realizam operações de entrada e saída para strings na memória Contém classes para a identificação de tipos em tempo de execução 19

Geração de números aleatórios Considere o seguinte comando i = rand(); A função rand()gera um inteiro entre 0 e RAND_MAX(constante definida em <cstdlib>) Quando a função rand() é chamada, todos os números entre 0 e RAND_MAX terão a mesma probabilidade Para produzir inteiros no intervalo de 0 a 5 usamos o operador módulo (%) junto com rand() rand() % 6 20

Geração de números aleatórios Isso é chamado ajuste de escalae o 6 o fator de escala Ex: Simular 20 lançamentos de um dado de 6 faces #include <iostream.h> #include <iomanip.h> #include <cstdlib.h> int main(){ for ( int i = 1; i <= 20; i++ ) { cout << setw( 10 ) << ( 1 + rand() % 6 ); if ( i % 5 == 0 ) cout << endl; } return 0; } 21

Geração de números aleatórios A função rand() gera números pseudo-aleatórios A função srandda biblioteca padrão utiliza um argumento como sementeda função randde forma a produzir uma seqüência diferentes de números aleatórios a cada execução do programa O protótipo de srand é encontrado em<cstdlib> Se desejássemos randomizar sem necessidade de fornecer uma semente cada vez, poderíamos usar srand( time (0) ); Isso faz com que o computador leia seu relógio para obter automaticamente o valor da semente. A função timeretorna a hora de calendário atual e está na biblioteca <ctime> 22

Enum Cria um tipo definido pelo usuário chamado de enumeração enum nome_novo_tipo {valor1, valor2, valor3}; Os valores são constantes inteiras representados pelos idetificadores (valor1,...) Ex: enum Meses {JAN = 1, FEV, MAR, ABR, MAI, JUN, JUL, AGO, SET, OUT, NOV, DEZ}; 23

Regras de Escopo A parte do programa na qual um identificador tem significado é conhecida como seu escopo Escopo de arquivo Identificadores declarados fora de qualquer função. Eles são conhecidos por todas as funções (variáveis globais, definições e protótipos de funções) Escopo de bloco Identificadores declarados entre {} (variáveis locais, vistas só dentro do bloco) 24

Regras de Escopo Escopo de função Identificadores declarados dentro de funções Escopo de protótipo de função Se identificadores forem usados no protótipo de uma função (lista de parâmetros), será ignorado pelo compilador. O protótipo de função necessita apenas dos tipos dos parâmetros. 25

Recursão Função recursiva é uma função que chama a si mesma, direta ou indiretamente Quando uma função chama a si mesma, essa nova chamada pode chamar uma terceira e assim por diante Quando a última cópia da função retorna o resultado (através de return), para aquela que chamou. E assim por diante até a primeira chamada 26

Fatorial iterativo (não recursivo) Fatorial de um inteiro não-negativo n (n!) é n * (n-1) * (n-2) *... * 1 Com 1! e 0! Igual a 1, por definição O fatorial de numberpode ser calculado como fatorial = 1; for(int counter = number; counter >= 1; counter-- ){ fatorial *= counter; } Chega-se a definição recursiva n! = n*n(n-1)! 27

Fatorial recursivo Função recursiva do fatorial unsigned long factorial ( unsigned long number){ if (number <= 1) //caso base return 1; else return number * factorial(number -1); } 28

Fatorial recursivo Calculo recursivo de 5! 120 é o valor final 5! 5 * 4! 4 * 3! 3 * 2! 2 * 1! 1 5! 5 * 4! 5! = 5*4*3*2*1=120 é o valor retornado 4 * 3! 4! = 4*3*2*1=24 é o valor retornado 3 * 2! 3! = 3*2*1=6 é o valor retornado 2 * 1! 1 2! = 2*1 é o valor retornado 1 é o valor retornado Processamento de chamadas recursivas Valores retornados de cada chamada 29

Referência DEITEL, H. M.; DEITEL, P. J. C++ como programar. 3 ed. Porto Alegre: Bookman, 2001. 30