DECivil Departamento de Engenharia Civil, Arquitectura e Georrecursos Outras Linguagens Aulas 26 e 27 Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 1 Objetivos Revisitar os conceitos apresentados na 1ª aula. Reconhecer a aplicabilidade dos conhecimentos desta UC no âmbito de outras linguagens, utilizando a linguagem C++ como exemplo. Saber comparar a ferramenta MATLAB com outras ferramentas e linguagens de programação. Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 2 Índice • • • • • • Conceitos Gerais (i.e., Revisitação dos Conceitos Iniciais) Programa Simples Cálculo da Velocidade e Altitude Programa com Ciclos Programa com Ciclos e Condicional Velocidade e Altitude com Funções Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 3 Conceitos Gerais Um algoritmo é uma sequência finita de passos (instruções) que podem ser executados mecanicamente para atingir um determinado objetivo, i.e., resolver um problema. Uma linguagem de programação é um conjunto de regras sintácticas e semânticas que permitem expressar algoritmos com vista à sua execução por uma máquina. Uma instrução corresponde ao conceito de frase nas línguas naturais, mas escrita de acordo com uma determinada linguagem de programação. Um programa corresponde a um algoritmo expresso numa linguagem de programação (código fonte) ou numa linguagem máquina (código objeto). Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 4 Conceitos Gerais Genericamente, um computador é uma máquina capaz de receber, processar, e fornecer informação. Especificamente, o computador (digital) é um dispositivo electrónico composto por processador(es), memória, e unidade(s) interna(s) de armazenamento (permanente). Permite guardar informação discreta e executar operações aritméticas e lógicas. É programável, i.e., permite guardar e executar programas. Encontra-se ligado ao exterior através de dispositivos periféricos (rato, teclado, monitor, impressora, rede de comunicação). O sistema operativo é o programa em execução permanente que intermedeia na utilização do computador. Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 5 Conceitos Gerais O compilador e o interpretador são programas que recebem código fonte escrito numa dada linguagem de programação. O interpretador traduz e executa o código fonte “instrução a instrução”. O compilador traduz o código fonte e produz um ficheiro resultante em linguagem máquina, chamado de ficheiro objeto ou executável. A execução deste ficheiro objeto é feita diretamente no computador, sem recorrer ao compilador. Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 6 Conceitos Gerais A programação é a atividade de desenvolver programas, podendo ser dividida nas seguintes fases: • • • • • Análise do problema Especificação do programa Codificação Teste Manutenção Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 7 Conceitos Gerais A programação em larga escala requer uma decomposição sucessiva dos problemas em problemas mais simples. Esta abordagem modular é conhecida por decomposição do topo para a base (top-down). Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 8 Programa Simples exemplo1.cpp #include <iostream> using namespace std; // Um programa em C++ com interação com o utilizador. int main() { double x; /* Declaração de uma variável real */ cout << "Introduza um numero: "; cin >> x; cout << "O quadrado de " << x << " e' " << x * x << endl; } Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 9 Cálculo da Velocidade e Altitude exemplo2.cpp #include <iostream> using namespace std; int main() { double g = 9.81; cout << "Introduza a velocidade inicial (m/s) > "; double v0; cin >> v0; cout << "Introduza o tempo (s) > "; double t; cin >> t; Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 10 Cálculo da Velocidade e Altitude exemplo2.cpp cout << "Resultados na Terra:" << endl; cout << "A velocidade no momento " << t << " e' " << v0 - g * t << " e a altitude e' " << v0 * t - g * t * t / 2.0 << endl; g = 3.63; cout << "Resultados em Marte:" << endl; cout << "A velocidade no momento " << t << " e' " << v0 - g * t << " e a altitude e' " << v0 * t - g * t * t / 2.0 << endl; } Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 11 Programa com Ciclos exemplo3.cpp #include <iostream> using namespace std; int main() { int limInf, limSup; cout << "Introduza os limites de um intervalo de inteiros > "; cin >> limInf; cin >> limSup; Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 12 Programa com Ciclos exemplo3.cpp cout << "Listagem das permutacoes de 2 elementos" << " do intervalo (com repeticoes)." << endl; int primeiro = limInf ; while(primeiro <= limSup) { for(int segundo = limInf ; segundo <= limSup ; segundo = segundo + 1) cout <<"(" << primeiro << ", " << segundo << ")" << endl; primeiro = primeiro + 1; } } Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 13 Programa com Ciclos e Condicional exemplo4.cpp #include <iostream> using namespace std; int main() { int limInf, limSup; cout << "Introduza os limites de um intervalo de inteiros > "; cin >> limInf; cin >> limSup; cout << "Listagem das permutacoes de 2 elementos" << " do intervalo (sem repeticoes)." << endl; Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 14 Programa com Ciclos e Condicional exemplo4.cpp int primeiro = limInf ; while(primeiro <= limSup) { for(int segundo = limInf ; segundo <= limSup ; segundo = segundo + 1) if(primeiro != segundo) cout <<"(" << primeiro << ", " << segundo << ")" << endl; primeiro = primeiro + 1; } } Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 15 Velocidade e Altitude com Funções exemplo5.cpp #include <iostream> using namespace std; double velocidade(double g, double v, double t) { return v - g * t; } double altitude(double g, double v, double t) { return v * t - g * t * t * 0.5; } Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 16 Velocidade e Altitude com Funções exemplo5.cpp int main() { double gTerra = 9.81; double gMarte = 3.63; cout << "Introduza a velocidade inicial (m/s) > "; double v0; cin >> v0; cout << "Introduza o tempo (s) > "; double t; cin >> t; Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 17 Velocidade e Altitude com Funções exemplo5.cpp cout << "Resultados na Terra:" << endl; cout << "A velocidade no momento " << t << " e' " << velocidade(gTerra, v0, t) << " e a altitude e' " << altitude(gTerra, v0, t) << endl; cout << "Resultados em Marte:" << endl; cout << "A velocidade no momento " << t << " e' " << velocidade(gMarte, v0, t) << " e a altitude e' " << altitude(gMarte, v0, t) << endl; } Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 18 Questões Identifique as semelhanças e diferenças entre o MATLAB e a linguagem C++ acerca dos seguintes conceitos: tipos de dados pré-definidos; variável; expressão; instrução; controlo de execução; função; comentário; programa. Implemente em MATLAB o código em C++ aqui mostrado. Qual a consequência de um erro sintático (ou semântico) para o funcionamento de um compilador? Qual a consequência de um erro sintático (ou semântico) para o funcionamento de um interpretador? Computação e Programação IST / DECivil / 2013-2014 Francisco Regateiro 19