Você está na página 1de 46

COMPUTAÇÃO

CIENTÍFICA

Ano lectivo 2023-24


Aula#01:
- Apresentação da unidade curricular de PPE;
- Introdução à programação de computadores.

João José da Costa


joao.costa@isptec.co.ao

Coordenação de Engenharia Informática


Departamento de Engenharias e Tecnologias
Instituto Superior Politécnico de Tecnologias e Ciências
Apresentação

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 2


Sumário

1. Contextualização
2. Problema
3. Objectivos
4. Metodologia de ensino
5. Metodologia de avaliação
6. Conteúdo
7. Docente
8. Bibliografia

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 3


Contextualização
● Hoje a programação é considerada uma ciência
de base de qualquer curso da área científica das
Ciências e das Engenharias;
● Por isso faz parte do seu currículo uma ou mais
disciplinas de Ciência e Tecnologia da
Programação;
● A linguagem C é tipicamente usada em cursos
que não são da área de Informática
◦ Uso geral e adaptável a qualquer área científica
◦ Paradigma procedimental e modular

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 4


Porquê ???

Permite entender como as aplicações funcionam


no sentido de nos potencializar como melhores
utilizadores;

Por exemplo, utilização de ferramentas de


simulação, cálculo e pesquisa.

Exemplo?????

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 5


Problema

A necessidade de compreender e implementar as


técnicas da programação, especificamente a
vertente estruturada, para desenvolver programa
de baixa complexidade.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 6


Objectivos
Instrutivo
● Fornecer competências básicas no desenvolvimento
de programas de baixa complexidade, utilizando a
linguagem de programação C.

Educativo
● Sentir a necessidade de usar as competências
adquiridas como ferramenta complementar para
resolução de problemas sociais em sua área de
especialização.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 7


Metodologia de ensino
Aulas expositivas
◦ Palestras do docente referentes ao conteúdo
programático
◦ Demostração de exemplos e estudos de casos
Aulas prática
◦ Exercícios em laboratório
◦ Uso de computadores e os softwares na resolução de
listas de exercícios, com o objectivo de consolidar o
conteúdo visto em sala de aula.
◦ Trabalhos em grupos e individuais.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 8


Metodologia de avaliação

● Na aula (presença e participação) - AC


● Em casa (trabalho de casa) - AC
● Provas (individuais)
● Exercícios/Trabalhos (individuais ou em grupo)

● Classificação: NF = AC (40%) + EXAME (60%)


◦ AC : Avaliação Contínua

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 9


Nota sobre a avaliação

A honestidade do(a) aluno(a) é muito


importante. Portanto, se o(a) aluno(a)
copiar o trabalho será punido(a) com
máximo rigor.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 10


Conteúdo (1/5)
Conhecimentos

1. Introdução
2. As expressões em C
3. Comandos de controlo de fluxo
4. Matrizes e strings
5. Funções

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 11


Conteúdo (2/5)
Habilidades
Habilidade Acção
Criar programa simples Incluir ficheiro de cabeçalho
Definir a função principal
Conhecer a função printf.
Declarar variável e constantes Entender de:
• Tipo de dados, modificadores e
especificadores;
• Regra de nomeação
• Sintaxe de definição
Manipulação de variáveis, Entender de:
constantes e expressões • Operadores
• Formulação e análise de expressão
• Conhecer a função scanf.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 12


Conteúdo (3/5)
Habilidades (cont.)
Habilidade Acção
Controlar fluxo de execução • Conhecer os comandos de selecção,
iteração e expressões condicionais.
• Determinar quando utilizar cada um.
Manipular matriz • Definir matriz
Indexar com e sem comando de iteração
Manipular string • Definir string
• Acessar caracter duma string
• Conhecer as principais funções do
arquivo string.h e ctype.h

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 13


Conteúdo (4/5)
Habilidades (cont.)
Habilidade Acção
Manipular função • Definir função (iterativa ou recursiva)
• Entender a passagem de parâmetro por
valor e por referência
• Chamar função dentro de função
• Saber definição com tamanha de
parâmetro variável
Criar programa de baixa Além das outras habilidades deve poder:
complexidade • Combinar estruturas de controlo para
implementar lógica que modele a solução
dum problema;
• Usar funções para modular e reutilizar o
código do programa

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 14


Conteúdo (5/5)
Valores

● Responsabilidade
● Humildade
● Espírito de sacrifício
● Honestidade
● Amor ao próximo

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 15


Docente

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 16


Avisos importantes
● Desligar o telemóvel ou colocar no modo silencioso.
● Evitar conversas e leituras sobre outros assuntos que
não sejam da disciplina para não atrapalhar os outros
colegas ou você mesmo.

● Não serão aceites desculpas referentes a trabalhos


