Engenharia de Software
Objectivos Indicação onde são utilizados os computadores Primeiro programa em C++ Etapas básicas do desenvolvimento de programas Projecto centrado nos objectos Classes e programação orientada por objectos 2
Utilização de computadores Indústria Robots, CAD, gestão de projectos e controlo Estado Defesa, espaço, dados seguros, tempo Medicina Registos médicos, sistema de apoio à vida, tomografias axiais Lazer Animação, efeitos especiais, jogos Ciência Simulações, análise molecular, teste de qualidade a alimentos Tecnologias da Informação Bibliotecas digitais, arte online 3
O Mundo do C++ Exemplo de programa: Comentários /* saudacoes.cpp sauda o seu utilizador * * Input: O nome do utilizador * Output: Uma saudacao personalizada *********************************************************/ #include <iostream> // cin, cout, <<, >> #include <string> // string using namespace std; int main() { cout << Introduza o seu nome, por favor: "; string nome; cin >> nome; cout << "\nbenvindo ao mundo do C++, " << nome << "!\n"; } Nomes relacionados com normas de C++ Bloco principal do programa. Contém instruções de C++. Instruções de compilação 4
O Mundo do C++ Instruções em C++ int main() { variável cout << Introduza o seu nome, por favor: "; string nome; cin >> nome; cout << "\nbenvindo ao mundo do C++, " << nome << "!\n"; } Declaração de Saída de cadeia de caracteres e de valor gravado numa variável Instrução de saída para o utilizador Entrada do teclado gravada numa variável 5
Etapas do desenvolvimento de programas 1. Projecto Análise do problema, e especificação do algoritmo para resolver o problema. 2. Codificação do programa Escrita da solução na sintaxe da linguagem escolhida 3. Execução, testes e depuração de erros Correção de erros (debugging) 4. Manutenção Actualizações (updates), e modificações necessárias 6
Problema Maior bola de corda do mundo existe em Cawker City, Kansas, EUA. Quanto pesa a bola? Quantos Kms atingiria a bola de fio se fosse desenrolada? 7
Programação centrada em Objectos 1. Comportamento: descrição do que o programa deve fazer. 2. Objectos: Identificar e dar categorias aos objectos. 3. Operações: Identificar as operações necessárias para resolver o problema. 4. Algoritmo: manipula os objectos e as operações sobre os objectos de forma a resolver o problema. 8
Comportamento Cálculo do peso de uma bola de corda. Insira o raio da esfera : 9 Insira a densidade da esfera: 100 A calcular... Peso da bola de corda = 999.99 9
Objectos Descrição prompt para raio da esfera Objectos Tipo Espécie Nome string Constante nenhum Écran ostream variável cout raio da esfera double variável raio Teclado istream variável cin peso da bola double variável peso 10
Objectos adicionais O cálculo do peso requer objectos adicionais: Descrição Objectos Tipo Espécie Nome densidade da esfera double variável densidade 4.0 double constante π double constante PI 3 integer constante 3.0 double constante 11
Operações Escreve prompt para raio da esfera em cout Recebe valor real de cin Grava o valor em raio Escreve prompt para densidade da esfera em cout Recebe valor real de cin Grava o valor em densidade Calcula o peso Devolve o valor de peso para cout 12
Algoritmo 1. Inicializa constante PI 2. Enviar prompt para cout para raio da esfera 3. Recebe valor real de cin, e grava-o em raio 4. Enviar prompt para cout para densidade da esfera. 5. Recebe valor real de cin, e grava-o em densidade 6. Calcula: peso = densidade 4.0 π raio 3.0 7. Saída do valor do peso para cout 3 13
Codificação Primeiro, cria-se um programa vazio que contém: O cabeçalho, directivas para o compilador para adicionar as bibliotecas necessárias para os objectos e operações Uma função main vazia Conversão de cada passo do algoritmo em código. Se for utilizado um objecto que não foi declarado anteriormente, adiciona uma instrução de declaração que especifica o tipo e o nome do objecto. 14
Programa PesoEsfera.cpp /* PesoEsfera.cpp calcula o peso de uma esfera. * * Input: O raio (metros) e a densidade (Kg/m3) * da esfera * Output: O peso da esfera (Kg) ************************************************/ #include <iostream> // cin, cout, <<, >> #include <cmath> // pow() using namespace std; int main() { } 15
Programa PesoEsfera.cpp int main() { const double PI = 3.14159; cout << Insira o raio da esfera (m): "; double raio; cin >> raio; cout << \ninsira a sua densidade (Kg/m3): "; double densidade; cin >> densidade; double peso = densidade * 4.0 * PI * pow(raio, 3) / 3.0; cout << \no peso da esfera e aproximadamente " << peso << " Kg.\n"; } 16
Testes Insira o raio da esfera (m): 6.5 Insira a sua densidade (Kg/m3): 14.6 O peso da esfera e aproximadamente 16795 Kg 17
Testes, Execução e Depuração Erros mais comuns: Erros gramaticais (de sintaxe) na linguagem de alto nível Erros durante a execução Erros no projecto do algoritmo 18
Erros de sintaxe Exemplo: double raio Falta um ponto e vírgula ( ; ) Compilador encontra este tipo de erros. O diagnóstico depende do compilador. O Visual C++ dá informações detalhadas dos erros. 19
Erros de execução (run-time) Não são detectados até o programa correr Exemplos: Divisão por zero faz o programa rebentar (dá erro e acaba a execução do programa). Tirar a raíz quadrada de um número negativo faz o programa acabar. Os programas devem ser modificados de forma a evitar que o programa acabe onde não deve. 20
Erros lógicos (semânticos) O programa compila, corre sem erros, mas devolve resultados incorrectos! Estes erros podem ser difíceis de encontrar. São encontrados através de exemplos de dados, e comparando com cálculo dos resultados à mão. Nota: Os testes são cada vez mais difíceis quanto maior é o programa Alguns programas correm durante anos até aparecer um erro lógico. 21
Manutenção Programas dos alunos correm apenas algumas vezes Programas no mundo real são utilizados durante bastantes anos Devido a investimentos significativos de recursos Um programa pode exigir novas tarefas durante o seu ciclo de vida. A manutenção é chamada upgrading. 22
Esfera como um objecto Relembrando a descrição do comportamento da esfera de corda: Pergunta o valor valor do do raio raioe densidade. Utilizador introduz os os valores. Programa calcula calculao peso, peso, e mostra-o no no écran. écran. Verificando a lista de objectos: Não são referidos objectos do tipo esfera. São apenas utlizados os atributos da esfera. O substantivo principal foi ignorado esfera 23
Criação de um novo tipo: Esfera Quando não existe um tipo para um objecto é criado um novo: É denominada de classe Uma dada classe contém: Espaço em memória para guardar os atributos de um objecto Operações para manipular esse objecto 24
Operações para a classe Esfera Inicialização dos atributos em valores por defeito Leitura de vários valores para os atributos Escrita dos vários valores dos atributos Obtenção de valores dos atributos para serem utilizadas por outras operações (funções, etc.) 25
Exemplo de código com Esfera #include <iostream> // cin, cout, <<, >> #include Esfera.h" // classe Esfera using namespace std; int main() { cout << Insira o raio (m)" << " e a densidade (Kg/m3) da esfera: "; Esfera umaesfera; umaesfera.leraio_e_densidade(cin); cout << "\na esfera pesa " << umaesfera.buscarpeso() << " Kg.\n"; } Declaração de objecto do tipo Esfera Ficheiro com a declaração de Esfera Objecto umaesfera recebe mensagem para efectuar operações 26
Cálculo da densidade com a classe #include <iostream> // cin, cout, <<, >> #include Esfera.h" // classe Esfera using namespace std; int main() { cout << Insira o raio (m) " << " e o peso (Kg) da esfera: "; Esfera umaesfera; umaesfera.leraio_e_peso(cin); cout << "\na densidade da esfera e " << umaesfera.buscardensidade() << " Kg/m3\n"; } 27