0% acharam este documento útil (0 voto)
8 visualizações40 páginas

Itic 4

Enviado por

armindotomo18
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
8 visualizações40 páginas

Itic 4

Enviado por

armindotomo18
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 40

Universidade Eduardo Mondlane

Faculdade de Ciências
Departamento de Matemática e Informática

Introdução às Tecnologias de Informação e


Comunicação (ITIC)

Edição: 2024 (Semestre I)

José Leopoldo Nhampossa, PhD


eMail: [email protected]
Suporte Físico à Programação

1. Estrutura e funcionamento de um computador


2. Componentes fundamentais
3. Hardware Básico (CPU, RAM)
4. Armazenamento de Dados
5. Periféricos de Entrada e Saída
6. Dispositivos de Rede
7. Segurança Física e Backup
Suporte Lógico à Programação

Sistemas Operativos

Compiladores e Interpretadores

Ambientes de Desenvolvimento Integrado (IDEs)


Compiladores
• Compiladores e interpretadores são duas formas diferentes de traduzir e executar código
de programação.
• Compilador: é um programa que traduz o código fonte escrito em uma linguagem de
programação para código de máquina, que é entendido directamente pelo computador.
• O processo de compilação ocorre em duas etapas:
– Análise Sintática e Semântica: O compilador analisa o código fonte (para garantir que ele siga a
sintaxe e as regras da linguagem de programação) e verifica a semântica do código (para
garantir que não haja erros lógicos.)
– Geração de Código: Feita a análise, o compilador gera o código de máquina
correspondente ao código fonte, que pode ser armazenado em um arquivo executável
ou em um arquivo objecto, que será vinculado posteriormente para criar o executável
final.
• Exemplos de linguagens que usam compiladores: C, C++, Pascal e Fortran.
Interpretadores

• Interpretador: é um programa que lê e executa o código fonte linha por linha, traduzindo-
o para instruções compreensíveis pela máquina em tempo real.
• O processo de interpretação envolve:
– Análise Lexical: O interpretador quebra o código fonte em tokens (como palavras-chave,
identificadores e símbolos) para processamento.
– Execução Directa: Após a análise lexical, o interpretador executa as instruções do
código linha por linha, traduzindo-as para código de máquina conforme necessário.
• Exemplos de linguagens que usam interpretadores incluem Python, Ruby e
JavaScript.
Diferenças: Compiladores & Interpretadores (1)
Variável Compilador Interpretador
Tempo de Compilação Traduz todo o código fonte Traduz e executa o código
para código de máquina antes linha por linha em tempo real
da execução.
Tempo de Execução Durante a execução do Como o código é
programa, o código já está interpretado durante a
traduzido para a linguagem execução, havendo uma
de máquina e não há sobrecarga adicional de
necessidade de interpretar o processamento a cada vez
código fonte, uma vez que o que uma linha é interpretada.
código de máquina gerado é
directamente executado pelo
processador.
Portabilidade Menos portáteis porque os Mais portáteis, pois o código
executáveis gerados por fonte é interpretado e
compiladores são específicos executado por um
para a plataforma em que interpretador que é
foram compilados. executável em várias
plataformas.
Diferenças: Compiladores & Interpretadores (2)
Variável Compilador Interpretador
Eficiência Têm um tempo de execução Têm um tempo de execução
mais curto, uma vez que o mais longo, uma vez que o
código fonte é traduzido paracódigo fonte é interpretado e
linguagem de máquina traduzido linha por linha em
durante a fase de compilação tempo real durante a
execução do programa.
Portanto, há uma sobrecarga
adicional de interpretação a
cada vez que uma linha de
código é executada
Eficiência no uso de Uma vez que o código já está Dada a necessidade de
Recursos traduzido para linguagem de interpretação em tempo real
máquina, os programas (quantidade adicional de
compilados tendem a ser recursos, como CPU e
mais eficientes no uso de memória, para processar o
recursos do sistema, como código fonte), os programas
memória e CPU, durante a interpretados são menos
execução eficientes no uso de recursos
do sistema.
Ambientes de Desenvolvimento Integrado (IDE)

São ferramentas de software projectadas para facilitar o


