41
L ÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA Prof. Dr. Daniel Caetano 2012 - 2 MODULARIZAÇÃO E ORGANIZAÇÃO DE CÓDIGO

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA

Prof. Dr. Daniel Caetano

2012 - 2

MODULARIZAÇÃO E ORGANIZAÇÃO DE CÓDIGO

Page 2: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Objetivos

• Entender a utilidade das funções

• Capacitar o aluno para criar suas próprias funções

• Compreender a função main

• LISTA 1

Page 3: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Material de Estudo

Material Acesso ao Material

Notas de Aula http://www.caetano.eng.br/ (Aula 15)

Apresentação http://www.caetano.eng.br/ (Aula 15)

Material Didático Lógica de Programação – Fundamentos da Programação de Computadores, páginas 7 a 47.

Page 4: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

FUNÇÕES SIMPLES

Page 5: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Funções Simples • Situação: precisamos imprimir 8x o seguinte

texto:

Sistema de Impressão v.1.0, (c) Daniel Caetano

• Um jeito de fazer seria usar vários “cout”:

cout << “Sistema de Impressão v.1.0, (c) Daniel Caetano”;

cout << “Sistema de Impressão v.1.0, (c) Daniel Caetano”;

cout << “Sistema de Impressão v.1.0, (c) Daniel Caetano”;

cout << “Sistema de Impressão v.1.0, (c) Daniel Caetano”;

cout << “Sistema de Impressão v.1.0, (c) Daniel Caetano”;

cout << “Sistema de Impressão v.1.0, (c) Daniel Caetano”;

cout << “Sistema de Impressão v.1.0, (c) Daniel Caetano”;

cout << “Sistema de Impressão v.1.0, (c) Daniel Caetano”;

Page 6: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Funções Simples • Será que não tem um jeito mais simples?

• Não seria legal dar um nome imprime...

– E quando quiser imprimir só escrever imprime?

• Isso é possível!

void imprime(void) {

cout << “Sistema de Impressão v.1.0, (c) Daniel Caetano”;

}

Page 7: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Funções Simples • Agora posso imprimir 8x aquele texto assim:

imprime();

imprime();

imprime();

imprime();

imprime();

imprime();

imprime();

imprime();

• Bem mais fácil, não?

• Como fica o programa inteiro?

Page 8: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Arq.: imprime.cpp #include <iostream>

using namespace std;

void imprime(void) {

cout << “Sistema de Impressão v.1.0, (c) Daniel Caetano”;

}

int main(void) {

imprime(); /* Repita quanto quiser! */

imprime();

imprime();

}

Page 9: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Arq.: imprime.cpp #include <iostream>

using namespace std;

void imprime(void) {

cout << “Sistema de Impressão v.1.0, (c) Daniel Caetano”;

}

int main(void) {

imprime(); /* Repita quanto quiser! */

imprime();

imprime();

}

Page 10: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Arq.: imprime.cpp #include <iostream>

using namespace std;

void imprime(void) {

cout << “Sistema de Impressão v.1.0, (c) Daniel Caetano”;

}

int main(void) {

imprime(); /* Repita quanto quiser! */

imprime();

imprime();

}

Declaração da Função: define o nome da função

Page 11: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Arq.: imprime.cpp #include <iostream>

using namespace std;

void imprime(void) {

cout << “Sistema de Impressão v.1.0, (c) Daniel Caetano”;

}

int main(void) {

imprime(); /* Repita quanto quiser! */

imprime();

imprime();

}

Para executar a função, indicamos o

nome seguido de parênteses

Page 12: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Arq.: imprime.cpp #include <iostream>

using namespace std;

void imprime(void) {

cout << “Sistema de Impressão v.1.0, (c) Daniel Caetano”;

}

int main(void) {

imprime(); /* Repita quanto quiser! */

imprime();

imprime();

}

Uma função precisa ser declarada antes de

ser usada

Page 13: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

ESCOPO DE VARIÁVEIS

Page 14: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Escopo de Variáveis • Escopo = Vale Onde?

• Variáveis das funções: locais

– Só valem dentro da própria função

• Passar dados de uma função para outra?

– Na chamada: parâmetros

– Receber respostas: return

main pow

Parm: 2, 4

Ret: 16 X = 5 cout << X;

Page 15: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

FUNÇÕES COM PARÂMETROS E RETORNOS

Page 16: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Função com Parâmetros e Retorno • Vejamos como funciona... int absoluto(int n) {

if (n >=0) return n;

else return –n;

}

