Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012 Ementa do Curso  Conceitos básicos de programação  Orientação a objetos  Linguagem Python  Simulação com o NS-3  Programação para redes definidas por software (?) Avaliação  2 provas – 40% da nota  Trabalhos em sala – 20 % da nota  Trabalho final – 40 % da nota Por que programar?  Dissertação de mestrado  Realizar testes  Fazer simulações  Armazenar dados  Analisar dados  Gerar gráficos  Desenvolver novos módulos  Etc.; Programação  Aprendizado Persistência Dedicação 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? 10 regras básicas de programação 1. Simplicidade  Busque sempre a solução mais simples   Manutenção de 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 10 regras básicas de programação 3. Indente o seu código 10 regras básicas de programação 4. Use padrões de projeto  Não reinvente a roda  Vantagens   5. Desenvolvimento de código mais rápido Utilização de código testado 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 10 regras básicas de programação 6. 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 10 regras básicas de programação 8. 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 Algumas definições  Algoritmo  Método para solucionar um problema  Estruturas de dados  Método para organizar informações  Programa  (Algoritmos + estruturas de dados ) expressos com uma linguagem de programação Entrada Programa Saída Linguagem de programação  Linguagem artificial com sintaxe e semântica bem definidos  Linguagem de Programação Linguagem de baixo nível Linguagem de máquina Linguagem de alto nível Linguagem de programação Simplicidade Linguagem natural Mais algumas definições  Programa fonte  Código escrito na linguagem de programação  Programa objeto  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 Mais algumas definições Programa fonte Compilador Programa objeto ... Programa objeto Programa objeto Bibliotecas Link editor Programa executável Mais algumas definições  Interpretador  Programa fonte é lido, entendido e as instruções são executadas imediatamente  Exemplo   Matlab Python Mais algumas definições  Esquema básico Programa fonte Interpretador  Esquema híbrido Programa fonte Compilador Saída Entradas Programa objeto Interpretador Entradas Saída Python  Linguagem interpretada  Orientação a objeto  Multiplataforma  Gratuito  Biblioteca embutida extensa  Grande variedade de aplicações  Boa documentação  Grande comunidade Ambiente de trabalho  Linux  Python nativo  Windows  Implementação pronta para baixar  Editor de texto  Preferencialmente, com suporte a Python Ambiente interativo  Interação com o interpretador  Entendendo:  Entre no terminal  Digite python  Digite  print ‘Hello World!’  help()  quit  quit() Executando um programa em Python  Abra um editor de texto  Digite  print “Hello World!”  Abra novamente o terminal  Digite  python meu_programa.py 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