desenvolvimento de software, oferecendo uma variedade
de recursos e funcionalidades úteis para osprogramadores.
Características das IDE (1)
• Editor de Código: Interface para digitar e editar código fonte. Geralmente inclui recursos
como realce de sintaxe, indentação automática, conclusão de código e navegação entre
arquivos.
• Compilador/Interpretador Integrado: Algumas IDE incluem compiladores ou
interpretadores integrados, permitindo que os desenvolvedores compilem e executem seus
programas directamente na própria IDE.
• Depuração: Ferramentas de depuração integradas que ajudam os programadores a
identificar e corrigir erros em seu código. Pode incluir pontos de interrupção, inspeção de
variáveis, rastreamento de pilha e execução passo-a-passo.
• Gestão de Projecto: Recursos para criar, organizar e gerir projectos de software. Pode
incluir sistemas de controle de versão integrados, gestão de dependências,
importação/exportação de projectos e integração com ferramentas de gestão de tarefas.
Características das IDE (2)
• Ferramentas de Construção e Automação: Funcionalidades para automatizar tarefas de
construção, como compilação, teste e implantação. Pode envolver a configuração de
scripts de construção personalizados ou a integração com ferramentas de automação de
compilação.
• Suporte a Múltiplas Linguagens de Programação: Muitas IDEs suportam uma ampla
variedade de linguagens de programação, permitindo que os desenvolvedores trabalhem
em diferentes projectos usando a mesma ferramenta.
• Integração com Ferramentas Externas: Capacidade de integração com outras ferramentas
e serviços externos, como repositórios de código, sistemas de gestão de bases de dados,
serviços de hospedagem na nuvem e ferramentas de análise estática de código.
• Tipos de Ficheiros:
– Ficheiro de texto simples (ASCII) – informação em formato de caracteres => programa em
código fonte
– Ficheiro binário – informação em formato binário => programa executável (em formato binário
directamente executável)
Obrigado
Universidade Eduardo Mondlane
Faculdade de Ciências
Departamento de Matemática e Informática

Introdução às Tecnologias de Informação e


Comunicação (ITIC)

Edição: 2024 (Semestre I)

José Leopoldo Nhampossa, PhD


eMail: [email protected]
Linguagens de Programação
• Linguagem de Programação: é um sistemna de escrita formal para enunciar a execução
de operações em computador.
– tem uma terminologia ou um conjunto de termos, palavras e sinais, que assumem
determinados significados (sintaxe)
– ou conjunto de regras que estipulam o uso correcto dos termos, para construir
significados válidos (semântica)
• Uma linguagem de programação permite desenvolver os conjuntos de instruções que
constituem o programa de computador.
• Existem muitas linguagens de programação diferentes, cada uma com seu vocabulário,
gramática e usos exclusivos.
• A verdadeira (e única) linguagem de computador é a linguagem de máquina (binária), mas
para a maioria das pessoas essa linguagem é ininteligível.
• Os programadores precisam de um intermediário entre eles e a máquina. Uma linguagem
que facilite o processo de programar computadores mas que no final seja traduzida para a
linguagem de máquina.
Da Linguagem Natural à Linguagem Máquina

Linguagem Natural

Linguagens de Programação
de “Baixo nível”
(Assembly)

Programa-fonte

Assemblador Programa
tradutor

Programa-objecto
ou executável
Linguagem máquina ou código-máquina
Da Linguagem Natural à Linguagem Máquina

Linguagem Natural

Linguagens de Programação
de “Baixo nível” de “Alto Nível”
(Assembly) (Pascal, C, C++, Java, ...)

Programa-fonte Programa-fonte

Assemblador Programas Compilador Interpretador


tradutores

Programa-objecto Programa-objecto
ou executável ou executável
Linguagem máquina ou código-máquina
Da Linguagem Natural à Linguagem Máquina

Linguagem Natural

Linguagens de Programação
de “Baixo nível” de “Alto Nível”
(Assembly) (Pascal, C, C++, Java, ...)

Programa-fonte Programa-fonte
Compilador
Ou tradutor

Assemblador Programas
tradutores

Programa-objecto
ou executável
Linguagem máquina ou código-máquina
Da Linguagem Natural à Linguagem Máquina

Linguagem Natural