• Como usar...? int main(void) {

int i, j;

cin >> i;

j = absoluto(i);

cout << “O valor absoluto é: ” << j;

}

Page 17: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Função com Parâmetros e Retorno • Vejamos como funciona... int absoluto(int n) {

if (n >=0) return n;

else return –n;

}

• Como usar...? int main(void) {

int i, j;

cin >> i;

j = absoluto(i);

cout << “O valor absoluto é: ” << j;

}

n ← i

Page 18: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Função com Parâmetros e Retorno • Vejamos como funciona... int absoluto(int n) {

if (n >=0) return n;

else return –n;

}

• Como usar...? int main(void) {

int i, j;

cin >> i;

j = absoluto(i);

cout << “O valor absoluto é: ” << j;

}

j ← n

Page 19: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Função com Parâmetros e Retorno • Vejamos como funciona... int absoluto(int n) {

if (n >=0) return n;

else return –n;

}

• Como usar...? int main(void) {

int i, j;

cin >> i;

j = absoluto(i);

cout << “O valor absoluto é: ” << j;

}

j ← -n

Page 20: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

FUNÇÕES NA PRÁTICA

Page 21: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Criando Funções • Passo 1: criar um programa que calcule e

imprima o perímetro de um círculo de raio 2

– P = 2∙π∙R

– π = 3,141592

Page 22: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Criando Funções • Passo 2: transformar o cálculo em uma

função chamada perimetro

Page 23: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Criando Funções • Passo 2: transformar o cálculo em uma

função chamada perimetro

– As variáveis criadas dentro da função só existem dentro desta função

– Elas são chamadas variáveis locais

– Não é possível acessar uma variável local a não ser de dentro da própria função

– Os valores das variáveis locais são destruídos quando a função finaliza

Page 24: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Criando Funções • Passo 3: modificar a função perimetro para

que ela para que ela retorne o resultado, ao invés de imprimi-lo

Page 25: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Criando Funções • Passo 3: modificar a função perimetro para

que ela para que ela retorne o resultado, ao invés de imprimi-lo

– return deve sempre retornar um valor do tipo correto

– return pode ser usado sem nenhum valor em funções cujo retorno é do tipo “void”

Page 26: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Criando Funções • Passo 4: modificar a função perimetro para

que ela receba o raio do círculo como parâmetro

Page 27: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Criando Funções • Passo 4: modificar a função perimetro para

que ela receba o raio do círculo como parâmetro

– Os parâmetros funcionam como variáveis locais

– O valor fornecido como parâmetro (o raio) é copiado para essa “variável local”

Page 28: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Criando Funções • Passo 5: mova a função para o fim do

arquivo

Page 29: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Criando Funções • Passo 5: mova a função para o fim do

arquivo

–A declaração inicial é chamada:

• protótipo de função

• declaração de função

• assinatura de função

Page 30: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

A FUNÇÃO MAIN

Page 31: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Função Main

• Você já deve ter reparado...

• Main é uma função!

• Seu nome é main porque é lá que o computador inicia a execução

• Observe sua definição:

int main(void) { }

Page 32: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Função Main

• Observe sua definição:

• Retorna int: código de erro para o Windows

• void indica que ela não usa parâmetros

int main(void) { }

Page 33: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

EXERCÍCIO

Page 34: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Exercício

• math.h → round(n)

– Arredonda “para inteiro mais próximo”

– Ex.: 1.67 → 2

• Como arredondar com 1 casa decimal?

– Ex.: 1.67 → 1.7

• 1 casa → *10 e /10

• 2 casas → *100 e /100

• 3 casas → *1000 e /1000

• n casas → *? e /?

Page 35: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Exercício

• Vejamos de uma outra forma...

• Para arredondar:

• 1 casa → *10 e /10 → *101 e /101

• 2 casas → *100 e /100 → *102 e /102

• 3 casas → *1000 e /1000 → *103 e /103

• n casas → *10n e /10n

• Em C: 10n → pow(10,n)

Page 36: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Exercício

• Crie uma função chamada arredonda que tenha o seguinte protótipo:

float arredonda(float VALOR, int CASAS)

Page 37: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

CONCLUSÕES

Page 38: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Resumo

• O uso de funções simplifica o reaproveitamento de código

• As funções podem receber parâmetros e podem retornar resultados

• TAREFA!

– Lista 2... AV2!

Page 39: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

Próxima Aula

Page 40: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

PERGUNTAS?

Page 41: LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ... Escopo de Variáveis •Escopo = Vale Onde? •Variáveis das funções: locais –Só

BOM DESCANSO A TODOS!