Processadores e Linguagens de Baixo Nível

Documentos relacionados
UFOP PC-I Prof. Guilherme / Anderson. Operadores Relacionais e Lógicos, Comandos For e While e String

Algoritmo. Prof. Anderson Almeida Ferreira. Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação

Fundamentos de Sistemas Operacionais

Linguagens de programação

Conteúdo programático

Aluísio Eustáquio da Silva

Fundamentos de Programação. Diagrama de blocos

Introdução ao. Script. Baltazar Tavares (Psycho Mantys)

Linguagens de programação. A linguagem Fortran. Matlab. Scilab. Em 1954, a linguagem de alto nível Fortran foi proposta por um grupo da IBM.

Organização de Computadores

PROGRAMAÇÃO DE COMPUTADORES

Módulo de Equações do Segundo Grau. Equações do Segundo Grau: Resultados Básicos. Nono Ano

Linguagem de Programação

Informática I. Aula Aula 19-20/06/06 1

Arquivos. Em relação ao Scilab, existem alguns tipos de arquivos que podem ser lidos, criados ou modificados.

Lógica de Programação. Profas. Simone Campos Camargo e Janete Ferreira Biazotto

Laboratório de Programação I

Aula 11: Desvios e Laços

Organização de Computadores 1

Introdução à Informática

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

Álgebra Linear Aplicada à Compressão de Imagens. Universidade de Lisboa Instituto Superior Técnico. Mestrado em Engenharia Aeroespacial

T.I. para o DealerSuite: Servidores Versão: 1.1

Estruturas de Repetição

Processamento de Dados aplicado à Geociências. AULA 1: Introdução à Arquitetura de Computadores

Sobre o Visual C

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

1.2 OPERAÇÕES BÁSICAS EM ALGORITMOS E PROGRAMAS 18

Inteligência Artificial

2 Segmentação de imagens e Componentes conexas

Algoritmos e Programação de Computadores

Programação Elementar de Computadores Jurandy Soares

Seu pé direito nas melhores Faculdades

OPERADORES E ESTRUTURAS DE CONTROLE

Unidade 1: O Computador

Introdução a C Tipos de Dados Variáveis Operadores

Sistemas Operacionais. Rodrigo Rubira Branco

Capítulo 2: Introdução à Linguagem C

e à Linguagem de Programação Python

Introdução à Programação de Computadores Parte I

O Cálculo λ sem Tipos

TUTORIAL MATLAB Victor Breder 2016

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C

Nivel de Linguagem de Montagem (Assembly)

Programa. Linguagem MATLAB Métodos Computacionais para EDO Métodos Computacionais para EDP. Critérios

BC-0505 Processamento da Informação

,QVWDODomR. Dê um duplo clique para abrir o Meu Computador. Dê um duplo clique para abrir o Painel de Controle. Para Adicionar ou Remover programas

Curso C: Ponteiros e Arrays

Sistemas Numéricos. Tiago Alves de Oliveira

Orientações para Inscrição do Grupo e Projeto de Pesquisa

Algoritmos x Programação. Primeiros Passos na Linguagem C/C++ Como traduzir um algoritmo? Algoritmo original. Prof. Marcelo Cohen flash@inf

16/09/2012. Agenda. Introdução. Introdução. Tipos de Software (Básico) Tipos de Software. Curso Conexão Noções de Informática

Introdução à Linguagem C

Comandos de Desvio 1

Capítulo 2: Introdução à Linguagem C

e Autorizador Odontológico

INF 1005 Programação I

Linguagem e Técnicas de Programação I Operadores, expressões e funções. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

UNIVERSIDADE DO VALE DO RIO DOS SINOS - UNISINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS - CENTRO 06. Funções, variáveis, parâmetros formais

Sistema de Gestão Avícola SYSAVES. O sistema SYSAVES controla todo o processo, desde a saída dos

Parte II Introdução a Linguagens de Programação

a) O Word é um editor de TEXTOS. Com ele é possível digitar cartas, currículos e trabalhos escolares.

NOVA VERSÃO SAFE DOC MANUAL

4.4 Limite e continuidade

17 - Funções e Procedimentos em C Programação Modular

Programação de Computadores III

Departamento: Matemática Curso: Eng a Madeiras Ano: 1 o Semestre: 2 o Ano Lectivo: 2006/2007. Aula prática n o 1 - Introdução ao MATLAB