perdidos, portanto previnam-se e façam backups de
rotina, mandem para e-mail, salvem em pendrives, etc.
◦ Pesquise sobre Git e Github – se desejar usá-las facilmente
contacte o docente da disciplina para apoio técnico.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 17


Perguntas

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 18


Bibliografia
● Principal
◦ Damas, Luís. Linguagem de programação C. 15ª Edição, Editora
FCA – Editora de Informática.. Janeiro 1999.

● Outras
◦ Schildt, Herbert C, completo e total - 3ª edição revista e
actualizada Herbert Schildt; tradução e revisão técnica Roberto
Carlos Mayer. São Paulo: Markron Books, 1996. Título original:
C: The complete reference. ISBN 85-346-0595-5.
◦ Peter Aitken & Bradley Jones. Teach Yourself C in 21 Days.
SAMS Publishing, 1992.
◦ Hipson, Peter. Advanced C. Publishing, 1992.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 19


Prova de diagnóstico

● Exercício papel e lápis


● Essencial para o planeamento docente

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 20


Prova de diagnóstico

1. O que as chaves { e } denotam em C? Por que faz


sentido usar essas chaves para delimitar o corpo de
uma função?
2. Descreva a diferença entre os seguintes valores: 7,
“7” e ‘7’. ?
3. Considere a declaração:
double ans = 10.0 + 2.0 / 3.0 − 2.0 ∗ 2.0;
a) Reescreva esta declaração, inserindo parênteses para
garantir que ans = 11.0 na avaliação desta declaração.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 21


Introdução

“O conhecimento quando compartilhado não se divide, mas se


multiplica. O conhecimento quando utilizado não se gasta, mas se
renova.”
Anónimo

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 22


Sumário (1/2)

1. O computador
2. Modelo computacional
3. Estrutura de um computador
4. Unidade de dados - simplificada
5. Necessidade de tradução
6. Tecnologias
7. Ciclo de desenvolvimento
8. Programa

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 23


Sumário (2/2)

9. Compilador vs Interpretador
10. Linguagens de programação
11. Linguagem de baixo nível
12. Linguagens de alto nível
13. A linguagem C
14. Características da linguagem C
15. Versões da linguagem C
16. …

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 24


O computador
● O computador como uma ferramenta é indispensável
para o trabalho de Ciências e Engenharias;
◦ Computador: automatização, capacidade de memória e
processamento, rapidez, fiabilidade, custo.
◦ Pessoa: inteligência, criatividade e trabalho físico
especializado.

● Para realizar trabalho, o computador precisa de


instruções;

● Essas instruções são fornecidas em forma de programa


escrito numa linguagem de programação.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 25


Modelo computacional
● A arquitectura dos computadores exerceu um
efeito crucial sobre o projecto das linguagens
de programação.
● Arquitectura de Von Neumann.
◦ Se caracteriza pela possibilidade de uma máquina digital
armazenar seus programas no mesmo espaço de
memória que os dados, podendo assim manipular tais
programas.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 26


Estrutura de um computador

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 27


Unidade de dados - simplificada

Programa de linguagem de
máquina binária (para MIPS)

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 28


Necessidade de tradução

(1)
Compilador/Compiler

Programa de linguagem Programa de linguagem


de alto nível (em C) assembly (para MIPS)

(2)
Montador/Assembler
Programa de linguagem de
máquina binária (para MIPS)

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 29


Tecnologias

Saiba mais: https://gcc.gnu.org/


gdb
Saiba mais: https://www.gnu.org/software/gdb/

Saiba mais: https://code.visualstudio.com/


make
Saiba mais: https://www.gnu.org/software/make/

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 30


Ciclo de desenvolvimento

(1) Filosofia, (2) Abstracção e (3) Geração automática


joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 31
Programa
● Um programa é uma sequência de código, organizado de tal
forma que permita resolver um determinado problema.

● Código-fonte é o conjunto de instruções de um programa


em forma de texto compreensível pelo ser humano,
normalmente interpretado como o programa.

● Código-Objecto é a tradução do código-fonte de um


programa em código de máquina que o computador pode
ler e executar directamente.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 32


Compilador vs Interpretador (1/2)

● Compiladores/Interpretadores São programas inteligentes


que operam sobre o código-fonte de um determinado
programa.

● Os termos compiladores e interpretadores referem-se à


maneira como um programa é executado.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 33


Compilador vs Interpretador (2/2)

● Um interpretador lê o código-fonte do programa uma linha


por vez e executa a instrução específica contida nessa
linha.

● Um compilador lê o programa inteiro e converte-o em um


código-objecto, que é uma tradução do código-fonte do
programa em uma forma que o computador possa
executar directamente.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 34


