Programação Avançada
description
Transcript of Programação Avançada
![Page 1: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/1.jpg)
Programação Avançada
Prof. Natalia Castro FernandesMestrado em Telecomunicações – UFF
2º semestre/2012
![Page 2: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/2.jpg)
Ementa do CursoConceitos básicos de programação
Orientação a objetosLinguagem PythonSimulação com o NS-3Programação para redes definidas por
software (?)
![Page 3: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/3.jpg)
Avaliação2 provas – 40% da notaTrabalhos em sala – 20 % da notaTrabalho final – 40 % da nota
![Page 4: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/4.jpg)
Por que programar?Dissertação de mestrado
Realizar testesFazer simulaçõesArmazenar dadosAnalisar dadosGerar gráficosDesenvolver novos módulosEtc.;
![Page 5: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/5.jpg)
ProgramaçãoAprendizado
Persistência
Dedicação
![Page 6: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/6.jpg)
Qual linguagem usar?A que melhor resolver o seu problema
E se eu não sei qual é a melhor linguagem para resolver o meu problema?Desempenho computacional?Programação simples?Algum sistema específico?
![Page 7: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/7.jpg)
10 regras básicas de programação1. Simplicidade
Busque sempre a solução mais simples Manutenção de código Compreensão do código
2. Comente o seu códigoUtilize variáveis com nomes intuitivos
Comente na instanciação a funcionalidade da variável, caso não seja absolutamente intuitivo
Explique com comentários o porquê de suas escolhas em pontos críticos do código
![Page 8: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/8.jpg)
10 regras básicas de programação
![Page 9: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/9.jpg)
3. Indente o seu código
![Page 10: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/10.jpg)
10 regras básicas de programação4. Use padrões de projeto
Não reinvente a rodaVantagens
Desenvolvimento de código mais rápido Utilização de código testado
5. Alta coesão e baixo acoplamentoAcoplamento = Quão fortemente um elemento está
conectado, tem conhecimento ou depende de outros elementos
Coesão = Quão estritamente um elemento está relacionado e focado com suas responsabilidades
Consequências Evite elementos que façam coisas demais Defina bem qual a funcionalidade de um elemento
![Page 11: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/11.jpg)
10 regras básicas de programação6. Não escreva códigos profundamente
aninhados (Muitos ifs dentro de ifs)Dificuldade de leitura
Tentar manter o código com até 3 níveis de indentação Divida o código em pequenas funções
7. Códigos repetitivos ou com função específica devem ser escritos como funções
![Page 12: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/12.jpg)
10 regras básicas de programação8. Não faça o código todo para depois testar
Teste suas funções antes de utilizá-las Comportamento normal Limites inferiores e superiores de entradas e saídas Entradas não esperadas
9. Faça um bom tratamento de erros
10.O Google é o seu melhor amigo
![Page 13: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/13.jpg)
![Page 14: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/14.jpg)
Algumas definiçõesAlgoritmo
Método para solucionar um problemaEstruturas de dados
Método para organizar informaçõesPrograma
(Algoritmos + estruturas de dados ) expressos com uma linguagem de programação
Programa
Entrada
Saída
![Page 15: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/15.jpg)
Linguagem de programaçãoLinguagem artificial com sintaxe e semântica
bem definidosLinguagem de Programação
Linguagem de máquina
Linguagem natural
Linguagem de
programação
SimplicidadeLinguagem de alto nível
Linguagem de baixo
nível
![Page 16: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/16.jpg)
Mais algumas definiçõesPrograma fonte
Código escrito na linguagem de programaçãoPrograma objeto
Código transformado linguagem de máquina sem ligação com códigos de bibliotecas e subprogramas
Programa executávelPrograma formado pela ligação dos objetos e
que pode ser executado pelo computador
![Page 17: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/17.jpg)
Mais algumas definições
Programa fonte
Link editor
Compilador
Programa objeto
Programa executáve
l
Programa objeto
Programa objeto
...
Bibliotecas
![Page 18: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/18.jpg)
Mais algumas definiçõesInterpretador
Programa fonte é lido, entendido e as instruções são executadas imediatamente
Exemplo Matlab Python
![Page 19: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/19.jpg)
Mais algumas definiçõesEsquema básico
Esquema híbrido
Interpretador
Programa fonte
Saída
Entradas
Interpretador
Programa fonte
Saída
Entradas
Compilador
Programa objeto
![Page 20: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/20.jpg)
PythonLinguagem interpretadaOrientação a objetoMultiplataformaGratuitoBiblioteca embutida extensaGrande variedade de aplicaçõesBoa documentaçãoGrande comunidade
![Page 21: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/21.jpg)
Ambiente de trabalhoLinux
Python nativoWindows
Implementação pronta para baixar
Editor de textoPreferencialmente, com suporte a Python
![Page 22: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/22.jpg)
Ambiente interativo Interação com o interpretador
Entendendo:Entre no terminalDigite pythonDigite
print ‘Hello World!’
help() quit
quit()
![Page 23: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/23.jpg)
Executando um programa em PythonAbra um editor de texto
Digite print “Hello World!”
Abra novamente o terminalDigite
python meu_programa.py
![Page 24: Programação Avançada](https://reader035.fdocument.pub/reader035/viewer/2022062519/568153d5550346895dc1cb92/html5/thumbnails/24.jpg)
ExercícioDescreva, em linguagem natural, um
algoritmo para:
1. Descobrir o valor máximo de uma lista
2. Calcular média de uma lista
3. Ordenar uma lista