E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
Linguagens de Programação
1. Universidade Federal de Pelotas
Bacharelado em Ciência da Computação
Introdução à Ciência da Computação
Professor Gerson Cavalheiro (FILHO DA PUTA)
2. Introdução
Será abordado, através da
presente apresentação, uma visão
abrangente da sub-área da Ciência
da
Computação
denominada
Linguagens de Programação.
Além disso, será apresentado o
conjunto
de
conhecimentos
necessários para o desenvolvimento
dessas linguagens, um breve
histórico das linguagens, a relação
com as disciplinas do curso e por
fim, as oportunidades no mercado
de trabalho.
Linguagens de Programação
Histórico das linguagens
Conhecimentos necessários
O relacionamento com o curso
Mercado de trabalho
2
4. Linguagens de Programação
Linguagens de programação (LP)
são métodos padronizados para
expressar
instruções
para
um
computador. São um conjunto de
regras sintáticas e semânticas usadas
para definir um programa de
computador. Uma linguagem permite
que um programador especifique
sobre quais dados um computador vai
atuar, como estes dados serão
transmitidos ou armazenados e quais
ações devem ser tomadas sob várias
circunstâncias.
O principal objetivo das linguagens é
permitir que programadores tenham
uma maior produtividade, podendo
expressar suas intenções mais
facilmente do que quando comparado
com a linguagem que um computador
entende nativamente (código de
máquina). Portanto, linguagens de
programação são projetadas para
adotar uma sintaxe de nível mais
elevado, que pode ser mais facilmente
entendida
por
programadores
humanos. Enfim, elas são ferramentas
importantes para que programadores
possam escrever programas mais
organizados e com maior rapidez.
4
5. Sintaxe e semântica da LP
Sintaxe: conjunto de regras
formais para a composição de um
texto na linguagem (programa) a
partir do agrupamento de letras,
dígitos e/ou outros caracteres
(alfabeto da linguagem). A sintaxe é
um conjunto de regras formais para
a escrita do programa.
Semântica: diz respeito à
significação. A semântica é o
estudo
do
sentido
dos
significantes. Em programação a
semântica diz respeito ao
significado
do
programa
sintaticamente válido. O que pode
ocorrer é que um programa seja
sintaticamente válido sem, no
entanto, ter um significado lógico
coerente. É parte do domínio da
semântica verificar esta coerência
em termos de significado
linguístico e não em termos de
lógica de programa.
5
6. Confiabilidade
Propriedades
desejáveis de
uma LP
Ortogonalidade
Está relacionada
com os mecanismos
fornecidos pela LP
para incentivar a
construção de
programas
confiáveis
Diz respeito a capacidade da
LP permitir ao programador
combinar seus conceitos
básicos sem que se
produzam efeitos irregulares
nessa combinação. Assim
uma LP é tão mais ortogonal
quanto menor for o número
de exceções aos seus
padrões regulares
Conclusão
Eficiência
Legibilidade
Está
relacionada
com a
facilidade de
leitura dos
códigos
De acordo com as
demandas por
recursos de um tipo
de aplicação, certas
LPs são mais
recomendadas, e
outras não devem ser
usadas
Reusabilidade
Possibilita a reutilização do
mesmo código para diversas
aplicações. Quanto mais
reusável for um código,
maior será a produtividade
de programação, uma vez
que, na construção de novos
programas, bastará adaptar
códigos escritos
anteriormente sem a
necessidade de reconstruílos
Facilidade de
aprendizado
Redigibilidade
Relaciona-se
com a
facilidade em
escrever
programas
O programador deve ser
capaz de aprender a
linguagem com
facilidade. LPs com
muitas características e
múltiplas maneiras de
realizar a mesma
funcionalidade tendem a
ser mais difíceis de
aprender
Dessa forma, não
existe a melhor ou
a pior LP, isso não
depende somente
da linguagem e sim
para que tipo de
projeto será
aplicado
Portabilidade
Modificabilidade
Refere-se às facilidades
oferecidas pela LP para
possibilitar ao
programador alterar o
programa em função de
novos requisitos, sem
que tais modificações
impliquem mudanças
em outras partes do
programa
É altamente desejável que
programas escritos em uma
LP se comportem da
mesma maneira
independentes da
ferramenta utilizada para
traduzi-los para a
linguagem de máquina ou
da arquitetura
computacional (hardware
ou sistema operacional)
sobre a qual estão sendo
executados.
6
8. Programação estruturada
• Programação estruturada é uma forma de programação de computadores que preconiza que todos os programas possíveis podem ser
reduzidos a apenas três estruturas: sequência, decisão e interação.
Programação orientada à objetos
• A análise e projeto orientados a objetos têm como meta identificar o melhor conjunto de objetos para descrever um sistema de
software. O funcionamento deste sistema se dá através do relacionamento e troca de mensagens entre estes objetos.
Programação natural
• É usado para distinguir as línguas faladas por seres humanos e usadas como instrumento de comunicação daquelas que são
linguagens formais construídas.
Programação lógica
• Programação lógica é a programação que faz uso da lógica matemática.
8
9. Interpretação X Compilação
Nas linguagens interpretadas um
programa é executado instrução a
instrução, ou seja, cada comando é,
primeiro traduzido para a linguagem
de máquina, para somente em
seguida,
ser
executado.
Na
interpretação as ações resultantes
de comandos da linguagem de alto
nível são executadas diretamente,
seguindo os passos:
Nas
linguagens compiladas um
programa é executado somente quando
toda a tradução foi completada. A
compilação de um programa fonte (texto
escrito diretamente na linguagem de alto
ou médio nível) prevê que o mesmo seja
traduzido para a linguagem da máquina
correspondente antes da execução. Esta
tradução é geralmente é feita em diversas
etapas:
Etapas
Cria o
Extensão
[1ª etapa] depuração
sintática
Programa fonte
.C ou .CPP
[2ª etapa] geração
de código de
máquina relocável
Programa objeto
.OBJ
[3ª etapa] linkage liga códigos e funções
de biblioteca
Programa executável
.EXE
9
11. Histórico das LPs
Desde o aparecimento dos
primeiros computadores ficou
claro que seria necessário
encontrar
um
método
padronizado para melhor
expressar as instruções que
deveriam
ser
dadas
à
máquina. Um conjunto de
regras sintáticas e semânticas
que permitissem definir um
programa, passível de ser
interpretado pela máquina da
forma mais eficiente.
À
medida
que
caminhamos rumo ao
século XXI, o universo
programático
sofreu
diversas
metamorfoses,
onde muitas linguagens
desadequadas à nova
realidade computacional
deixaram
de
existir,
cedendo lugar e novas
formas de comunicação
neste
eterno
diálogo
homem/máquina.
11
12. Década de 1940
• Sistema de código ENIAC, Assembly, C-10 e Plankalkül.
1950 - 1960
Histórico
• FORTRAN, LISP, Basic, COBOL, etc.
1967 - 1978
• Pascal, C, Prolog, SQL, etc.
Década de 1980
• C++, Perl, Ada, etc.
Década de 1990
• Haskell, Python, Java, Ruby, Common Lisp, JavaScript,
PHP, C#, Delphi, Ruby, etc.
Década de 2000
• C#, VB.net, etc.
12
13. As linguagens mais utilizadas atualmente
Índice de popularidade das
linguagens de programação. É
baseado em estatística obtida nos
principais portais de informações
(Google, MSN, Yahoo!, YouTube, etc.).
Note que o índice não classifica as
melhores
linguagens
de
programação, e sim as mais
populares (utilizadas). Não é uma
coisa
absoluta,
mas
bem
representativa do mercado global de
programação.
As 10 mais populares
3%
4%
4%
4%
18%
24%
17%
9%
10%
7%
Java
C++
(Visual) Basic
C#
Perl
C
PHP
Python
JavaScript
Outras
Fonte: tiobe.com
13
18. Algoritmos e
Programação
Compiladores
I e II
Programação I
Disciplinas
relacionadas com
linguagens de
programação na
UFPel
Análise de
Algoritmos
Estrutura de
Dados I e II
Programação
Orientada à
Objetos
Conceitos de
Linguagens de
Programação
18
19. Algoritmos e Programação
• Conceitos básicos. Tipos de instruções. Tipos de algoritmos.
Formas de representação de algoritmos. Técnicas de construção
de algoritmos. Modularidade. Sub-algoritmo. Recursividade.
Laboratório de programação seqüencial: tipos de dados, estrutura
de um programa, declarações, comandos, subprogramas, entrada
e saída.
Programação I
• Estudo completo de uma linguagem de programação sequencial:
estrutura de um programa, tipos, tipos estruturados e
ponteiros, declarações, comandos, subprogramas, entrada e
saída, algoritmos com matrizes, uso de arquivos. Técnicas e
ferramentas para desenvolvimento de programas.
Estrutura de Dados I e II
• Estruturas de dados e algoritmos são temas fundamentais da
Ciência da Computação, sendo utilizados nas mais diversas áreas
do conhecimento e com os mais diferentes propósitos de
aplicação. Sabe-se que algoritmos manipulam dados. Quando
estes dados estão organizados (dispostos) de forma
coerente, caracterizam uma forma, uma estrutura de dados.
Análise de Algoritmos
• Esta disciplina faz parte da mais vasta teoria da complexidade
computacional, que permite fazer estimativas quanto aos recursos
necessários para que um algoritmo resolva um determinado
problema computacional.
Conceitos de Linguagens de Programação
• Abstração de Dados. Manipulação de ponteiros. Estruturas
básicas: listas lineares e não lineares. Conceito de árvores, árvores
binárias, árvores balanceadas. Implementação de grafos. Alocação
dinâmica de memória. Compressão de dados. Pesquisa em tabelas.
Métodos de classificação (ordenação) de dados. Organização de
arquivos: armazenagem externa, arquivos seqüenciais, arquivos
texto, arquivos indexados. Pesquisa em árvore, árvores B. Hash
estático e dinâmico.
Programação Orientada à Objetos
• A Programação Orientada a Objetos é um paradigma de
análise, projeto e programação de sistemas de software baseado
na composição e interação entre diversas unidades de software
chamadas de objetos. A análise e projeto orientados a objetos têm
como meta identificar o melhor conjunto de objetos para
descrever um sistema de software. O funcionamento deste sistema
se dá através do relacionamento e troca de mensagens entre estes
objetos.
Compiladores I e II
• Para executar o código (normalmente textos numa linguagem com
uma gramática bem definida) existem programas que convertem
essa linguagem para a da máquina concreta. A esses programas
chamam-se compiladores.
19