Linguagens de Programação
de “Baixo nível” de “Alto Nível”
(Assembly) (Pascal, C, C++, Java, ...)

Programa-fonte Programa-fonte

Linker - liga programas objecto - Reutilização


Programa Programa
Assemblador Linker Compilador
tradutor tradutor

Programa-objecto Programa-objecto Programa-objecto

Linguagem máquina
A evolução das Linguagens de Programação
• Alguns aspectos que deram origem a evoluções das linguagens de programação
– autonomia do código fonte
– satisfação de necessidades sectoriais (ex. matemática)
– maior estruturação na abordagem dos problemas
– melhor manutenção
– maior expressividade (Inteligência Artificial)
– geração de código
– reutilização de código
– maior aproximação entre a linguagem natural e as linguagens de programação
– .......
• As linguagens foram sendo classificadas em gerações em função das características
que ofereciam, considerando-se que linguagens com caracrterísticas semelhantes
pertencem à mesma geração
A evolução das Linguagens de Programação

Linguagens Orientadas
por Objectos
Complexidade do SW

Linguagens estruturadas,
4GL
Primeiras linguagens

Linguagens máquina,
assembly

1960 1970 1980 1990 2000


A evolução das Linguagens de Programação
• Ling. 1ª geração
– Dependentes da máquina, ao mais baixo nível de abstracção.
– Codificação em Assembly
• Ling. 2ª geração
– Oferecem algum nível de abstracção e Introduzem as Bibliotecas de Software
• Ling. 3ª geração (Linguagens Estruturadas)
– Ricas em capacidades procedimentais e estrutuas de dados. Dividem-se em:
• General Purpose High Order Languages (Pascal, C, ...)
• Object Oriented Languages
• Ling. 4ª geração
– Sintaxe distinta para controlo e representação de estruturas de dados
– O seu elevado nível de abtracção elimina a necessidade de especificação algorítmica
exaustivamente detalhada
– Combinam características procedimentais com não-procedimentais
– Query Languages e Geradores de Aplicações.
• Ling. 5ª geração
– Linguagens não-procedimentais que permitem a declaração do problema a resolver possuindo a
própria linguagem mecanismos para a sua resolução
– Linguagens declarativas (Prolog)
A evolução das Linguagens de Programação
Fortran Cobol Primeiras Linguagens

Algol
Linguagens Estruturadas
Simula
Pascal
C
Linguagens percursoras
OO
Smalltalk
Linguagens
OO Objective C
Módula-2

C ++ Ada
Eiffel
OO Pascal
Actor
Java
C#
Paradigmas de Linguagens de Programação
• Paradigma de programação
– define um modelo ou norma a seguir pelas linguagens de programação baseadas no paradigma

• Programação procedimental, sequencial, imperativa ou estrutural