Desenvolvido por: Juarez A. Muylaert Filho - jamf@estacio.br Andréa T. Medeiros - andrea@iprj.uerj.br Adriana S. Spallanzani - spallanzani@uol.com.

Gestão de Sistemas Operacionais I

PLANIFICAÇÃO INTRODUÇÃO ÀS TECNOLOGIAS DE INFORMAÇÃO BLOCO I

Aula 5. Uma partícula evolui na reta. A trajetória é uma função que dá a sua posição em função do tempo:

Algoritmos em Javascript

Objectivo Geral: Modulação de Amplitude: standard, com supressão de portadora e QAM.

Portal de Sistemas Integrados. Manual do Usuário. Versão: 1.0

Admistração de Redes de Computadores (ARC)

2) Escreva um algoritmo que leia um conjunto de 10 notas, armazene-as em uma variável composta chamada NOTA e calcule e imprima a sua média.

Depois do estudo deste capítulo, o estudante deve ser capaz de:

Engenharia de Software II

Componentes da linguagem C++

1 Visão Geral. 2 Instalação e Primeira Utilização. Manual de Instalação do Gold Pedido

Comandos de Eletropneumática Exercícios Comentados para Elaboração, Montagem e Ensaios

AULA 1 INTRODUÇÃO A BANCO DE DADOS E VISÃO GERAL DO SQL CONCEITUANDO BANCO DE DADOS MODELO RELACIONAL

1 Introdução ao MatLab

Instruções para utilização dos Fóruns pelo Grupo dos Consensos Psiquiátricos para Clínicos Gerais 2005

Vetores, Matrizes e Gráficos

Capítulo 1. Importação de Dados de Instituições Financeiras - Arquivo TXT 3

Introdução ao Teste de Software

INF1005: Programação I. Algoritmos e Pseudocódigo

Algoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira

Montadores e Compiladores

Módulo Odontologia. Sumário. Odontologia

Security BREAK DOWN

Programação Orientada a Objetos SANTOS, Rafael

Introdução à Lógica de Programação

Se inicialmente, o tanque estava com 100 litros, pode-se afirmar que ao final do dia o mesmo conterá.

Transcrição:

Ambiente SciLab

Processadores e Linguagens de Baixo Nível Memória Ciclo de Instrução Lê instrução corrente Interpreta Determina próxima instrução Esta é a metáfora que um programador de linguagens de baixo nível deve seguir ao construir programas 2

Inconvenientes da Programação em Baixo Nível Extremamente detalhada Instruções refletem a arquitetura específica de cada computador Programas em baixo nível não são portáteis Propensa a erros 3

Assemblers (Montadores) O processo de montagem manual de uma instrução escrita com mnemônicos foi feito pelos primeiros programadores, ainda na década de 40; No início dos anos 50 descobriu-se que um programa de imensa utilidade era um assembler: um programa que lê programas escritos com mnemônicos, e monta as instruções em binário para serem executadas por um computador. 4

A Linguagem Fortran A idéia de usar programas para facilitar a programação foi adiante Em 1954 a linguagem FORTRAN foi proposta por um grupo da IBM O primeiro compilador um programa que traduz programas escritos em linguagem de alto nível para instruções de máquina foi naturalmente escrito em assembler. A máquina era um IBM 704 um computador com 15K de memória 5

Alguns Marcos das Linguagens de Programação Existem literalmente milhares de linguagens de programação, como estas que descendem do Fortran: 1959 Cobol 1964 Basic 1970 Pascal 1971 C 1983 C++ 1991 Python 1995 Java 1995 PHP Existem ainda linguagens como LISP ou Prolog que seguem outros paradigmas 6

Matlab Inventado no fim dos anos 70 por Cleve Moler Lançado comercialmente em 1984 pela empresa MathWorks Voltado para engenheiros e cientistas Grande facilidade para o tratamento de matrizes (MatLab = Matrix Laboratory) É um interpretador, isto é, um programa que executa programas, por contraste com um compilador, que traduz um programa para instruções de máquina 7

Scilab Desenvolvido desde 1990 por pesquisadores do INRIA e da École Nationale des Ponts et Chaussées (França) Muito semelhante ao MatLab e gratuito! http://www.scilab.org É também um interpretador A linguagem e o sistema têm o mesmo nome, Scilab Atualmente na versão 5.3.1. 8

