Introdução Software - Definições
• Máquina usa linguagem binária • Uma Instrução – uma ordem que um processador
sabe executar
Software • Internamente, cada caracter de texto é
• Um Programa – uma seqüência específica de
representado como um conjunto de 8 bits
instruções
(byte)
Prof. Lucio Mauro Duarte • Cada instrução - descrita por uma seqüência
• Codificação binária para caracteres específica de 0s e 1s, arranjados de acordo com o
Prof. Avelino Zorzo – Padrão ASCII-E (Extended American Standard que o processador entende ser uma da ordens que
Prof. Ney Laert Vilar Calazans Code for Information Interchange) ele reconhece, e que define a tarefas para serem
realizadas pelo mesmo
Software Software Software Básico
• Instruções podem ser de: • Existem dois tipos: • Programas necessários ao funcionamento do
– Movimentação de dados – entre processador e – Software Básico computador
memória, processador e periférico, etc
– Software Aplicativo • Definem o comportamento do hardware,
– Lógicas – manipulações bit a bit de dados, tais
como E, OU, OU-Exclusivo, NOT, etc. conforme este é percebido pelo usuário
– Aritméticas – manipulação de números como • Fazem a máquina funcionar
soma, subtração, multiplicação, etc
– Controle do fluxo de execução de instruções –
testes, saltos condicionais/ incondicionais, etc
1
Software Básico Sistema Operacional Sistema Operacional
• Classes e exemplos
– Sistemas Operacionais – ligadores, carregadores, • Coordena detalhes do funcionamento do • Classificação segundo o acesso ao sistema
sistema de gerência de memória, sistemas de gerência computador (como a gerência de memória)
de arquivos, etc. – SO mono-usuário
– Ambientes de Programação (baseados em uma ou mais • Coordena a utilização do sistema (como a – SO multi-usuário
linguagens de programação) execução de operações de entrada e saída de
– Tradutores de programas (escritos em uma linguagem dados, carga e descarga de programas em • Classificação segundo a forma de execução
de programação) – compiladores, montadores,
execução) das tarefas
interpretadores
– Utilitários – programas auxiliares como • Responsável pelo tráfego dos dados entre os – Sistema mono-tarefa
compactadores/descompactadores de arquivos, componentes do sistema computacional – Sistema multi-tarefa
programas para realizar salvamento de dados (back-up)
etc.
Sistema Operacional Sistemas Operacionais Linguagem de Programação
• Conceitos fundamentais • Principais funções desempenhadas • Meio de comunicação fundamental entre o
– Arquivo – a unidade lógica de agrupamento de computador e o desenvolvedor de aplicações para
– Gerência de arquivos este (dito um programador)
informações no computador
• Tipos – Gerência de processos • Definida a partir de:
• Permissões – Gerência de memória – alfabeto - conjunto de símbolos e regras para combiná-
– Diretório – a unidade lógica de agrupamento de los para formar o conjunto de palavras válidas na
– Gerência de periféricos linguagem (ex: ASCII-E)
arquivos relacionados, permitindo estruturar
informação de forma hierarquizada – sentenças – a partir do conjunto de palavras, e de um
– Processo – é um programa atualmente em execução conjunto de regras para combiná-las chega-se a um
conjunto de frases válidas na linguagem (ex: if i=0 then
j=k;)
2
Linguagem de Programação Linguagens de Programação Linguagens de Programação -Exemplos
• Para verificar se palavra (seqüência de símbolos) é válida • Classificadas quanto ao nível de abstração do texto:
– Linguagens de máquina Alto Nível Montagem Máquina
em uma linguagem usa-se
– Análise léxica • Alfabeto é {0,1} void main () MOV R1, 10 00000001 10000001 00001010
• Fortemente dependente do processador { MOV R2, 0 00000001 10000010 00000000
• Para verificar se frase ou sentença (seqüência de palavras) • Cada vetor binário corresponde a uma instrução do processador
é válida em uma linguagem usa-se – Linguagens de baixo nível (Montagem ou Assembly) int c, d; MOV R3, 10 00000001 10000011 00001010
– Análise sintática • Alfabeto já é ASCII-E d = 10; LOOP: CMP R2, R3 00001110 10000010 10000011
• Para verificar se um texto ou programa (conjuntos de • Uso de mnemônicos em lugar de vetores de 0s e 1s for (c = 0; c < 10; c++) JZ END 00001100 00001001 00000000
sentenças) é válido em uma linguagem usa-se • Relação 1:1 entre linhas de programa e instruções do processador
d--; SUB R2, 1 00000011 10000010 00000001
– Análise léxica/sintática/semântica – fase inicial de execução de um – Linguagens de alto nível (C, Java, Pascal...)
programa compilador • Alfabeto é ASCII-E } ADD R1, 1 00000010 10000001 00000001
• Compilador - software que analisa programa e se programa • Linguagem mais próxima à humana JMP LOOP 00001000 00000100 00000000
• Majoritariamente independente de máquina
válido, gera-se código executável para o mesmo. END:
• Cada sentença pode corresponder a muitas instruções do processador.
Linguagens de Programação Tradutores Tradutores
• Níveis de especificação de uma linguagem
– Léxico – define como formar palavras válidas • Programas conversores de linguagens, traduzindo
– Sintático – define como formar sentenças válidas linguagens um nível de abstração (tipicamente • Interpretadores
– Semântico – define como formar programas válidos – Tradução comando a comando e execução imediata dos
mais alto) para outro nível de abstração
• Tipos de linguagem quanto à forma de especificação de programas comandos (ex: comandos do DOS, interpretadores de
– Imperativa – Ordens dadas ao computador em seqüência certa
(tipicamente mais baixo)
linguagens como BASIC, LISP, etc.)
– Funcional – Diz-se ao computador o que fazer, mas não como, computador • Exemplos:
infere algoritmo – Montadores - linguagem de montagem para linguagem – Vantagens:
– Lógica – Descreve-se as relações usando asserções e regras lógicas e questiona- de máquina • Não há tradução de comandos que não podem ser executados
se por resultados, o que leva o computador a executar trabalho útil
– Interpretadores - executam código a partir de uma • Desenvolvimento de aplicações é acelerado, pois pode-se
– Orientada a Objetos – descreve-se o problema a tratar como um conjunto de executar comandos a medida que estes são escritos.
objetos compostos por informação e meios para processá-la. Solicta-se linguagem de alto nível sem tradução prévia, tradução e
informações e serviços a objetos, o que produz execução de trabalho útil execução são concomitantes
– Compiladores - linguagem de alto nível para linguagem
de montagem
3
Tradutores Utilitários Software Aplicativo
• Compiladores • Programas que ampliam os recursos do sistema • Programas voltados para apoio a solução de
– Tradução do programa fonte por inteiro, • Administram o ambiente, oferecendo ferramentas problemas de usuário ou grupo de usuários.
ao usuário para organizar os discos, verificar a
produzindo um outro programa equivalente, em
memória, corrigir falhas, etc.
Exemplos:
linguagem executável (código objeto) – Editores de texto
• Ex.: formatadores de discos, compactadores de
– Vantagem: arquivos e hierarquias de arquivos, – Planilhas eletrônicas
• Tradução de um comando apenas uma única vez, desfragmentadores de discos, protetores contras – Ferramentas de correio eletrônico
não importando quantas vezes ele será executado vírus, programas de backup (salvamento de
• Execução em geral mais eficiente de programas informações em meios de armazenamento – Geradores de desenhos ou apresentações, etc.
secundário)
Software Aplicativo
• Tipos e exemplos
– Aplicações genéricos: editores de texto, editoração eletrônica,
planilhas eletrônicas (Word, TeX/LaTeX, Excel, etc);
– Aplicações gráficas: criação de desenhos e apresentações
(CorelDraw, PowerPoint, Paint, Visio, etc);
– Aplicações pessoais: programas destinados facilitar o
gerenciamento de informações pessoais (agenda eletrônica,
calendário,etc);
– Aplicações educacionais: cooperam com o educador para
desenvolver conhecimentos e habilidades dos alunos;
– Aplicações de entretenimento: servem para o lazer do usuário
(jogos, visualizadores de vídeos, reprodutores de arquivos de
áudio, etc.)
– Browsers: servem para navegação na Internet (Nestcape, Mozilla,
Internet Explorer, etc.)