– O programa é uma sequência de comandos ou instruções que o programador fornece ao
computador e que este executa sequencialmente
• Programação declarativa
– O programador declara o conhecimento que o computador deve ter necessário à resolução do
problema e como este deve proceder para atingir a solução
• Programação funcional
– Os programas baseiam-se em principios matemáticos (funções e conjuntos)
• Programação OO
– Surge como uma evolução da programação estruturada e modular
– Os programas são substituidos por objectos que encapsulam dados e instruções
• .....
Linguagens de Programação
Python
• Fácil para iniciantes e contando com suporte de inúmeras frameworks e bibliotecas de
classes e funções, o Python vem crescendo nos últimos anos, graças aos seus usos nas
mais diversas aplicações. Além disso, graças as suas diversas bibliotecas, ela é capaz de ser
usada para criação de software bem específicos.
• Em 2021, o Python se manteve no topo, fazendo com que desenvolvedores que tiverem
conhecimento dessa linguagem de programação sejam visados no mercado, e não há sinais
que o cenário mude nos próximos anos — o que a torna uma importante habilidade para
quem quer se posicionar bem no sector.
JavaScript
• Com papel importantíssimo no funcionamento da Internet como conhecemos, o
JavaScript continuará sendo uma das linguagens mais procuradas e populares do mercado,
principalmente pela leveza de processamento de aplicações desenvolvidas com ela.
• Outrosim, com as contantes melhorias do Node.JS e sua melhor integração ao JavaScript,
cada vez mais a linguagem está sendo usada tanto para programação de front-end de
software como também para o back-end, ou seja, o funcionamento interno das aplicações.
Linguagens de Programação
Java
• Criada em 1991, o Java é usado há 30 anos como a linguagem de programação de
servidores em grande maioria dos projectos no mundo, mesmo aqueles que envolvem Big
Data ou desenvolvimento de aplicativos para Android.
• Assim como nos últimos 30 anos, em 2022, desenvolvedores com conhecimento em Java
continuarão sendo procurados.
C#
• Com sintaxe parecida com outras linguagens da família C, o C# continua sendo uma
importante linguagem no mercado sendo usada em aplicativos web e mobile,
desenvolvimento de jogos e até mesmo para programas voltados para negócios.
Scala
• A Scala é uma linguagem de programação feita com o objectivo de apresentar soluções
para a maioria das reclamações do Java. Além disso, ela conta com várias funcionalidade
de códigos de desenvolvimento funcional, que permitem a execução de tarefas como
correspondências de padrões, avaliando deste modo se a sintaxe é a ideal para o software.
Linguagens de Programação
R
• A linguagem de programação R é usada principalmente para análise de dados e
desenvolvimento de software estatísticos. Profissionais que tiverem conhecimento e
experiência com ela serão procurados por startups/empresas, para que estas tenham à sua
disposição poderosas ferramentas de controle e análise de informações.
Objective-C
• Na mesma época em que o C++ foi lançado, o Objective-C também chegou ao mercado.
Essa linguagem de programação teve o objectivo de ser uma versão do C focada no
desenvolvimento orientado a objeto.
• O Objective-C foi muito utilizado pela Apple em seus diversos produtos, mas
recentemente está sendo substituído pela linguagem de programação Swift.
Kotlin
• Com interoperabilidade com o Java, o Kotlin vem se tornando uma linguagem muito
procurada para adição de grandes ferramentas e situações em aplicações feitas com outra
linguagem.
• Além disso, graças a compatibilidade com a Biblioteca de Classes Java, a linguagem tem
sintaxe parecida, ajudando quem for aprendê-la e já tem conhecimentos de outra
linguagem de programação.
Linguagens de Programação

HTML
• Linguagem de marcação, o HTML é um óptimo primeiro passo para iniciantes em
programação, ao mesmo tempo que atualizações como o HTML 5 e sua predominância
na maioria dos sites da Internet faz com que ela seja uma habilidade muito necessária no
mercado de desenvolvimento como um todo.
CSS
• O CSS é normalmente utilizado em conjunto com o HTML para manipular a aparências
de sites, conseguindo determinar o tamanho, cor e posição dos elementos programados
pelos desenvolvedores.
• Sua sintaxe é fácil e sua aprendizagem é um importante complemento para o HTML.
Obrigado
Universidade Eduardo Mondlane
Faculdade de Ciências
Departamento de Matemática e Informática

Introdução às Tecnologias de Informação e


Comunicação (ITIC)

Edição: 2024 (Semestre I)

José Leopoldo Nhampossa, PhD


eMail: [email protected]
A Lógica da Programação: Conceitos fundamentais

Dados
Informação
Algorítmos
Programas
Dados, Constantes, Variáveis, Identificadores
̧
• Conceito: sequência de símbolos quantificados ou quantificáveis.
• Na definição inclui-se: texto, fotos, figuras, sons gravados, animação, etc.
• Dados são elementos sintáticos: podem ser descritos através de representações formais e
estruturais.
• Exemplo: diário de turma.
• Qualquer programa opera com dados.
• Os dados podem ser utilizados sob a forma de constantes ou de variáveis.
• As variáveis são sempre associadas a identificadores e num dado instante apenas podem conter um
determinado valor (simples ou composto).
• Identificadores são nomes que se atribuem a variáveis, constantes ou outros elementos com que se
opera num algoritmo.
• As variáveis pertencem sempre a um tipo de dados, o qual define o tipo de valores que a variável
pode conter ao longo do tempo.
Variáveis: identificadores e endereços de memória

Identificadores Conteúdo Endereços Conteúdo das


de variáveis das variáveis de memória células

1001 Ana
Nome Ana
1002
1003 Coimbra
Morada Coimbra
1004