A Linguagem Scilab Seu aprendizado exige uma postura paciente, pois envolve no início uma taxa inicial de memorização Também como nas linguagens naturais, a fluência vem com o uso 9

O Ambiente Scilab Interpreta comandos e programas Oferece um editor para a construção de programas, o SciPad Emite mensagens de erros relativos tanto à obediência de comandos e programas às regras da linguagem como a problemas na exeçução, como divisão por zero O ambiente também requer familiarização para uso eficiente 10

Tela Inicial Scilab Barra de Menus Barra de Ferramentas Prompt de Comandos 11

Variáveis e Comandos de Atribuição 1 Prompt de Comandos a é uma variável que passa a existir, recebe e guarda um valor (10, no caso) -->a = 10 a = 10. -->b = 2^10 b = 1024. -->c = a+b c = 1034. O Scilab ecoa o valor recebido pela variável Exponenciação O valor recebido pode ser uma expressão aritmética com variáveis já conhecidas 12

Variáveis São nomes para espaços de memória gerenciados pelo Scilab O programador não precisa ter qualquer idéia de como isso é feito Variáveis têm seus nomes escolhidos pelo programador segundo algumas regras O primeiro caractere do nome deve ser uma letra, ou qualquer caractere dentre '%', '_', '#', '!', '$ e?'. Os outros podem ser letras ou dígitos, ou qualquer caractere dentre '_', '#', '!', '$ e '?' 13

Nomes de Variáveis Válidos: a, A, jose, total_de_alunos, #funcionarios Não válidos 1Aluno (o primeiro caractere é um algarismo) total de alunos (tem espaços) José (é acentuado) 14

Comando de Atribuição Forma: <variável alvo> = <expressão> A <variável alvo>, se não existia, passa a existir Se existia, o valor anterior é perdido A <expressão> é calculada, e o resultado é atribuído à <variável alvo> O comando de atribuição é a construção básica de transformação de informação 15

Variáveis e Comandos de Atribuição - 2 -->d = a+x!--error 4 Undefined variable: x A expressão pode conter a variável alvo, em uma estrutura similar a um registrador acumulador -->b = 2*b b = 2048. * denota Multiplicação Todas as variáveis em uma expressão devem estar definidas, ou o Scilab reclama 16

Variáveis e Comandos de Atribuição 3 -->a = %pi a = 3.1415927 -->b = 2*%pi; -->c = cos(a) + sqrt(b) c = 1.5066283 Valor pré-definido como a melhor aproximação em ponto flutuante de 64 bits de ; suprime o eco automático O Scilab oferece um semnúmero de funções prédefinidas (sqrt = square root). 17

Help - Funções Elementares do Scilab 18

Expressões Aritméticas Expressões podem ser arbitrariamente complicadas A ordem em que operadores são aplicados não é óbvia: Qual valor o comando x = 2^3*4 atribui a x, ou 2 3. 4 = 8.4 = 32 2 3.4 = 2 12 = 4096? 19

Prioridades entre Operadores Prioridade Operação Associatividade 1 a Potenciação Da direita para a esquerda 2 a Multiplicação, divisão 3 a Adição, subtração Parênteses podem alterar prioridades Da esquerda para a direita Da esquerda para a direita 20

Prioridades e Parênteses -->2^3*4 ans = 32. -->2^(3*4) ans = 4096. -->2^3^4 ans = 2.418D+24 -->2^(3^4) ans = -->(2^3)^4 ans = 4096. -->2*3+4 ans = 10. -->2*(3+4) ans = 14. 2.418D+24 Recomendação: use parênteses; é mais seguro Notação Scilab (e Fortran, e C, e Java, e...) para 2.418 x 10 24 UFMG DCC001 2010-2 21

Equações de Segundo Grau: O Scilab como Calculadora - 1 Equação Raízes (reais se >0) Calcular as raízes para a = 534.2765, b = 9987.3431 e c = 225.7690 22

Equações de Segundo Grau: O Scilab como Calculadora 2 Inicialização -->a = 534.2765 a = 534.2765 -->b = 9987.3431 b = 9987.3431 -->c = 225.7690 c = 225.769 23

Equações de Segundo Grau: O Scilab como Calculadora 3 Cálculo das Raízes -->delta = b^2-4*a*c delta = 99264530. -->r1 = (-b+sqrt(delta))/(2*a) r1 = - 0.0226329 -->r2 = (-b-sqrt(delta))/(2*a) r2 = - 18.670578 24

