Informática I Aula 9 http://www.ic.uff.br/~bianca/informatica1/ Aula 9-17/05/2006 1
Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação de Dados Estrutura e Organização da Informação Linguagens de Programação Sistemas Operacionais Redes de Computadores e Internet Engenharia de Software Softwares Aplicativos Aspectos Legais do Software Aula 9-17/05/2006 2
Introdução: Linguagens de Programação Importante primeiro saber o conceito de algoritmo. Um algoritmo é uma seqüência finita e não ambígua de instruções para executar uma tarefa específica. É parecido com uma receita, mas é mais complexo porque pode incluir: Repetição de passos até que uma condição seja satisfeita. Testes de condições lógicas para executar a tarefa. Algoritmos podem ser descritos em linguagem próxima da natural. Porém, para implementar um algoritmo é necessário descrevê-lo de maneira que ele possa ser executado no computador. Deve ser descrito em uma linguagem de programação. Aula 9-17/05/2006 3
Ex: Algoritmo para encontrar o maior número numa lista Algoritmo MaiorNúmero Repetição Entrada: Uma lista de números L Saída: O maior número da lista maior L 0 Para cada item na lista L 1 : Se item > maior, então maior item Retornar maior Condição Aula 9-17/05/2006 4
Linguagem de Máquina O conjunto de instruções de máquina de um computador pode ser considerado uma linguagem de programação. É a linguagem de máquina. Não é muito amigável ao programador. É difícil expressar e entender algoritmos complexos em linguagem de máquina, Torna a implementação mais sujeita a erros. Aula 9-17/05/2006 5
Compiladores O desenvolvimento de compiladores tornou possível a programação em linguagens diferentes da linguagem de máquina. Compiladores são programas que traduzem um programa de uma linguagem de alto nível para uma linguagem de máquina. Pergunta: em que linguagem foi escrito o primeiro compilador? Programa em linguagem de alto nível Compilador Programa em linguagem de máquina Aula 9-17/05/2006 6
Tipos de Linguagens de Programação Linguagens de baixo nível: Assembler. Linguagens não estruturadas: Cobol e Basic. Linguagens procedurais: C, Pascal, Fortran, Ada, Modula 2 e Modula 3. Linguagens funcionais: Prolog, LISP e Scheme. Linguagens orientadas a objeto: Simula, Smalltalk, C++ e Java. Linguagens específicas: SQL, HTML, Perl. Linguagens visuais: Simulink, Visual Basic e Delphi. Aula 9-17/05/2006 7
Linguagens de Baixo Nível As instruções correspondem quase diretamente ao código da máquina. São conhecidas como linguagens Assembly ou linguagens de montagem. Assembler é o programa que faz a tradução da linguagem Assembly para o código de máquina. A tradução não é chamada de compilação e sim montagem, porque é bem mais simples que a tradução de linguagens de alto nível. Cada processador tem a sua linguagem Assembly própria, de acordo com a sua arquitetura. Aula 9-17/05/2006 8
Instruções básicas da Linguagem Assembly x86 MOV: move dados. MOV AX,3 ; o registrador AX recebe o valor 3. MOV AX,BX ; o registrador AX recebe o valor do registrador BX. ADD: adição de inteiros ADD AX,3 ; AX=AX+3 ADD AX,BX ; AX=AX+BX SUB: subtração de inteiros SUB AX,3 ; AX=AX-3 SUB AX,BX ; AX=AX-BX JMP: pular para uma instrução JNZ (jump not zero): pular para uma instrução se o acumulador não tiver o valor zero. Aula 9-17/05/2006 9
Diretivas da Linguagem Assembly x86 Diretivas não são traduzidas diretamente em código de máquina. Exemplos: %DEFINE: Diretiva de definição de constante %DEFINE SIZE 100 MOV AX, SIZE Rótulos (labels) que marcam instruções. MOV AX, 10 MOV BX, 1 TOPO: ADD BX, AX SUB AX, 1 JNZ TOPO ADD CX, 10 O Assembler substitui todas as ocorrências de SIZE pelo valor 100. O Assembler substitui o rótulo TOPO pelo valor do endereço da instrução na memória. Aula 9-17/05/2006 10
MaiorNumero em Assembly %DEFINE SIZE 100 MOV AX,[L] ;guarda o maior MOV BX,SIZE ;guarda o tamanho da lista LOOP: ADD L,1 ;vai para próximo elemento MOV CX,[L] ;carrega próximo elemento SUB BX,1 CMP CX,AX JBE ABAIXO MOV AX,CX ABAIXO: CMP BX,0 JNE LOOP Aula 9-17/05/2006 11
Usos de Assembly Alguns tipos de código tem que ser escritos em Assembly. O código da BIOS que inicializa um computador. A comunicação entre o sistema operacional e o hardware. Ainda existe um debate se os compiladores conseguem gerar código tão eficiente quanto código Assembly escrito a mão. Alguns videogames foram programados em Assembly até os anos 90. Quem programa um compilador tem que saber a linguagem Assembly para poder gerá-la. Aula 9-17/05/2006 12
Linguagens Não-Estruturadas A semântica dos termos é mais genérica que na linguagem Assembly. Podem ser usadas em diferentes arquiteturas sem alteração. Com o surgimento de linguagens estruturadas tornaram-se obsoletas. Linguagens representativas: COBOL e Basic. Aula 9-17/05/2006 13
Linguagem COBOL COBOL = COmmon Business Oriented Language = Linguagem Comum Orientada a Negócios. Essa linguagem destina-se a construir aplicativos comerciais, tais como controle de estoque, folha de pagamento e contabilidade Não é apropriada para cálculos científicos que envolvam equações complexas. Encontra-se disponível em várias plataformas que vão do grande porte até computadores pessoais. Foi desenvolvida em 1959 e padronizada pela ANSI nas seguintes versões: COBOL-68 COBOL-74 COBOL-85 COBOL 2002 (inclui orientação a objetos) Aula 9-17/05/2006 14
Programa Hello World em COBOL IDENTIFICATION DIVISION. PROGRAM-ID. ProgramHelloWorld. PROCEDURE DIVISION. DisplayPrompt. DISPLAY Hello World!". STOP RUN. Aula 9-17/05/2006 15
Linguagem BASIC BASIC = Beginner s All-Purpose Symbolic Instruction Code Projetada em 1963 para permitir que estudantes pudessem usar computadores. Antes só matemáticos e cientistas usavam. Existem mais variações de BASIC do que de qualquer outra linguagem. Os oitos princípios de projeto de BASIC foram: 1. Ser fácil, para ser utilizada por iniciantes. 2. Ser uma linguagem de programação de uso geral. 3. Permitir que especialistas adicionassem características avançadas, sem tornar a linguagem mais complicada para os iniciantes. 4. Ser interativa. 5. Fornecer mensagens de erro claras e amigáveis. 6. Responder rapidamente para programas pequenos. 7. Não exigir o conhecimento do hardware do computador. 8. Proteger o usuário do sistema operacional. Aula 9-17/05/2006 16
Linguagem BASIC Um programa em BASIC tem as suas linhas numeradas, sendo que é quase padrão usar números de 10 em 10. Os comandos são poucos e facilmente compreendidos em inglês. Programa que imprime números pares entre A e B 10 INPUT A,B 20 FOR I=A TO B STEP 1 30 IF MOD(I,2)>0 THEN 50 40 PRINT I 50 NEXT I 60 END Aula 9-17/05/2006 17
Alguns comandos BASIC LET: atribuição 10 LET A=1 PRINT: imprime o resultado de uma expressão na tela 20 PRINT A, É IGUAL A, B+C GOTO: redireciona a execução do programa 50 GOTO 500 IF-THEN: redireciona a execução condicionalmente. 500 IF B<C THEN GOTO 20 FOR-TO-STEP: para iniciar uma repetição. 510 FOR I=1 to 7 STEP 2 NEXT: para indicar a continuação de uma repetição. 600 NEXT I Aula 9-17/05/2006 18