Telefone 1005 6000


6000
1006

Variáveis versus constantes:


Uma constante é um dado directo, inserido directamnete numa instrução do algoritmo
Ex. Escrever (“Bem-Vindo”) e Escrever (1999)
Quando os dados são introduzidos, processados, calculados, ..., devemos usar variáveis
Ler (quantidade, preço)
Total := quantidade*preço
Escrever(total)
Dados & Computadores

• Em essência, computadores são máquinas que processam dados.

• Questões importantes:

– Como são os dados que os computadores processam?


– De que forma eles são representados?
– Será que programas de computador são dados?
– Por que computadores não processam “informação”?
Tipos de dados
Tipos de Dados

Simples Estruturados Dinâmicos

Ficheiros Matrizes Ponteiros

Ordinais Registos

Definidos pelo Conjuntos


Predefinidos
utilizador

Ficheiros
Inteiros/Reais
Enumerados

Caracteres
Subconjuntos

Booleanos
Tipos de dados Simples
• Ficheiro: Os seus valores são de um determinado
tipo e estão armazenados num ficheiro (memória Simples
secundária).
- Tipo pré-definido é o ficheiro de texto (String)
- Existem tipos de ficheiros estruturados Ficheiros

• Inteiro: de –32xxx a 64000


Ordinais
• Real: de xx x 10-123 até xxx
• Caracter: Tabela ASCII
Definidos pelo
• Booleano: Verdadeiro ou falso Predefinidos
utilizador

• Subconjunto enumerado
Inteiros/Reais
dias-úteis = (segunda, terça, quarta, quinta, sexta) Enumerados
• Subconjunto ordenado
notas_validas = 0..20 Caracteres
Subconjuntos
maiúsculas = ‘A’..’Z’
Booleanos
Tipos de dados Estruturados
São conjuntos ou estruturas que agrupam
dados simples ou também outros dados
Estruturados
estruturados

• Array Matrizes
Matriz de variáveis todas do mesmo tipo
Registos
• Registo
Agrupamentos de dados que podem ser de
tipos diferentes Conjuntos

• Conjunto Ficheiros
Agrupamentos de dados do mesmo tipo sem
repetições

• Ficheiro
Agrupamentos de dados do mesmo tipo num
ficheiro em memória secundária
Informação
• Definição: uma abstração informal (sem representação formal) que representa algo
significativo para alguém.
• Exemplo1: “Inhambane é uma cidade bonita” é um exemplo de informação que possui
significado para alguém que conheça os conceitos de “Inhambane”, “cidade” e “bonita”.
• Informação é representada por meio de dados
• Exemplo2: situação de aprovação/reprovação de estudantes obtida a partir do diário de
turma
• Exemplo3: um texto escrito em Bitonga é puro dado para quem não entende Bitonga,
porém pode se constituir em informação para quem conhece Bitonga.
• Informação contém semântica – “significado”
Estruturação e componentes fundamentais de um programa
• A estruturação de programas subdivide-se na estruturação das suas acções e na estruturação
dos seus dados.
• A escolha destas estruturas é o problema fundamental da programação estruturada.
• Da escolha criteriosa destas estruturas define até que ponto o programa é eficaz,
compreensível, robusto, modular e versátil.
• A sintaxe de uma linguagem define determinados construtores, de entre os quais os mais
importantes são as expressões e os comandos.
• Uma expressão é uma fórmula ou regra de computação que especifica um valor ou um
resultado.
Instruções básicas
• Instruções de escrita ou output
Escrever(“O resultado é:”, resultado)

• Instruções de leitura ou input


Ler (nome, morada, resultado)

• Instruções de atribuição
quantidade ¬ 500
preço ¬ 1,5
nome ¬ “Silva”
resultado ¬ preço * quantidade
Expressões
• Uma expressão é um conjunto de operandos articulados entre si por operadores

• Os operandos podem ser dados directos, identificadores de constantes ou


variáveis.

• Os operadores agrupam-se em:


– Operadores aritméticos
+, - , *, /, ...
– Operadores relacionais ou de comparação
<, >, <=, >=, <>, =
– Operadores lógicos ou booleanos
e, ou, negação, ....
Obrigado

Você também pode gostar