Erros Comuns Escrever delta = b^2 4ac, omitindo os operadores de multiplicação Escrever r1 = (-b+sqrt(delta))/2*a o que na verdade calcula 25

Verificando os Resultados -->a*r1^2 + b*r1 + c ans = 3.865D-12 -->a*r2^2 + b*r2 + c ans = - 2.274D-13 26

Equações de Segundo Grau: O Scilab como Calculadora 4 Ganhos com relação a uma calculadora de mão: Variáveis evitam re-digitações Resultados intermediários são memorizados Fórmulas facilitam a composição de expressões Problemas Nova equação, redigitação das fórmulas Solução Usar o Scilab como interpretador de programas 27

Exercícios Calcule as seguintes expressões: Qual é o valora da área de um cíuculo com raio igual a 2,5? - Area = πr 2 Usando a equação do teorema de Pitagoras, a 2 + b 2 = c 2 qual é o valor do a quando b é igual a 2 e c é igual a 6? Uma função f:r x R R é dada por f x, y = 1 + x 1 + y 2 + x 2 + y Qual é o valor de f(2,4)? 28

Programas Scilab Programas são arquivos ASCII (caracteres sem formatação) com a terminação.sce Um arquivo-programa contém comandos Scilab Um programa é construído usando o editor SciPad Um programa é executado seguindo o menu Execute/Load into Scilab do editor Scipad Sua execução equivale à digitação na console dos comandos no arquivo 29

O Editor SciPad Use sempre o SciPad para construir programas Nunca use o Word, pois ele introduz bytes de formatação 30

Equações de Segundo Grau: Programa Scilab Eq2g1.sce // indica que a linha é um comentário 31

Equações de Segundo Grau: Programa Scilab Eq2g_1_0.sce Para uma nova equação, basta substituir no programa os valores dos novos coeficientes As chances de erros de digitação são consideravelmente diminuídas Entretanto, a prática de modificar programas a cada execução não é recomendada O melhor é fazer com que o programa leia os valores dos coeficientes a cada execução 32

Equações de Segundo Grau: Programa Scilab Eq2g_2_0.sce - 1 Diálogo com o usuário // Cálculo das raízes de uma // equação de 2o grau // Entrada dos coeficientes a = input("valor de a:"); b = input("valor de b:"); c = input("valor de c:"); 33

Equações de Segundo Grau: Programa Scilab Eq2g_2_0.sce - 2 // Cálculo das raízes de uma equação // de 2o grau a = input("digite o valor de a:") b = input("digite o valor de b:") c = input("digite o valor de c:") delta = b^2-4*a*c r1 = (-b+sqrt(delta))/(2*a) r2 = (-b-sqrt(delta))/(2*a) 34

Execução do Programa Eq2g2.sce Digite o valor de a:1 a = 1. Digite o valor de b:2 b = 2. Digite o valor de c:3 c = 3. delta = - 8. r1 = - 1. + 1.4142136i r2 = - 1. - 1.4142136i 35

O Programa Eq2g3.sce Especificação O programa só deverá calcular as raízes quando elas forem reais A saída do programa deverá ser uma frase como As raízes são xxxx e xxxx, quando as raízes forem reais, e senão, As raízes são complexas. 36

O Comando if if <condição> then <bloco então > else <bloco senão > end 37

Cláusula else vazia if <condição> then <bloco então > else // Nenhum comando aqui end if <condição> then end <bloco então > 38

Equações de Segundo Grau: Programa Scilab Eq2g_3.sce - 2 //Cálculo e impressão das raízes delta = b^2-4*a*c; if delta > 0 then r1 = (-b+sqrt(delta))/(2*a); r2 = (-b-sqrt(delta))/(2*a); printf("raízes: %g e %g.",r1,r2); else printf("raízes complexas.") end 39

Partes de um comando If <condição> <bloco então > if delta >= 0 then r1 = (-b+sqrt(delta))/(2*a) r2 = (-b-sqrt(delta))/(2*a) printf("as raízes são %g e %g",r1,r2) else printf("as raízes são complexas") end <bloco senão > 40

Palavras-chave de um Comando if Início do comando Fim da condição e começo do bloco então if delta < 0 then printf('raízes complexas!'); else r1 = (-b + sqrt(delta))/(2*a); r2 = (-b - sqrt(delta))/(2*a); printf('r1=%g e r2=%g.',r1,r2) end Fim do bloco senão e fim do comando Fim do bloco então e começo do bloco senão 41

