40
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.

Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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.

Page 2: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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…

Page 3: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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

Page 4: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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

Page 5: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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

Page 6: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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.

Page 7: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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.

Page 8: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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

Page 9: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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

Page 10: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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)

Page 11: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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.

Page 12: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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.

Page 13: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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

Page 14: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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.

Page 15: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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

Page 16: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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

Page 17: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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].

Page 18: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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…

Page 19: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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.

Page 20: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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.

Page 21: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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.

Page 22: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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.

Page 23: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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

Page 24: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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.

Page 25: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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”.

Page 26: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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

Page 27: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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…

Page 28: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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

Page 29: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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

Page 30: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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é + =

Page 31: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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

Page 32: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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

Page 33: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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…

Page 34: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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

Page 35: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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.

Page 36: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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

Page 37: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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

Page 38: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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

Page 39: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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é + =

Page 40: Linguagens de Programação - angel.acmesecurity.organgel.acmesecurity.org/~adriano/aulas/lc/2013/2e3... · IBILCE - UNESP - SJRP Linguagens de Programação Prof. Dr. Adriano Mauro

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.