Informá(ca para as Ciências e Engenharias
Versão : C
(Engenharia Civil)
Pedro Barahona 2018 / 19
Introdução
• Esta unidade curricular, é uma variante de outras similares lecionadas a outros cursos da FCT/NOVA, sendo lecionada a todos os perfis do
« MIEC - Mestrado Integrado em Engenharia Civil
e em que:
§ São introduzidos os conceitos básicos da arquitectura de um
computador e do ciclo de vida de um programa.
§ É feita a aprendizagem dos conceitos fundamentais da programação
imperativa para resolver problemas simples das áreas das Ciências e Engenharias.
§ É feita uma introdução muito sucinta às bases de dados relacionais, às
Informação Geral
• Docentes, obje4vos e tópicos do programa • Funcionamento e trabalho dos alunos
• Avaliação • Bibliografia
Docentes e Objectivos
• Docentes
§ Teóricas e Teórico-Prá5cas
« Pedro Barahona
§ Prá5cas
« Pedro Barahona (Turno P1)
« Susana Nascimento (Turnos P2 e P3) • Objec5vos
§ Adquirir uma visão em largura das metodologias e ferramentas que
a Informá5ca disponibiliza para a resolução de problemas das áreas das Ciências e Engenharias.
Tópicos do Programa
1. Introdução.
2. Conceitos básicos sobre Sistemas Informá>cos.
3. Conceitos fundamentais da Programação (1ª parte). 4. Redes de computadores. A Web.
5. Conceitos fundamentais da Programação (2ª parte). 6. Breve introdução às Bases de Dados.
Funcionamento
• Assume-se que os alunos não têm conhecimentos prévios de Informá;ca
• As aulas teóricas já começaram: Hoje!
§ O estudo deve começar também hoje.
• As aulas prá;cas começam para a semana.
§ Há uma aula prá;ca de 2 horas por semana.
§ A aula é preparada na correspondente Teórico-Prá;ca
• A presença nas aulas é muito recomendada mas não é obrigatória.
Trabalho do Aluno
• 6 créditos segundo o sistema ECTS • 1 crédito = 28 horas de trabalho • Horas em contacto
§ Aulas teóricas (2h por semana)
§ Aulas teórico-práticas (1h por semana) § Aulas práticas (2h por semana)
§ Esclarecimento de dúvidas (no horário de atendimento)
• Horas em autonomia
§ Estudo da matéria das aulas teóricas e práticas, preparação para os testes
Trabalho do Aluno
• 6 ECTS * 28 horas / ECTS = 168 horas • Horas em contacto
§ Aulas teóricas: 12 semanas * 2 h /semana = 24horas § Aulas teó-prát: 12 semanas * 1 h /semana = 12 horas § Aulas práDcas: 12 semanas * 2 h /semana = 24 horas
• Horas de estudo por semana
§ Estudo: 14 semanas * 4 h /semana = 56 horas
• Avaliação
§ Realização dos trabalhos práDcos: = 38 horas
§ Testes e Exame = 4 horas
Avaliação (Teórica)
• 2 Testes ou Exame (de Recurso)
§ T1 – sábado, 28 de Abril às 9h00; § T2 – sábado, 8 de Junho às 11h30; § Ex – 3ª feira, 25 de Junho às 9h00.
• Nota da Comp. Teórico-Prática (CompTP):
§ CompTP = (T1 + T2) / 2 ou CompTP = Ex
• Para obter aprovação:
Avaliação (Prá-ca)
• 2 Trabalhos Práticos (grupos de 2 alunos – ou 1)
§ EP (exercício programação):
« publicação: 8 Abril, 12:00; entrega: 27 Abril, 23:59. § TP (trabalho prático):
« publicação: 17 Maio, 12:00; entrega: 7 Junho, 23:59. § Entregues via Web
§ “Discutidos” nos testes
• Nota da Componente Laboratorial (CompL):
§ CompL = (0.4 EP + 0.6 TP)
• Para obter frequência:
Avaliação (Aprovação)
• Nota final (NF) dos alunos com frequência:
§ NF = CompTP (seCompTP< 8.0) § NF = 0.4 CompL + 0.6 CompTP (se CompTP≥ 8.0)
Notas Anteriores
• Os alunos que obKveram frequência a ICE após 2015/16:
§ Estão dispensados de realizar os trabalhos;
§ Nesse caso, não deverão inscrever-se nas aulas práKcas;
Bibliografia
• Bibliografia
§ Slides das Teóricas
§ Allen B. Downey. Think Python: How to Think Like a Computer ScienCst
(version 2.0.17).
§ Versão PDF disponível em
« hOp://greenteapress.com/wp/think-python-2e/
§ John V. GuOag. IntroducCon to ComputaCon and Programming Using
Python, MIT PRESS, 2016
hOps://mitpress.mit.edu/books/introducCon-computaCon-and-programming-using-python-second-ediCon • Bibliografia Complementar
§ Ernesto Costa. Programação em Python - Fundamentos e Resolução de
Informação Adicional
• So0ware
§ Anaconda
« Python 3.x: Linguagem e Interpretador « iPython: consola intera:va
« Spyder: Sistema de desenvolvimento que integra o Interpretador, a consola e o
sistema de ficheiros (IDE - Integrated Development Environment)
§ Descarregável para PCs (Windows / Mac)
« hKps://www.anaconda.com www.anaconda.com
• Página Web de ICE-c
Sumário
• Sistema computacional
§ Componentes
§ Execução de programas
• Python
§ Modelo de execução – interpretador.
§ Expressões aritmé?cas e atribuição. Strings.
Informática
• É o ramo da Ciência e da Engenharia que estuda o processamento automático de informação
§ os sistemas computacionais
§ a conceção e desenvolvimento de programas § os ambientes de programação, etc.
• A Informática contribui para a resolução de problemas de todas as áreas, nomeadamente ciências e engenharias.
• Os computadores são usados para executar programas e também para os desenvolver.
Sistema computacional
• Hardware
§ Disposi4vos eletrónicos que compõem um computador e restantes
componentes do sistema • So9ware
§ Programas executados pelo hardware
« So9ware de sistema: controla a execução de aplicações
« Aplicações: executam as mais variadas funcionalidades, incuindo o desenvolvimento de novas aplicações
• Dados
Hardware: princípios elementares
• Construído a partir de dispositivos eletrónicos que operam sobre sequências de elementos que podem ter dois estados diferentes (zero e um) – bit (binary digit).
• Um conjunto de oito bits designa-se por byte.
• Toda a informação é codificada em (sequências de) bits/bytes, incluindo:
§ Programas – conjunto de ações simples (instruções) § Dados manipulados pelos programas
Hardware
Unidade Central de Processamento (CPU) Memória Armazenamento volá9l de bytes que representam instruções e dados Execução de instruções armazenadas na memória e envio de ordens para o teclado,ecrã e disco Eletrónica de controlo do teclado Entrada de dados (e programas) Eletrónica de controlo do disco Armazenamento permanente de bytes que
representam dados e programas Eletrónica de controlo do ecrã Saída de resultados
Tipos de memória
• Memória central (RAM)
§ Armazena dados e programas em funcionamento.
§ Volá9l: conteúdo perde-se quando o computador é desligado.
• Memória de arquivo (ex. discos)
§ Maior capacidade / Menor velocidade de acesso.
§ Conteúdo preservado mesmo quando o computador é desligado. § A informação está arrumada em ficheiros.
Ficheiro
• Do ponto de vista lógico, um ficheiro contém uma sequência de bytes, que pode representar um texto, números, uma imagem, sons, etc.
• Um ficheiro é guardado no disco (para que a informação não se perca quando o computador não está a funcionar) e é acessível através de um identificador único (nome).
• Cada posição de memória tem um endereço (que é fixo e
único) e um conteúdo (que pode variar).
• O endereço permite identificar (sem ambiguidade) cada
posição da memória. 101: 102: 103: 104: 105:
Endereço
Conteúdo
0000 0001 1001 0111 1111 0110Memória (RAM)
Endereço E
Funcionamento do CPU
• O CPU executa as
instruções guardadas na memória central, de uma forma sequencial.
• Em cada momento, o CPU mantém a posição de memória da instrução que está a executar.
CPU PC: 104 IR: 1111 0110 A: 1111 0110 B: 1111 0110 C: 1111 0110 0000 0001 1001 0111 1111 0110 101: 102: 103: 104: 105: 100:
CPU PC: 104 IR: 1111 0110 A: 1111 0110 B: 1111 0110 C: 1111 0110 104 Endereço E
Funcionamento do CPU
• A instrução define a ação elementar a executar
§ Ações atuam sobre dados
armazenados em memória central ou num disposi@vo de entrada/saída.
• Exemplo
somar 100 101 102
§ Soma o conteúdo das
posições 100 e 101 e armazena o resultado na Lê instrução 0000 0001 1001 0111 1111 0110 IR: 1111 0110 101: 102: 103: 104: 105: 100:
100
Memória (RAM)
Endereço E
Funcionamento do CPU
Lê dados:posição 100 CPU PC: 104 IR: 1111 0110 A: 1111 0110 B: 1111 0110 C: 1111 0110
• A instrução define a ação elementar a executar
§ Ações atuam sobre dados
armazenados em memória central ou num dispositivo de entrada/saída.
• Exemplo
somar 100 101 102
§ Soma o conteúdo das
posições 100 e 101 e armazena o resultado na posição 102. 0000 0001 1001 0111 1111 0110 101: 102: 103: 104: 105: 100: 0000 0001
101
Endereço E
Funcionamento do CPU
Lê dados:posição 101 CPU PC: 104 IR: 1111 0110 A: 1111 0110 B: 1111 0110 C: 1111 0110 0000 0001 1001 0111 1111 0110 101: 102: 103: 104: 105: 100: 0000 0001 1001 0111
• A instrução define a ação elementar a executar
§ Ações atuam sobre dados
armazenados em memória central ou num dispositivo de entrada/saída.
• Exemplo
somar 100 101 102
§ Soma o conteúdo das
posições 100 e 101 e armazena o resultado na
0000 0001 1001 0111 1111 0110 102 Memória (RAM) Endereço E
Funcionamento do CPU
Executa operação eescreve resultado:posição 102 • A instrução define a ação
elementar a executar
§ Ações atuam sobre dados
armazenados em memória central ou num dispositivo de entrada/saída.
• Exemplo
somar 100 101 102
§ Soma o conteúdo das
posições 100 e 101 e armazena o resultado na posição 102. CPU PC: 104 IR: 1111 0110 A: 1111 0110 B: 1111 0110 C: 1111 0110 101: 102: 103: 104: 105: 100: 0000 0001 1001 0111 IR: 1111 0110 1001 1000 1001 1000
Software de sistema
• Sistema opera+vo (SO):
§ Programa sempre residente no hardware e que gere o
acesso ao hardware e a execução de programas.
§ Executado assim que se liga o computador e sempre
residente no hardware. • Interpretador de comandos:
Funções de um SO
• Funções essenciais
§ Supervisionar a utilização do hardware pelos programas
« Controlar o acesso ao CPU « Controlar os periféricos « Gerir a memória central « Gerir o disco (os ficheiros)
§ Oferecer aos programas funções para usarem o hardware
• Carregador
§ Usando as funções anteriores, carrega programas guardados no
Interpretador de comandos
Linha de comando (ou interface de texto)
Interface Gráfica
Interpretador de comandos [1]
prompt > comando argumento1 argumento2 …
Comando interno Executado pelo próprio interpretador. Exemplos: • dir • cd • print • type … Comando externo É o nome de um programa.
• Pede-se ao SO para verificar se o programa existe,
• invoca-se o carregador e • o CPU começa a executar as
Interpretador de comandos [2]
•
Interface Gráfica (Graphical User Interface-GUI)
§ Exemplos de ações: « click, « duplo-click, « arrastar-largar, « copiar/colar, « etc.
§ Duplo-click num ícone que representa o programa:
« O programa associado a esses dados é executado.
§ Duplo-click num ícone que representa dados:
Intodução a Python
• Sistema computacional.
§ Componentes.
§ Execução de programas.
• Python.
§ Modelo de execução - interpretador.
« Expressões aritméticas e atribuição. « Strings.
Programar
• Para quê?
§ Versatilidade
« Resolver mais problemas e melhor § Automatização « Reprodutibilidade « Fiabilidade § Conveniência « Facilidade e produtividade • Python
§ Linguagem generalista mas simples § Desenhada para ser interpretada
Programas em linguagens de alto nível
• Programa: um conjunto de instruções, escritas numa
determinada linguagem, e que devem ser executadas para desempenhar determinada tarefa.
• Linguagem: um método normalizado (por exemplo, baseado em texto) para descrever instruções.
§ Estas não são normalmente executáveis diretamente pelo
hardware.
§ Necessitam de tradução (compilação ou interpretação) para
Programas em linguagens de alto nível
• Compilação: um programa (compilador) traduz as instruções
de alto nível para as instruções que o CPU entende e guarda-as num ficheiro (e.g. com extensão “.exe”)
• Interpretação: um programa (interpretador) traduz cada linha
(com as instruções de alto nível) num conjunto de ações e manda o CPU executá-las.
• Em ICE, vamos fazer programas numa linguagem de alto nível (Python) e vamos usar um interpretador (a partir da consola
Operação de um interpretador
Leitura de linha
Análise do conteúdo
O Intepretador é um programa
Memória Código e dados do Interpretador CPU Execução das instruções Teclado Ecrã In [1]: 5+2 Out[1]: 7 A azul o que é escrito pelo interpretador A vermelho o que é escritoSistema usado em ICE
• Python: linguagem (Python3.x) e Interpretador
• Spyder: Ambiente integrado de programação que gere
ficheiros, consola e Interpretador
Python – Objetos
• Python manipula objetos.
§ Todos os dados manipulados por Python são objetos.
• Um objeto tem um 'po, que define as operações que podem ser feitas com esse objeto.
Python – Constantes
• Muitos objetos podem ser representados por literais (i.e. constantes) no texto dum programa.
• 5 é um literal que representa um
objeto do ?po int (inteiro) com o valor 5.
• -4.6 é um literal que representa
um objeto do ?po float (número real) com o valor -4.6.
• A função type/1 permite saber o ?po de um objeto. In : 5 Out: 5 In : -4.6 Out: -4.6 In : type(5) Out: int In : type(-4.6) Out: float
Python – Expressões aritméticas
• Operadores aritmé7cos básicos: +, -, *, /, //, **
• Uma expressão aritmé7ca é avaliada e o resultado da avaliação é um objeto com um
valor numérico do &po:
§ int, quando se usam os
operadores +, -, *, **, // e todos os objetos são do 7po int
In : 5 + 14 Out: 19 In : -4.6 * (3 - 5) Out: 9.2 In : 5**2 + 4 / 2 Out: 27.0 In : 7 // 2 Out: 3
Python – Variáveis
• Uma variável é um nome que refere um objeto.
• Atribui-se um valor a um objeto com a instrução de afetação ou atribuição:
variável = expressão
• A expressão é avaliada, sendo o resultado um objeto com o
valor obNdo.
Python – Nomes de Variáveis
• Nome de uma variável: sequência de letras, algarismos e ‘_’, que
começa por uma letra (Nota: o caráter ‘_’ é considerado uma letra). § Exemplos: « x « taxa_maxima « valorMinimo « y1 « _8
Python – Variáveis e Atribuições
In : x = 1 + 3 In : x Out: x = 4 In : y = 2 ** x In : y Out: y = 16 In : x = y In : x Out: x = 16 In : x = x + 2.0 In : x Out: x = 18.0 • Alguns exemplos:• Nota 1: o novo valor da variável só é mostrado se tal for explicitamente solicitado. • Nota 2: o operador = denota
afetação, não denota uma comparação.
• Nota 3: o Qpo da variável é modificado de acordo com o Qpo da expressão calculada.
Python – Variáveis e Atribuições
• As instruções do CPU especificam endereços de memória. O CPU executa operações com os conteúdos desses endereços.
• Em Python (e nas outras linguagens de alto nível), as variáveis são nomes para endereços de memória, onde é guardado o endereço de memória do objeto.
• O valor de um objeto é guardado em memória.
In : x = 3 * 6
In : y = 4 ** 2
Python – Variáveis e endereços
101: 102: 103: 104: 105: 100:
18
16
x
y
0001 0010 0001 0000Tipos de dados manipulados
pelos programas
• Inteiros e reais:
§ Como nos exemplos anteriores.
• String (Texto):
§ Composto por sequências de símbolos – caracteres – que
representam letras (maiúsculas e minúsculas), algarismos e sinais de pontuação.
§ Cada caracter é armazenado no computador usando uma dada
codificação (sequência de bits).
Strings
• Uma string (,po str) é uma sequência de caracteres. • Em Python,
§ escreve-se a sequência de caracteres entre plicas (‘) ou
pareênteses (“);
§ as variáveis podem armazenar strings.
• Exemplo:
In : s = Estudante na FCT/UNL.
In : s
Out: Estudante na FCT/UNL. s
Exemplos de Atribuições
•
x = ‘abc’ é muito diferente de x = abc
In : x = ‘abc’
In : x
Out: abc
§ x = ‘abc’
§ atribui a x um objeto de Fpo
str com valor ’abc’
§ x = abc
§ atribui a x um objeto com o
mesmo Fpo e valor da variável com nome abc
§ Nota: Se não exisFr uma
In : x = abc
NameError: name 'abc' is not defined In : abc = 6.7
In : x = abc
Conversão de Tipos
•
número = int( string )
§ Converte a string no número inteiro correspondente.
§ Ex.: int (‘12’) é um objeto int com valor 12
•
número = float( string )
§ Converte a string no número real correspondente.
§ Ex.: float (’12.5’) é um objeto float com valor 12.5
• string = str( número )
§ Converte o número na string correspondente.
Funções (Métodos) associados a Tipos
• Um 7po (de objetos) tem associado um conjunto de funções. • Para listar as funções dum 7po pode-se usar a função
dir
• As funções com nome ‘__...__’ são especiais.
• Para saber mais informação sobre as funções, deve-se consultar a informação online.
Strings – Funções pré-definidas [1]
• stringRes = s.lower( string )
§ Converte as letras maiúsculas da string s em minúsculas.
§ Ex.: s.lower(‘na FCT/UNL.’) faz a string s tomar o valor ‘na fct/unl.’
• stringRes = str.upper( string )
§ Converte as letras maiúsculas da string s em maiúsculas.
Bibliotecas
• Uma biblioteca define um conjunto de funções e 5pos que podem ser usadas por um programa
• Para usar uma função duma biblioteca, deve-se antes importá-la, executando o comando:
import nome_da_biblioteca
• Nota: Para u5lizar essas funções deve usar-se um prefixo com
o nome da biblioteca
• Para obter informação sobre as funções duma biblioteca, deve aceder à sua documentação, normalmente disponível online.
Funções Matemá.cas
• A biblioteca math define as funções matemá.cas básicas.
• Antes de se poder usá-la deve ser importada.
• Para listar as funções de uma biblioteca pode-se usar a função dir.
In : import math In : dir(math) Out: ['__doc__’, '__file__’, '__loader__’, '__name__’, '__package__’, '__spec__’, 'acos’, 'acosh’, 'asin', ...
Funções Matemáticas
• Alguns exemplos de funções da biblioteca math : cos, sqrt e exp.
• O resultado de cada chamada a cos, sqrt e exp é um objeto do In : import math In : math.cos(0) Out: 1.0 In : math.sqrt(26 – math.cos(0)) Out: 5 In : math.exp(1) + math.sqrt(16) Out: 6.718281828459045
Para saber Mais
• Consultar um dos livros de texto aconselhados • Por exemplo:
§ “Think Python: How to Think Like a Computer Scien@st ”:
cap. 1 e cap. 2.
§ “Introduc@on to Computa@on and Programming Using Python”: