Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aula 9 - 27/09/2006 1 Informática I Aula 9 http://www.ic.uff.br/~bianca/informatica1/ Aula 9 - 27/09/2006 2 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 - 27/09/2006 3 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 - 27/09/2006 4 Representação de algoritmos Problema Algoritmo Programa Fase de resolução do problema Fase de implementação (utilização de uma linguagem de programação) Deve ser inteligível para pessoas construirem e modificarem. Deve ser inteligível para os computadores. As linguagens de programação diferem na maneira como elas descrevem os algoritmos, mas todas devem ser capazes de representar qualquer algoritmo. Aula 9 - 27/09/2006 5 Os Passos de um Algoritmo • Um algoritmo é uma seqüência de passos. • Cada passo é de um dos seguintes três tipos: 1. Uma operação elementar. 2. Uma operação de controle especificando uma seleção entre uma seqüência de passos. 3. Uma operação de controle especificando uma repetição entre uma seqüência de passos. Aula 9 - 27/09/2006 6 Operações Elementares • As operações elementares podem ser do seguintes tipos: – Operações de atribuição • É a operação de atribuir um valor a uma variável. • O valor pode ser o resultado de: – Expressões aritméticas (+,-,*,/,...) – Expressões lógicas (E, OU, NÃO,...) – Expressões relacionais (>,<,=,...) – Operações de entrada e saída de dadaos Aula 9 - 27/09/2006 7 Ex: Algoritmo para encontrar o maior número numa lista Algoritmo MaiorNúmero Entrada: Uma lista de números L Saída: O maior número da lista maior← L0 Para cada item na lista L ≥1: Se item > maior, então maior ← item Retornar maior Repetição Condição Aula 9 - 27/09/2006 8 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 - 27/09/2006 9 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? Compilador Programa em linguagem de alto nível Programa em linguagem de máquina Aula 9 - 27/09/2006 10 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. – Restritas a um domínio de aplicação específicos. – Não são propriamente linguagens de programação • Linguagens visuais: Simulink, Visual Basic e Delphi. Aula 9 - 27/09/2006 11 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 - 27/09/2006 12 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 - 27/09/2006 13 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 o rótulo TOPO pelo valor do endereço da instrução na memória. O Assembler substitui todas as ocorrências de SIZE pelo valor 100. Aula 9 - 27/09/2006 14 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 - 27/09/2006 15 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 - 27/09/2006 16 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 - 27/09/2006 17 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 - 27/09/2006 18 Programa Hello World em COBOL IDENTIFICATION DIVISION. PROGRAM-ID. ProgramHelloWorld. PROCEDURE DIVISION. DisplayPrompt. DISPLAY “Hello World!". STOP RUN. Aula 9 - 27/09/2006 19 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. Aula9 - 27/09/2006 20 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. 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 Programa que imprime números pares entre A e B Aula 9 - 27/09/2006 21 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
Compartilhar