Linguagens de programação
Pode-se dividir genericamente, as linguagens de
programação em dois grandes grupos:

1. Linguagens de baixo nível


2. Linguagens de alto nível

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 35


Linguagem de baixo nível
são linguagens voltadas para a máquina, i.e., são escritas
usando as instruções do microprocessador. (Assembly)

● Vantagens:
◦ Programas são executados com maior velocidade de
processamento.
◦ ocupam menos espaço na memória.

● Desvantagens:
◦ pouca portabilidade, isto é, um código gerado para um tipo
de processador não serve para outro.
◦ não são estruturados (torna a programação difícil)

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 36


Linguagens de alto nível
● São linguagens voltadas para o ser humano.
● Em geral utilizam sintaxe estruturada tornando seu código mais
legível.
● Necessitam de compiladores ou interpretadores para gerar
instruções de microprocessador.
◦ C, Pascal, LISP, CLIPPER
◦ C++, C#, Java, Python
● Vantagens:
◦ Por serem compiladas ou interpretadas, tem maior portabilidade podendo
ser executadas em várias plataformas com pouquíssimas modificações.
◦ A programação torna-se mais fácil por causa do maior ou menor grau de
estruturação das suas linguagens.
● Desvantagens:
◦ São mais lentas e ocupam mais memória

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 37


A linguagem C (1/3)

● É uma linguagem de alto nível.

● Foi desenvolvida por programadores para programadores


tendo como meta as características flexibilidade e
portabilidade.

● Nasceu juntamente com advento da teoria de linguagem


estruturada e do computador pessoal.

● É multiplataforma (Windows, Unix e famílias).

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 38


A linguagem C (2/3)

● Utiliza:
◦ O paradigma
● Programação estruturada
● Programação imperativa
● Programação procedural.
◦ Compiladores: Borland C, GNU GCC, Microsoft Visual
Studio, Turbo C, Watcom C, Tiny C Compiler.
◦ Dialetos: ANSI C, C99, C11, ISO C e K&R C.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 39


A linguagem C (3/3)

● Não tem:
◦ Segurança de tipo
◦ Coletor de lixo (mais comum em linguagens interpretadas)
◦ Vectores que crescem automaticamente
◦ Classes ou objetos com comportamento
◦ Apoio nativo de multithreading e comunicação por rede
◦ Etc.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 40


Características da linguagem C
● Poucas palavras-chave
● Estruturas, uniões - tipos de dados compostos
● Ponteiros - memória, matrizes
● Biblioteca de padrão externo - E / S, outras
facilidades
● Compila para código native
● Pré-processador macro

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 41


Versões da linguagem C
● Evoluiu ao longo dos anos:
◦ 1972 - C inventado.
◦ 1978 - publicada a linguagem de programação C; primeira
especificação de linguagem.
◦ 1989 - padrão C89 (conhecido como ANSI C ou Padrão C).
◦ 1990 - ANSI C adotado pela ISO, conhecido como C90.
◦ 1999 - padrão C99.
● Principalmente compatível com versões anteriores
● Não completamente implementado em muitos compiladores
◦ 2007 - trabalho no novo C, padrão C1X anunciadoNeste
curso: ANSI / ISO C (C89 / C90)

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 42


Para que é usado o C?
● Programação de sistemas:
◦ sistemas operativos, como o Linux
◦ microcontroladores: automóveis e aviões
◦ processadores embutidos: telefones, eletrónicos portáteis, etc.
◦ Processadores DSP (Digital Signal Processor): áudio digital e
sistemas de TV
◦ …
● Computação científica
◦ Alto desempenho
◦ Simulação

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 43


C vs linguagens relacionadas
● Derivados mais recentes:
◦ C ++, Objective C, C #
● Influenciado:
◦ Java, Perl, Python (bem diferente)
● C carece de:
◦ exceptions
◦ range-checking
◦ garbage collection
◦ Programação orientada a objecto
◦ Polimorfismo
◦ ...
● Linguagem de baixo nível => código mais rápido
(normalmente)

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 44


Aviso: linguagem de baixo nível!
● Inerentemente inseguro:
◦ Sem range checking
◦ Segurança de tipo limitada em tempo de compilação
◦ Sem verificação de tipo em tempo de execução

● Lida com cuido


● Execute sempre num debugger, como gdb.
● Nunca execute o processo como utilizador root

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 45


Quer saber mais…
● Leia …
◦ Introdução - Damas, Luís. Linguagem de programação
C. 15ª Edição, Editora FCA – Editora de Informática..
Janeiro 1999.
Se ainda tem algum tempo, leia …
◦ Capítulo 1 (Introdução ao mundo dos computadores) -
Arquitetura de Computadores, José Delgado e Carlos
Ribeiro, FCA, 2014.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 46

Você também pode gostar