760 likes | 894 Views
BC-0505 Processamento da Informação. BC & T Universidade Federal do ABC. Hardware Versus Software. Hardware está associado à parte física do sistema (os circuitos e dispositivos) que suporta o processamento da informação.
E N D
BC-0505 Processamento da Informação BC & T Universidade Federal do ABC
Hardware Versus Software Hardware está associado à parte física do sistema (os circuitos e dispositivos) que suporta o processamento da informação Softwarecorresponde ao conjunto de programas responsáveis pelo controle do sistema para a execução das tarefas consideradas
Classificação Geral de SoftwareTipo de Serviço Realizado • Tipos de software: • Software de sistema, ou sistema operacional • Software aplicativo • Editores de texto: Word, WordPerfect, etc • Planilhas eletrônicas: Excel, Lotus 123, QuatroPro, etc • Apresentação: PowerPoint, etc • Desenho: CorelDraw, etc
Editor de Texto Jogos Planilha Eletrônica Compiladores Sistema Operacional Hardware Classificação Geral de SoftwareSistema Operacional (SO) Um Sistema Operacional (SO) é uma camada de software colocada entre o hardware e os programas aplicativos e o usuário. Sua função principal é controlar o funcionamento do computador, como um gerente dos diversos recursos disponíveis no sistema
Classificação Geral de SoftwareSistema Operacional (SO) • Funções Básicas de um Sistema Operacional: • Comunicação usuário x computador • Gerenciamento do hardware • Manutenção e gerenciamento dos sistemas de arquivos • Exemplos de SOs: • Windows • Linux • MS-DOS • Unix • Macintosh, Solaris, OS/2
Classificação Geral de Software Aplicativo • Software aplicativo: programas desenvolvidos ou adquiridos pelos usuários para algum fim específico. • Podem ser de natureza: • profissional, • educacional ou • mesmo de lazer;
SoftwareVersus Programa E como são construídos/desenvolvidos softwares? Software corresponde ao conjunto de programas responsáveis pelo controle do sistema para a execução das tarefas consideradas No dia-a-dia os termos software e programa são usados como sinônimos
Linguagens de ProgramaçãoDefinição Linguagens de programação são utilizadas para a construção de programas em computadores • Linguagem de Programação pode ser definida como: • conjunto limitado de símbolos e comandos, utilizados para criar programas, • por meio dela se estabelece uma comunicação com o computador, fazendo com que ele compreenda e execute o que o programador determinar;
Linguagens de ProgramaçãoSintaxe e Semântica • Uma linguagem (natural ou de programação) é formada por: • Sintaxe • Semântica
Linguagens de ProgramaçãoSintaxe Sintaxe determina regras de como se escreve de forma correta em uma linguagem (regras de escrita) Frase sintaticamente correta Os seguintes países fazem parte do Mercosul: Brasil, Argentina, Paraguai, Uruguai e Venezuela Frase sintaticamente correta O Brasil está localizado na América Central
Frase sintaticamente incorreta • Se você escrever a palavra “seguintes" com a letra "r" (serguintes), este é um erro sintático • Se você não conjugar o verbo com o sujeito em uma frase, terá um outro erro sintático Linguagens de ProgramaçãoSintaxe Os serguintes países faz parte do Mercosul: Brasil, Argentina, Paraguai, Uruguai e Venezuela Em linguagem natural a sintaxe é conhecida como Gramática
Considere o comando para a criação e declaração de uma variável, em Java • int idade; idade idade 10 • Considere o comando para a atribuição de valor à uma variável, em Java • idade = 10; Linguagens de ProgramaçãoSintaxe Estes comandos estão sintaticamente corretos, na linguagem de programação Java
Linguagens de ProgramaçãoSintaxe • Considere o comando para a criação e declaração de uma variável, em Java • Int idade; Erro: Int • int idade Erro: Falta ; • Considere o comando para a atribuição de valor à uma variável, em Java • idade := 10; Erro: := • idade = 10 Erro: Falta ; Estes comandos estão sintaticamente incorretos, na linguagem de programação Java
Linguagens de ProgramaçãoSintaxe • Durante o início do aprendizado de uma linguagem de programação, é natural demorar muito tempo procurando erros de sintaxe, • Conforme o programador ganhar experiência, entretanto, cometerá menos erros e os encontrará mais rapidamente;
Linguagens de ProgramaçãoSemântica • Semântica estuda o significado das palavras ou frases • Considere as frases: Semanticamente corretas - O Sol é uma estrela - Na Física Quântica há o conceito de superposição - Aquela manga é azul - Vi uma pessoa no parque com binóculo - Tem dia que de noite é assim mesmo - Pá daqui, pá dali Depende... Semanticamente incorretas
Linguagens de ProgramaçãoSemântica • Considere os comandos, em Java • int idade; • idade = 10; Comandos sintática e semanticamente corretos • Considere os comandos, em Java • int idade; • idade = 10.7; Comando de atribuição semanticamente incorreto
Linguagens de ProgramaçãoSemântica • Há erros de semântica relacionados ao raciocínio/lógica do programa, • Para este tipo de erro, o programa vai executar com sucesso, no sentido de que o computador não irá gerar quaisquer mensagens de erro, • Mas ele não fará a coisa certa. Fará exatamente o que o programador mandar
Linguagens de ProgramaçãoClassificação • A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): • Linguagem de máquina (primeira geração) • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto nível (quarta geração)
Linguagens de Programação Linguagem de Máquina-1ª Geração • Linguagem de máquina é o código que o computador executa diretamente, • É composta de 0´s e 1´s, e neste caso é conhecida como linguagem binária, • A linguagem de máquina é escrita de acordo com as características de um determinado processador, • Por isto é totalmente dependente do hardware, e do fabricante do processador;
Linguagens de Programação Linguagem de Máquina/Representação • Instruções de linguagem de máquina são representadas por códigos na forma de palavras binárias. Por exemplo: • 0100010100011101010101000010010101...
LINGUAGEM DE MÁQUINA – HEXADECIMAL • Exemplo de programa em hexadecimal
Linguagens de Programação Linguagem de Máquina/Representação Execução direta pela máquina, sem tradução
Programação impraticável para escrita e leitura (mesmo com hexadecimal)... O que fazer?? Linguagens de Programação Linguagem de Máquina/Hexadecimal • Linguagem Hexadecimal: seqüência de bits pode ser representada por números hexadecimais • Notação em hexadecimal • 1011000000000001b = B001h
Linguagens de ProgramaçãoLinguagem Assembly - 2ª Geração • A linguagem assembly (linguagem de montagem) permite que o programador utilize nomes (chamados mnemônicos) e símbolos em lugar dos números, • Utiliza palavras abreviadas (mnemônicos) indicando operações • MOV R1, R2 • mnemônico MOV (abreviação de MOVE) • dois registradores como parâmetros: R1 e R2 • processador comanda o movimento do conteúdo de R2 para R1 • equivalente à instrução Java R1 = R2;
Linguagens de ProgramaçãoLinguagem Assembly (de Montagem) • ADD R1, R2 • mnemônico ADD (abreviação de ADDITION) • dois registradores como parâmetros: R1 e R2 • processador comanda a adição do conteúdo de R1 ao conteúdo de R2 e o resultado é armazenado em R1 • equivalente à instrução em Java R1=R1+R2; • Simplificações da linguagem assembly: • escolhe nomes descritivos para as posições de memória, • usa mnemônicos para representar códigos de operação;
Programa Montador (Assembler) Linguagem de Máquina Linguagem de Montagem (Assembly) Linguagens de ProgramaçãoLinguagem Assembly (de Montagem) • A conversão da linguagem assembly para a linguagem de máquina se chama montagem • E é feita por um programa chamado montador (ou assembler)
Linguagens de ProgramaçãoLinguagem Assembly (de Montagem) • A linguagem assembly é também única para cada tipo de CPU (processador), • Utiliza instruções de baixo nível que operam com registros e memórias diretamente, • Não pode ser reutilizada em famílias de processadores diferentes, • Famílias geralmente mantém um certo nível de interoperabilidade • Família x86 processador Pentium suporta o assembly do 80486, que suporta o do 80386...;
Linguagens de ProgramaçãoLinguagem Assembly (de Montagem) • Aplicações para a linguagem assembly: • Controle de processos com resposta em tempo real • devido à possibilidade de gerar programas mais eficientes • Comunicação/transferência de dados: • devido à possibilidade de acessar diretamente o hardware • Otimização de sub-tarefas da programação de alto nível • um programa não precisa somente ser escrito em linguagem assembly ou linguagem de alto nível
Linguagens de ProgramaçãoLinguagens de Alto Nível-(3ª Geração) • Linguagens de alto nível apresentam uma sintaxe mais próxima da linguagem natural , • Usam palavras reservadas extraídas do vocabulário corrente (int, public, if, ...) class HelloWorld { public static void main (String[] args) { System.out.println (“HelloWorld”); } }
Linguagens de ProgramaçãoLinguagens de Alto Nível • Permitem a manipulação dos dados nas mais diversas formas: • números inteiros, • reais, • matrizes, etc... • A linguagem assembly trabalha com bits e bytes, armazenados em memória;
Linguagens de ProgramaçãoLinguagens de Alto Nível • Algumas linguagens de programação, e o ano em que foram desenvolvidas:
Compilador ou interpretador Linguagem de Máquina Linguagem de Alto Nível Linguagens de ProgramaçãoLinguagens de Alto Nível • Os programas escritos nessas linguagens são convertidos para a linguagem de máquina através de um programa compilador, ou de um interpretador
Linguagens de ProgramaçãoLinguagens de Muito Alto Nível-(4ª Geração) • As linguagens de quarta geração têm uma estrutura mais próxima da linguagem humana do que as linguagens de programação de alto nível • Definem “o que” deve ser feito, e não “como” deve ser feito • Como exemplo de linguagens de quarta geração tem-se: • linguagens de consulta a banco de dados, • linguagens de prototipação (ferramentas case);
Linguagens de ProgramaçãoLinguagens de Muito Alto Nível Linguagens de Consulta As linguagens de consulta foram desenvolvidas para manipular bases de dados. Exemplo: linguagem SQL Apresenta os dados dos campos nome e telefone da tabela Funcionario: select nome, telefone FROM Funcionario;
Execução Linguagens de ProgramaçãoProcessamento de Linguagens Computadores atuais são capazes de executar somente programas em uma linguagem de nível baixo, a linguagem de máquina Linguagem de Máquina (Código Executável) Análise sintática e semântica Linguagem de Alto Nível (Código Fonte) class HelloWorld { public static void main (String[]args) { System.out.println(“HelloWorld”); } }
Execução Linguagens de ProgramaçãoProcessamento de Linguagens Como fazer esta tradução? Do código fonte para o código executável? Linguagem de Máquina (Código Executável) Análise sintática e semântica Linguagem de Alto Nível (Código Fonte) class HelloWorld { public static void main (String[]args) { System.out.println(“HelloWorld”); } }
Linguagens de ProgramaçãoProcessamento de Linguagens Compilação e interpretação são os processos pelos quais o código fonte é traduzido em código de máquina Há ainda a possibilidade de uma mescla das duas (em um sistema híbrido), como é o caso da linguagem Java;
Análise sintática e semântica Código Executável Zeros e uns... Código Fonte Estas análises são feitas em cada linha por vez 1. class HelloWorld{ Execução linha 1 2. public static void main(String[] args) { Execução linha 2 Linguagens de ProgramaçãoInterpretação
1. class HelloWorld{ Execução linha 1 2. public static void main(String[] args) { Execução linha 2 Linguagens de ProgramaçãoInterpretação • As ações indicadas pelos comandos da linguagem são diretamente executadas • Existe, para executar cada ação possível, um subprograma (escrito na linguagem de máquina do computador hospedeiro)
Linguagens de ProgramaçãoInterpretação • Um interpretador é um programa que executa repetidamente a seguinte seqüência: • Obter o próximo comando do programa • Determinar que ações devem ser executadas • Executar estas ações
Linguagens de ProgramaçãoInterpretação • Características do processo de interpretação: • Não gera um arquivo de código executável • Toda a vez que for executar o programa, terá que ler o código fonte • É necessário ter o interpretador na máquina onde o código fonte foi desenvolvido, bem como onde o código fonte será executado • É independente de plataforma
Análise sintática e semântica Código Executável Zeros e uns... Código Fonte Linguagens de ProgramaçãoInterpretação Estas análises são feitas em todo o código fonte, para depois gerar o código executável class HelloWorld { public static void main (String[]args) { System.out.println(“HelloWorld”); } }
Linguagens de ProgramaçãoInterpretação Análise sintática e semântica Código Executável Zeros e uns... Código Fonte Programas escritos em linguagem de alto nível são compilados para versões equivalentes em linguagem de máquina, antes de serem executados
Vantagens Desvantagens Não gera um arquivo de código executável; é comum que gere bytecode Toda vez que for executar o programa, terá que ler o código fonte. É independente de plataforma (desde que o próprio interpretador tenha sido portado) Quando comparada com a compilação, a primeira vez da execução de uma interpretação é mais rápida. Mas as demais execuções serão mais lentas É necessário ter o interpretador na máquina onde o código fonte foi desenvolvido, bem como onde o código fonte será executado INTERPRETAÇÃO
Linguagens de ProgramaçãoCompilação • Características do processo de compilação: • A primeira vez que for executar um programa será relativamente demorado, pois será necessário compilá-lo, • Mas nas próximas execuções, será mais rápido • Gera código executável, • Como gera o executável, não é necessário recompilar novamente para executar o programa;
Linguagens de ProgramaçãoCompilação • Características do processo de compilação (cont): • É preciso ter um compilador na máquina onde se desenvolve o programa, mas não onde ele é executado • É dependente de plataforma, pois o código fonte gerado é preparado para rodar em uma plataforma específica (Windows, Linux, Apple, etc)
Vantagens Desvantagens Gera código executável Como gera o executável, não é necessário recompilar novamente para executar o programa É dependente de plataforma, pois o código de máquina gerado é preparado para rodar em uma plataforma específica A primeira vez que for executar um programa será relativamente demorado, pois será necessário compilá-lo. Mas nas próximas execuções, será mais rápido COMPILAÇÃO
Vantagens Desvantagens É preciso ter um compilador na máquina onde se desenvolve o programa, mas não onde ele é executado COMPILAÇÃO
Linguagens de ProgramaçãoCompilação versus Interpretação A linguagem HTML(HyperText Markup Language) é compilada ou interpretada?