Você está na página 1de 21

FUNDAMENTOS PARA COMPUTAÇÃO

Prof. Dr. Joberto S. B. Martins


https://orcid.org/0000-0003-1310-9366
https://sites.google.com/view/jsmnet/home
https://www.researchgate.net/profile/Joberto_Martins
https://unifacs.academia.edu/JobertoMartins
http://lattes.cnpq.br/8321013081371965
https://zenodo.org/search?page=1&size=20&q=joberto

joberto.martins@unifacs.br
Linguagens de
Programação

Fundamentos para
Computação
Programação em computadores
Primordios
Programar não era Necessário diversos
conhecimentos sobre a CPU,
simples inicialmente: linguagem não era natural

Sistema de numeração Mais difícil para programar


binário/ hexadecimal:

Utiliza mnemônicos da
Linguagem para máquina de Von Neumann

programar: Computador entende


apenas bits

3
Montadores

• Interpretam texto escrito


par um código de
máquina:
• As instruções são
associadas a um
código binário
• Simples, porém Código que exibe na
ainda pouco tela “Ola mundo!”,
acessível para os escrito na linguagem
seres humanos
Assembly para ser
montado no
programa Assembler

4
Linguagem para
Programar Computador

• Ideal: programá-lo da forma como falamos


• NLP – Natural Language Programming
• Não requereria aprendizado
• Assunto de pesquisa e desenvolvimento:
• Tem vários desafios: entendimento da fala
(speach recognition), palavras podem ter
significados distintos a depender do
contexto  Manga rosa: manga fruta? ou
manga de camisa?
• Linguagem para programar um computador:
• Linguagem de programação
• Tem um conjunto finito de instruções
• Tem sintaxe e semântica definidas (rígida)
• Uma instrução corresponde, normalmente, a um
conjunto de microcódigos

5
Compilador
• Programador cria seu código
(programa fonte) usando a sintaxe e
a semântica de uma linguagem(Ex.:
C) suportada por um compilador
• O que um Compilador faz?:
• Faz analisa léxica, sintática e
semântica do código escrito pelo
programador
• Gera um código intermediário
chamado de código objeto
• O que o Link Editor faz?
• Associa as instruções do código
objeto a instruções de bibliotecas
• O que o Montador faz?
• Gera o código executável que a
máquina entende

prg.pas prg.obj
prg.exe 6
Interpretador
• Outra forma de converter um programa fonte em código de máquina:
• Converte em linguagem de máquina linha a linha
• Cada linha executada em sequência
• Processo é mais lento, porém mais fácil de depurar
• Muito usado por alguns IDEs (Integrated Development Environment)
(Phyton, ...)

Linguagem
Alto nível Interpretador de máquina /
Execução

Linguagem
Alto nível Compilador Execução
de máquina

Linguagem
Baixo nível Montador Execução
de máquina

7
Alto nível

Linguagens
de
Programação
de Alto Nível
e Baixo Nível

Baixo nível

8
Linguagens de Programação
• Mais de 200 linguagens criadas entre
1952 e 1972
• 1957 - FORTRAN • 1978 - CSP
• 1958 - ALGOL • 1978 - FP
• 1960 - LISP • 1980 - dBASE II;
• 1960 - COBOL • 1983 - Smalltalk-80
• 1962 - APL • 1983 - ADA
• 1962 - SIMULA • 1983 - Parlog
• 1964 - BASIC • 1984 - Standard ML
• 1964 - PL/I • 1986 - C++
• 1966 - ISWIM • 1986 - CLP(R)
• 1970 - Prolog • 1986 - Eiffel
• 1972 - C • 1988 - CLOS
• 1975 - Pascal • 1988 – Mathematic
• 1975 - Scheme • 1990 - R
• 1977 - OPS5 • 1991 - Python
• 1991 - Java

9
Linguagem de Programação
• Definição:
• Conjunto de instruções e regras de composição e encadeamento
(sintaxe), por meio do qual se programam ações executáveis num
computador por meio de processos de compilação, interpretação ou
montagem
• Tipos:
• Linguagem de máquina (programação assembler)
• Linguagem procedural (programação procedural)
• Linguagem orientada a eventos (programação orientada a eventos)
• Linguagem orientada a objeto (programação orientada a objeto - POO)
• Linguagem orientada a aspecto (programação orientada a aspectos)
• Classificação das linguagens de programação:
• Objetivos gerais ou específicos
• Orientada para desenvolvimento ou científica
• Outras

10
Programas para Converter
Instruções e Linguagens

• Compilador:
• Tradutor de linguagem que traduz um programa completo para
um programa completo em linguagem de máquina.
• Interpretador:
• Tradutor de linguagem que converte cada instrução de um
programa em linguagem de máquina (tempo de execução)
• Montador:
• Programa que converte em linguagem de máquina as instruções
escritas em mnemônicos (símbolos) da linguagem Assembly
• Tradutor de linguagem (Programming Language Processor):
• Converte programas/ instruções de uma linguagem de
programação de alto nível em outra linguagem de programação

11
Gerações das Linguagens

• 1ª Geração: Linguagem de Máquina (baixo nível):