Operadores Relacionais > maior que >= maior ou igual a < menor que <= menor ou igual a == igual a <> ou ~= diferente de 42

Problema: Cálculo do Fatorial -->fat = 1 fat = 1. -->fat = fat*2 fat = 2. -->fat = fat*3 fat = 6. Outra coisa chata, repetitiva e propensa a erros Solução? Programa Scilab! 43

O Comando Repetitivo for O comando for j = 1:5 end // corpo do for resulta em 5 execuções do corpo do for, com j = 1, 2, 3, 4 e 5. 44

Programa - Fatorial n = input("por favor entre com o valor de n"); f = 1; for j=1:n f = f*j; end; n repetições, com j = 1, 2,..., n printf("o fatorial de %d é igual a %d",n,f) Códigos de formato Lista de expressões 45

Tabela de Senos x seno(x) 0.0 0.0000 0.2 0.1987 0.4 0.3894 0.6 0.5646 0.8 0.8415 46

Forma Geral de um comando for for <variável> = <inicial>:<passo>:<limite> end <bloco for>; 47

Comando for com passo diferente de 1 for i = 1:2:10 printf('\ni = %g',i); end i = 1 i = 3 i = 5 i = 7 i = 9 i varia de 2 em 2 Saída Repare que i não assumiu o limite superior do loop 48

Comando for com passo negativo for i = 20:-2:16 end printf('\ni = %g',i); i = 20 i = 18 Saída i = 16 49

Comando for com controle fracionário A variável de controle pode assumir valores não inteiros for x = 0:0.3:0.7 end printf(' \ nx = %g',x); x = 0 x = 0.3 x = 0.6 Saída 50

Tabela de Senos 1ª tentativa // Tabela da função Seno for x = 0:0.2:2*%pi printf("%g %g",x, sin(x)) end --> 0 00.2 0.1986690.4 0.3894180.6 0.5646420.8 0.7173561 0.841471 51

Tabela de Senos 2ª Tentativa // Tabela da função Seno for x = 0:0.2:2*%pi printf("\n %g %g",x, sin(x)) end 52

Tabela de Senos 2ª Tentativa 0 0 0.2 0.198669 0.4 0.389418 0.6 0.564642 0.8 0.717356 1 0.841471 1.2 0.932039 53

Tabela de Senos // Tabela da função Seno // Impressão do cabeçalho printf("\n x seno(x)") // Impressão das linhas da tabela for x = 0:0.2:2*%pi printf("\n%3.1f %7.4f",x, sin(x)) end 54

Tabela de Senos x seno(x) 0.0 0.0000 0.2 0.1987 0.4 0.3894 0.6 0.5646 0.8 0.7174 1.0 0.8415 1.2 0.9320 55

Indentação if delta < 0 then printf('raízes complexas!'); else r1 = (-b + sqrt(delta))/(2*a); r2 = (-b - sqrt(delta))/(2*a); printf('r1=%g e r2=%g.',r1,r2) end Mais legível if delta < 0 then printf('raízes complexas!'); else r1 = (-b + sqrt(delta))/(2*a); r2 = (-b - sqrt(delta))/(2*a); printf('r1=%g e r2=%g.',r1,r2) end Menos legível 56

Indentação Para o Scilab, os dois programas são absolutamente equivalentes, mas... Para nós, humanos, a disposição do texto do programa afeta (e muito) a legibilidade (o que se aplica à correção de programas pelo professor e pelos monitores: a indentação é exigida) Blocos então e senão são mais facilmente identificados com indentação. Os possíveis fluxos de execução ficam mais claros. 57

Conclusões O Scilab oferece um nível de conforto muito superior às linguagens de máquina A interface de comandos é muito boa para pequenos cálculos e para o teste de comandos. Cálculos mais complexos são (muito) melhor implementados por programas 58

Conclusões Na linguagem Scilab encontramos construções importantes como if e for, e também detalhes, como a inclusão ou não de um ; ao fim de um comando, ou os códigos %d ou %f de conversão em um printf, Operações como salvar ou executar um programa também merecem sua atenção. Não tenha medo! Na dúvida, faça experimentos o Scilab não estraga. UFMG DCC001 2010-2 59