pi 1617 01 - w3.ualg.ptw3.ualg.pt/~pjguerreiro/sites/27_pi_1617/lessons/pi_1617_01.pdf · Fonte:...
Transcript of pi 1617 01 - w3.ualg.ptw3.ualg.pt/~pjguerreiro/sites/27_pi_1617/lessons/pi_1617_01.pdf · Fonte:...
Programação Imperativa
Lição n.º 1Preliminares
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?
9/22/16 Programação Imperativa 5
ENIAC (1946)
UNIVAC I (1951)
ENIAC: o primeiro computador eletrónico de uso geral.
UNIVAC I: o primeiro computador comercial americano.
O que é um computador? (2)
9/22/16 Programação Imperativa 6
IBM 360 (1965)
DG Eclipse MV/8000 (1980)DEC VAX-11/780 (1978)
PDP 11/70 (1975)
O que é um computador? (3)
9/22/16 Programação Imperativa 7
IBM PC 5150(12 de Agosto de 1981)
Apple Macintosh(24 de Janeiro de 1984)
O que é um computador? (4)
9/22/16 Programação Imperativa 8
Computador “torre” Computador “laptop”
O que é um computador? (5)
9/22/16 Programação Imperativa 9
Macbook Air Microsoft Surface Pro 3
E ainda...
9/22/16 Programação Imperativa 10
Fonte: IEEE Standard Glossary of Computer Hardware Terminology (1994).
I'm sorry, Dave. I'm afraid I can't do that..
HAL 9000
“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.
9/22/16 Programação Imperativa 11
Fonte: IEEE Standard Glossary of Computer Hardware Terminology (1994).
O que é um programa?• Um programa é uma sequência de instruções
que um computador executará automatica-mente, para levar a cabo uma determinada tarefa.
• As instruções são executadas sequencial-mente, 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
9/22/16 Programação Imperativa 20
#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();
elseprintf("%c Invalid option.\n", x);
return 0;}
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.