IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 1
Linguagens de Programação
Prof. Adriano Mauro Cansian Prof. Leandro Alves Neves
UNESP - São José do Rio Preto ______________________________
Linguagem Computacional
Adriano M. Cansian & Leandro A. Neves 2
Neste tópico veremos:
• A representação da informação. – Lógica binária e informação digital. – Codificação de informações.
• Softwares e Sistemas Operacionais. • As linguagens de programação. • Tipos de linguagens e suas
características.
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 2
Representação da Informação
Como o computador representa, entende e trata as informações
Adriano M. Cansian & Leandro A. Neves 4
Representação da informação (1)
• A forma como a arquitetura de um computador foi elaborada faz com que ele opere apenas através de “chaves” positivas e negativas, assumindo valores 0s (zero) e 1s (um).
• Isso significa que para cada comando ou informação que representamos no computador, ele realiza milhares de operações apenas usando conjuntos de “chaves” 0s e 1s.
• Veremos como isso é possível…
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 3
Adriano M. Cansian & Leandro A. Neves 5
Representação da informação (2)
• A menor unidade de informação que um computador pode armazenar é o binômio 0 (zero) ou 1 (um).
• A este tipo de informação chamamos Código Binário ou Bit (do inglês Binary Digit), que é a “Linguagem de Máquina” usada pelos computadores.
• Para cada informação, o computador utiliza diversos 0s e 1s seguidos: 0011010101001011.
Adriano M. Cansian & Leandro A. Neves 6
Bits e Bytes (1)
• Unidade mínima Bit ou dígito binário: tem dois estados possíveis: 1 = “on” ou 0 = “off”
• Entretanto, na maioria das vezes, a informação é manipulada em seqüências de 8 bits.
• O nome dado a um conjunto de 8 bits é “Byte” ou octeto.
1 byte = 8 bits 1 Kb (Kilobyte) = 1024 bytes 1 MB (Megabyte) = 1024 KB 1 GB (Gigabyte) = 1024 MB 1 TB (Terabyte) = 1024 GB
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 4
Adriano M. Cansian & Leandro A. Neves 7
Bits e Bytes (2)
MEDIDA: REPRESENTA O MESMO QUE: Bit 0 ou 1 - menor unidade de dado
Byte conjunto de 8 bits ou 1 caractere Kilobyte (Kb) 210 ou 1024 bytes
Megabyte (Mb) 210 ou 1024 Kilobyte Gigabyte (Gb) 210 ou 1024 Megabyte Terabyte (Tb) 210 ou 1024 Gigabyte
Adriano M. Cansian & Leandro A. Neves 8
Sistemas de numeração (1)
• Um sistema de numeração permite representar uma informação usando um conjunto de símbolos.
• Os símbolos fazem referência a um valor numérico padronizado, chamada de “base”. – A quantidade de diferentes símbolos existentes num
dado sistema de numeração representa a sua base. • Por exemplo: o sistema de numeração decimal é
composto por dez símbolos diferentes: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9 = 10 símbolos = base 10
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 5
Adriano M. Cansian & Leandro A. Neves 9
Sistemas de numeração (2)
• Por exemplo: 5.031.902 na base 10: 5x106 + 0x105 + 3x104 + 1x103 + 9x102 + 0x101 + 2x100 = 5.031.902
• Alguns tipos de representações possíveis: – Decimal: base 10 – Binário: base 2 = 2 símbolos = 0 e 1 – Hexadecimal: base 16 – Octal: base 8
• É possível converter um número representado num sistema de numeração para outro sistema de numeração.
Adriano M. Cansian & Leandro A. Neves 10
Sistema binário
• Um exemplo de representação de um número na base 2: – Os números devem ser representados com
2 símbolos: 0 ou 1 • Binário: 0 1 0 0 1 0 0 0 = decimal: 72
0x27+1x26+0x25+0x24+1x23+0x22+0x21+0x20 = 72
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 6
Adriano M. Cansian & Leandro A. Neves 11
Sistema Decimal 239
9×100 = 9 3×101 = 30 2×102 = 200 239
Sistema Binário 11101111
1×20 = 1 1×21 = 2 1×22 = 4
239
1×23 = 8 0×24 = 0 1×25 = 32 1×26 = 64 1×27 = 128
Convertendo símbolos É possível converter um número representado num sistema de numeração para outro sistema de numeração.
Adriano M. Cansian & Leandro A. Neves 12
Codificando a informação (1)
• Como o computador processa toda a informação usando representações de 0s e 1s. – Informação em formato digital,
• É necessário haver conversão dos diversos símbolos, para o sistema binário.
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 7
Adriano M. Cansian & Leandro A. Neves 13
Codificando a informação (2)
• Os computadores essencialmente são máquinas que permitem manipulação de símbolos:
• Números, texto, imagem, som, ... Ou seja: DADOS.
• No entanto, todos estes símbolos só podem ser obtidos a partir de símbolos binários 0/1 ou bits – Fáceis de armazenar, representar e manipular electronicamente,
com chaves ligadas e desligadas.
• Assim toda a informação pode ser considerada como um conjunto ordenado (sequência) de bits cujo valor simbólico depende do contexto.
Adriano M. Cansian & Leandro A. Neves 14
Codificando a informação (3)
• A informação é um conjunto ordenado de bits cujo valor simbólico depende do contexto.
• O contexto pode ser, por exemplo, o tipo do arquivo que contém os dados.
• Este tipo de arquivo vai indicar: – Qual o tipo de informação representada – Qual o código utilizado para codificar esta informação.
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 8
Adriano M. Cansian & Leandro A. Neves 15
Representação de texto (1)
• Exemplo: representação de texto. • Cada símbolo pode representado por 1 byte, de acordo
com o código ASCII. American Standard Code for Information Interchange.
• Símbolos mais complexos podem ser representados por outros códigos mais sofisticados, com dois ou mais bytes, para permitir de outros alfabetos não latinos.
ã š α И א فف ι
Adriano M. Cansian & Leandro A. Neves 16
Representação de texto (2)
Cada símbolo é normalmente representado por 1 byte de acordo com o código ASCII (American Standard Code for Information Interchange).
01000010011011110110110100100000011001000110100101100001
B o m d i a
01000010
01101111
01101101
00100000
01100100
01100001
...
01101001
...
B
o
m
d
a
i
memória principal
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 9
Adriano M. Cansian & Leandro A. Neves 17
Representação de Texto (3)
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 11110000 ! " # $ % & ' ( ) * + , - . /0001 0 1 2 3 4 5 6 7 8 9 : ; < = > ?0010 @ A B C D E F G H I J K L M N O0011 P Q R S T U V W X Y Z [ \ ] ^ _0100 ` a b c d e f g h i j k l m n o0101 p q r s t u v w x y z { | } ~ �0110 € ? , ƒ „ … † ‡ ˆ ‰ S ‹ Œ ? ?
?
0111 ? ‘ ’ “ ” • – — ˜ ™ s › œ ? ? Ÿ
Adriano M. Cansian & Leandro A. Neves 18
Vários padrões de codificação de Informações • ANSI – American National Standard Institute • ASCII – American Standard Code for Information Interchange
– Letras, dígitos numéricos – Caracteres especiais: CR, LF, TAB, etc.
• Outros: – EBCDIC – Unicode – ISO 8859-1
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 10
Adriano M. Cansian & Leandro A. Neves 19
Adriano M. Cansian & Leandro A. Neves 20
Representação de imagens
• Representação por mapa de bits (bitmap) – Uma imagem é uma sequência muito longa de bits
representando pontos (pixel = picture element): – Em Preto e branco:
• Pixel representado por 1 bit: 1→preto / 0→branco – Em cores:
• Pixel representado por 3 bytes: • Vermelho / verde / azul (Red Green Blue)
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 11
Memória RAM
Armazenamento temporário da Informação
Adriano M. Cansian & Leandro A. Neves 22
Armazenamento de Informação (1)
• A memória (RAM) é organizada numa sequência de células.
• Cada conjunto de células de memória é chamada de “palavra”. – Cada palavra possui um tamanho de 1 ou mais bytes.
• As palavras de memória podem ser acessadas individualmente, especificando o seu endereço.
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 12
Adriano M. Cansian & Leandro A. Neves 23
Armazenamento de Informação (2)
• O número de células da memória principal é muito grande (por exemplo 2.000 MB).
• Expressa-se a memória em potências de 2:
210 bytes = 1024 bytes = 1 Kilobyte = 1 KB 220 bytes = 1024 K bytes = 1 Megabyte = 1 MB 230 bytes = 1024 M bytes = 1 Gigabyte = 1 GB 240 bytes = 1024 G bytes = 1 Terabyte = 1 TB
Adriano M. Cansian & Leandro A. Neves 24
Armazenamento de Informação (3)
• As células de memória têm um endereço que é especificado por um número de bits igual ao expoente da potência de 2 utilizada.
0:
1:
2:
3:
4:
endereço 01101101
10101110
00001111
01011100
10110011
células
... ...
• A memória pode ser considerada uma longa seqüência de bits, permitindo representações com um tamanho arbitrário de bits.
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 13
Adriano M. Cansian & Leandro A. Neves 25
Em cada célula os bits são ordenados.
0:
1:
2:
3:
4:
??:
endereço
01101101
10101110
00001111
01011100
10110011
00110011
células
... ...
0 0 0 0 1 1 1 1
bit mais significativo
bit menos significativo
A memória principal pode ser considerada uma longa sequência de bits, permitindo representações com um tamanho arbitrário de bits. • Por exemplo, uma sequência de 32 bits pode ser representada por 4 células consecutivas.
Armazenamento de Informação (4)
Sistemas Operacionais e outros softwares
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 14
Adriano M. Cansian & Leandro A. Neves 27
Neste tópico veremos:
• Características lógicas dos sistemas computacionais, e sua relação com os softwares – Softwares básicos
• Sistema operacional • Compiladores e interpretadores
– Softwares aplicativos • Gerais • Específicos
Adriano M. Cansian & Leandro A. Neves 28
Conforme já discutido...
• Sistema Computacional = hardware + software
• Hardware – Parte física da máquina. – Conjunto de circuitos eletrônicos.
• Software – Conjunto de instruções “alteráveis”
• Programadores as criam e alteram. – (Algumas vezes nem tão alteráveis assim)
– São conjuntos de procedimentos básicos que fazem que o computador seja útil executando alguma função.
– São “ordens” pré-estabelecidas, chamadas programas.
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 15
Adriano M. Cansian & Leandro A. Neves 29
Tipos de softwares
• Tipos de softwares – Software básico
• Sistema operacional • Compiladores e interpretadores
– Software aplicativo • Programas específicos escritos para executar
operações (ou resolver problemas) de interesse do usuário.
• Exemplos: planilhas, editores de texto, programas de e-mail, navegadores, jogos, etc…
Adriano M. Cansian & Leandro A. Neves 30
Aplicativos Básicos
Sistema Operacional Utilitários
Gerais Específicos
Editor de textos Planilhas eletrônicas Bancos de dados
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 16
Adriano M. Cansian & Leandro A. Neves 31
Software básico, divide-se em…
• Sistema Operacional (S.O.) – Responsável pela interface (interação) entre
hardware e o usuário, o hardware e outros softwares aplicativos, entre outras funções.
– Exemplos: Windows XP, UNIX, Linux, FreeBSD, DOS, Mac OS X, dentre outros.
• Compiladores e interpretadores – Softwares especiais que traduzem ou interpretam
os programas escritos em diferentes linguagens de programação (serão discutidos mais adiante).
• Exemplos: Compilador Pascal, Compilador C, etc…
Sistema Operacional
Veremos com um pouco mais de detalhes para que serve o sistema
operacional
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 17
Adriano M. Cansian & Leandro A. Neves 33
Definição de S.O. (1)
• “O Sistema Operacional é responsável por alocar recursos de hardware e escalonar tarefas. Ele também deve prover uma interface para o usuário - ele fornece ao usuário uma maneira de acesso aos recursos do computador.” [Sobell].
Adriano M. Cansian & Leandro A. Neves 34
Definição de S.O. (2)
• “Um Sistema Operacional pode ser definido como um gerenciador dos recursos que compõem o computador (processador, memória, I/O, arquivos, etc). Os problemas centrais que o Sistema Operacional deve resolver são o compartilhamento ordenado, a proteção dos recursos a serem usados pelas aplicações do usuário e o interfaceamento entre este e a máquina.” [Stemmer].
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 18
Adriano M. Cansian & Leandro A. Neves 35
Sistema Operacional e o hardware
• O Sistema Operacional deve ser adaptado às características do hardware.
• As linguagens de programação e os aplicativos do usuário final devem ser adaptados ao Sistema Operacional.
• Ou seja, traduzindo: – Um Sistema Operacional em geral só funciona
no hardware para o qual ele foi criado. – Softwares feitos para um sistema operacional, em
geral não funcionam em outro sistema operacional.
Adriano M. Cansian & Leandro A. Neves 36
S.O. não apenas em “computadores”…
• Sistema operacional não se restringe aos computadores. – Todos os hardwares que
realizam processamento possuem algum tipo de sistema operacional.
• Exemplos: – Computadores de bordo de
carros e aviões, sistemas de defesa, calculadoras, máquinas robotizadas, brinquedos computadorizados, videogames, aparelhos de DVD, etc…
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 19
Adriano M. Cansian & Leandro A. Neves 37
USUÁRIOS
SISTEMA OPERACIONAL
HARDWARE
Adriano M. Cansian & Leandro A. Neves 38
Sistema Operacional (1)
• Conhecer o Sistema Operacional pode ajudar a resolver alguns problemas que, a princípio, nos parecem complicados. – O S.O. possui utilitários especiais para a
formatação de discos, listagens em vídeo e impressora, criação/cópia/exclusão e alterações de arquivos, dentre muitos outros.
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 20
Adriano M. Cansian & Leandro A. Neves 39
Sistema Operacional (2)
• Tecnicamente: O Sistema Operacional (S.O.) é um conjunto de programas ou “rotinas”. – É uma lista de instruções passadas para
o processador, com a finalidade permitir a comunicação do usuário com o hardware.
Adriano M. Cansian & Leandro A. Neves 40
Sistema Operacional (3)
• Principais atributos do Sistema Operacional: • Abstração de Hardware ⇒ Máquina Virtual
– Apresenta ao usuário uma máquina virtual, mais simples do que o hardware real.
– O usuário tem a percepção que interage com uma máquina só para ele.
• O S.O. protege o hardware da ação direta do usuário.
• Faz com que interação com o computador seja simples e possível.
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 21
Adriano M. Cansian & Leandro A. Neves 41
Sistema Operacional (4)
• O sistema operacional é a porção de software que roda em “modo kernel” ou “modo supervisor”.
• O computador pode controlar a maneira como os softwares são executados.
• O “modo kernel” ou “modo supervisor” é uma maneira privilegiada de execução, que permite que o software controle todo o hardware, e também controle toda a interação de outros softwares com este hardware. – No modo kernel um software pode executar operações que
outros não podem.
Adriano M. Cansian & Leandro A. Neves 42
Sistema Operacional (5)
• O sistema operacional é a porção de software que roda em “modo kernel” ou “modo supervisor” – A definição do modo de operação é feita no momento da carga
do software (durante o boot, no caso do S.O.) – Estabelece critérios de uso dos recursos e ordem
de acesso aos mesmos, impedindo violação de regras de acesso à memória de processos concorrentes e tentativas de acesso simultâneo a um mesmo recurso
– Desta forma realiza a gerência e proteção dos dispositivos.
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 22
Adriano M. Cansian & Leandro A. Neves 43
Estrutura do S.O.
• O S.O. é formado por: – Um conjunto de rotinas (procedimentos)
que oferecem serviços aos usuários do sistema e suas aplicações.
– Outras rotinas do próprio sistema. • Esse conjunto de rotinas é chamado
núcleo do sistema ou kernel.
Adriano M. Cansian & Leandro A. Neves 44
System Calls
• Systems Calls são mecanismo de proteção do núcleo do sistema e de acesso aos seus serviços.
• O usuário (ou aplicação), quando deseja solicitar algum serviço do sistema: – Realiza uma chamada a uma de suas rotinas
(ou serviços) através de system calls (chamadas ao sistema), para executar uma função específica do hardware.
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 23
Adriano M. Cansian & Leandro A. Neves 45
Modos de acesso
• Existem certas instruções que não podem ser colocadas diretamente à disposição das aplicações. – Pois a sua utilização indevida ocasionaria sérios
problemas à integridade do sistema. • As instruções que têm o poder de
comprometer o sistema são conhecidas como instruções privilegiadas (ou “modo kernel”).
• As instruções não-privilegiadas são as que não oferecem perigo ao sistema.
Adriano M. Cansian & Leandro A. Neves 46
Tipos de Sistemas Operacionais
Sistemas Monoprogramáveis /
Monotarefa
Sistemas Multiprogramáveis /
Multitarefa
Sistemas com Múltiplos
Processadores
Tipos de Sistemas Operacionais
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 24
Adriano M. Cansian & Leandro A. Neves 47
Sistemas Monoprogramáveis ou Monotarefa
• Execução de um único programa (job) por vez. – Para ser executado, qualquer outro programa,
deve aguardar o término do programa anterior. • Tipicamente relacionado ao surgimento dos
mainframes (computadores de grande porte). • Encontra-se obsoleto.
– É mencionado aqui somente por razões históricas.
Adriano M. Cansian & Leandro A. Neves 48
Sistemas Multiprogramáveis ou Multitarefa • Muito mais complexos e mais eficientes. • Vários programas compartilham e dividem os
mesmos recursos, ao mesmo tempo. – Aumento da produtividade dos usuários e a redução
de custos. – Aumenta (e permite) a interação entre os softwares. – Permite compartilhar dados.
• São os sistemas operacionais atuais: Linux, Microsoft Windows XP, Mac OS X, FreeBSD, Solaris, e outros.
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 25
Adriano M. Cansian & Leandro A. Neves 49
Sistemas com Múltiplos Processadores (1)
• Dois ou mais CPUs interligadas, trabalhando em conjunto.
• Permitem a interligação de CPUs de computadores isolados, para a solução de problemas complexos. – Fortemente Acoplado
• Dois ou mais processadores compartilhando uma única memória e controlados por apenas um único SO.
– Fracamente Acoplado • Dois ou mais sistemas de computação interligados, sendo que
cada sistema possui o seu próprio SO.
Adriano M. Cansian & Leandro A. Neves 50
Sistemas com Múltiplos Processadores (2)
• Estão dando origem ao conceito de “Grid” de computadores. – Interligação em rede permite que um grande
número de computadores atue como um único “supercomputador”, para solução de problemas de alta complexidade.
– “The Network is the Computer”.
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 26
Adriano M. Cansian & Leandro A. Neves 51
Compiladores e interpretadores
• Como já dito anteriormente, são: – Softwares especiais que traduzem ou
interpretam os programas escritos em diferentes linguagens de programação.
– Dão origem aos aplicativos. – Estes softwares especiais e as linguagens
de programação serão discutidos mais adiante.
Softwares aplicativos
Softwares “prontos”, para uso geral e específico
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 27
Adriano M. Cansian & Leandro A. Neves 53
Aplicativos Básicos
Sistemas Operacionais Utilitários
Gerais Específicos
Editor de textos Planilhas eletrônicas Bancos de dados
Adriano M. Cansian & Leandro A. Neves 54
Software Aplicativo Geral • Editores de textos. • Planilhas eletrônicas. • Software de e-mail (Pegasus, . • Navegador de Internet (browsers). • Softwares para tocar áudio e vídeo. • Instant messengers ou Comunicação
instantânea (MSN, ICQ, etc…) • Compartilhamento de música (kazaa, e-donkey,
Napster, etc…) • Gerenciadores de projetos. • Muitos outros…
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 28
Adriano M. Cansian & Leandro A. Neves 55
Bancos de Dados
Adriano M. Cansian & Leandro A. Neves 56
Pacotes Integrados
: Planilhas
: Banco de Dados
: Editores de Texto
: Organizador de grupo de trabalho
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 29
Adriano M. Cansian & Leandro A. Neves 57
Correio Eletrônico
!
! : ELETRONIC - MAIL : EDI
Adriano M. Cansian & Leandro A. Neves 58
Browsers ou navegadores
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 30
Adriano M. Cansian & Leandro A. Neves 59
Software aplicativo específico (1)
• Desenvolvido “sob-medida”. – Desenvolvido pelo programador, para aplicações
específicas. • Exemplos:
– Controle de processos. – Operações especiais. – Cálculos especiais. – Muitos outros…
• Software adaptado às necessidades do usuário ou do sistema a ser controlado.
Adriano M. Cansian & Leandro A. Neves 60
Software aplicativo específico (2)
n Programa
café + =
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 31
Adriano M. Cansian & Leandro A. Neves 61
Até aqui vimos:
• Características lógicas dos sistemas computacionais, e sua relação com os softwares – Softwares básicos
• Sistema operacional • Compiladores e interpretadores
– Softwares aplicativos • Gerais • Específicos
Nosos próximos passos
• Veremos: – Linguagens de programação. – Compiladores.
Ou: como um software se torna um software?
Adriano M. Cansian & Leandro A. Neves 62
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 32
Linguagens de Programação
Linguagens de Programação (1)
• São usadas para descrever algoritmos. – Algoritmos: sequências de passos que
levam à solução de um problema. • Algoritmos serão discutidos de forma mais
detalhada nesta disciplina, mais adiante.
• As linguagens permitem que as pessoas especifiquem como os passos devem ser sequenciados para resolver um problema.
Adriano M. Cansian & Leandro A. Neves 64
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 33
Adriano M. Cansian & Leandro A. Neves 65
Linguagens de Programação (2)
• Uma linguagem de programação: é uma notação especial, a qual pode ser usada para especificar algoritmos com precisão.
• As linguagens permitem criar os programas de computador ou softwares.
Adriano M. Cansian & Leandro A. Neves 66
Linguagens de Programação (3)
• Estes programas podem ser escritos em linguagens com vários graus de abstração: – Desde a linguagem ASSEMBLY diretamente
relacionada com o funcionamento de um determinado processador.
– Até às linguagens de alto nível (Pascal, C, Java, ...), independentes do processador.
• Para entender o que são as linguagens, é preciso entender um pouco melhor como o computador processa informações…
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 34
Adriano M. Cansian & Leandro A. Neves 67
Primeiras Linguagens
• Programadores usavam linguagem de máquina. • Chamadas de “Linguagem de Baixo Nível”.
– Sequências de dígitos binários (0s e 1s). – Por exemplo, a instrução “some 1 + 1” deveria ser
representada como: 10100100 • Muitas desvantagens:
– Grande probabilidade de erro em todos os estágios do processo de programação.
• O cálculo de endereços de memória devem ser feitos manualmente, com um árduo trabalho e uma grande probabilidade de erros.
– Mesmo sendo com algoritmos simples, resulta em longos programas, o que dificulta o processo de validação e detecção de erros.
Adriano M. Cansian & Leandro A. Neves 68
Tipos de Linguagem
• As linguagens de baixo nível – Restritas a linguagem de máquina. – Forte relação entre as operações implementadas
pela linguagem e as operações implementadas pelo hardware.
• As linguagens de alto nível – Aproximam-se das linguagens utilizadas por
humanos para expressar problemas e algoritmos – Cada declaração numa linguagem de alto nível
equivale a várias declarações numa linguagem de baixo nível.
2005:
2001: 2002: 2003: 2004: 2006: 2007:
LDA 5001 LDB 5002 ADD STO 5003
Z ß X+Y
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 35
Adriano M. Cansian & Leandro A. Neves 69
Programa-fonte
• Programa-fonte ou “código-fonte”: – Programa-fonte é o programa escrito na
linguagem de alto-nível. – É “legível”. – Escrito no formato de um arquivo um
programa de edição de textos. – Por exemplo: Pascal, C, Fortran, Java.
Adriano M. Cansian & Leandro A. Neves 70
Alto Nível X Baixo Nível (1)
• Alto nível – Problemas podem ser solucionados muito
mais rapidamente e com muito mais facilidade.
– O programa em linguagem de alto nível é normalmente fácil de seguir e entender cada passo da execução.
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 36
Adriano M. Cansian & Leandro A. Neves 71
Alto Nível X Baixo Nível (2)
• Baixo nível – Indicada para funções que precisam implementar
instruções de máquina específicas que não são suportadas por linguagens de alto nível.
– Grande eficiência e reduzido tamanho dos programas.
– Impossibilidade de uso de linguagens de alto nível.
• Por exemplo: quando o hardware é muito simples, por exemplo, um sistema de um veículo, um brinquedo, ou um game.
Adriano M. Cansian & Leandro A. Neves 72
Processamento de Linguagens
• Embora seja teoricamente possível a construção de computadores especiais, capazes de executar programas escritos em uma linguagem de programação qualquer, os computadores atuais são capazes de executar somente programas em uma linguagem de baixo nível , a linguagem de máquina.
• Linguagens de máquina: rapidez de execução de programas, do custo de sua implementação
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 37
Adriano M. Cansian & Leandro A. Neves 73
Compiladores
• A consideração de diferentes níveis de abstração é naturalmente útil para se entender os programas executados pelos computadores.
• Por exemplo: nos anos 50 os programas eram escritos em linguagem de máquina, mas essa situação alterou-se rapidamente por razões óbvias de eficiência de programação e manutenção de programas.
• Em particular, são muito importantes os programas que – Recebem como entrada um texto correspondente a um
programa escrito numa linguagem de alto nível (por exemplo Pascal); e
– Produzem como saída um programa escrito em linguagem máquina.
Adriano M. Cansian & Leandro A. Neves 74
Compiladores • Estes programas são os chamados “compiladores”,
naturalmente dependentes da linguagem de alto nível e da linguagem máquina pretendidas.
• E que são conceitualmente semelhantes a funções.
Compilador (de Pascal)
Programa Máquina
Programa Pascal
25 5
√
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 38
Adriano M. Cansian & Leandro A. Neves 75
Processamento de um Programa
If (a>b) { printf ( “A é maior”) } else { printf (“B é maior”) } Tradutor:
Compilador + Linkeditor
programa.c
programa.exe
A é maior
Adriano M. Cansian & Leandro A. Neves 76
Programa
If (a>b) { printf ( “A é maior”) } else { printf (“B é maior”) }
Compilador
pgm3.c
programa.exe
A é maior
If (a>b) { printf ( “A é maior”) } else { printf (“B é maior”) }
If (a>b) { printf ( “A é maior”) } else { printf (“B é maior”) }
pgm1.c
pgm2.c
Linkeditor
pgm1.o
pgm2.o
pgm3.o
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 39
Adriano M. Cansian & Leandro A. Neves 77
Processamento de Dados
P E S
Adriano M. Cansian & Leandro A. Neves 78
Software
n Programa
café + =
IBILCE - UNESP - SJRP Linguagens de Programação
Prof. Dr. Adriano Mauro Cansian & Leandro Alves Neves 40
Adriano M. Cansian & Leandro A. Neves 79
Até aqui vimos…
• A representação da informação. – Lógica binária e informação digital. – Codificação de informações.
• As linguagens de programação – Linguagem de máquina. – Linguagem de alto nível. – Compilação.
• Nosso próximo passo: aprender a programar.
Adriano M. Cansian & Leandro A. Neves 80
Este material é parcialmente baseado nos slides “Introducão à Informática Histórico e Evolução”. © Copyright 2004 - Prof.Luiz Affonso Henderson Guedes de Oliveira, Prof. Kliger Kissinger F. Rocha Prof. Valnaide Gomes Bittencourt. UFRN - Universidade Federal do Rio Grande do Norte / Centro de Tecnologia. Departamento de Computação e Automação. Todos os direitos reservados aos autores.
Este material tem finalidade meramente educacional e é totalmente GRATUITO. Estas notas de aula podem conter figuras ou textos extraídos de outras fontes, as quais, quando ocorrerem, serão devidamente citadas. Os direitos autorais dos textos citados são de propriedade de seus detentores. Esta não é u ma obra comercial. A citação ou uso de material d e outros autores, quando ocorrer, tem finalidade meramente didática. Nem o autor, nem a UNESP, se responsab ilizam por qu aisquer danos diretos ou indiretos que o uso deste material possa eventualmente causar. Este material pode ser copiado livremente, desde que citadas todas as fontes, e r espeitados os detentores dos direitos autorais, e d esde que o material seja distribuído por inteiro e não em partes, inclusive com os prefácios. A referência a qualquer produto comercial específico, marca, modelo, estabelecimento comercial, processo ou s erviço, através de nome comercial, marca registrada, nome de fabricante, fornecedor, ou nome de empresa, necessariamente NÃO constitui ou insinua seu endosso, recomendação, ou favorecimento por parte da UNESP ou do aut or. A UNESP ou o autor não endossam ou recomendam marcas, produtos, estabelecimentos comerciais, serviços ou fornecedores de quaisquer espécies, em nenhuma hipótese. As eventuais marcas e patentes mencionadas são de p ropriedade exclusiva dos detentores originais dos s eus direitos e, quando citadas, aparecem meramente em caráter informativo, para auxiliar os participantes do curso, numa base de boa-fé pública. Os part icipantes ou outros interessados devem utilizar estas informações por sua conta e r isco, e estarem cientes desta notificação.
Top Related