Programação Imperativa Lição n.º 1 Preliminares
Preliminares Apresentação. A programação na LEI. O que é um computador? O que é um programa? Linguagens de programação. A linguagem de programação C. Bibliografia. 9/22/16 Programação Imperativa 2
Apresentação Aulas teóricas às segundas-feiras, das 8:30 às 10:00, e às quintas-feiras, das 9:00 às 10:00, no anfiteatro 1.8.1, no edifício 8. Aulas práticas para várias turmas. Professor das teóricas: Pedro Guerreiro. Professores das práticas: Amine Berqia e Pedro Guerreiro. Avaliação por frequência e exame final. Página na tutoria: https://goo.gl/uewbpf. 9/22/16 Programação Imperativa 3
A programação na LEI Programação Imperativa. Laboratório de Programação. Programação Orientada por Objetos. Algoritmos e Estruturas de Dados. Bases de Dados. Computação Gráfica. Desenvolvimento de Aplicações para a Web. Compiladores. Inteligência Artificial.... 9/22/16 Programação Imperativa 4
O que é um computador? ENIAC: o primeiro computador eletrónico de uso geral. ENIAC (1946) UNIVAC I: o primeiro computador comercial americano. UNIVAC I (1951) 9/22/16 Programação Imperativa 5
O que é um computador? (2) PDP 11/70 (1975) IBM 360 (1965) DEC VAX-11/780 (1978) 9/22/16 DG Eclipse MV/8000 (1980) Programação Imperativa 6
O que é um computador? (3) IBM PC 5150 (12 de Agosto de 1981) Apple Macintosh (24 de Janeiro de 1984) 9/22/16 Programação Imperativa 7
O que é um computador? (4) Computador torre Computador laptop 9/22/16 Programação Imperativa 8
O que é um computador? (5) Macbook Air Microsoft Surface Pro 3 9/22/16 Programação Imperativa 9
E ainda... Fonte: IEEE Standard Glossary of Computer Hardware Terminology (1994). I'm sorry, Dave. I'm afraid I can't do that.. HAL 9000 9/22/16 Programação Imperativa 10
Definição de computador A device that consists of one or more associated processing units and peripheral units, that is controlled by internally stored programs, and that can perform substantial computations, including numerous arithmetic operations, or logic operations, without human intervention during a run. Fonte: IEEE Standard Glossary of Computer Hardware Terminology (1994). 9/22/16 Programação Imperativa 11
O que é um programa? Um programa é uma sequência de instruções que um computador executará automaticamente, para levar a cabo uma determinada tarefa. As instruções são executadas sequencialmente, primeiro a primeira instrução do programa, depois a segunda, e assim por diante até ao fim do programa, exceto no caso das instruções de salto, as quais permitem saltar (condicionalmente ou não) para outra instrução, mais à frente ou mais atrás. 9/22/16 Programação Imperativa 12
Como são os programas? Os programas são texto, isto é, sequências de frases, formadas por palavras, formadas por carateres. Os programas são escritos por pessoas ou por outros programas. Cada programa é escrito numa linguagem de programação. Os compiladores são programas que traduzem um programa escrito numa linguagem para outra linguagem que o computador é capaz de processar mais eficientemente. 9/22/16 Programação Imperativa 13
Programação imperativa A programação imperativa é um estilo de programação que reflete a ideia fundamental de que as instruções constituem ordens que o computador deve cumprir: read, write, call, stop, wait, add, connect, perform, etc. À programação imperativa contrapõe-se a programação funcional, para a qual um programa é a descrição de uma função (no sentido da matemática); executar o programa é avaliar a função para argumentos dados, a fim de obter os correspondentes resultados. 9/22/16 Programação Imperativa 14
Linguagens de programação Os programas são escritos usando linguagens de programação. Cada linguagem de programação é um conjunto de regras definidas inequivocamente num documento de referência. Há regras sintáticas (que exprimem as maneiras válidas de escrever programas) e regras semânticas (que exprimem o significado operacional dos programas). Há ainda regras de estilo, peculiares de cada organização. 9/22/16 Programação Imperativa 15
Principais linguagens 9/22/16 Programação Imperativa 16
A linguagem de programação C Em Programação Imperativa programaremos em C. A linguagem C foi inventada por Dennis Ritchie, nos Laboratórios Bell, em 1972. A linguagem C provém da linguagem B, a qual provinha da linguagem BCPL, a qual provinha da linguagem CPL, a qual provinha do Algol 60. A linguagem C influenciou diretamente as linguagens C++, Java, Objective C, C# e, mais ou menos diretamente, muitas outras. 9/22/16 Programação Imperativa 17
Evolução do C 1972: invenção do C. 1989: normalização ANSI C, ou C89. 1990: normalização ISO C, ou C90, igual à anterior. 1999: normalização ISO, C99. 2011: normalização ISO, C11. 9/22/16 Programação Imperativa 18
Bibliografia 9/22/16 Programação Imperativa 19
Aspeto Como exemplo, um programa C para calcular a medida do ângulo definido por dois segmentos, determinados, cada um deles, pela origem e por um ponto dado. #include <stdio.h> #include <math.h> #define MY_PI 3.14159265358979323846 /* pi */ double magnitude(double x, double y) return sqrt(x * x + y * y); void test_magnitude() double x; double y; while (scanf("%lf%lf", &x, &y)!= EOF) double z = magnitude(x, y); printf("%f\n", z); double inner_product(double x1, double y1, double x2, double y2) return x1 * x2 + y1 * y2; void test_inner_product() double x1; double y1; double x2; double y2; while (scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2)!= EOF) double z = inner_product(x1, y1, x2, y2); printf("%f\n", z); double angle(double x1, double y1, double x2, double y2) return acos(inner_product(x1, y1, x2, y2) / (magnitude(x1, y1) * magnitude (x2, y2))); double degrees(double a) return a * 180 / MY_PI; void test_angle() double x1; double y1; double x2; double y2; while (scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2)!= EOF) double z = angle(x1, y1, x2, y2); printf("%.12f\n", z); double z2 = degrees(z); printf("%.2f\n", z2); int main(int argc, char **argv) char x = 'A'; if (argc > 1) x = *argv[1]; if (x == 'A') test_magnitude(); else if (x == 'B') test_inner_product(); else if (x == 'F') test_angle(); else printf("%c Invalid option.\n", x); return 0; 9/22/16 Programação Imperativa 20