• Códigos binários informam à CPU quais circuitos ligar e desligar
• 2ª Geração: Linguagem Assembly (baixo nível):
• Instruções através de símbolos mais facilmente compreensíveis
• 3ª Geração: Linguagem de Alto Nível (Basic, Cobol, Fortran, ...):
• Instruções e comandos semelhantes à linguagem humana (read, print, list, ...)
• 4ª Geração: Linguagens interrogativas (query languages):
• Perguntas (indagações) enfatizam quais resultados esperados mais do que comodeve
ser feito (linguagens de banco de dados)
• Structure Query Language – SQL (Linguagem de Indagação Estruturada)
• 5ª Geração: Linguagens naturais (NLP – Natural Language Programming):
• NLP é uma forma de programação assistida por ontologia que usa frases em
linguagem natural
• Ex.: Rabbit (uses Phyton)
• Permitem comunicação com computador usando sentenças normais
• Usadas em soluções de inteligência artificial e sistemas especialistas (Alexia,
funcionalidade em alguns Smart TV, ...)
Linguagens Fortran e Cobol
• Características comuns:
• Orientada para procedimentos
• Fortran (FORmula TRANslator):
• Desenvolvida pela IBM em 1957 (ainda muito usada)
• Voltada para aplicações científicas
• Objetivos gerais, pode ser usada em aplicações empresariais
• COBOL (Common Business Oriented Language) (obsoleta porém ainda
viva!!!):
• Desenvolvimento da CODASYL (Conference On DAta SYstems
Languages) (1959)
• Em 1960 o Departamento de Defesa dos EUA adotou
• Orientada a negócios
• Aparência e estrutura de um relatório comercial
• Programa é feito a partir de sentenças, parágrafos, seções e
divisões
• Grande capacidade de processamento de arquivos

13
Linguagens Basic, Pascal e C
• Características comuns:
• Objetivos gerais, orientada para procedimentos, em tempo real,
para aplicações científicas e de negócios
• Basic (Beginners All-purpose Symbolic Instruction Code):
• Desenvolvida por John Kemeny na Faculdade de Dartmouth,
1960
• Linguagem Pascal:
• Desenvolvida por Niklaus Wirth (Inst. Fed. de Tec., Suiça, 68)
• Excelente para aprendizado de técnicas de programação
• Linguagem C:
• Desenvolvida por Dennis Ritchie (Lab.Bell, 70)
• Permite amplo acesso a elementos internos do processador
• Multiplataforma, excelente para escrever softwares básicos
• Linguagem de programação do UNIX
14
Linguagens Orientadas a Objeto
• Encapsulamento:
• Itens de programação são agrupados e chamados de um
objeto
• Como construir um prédio usando módulos ou partes
pré-fabricadas (podem ser utilizados inúmeras vezes)
• Maior produtividade:
• Reutilização de códigos para construir novos aplicativos
• Maior confiabilidade:
• Aplicativos desenvolvidos em objetos testados pelo
tempo
• Objetos têm propriedades de polimorfismo e hereditariedade
• Linguagens:
• Java, C++, C#, PHP, outras

15
Linguagens Visuais

• Linguagens visuais:

• Utilizadas em ambiente visual ou


gráfico

• Mouse, ícones ou símbolos na tela


e menus pull-down

• Ambiente visual torna a


programação mais fácil e intuitiva

• Exemplos: Visual Basic, Visual C++,


Delphi, ...

16
Linguagens e
Máquina Virtual

• Máquina Virtual Java (Java Virtual


Machine – JVM)

• Carrega e executa JAVA (bytecodes


em executável)

• Gerencia aplicativo enquanto é


executado

• JVM para cada tipo de SO

• JAVA executa na JVM


• Portável

17
Top Programming Languages
• https://www.tiobe.com/tiobe-index

• https://towardsdatascience.com/top-
10-in-demand-programming-
languages-to-learn-in-2020-
4462eb7d8d3e

18
Códigos em Diferentes Linguagens
Ilustração
Assembly C Java

Fortran
Fatorial

PHP

Cobol

19
Programas “Hello World”

• Mais de 570 Programas “Hello World!”


• https://helloworldcollection.github.io
• Resumo de programas “Hello, World!”
• https://fernandofranzini.wordpress.com
/2017/05/04/ola-mundo-em-varias-
linguagens
• Faça você mesmo online
• https://www.tutorialspoint.com/coding
ground.htm
• http://codepad.org
• https://ideone.com
• https://www.codechef.com/ide

20
Checklist
• Tradutores:
• Montadores, Compiladores, Interpretadores
• Link Editor:
• Linguagem de alto nível e linguagem de baixo nível:
• Linguagem de máquina, procedural, orientada a eventos, orientada
a objeto, orientada a aspecto
• Classificação das Linguagens:
• objetivo geral ou específico, orientada a negócio ou científica,
orientada para procedimentos ou problemas, processamento em
batch ou tempo real
• Gerações de Linguagens:
• 1ª geração linguagem de máquina, 2ª geração assembly, 3ª
geração alto nível, 4ª geração interrogativas, 5ª geração naturais
• Top 10 Languages:
• Exemplos de códigos

21

Você também pode gostar