24
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações –UFF 2º semestre/2012

Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

Prof. Natalia Castro Fernandes

Mestrado em Telecomunicações – UFF

2º semestre/2012

Page 2: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

Ementa do Curso� Conceitos básicos de programação

� Orientação a objetos

� Linguagem Python

� Simulação com o NS-3� Simulação com o NS-3

� Programação para redes definidas por software (?)

Page 3: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

Avaliação� 2 provas – 40% da nota

� Trabalhos em sala – 20 % da nota

� Trabalho final – 40 % da nota

Page 4: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

Por que programar?� Dissertação de mestrado

� Realizar testes

� Fazer simulações

� Armazenar dados� Armazenar dados

� Analisar dados

� Gerar gráficos

� Desenvolver novos módulos

� Etc.;

Page 5: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

Programação� Aprendizado

PersistênciaPersistência

Dedicação

Page 6: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

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?o meu problema?

� Desempenho computacional?

� Programação simples?

� Algum sistema específico?

Page 7: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

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� Compreensão do código

2. Comente o seu código

� Utilize 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: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

10 regras básicas de programação

Page 9: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

3. Indente o seu código

Page 10: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

10 regras básicas de programação4. Use padrões de projeto

� Não reinvente a roda� Vantagens

� Desenvolvimento de código mais rápido� Utilização de código testado� Utilização de código testado

5. Alta coesão e baixo acoplamento� Acoplamento = 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: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

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� 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: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

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� 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: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente
Page 14: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

Algumas definições� Algoritmo

� Método para solucionar um problema

� Estruturas de dados

Método para organizar informações� Método para organizar informações

� Programa

� (Algoritmos + estruturas de dados ) expressos com uma linguagem de programação

ProgramaEntrada Saída

Page 15: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

Linguagem de programação� Linguagem artificial com sintaxe e semântica bem

definidos

� Linguagem de Programação

Linguagem de máquina

Linguagem natural

Linguagem de programação

Simplicidade

Linguagem de alto nível

Linguagem de baixo nível

Page 16: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

Mais algumas definições� Programa fonte

� Código escrito na linguagem de programação

� Programa objeto

Código transformado linguagem de máquina sem � Código transformado linguagem de máquina sem ligação com códigos de bibliotecas e subprogramas

� Programa executável

� Programa formado pela ligação dos objetos e que pode ser executado pelo computador

Page 17: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

Mais algumas definições

Programa fonte

Link editor

CompiladorPrograma

objetoPrograma executável

Programa objeto

Programa objeto

...

Bibliotecas

Page 18: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

Mais algumas definições� Interpretador

� Programa fonte é lido, entendido e as instruções são executadas imediatamente

� Exemplo� Exemplo

� Matlab

� Python

Page 19: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

Mais algumas definições� Esquema básico

InterpretadorPrograma

fonteSaída

� Esquema híbrido Entradas

InterpretadorPrograma

fonteSaída

Entradas

CompiladorPrograma

objeto

Page 20: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

Python� Linguagem interpretada

� Orientação a objeto

� Multiplataforma

Gratuito� Gratuito

� Biblioteca embutida extensa

� Grande variedade de aplicações

� Boa documentação

� Grande comunidade

Page 21: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

Ambiente de trabalho� Linux

� Python nativo

� Windows

Implementação pronta para baixar� Implementação pronta para baixar

� Editor de texto

� Preferencialmente, com suporte a Python

Page 22: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

Ambiente interativo � Interação com o interpretador

� Entendendo:� Entre no terminal� Entre no terminal

� Digite python

� Digite� print ‘Hello World!’

� help()

� quit

� quit()

Page 23: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

Executando um programa em

Python� Abra um editor de texto

� Digite

� print “Hello World!”

� Abra novamente o terminal

� Digite

� python meu_programa.py

Page 24: Prof. Natalia Castro Fernandes Mestrado em ...natalia/prog_avan/slide1.pdf · 1. Simplicidade Busque sempre a soluç$ m s simples M utenç$ de código Compreens$ do código 2. Comente

Exercício� Descreva, 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