LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ......
Transcript of LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA · Sistema de Impressão v.1.0, (c) Daniel Caetano ......
![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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/1.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/2.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/3.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/4.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/5.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/6.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/7.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/8.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/9.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/10.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/11.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/12.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/13.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/14.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/15.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/16.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/17.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/18.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/19.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/20.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/21.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/22.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/23.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/24.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/25.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/26.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/27.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/28.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/29.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/30.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/31.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/32.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/33.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/34.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/35.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/36.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/37.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/38.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/39.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/40.jpg)
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ó](https://reader033.fdocumentos.com/reader033/viewer/2022050515/5f9edcc8ba16762346386dc5/html5/thumbnails/41.jpg)
BOM DESCANSO A TODOS!