Processadores e Linguagens de Baixo Nível

Documentos relacionados
Ambiente Scilab Variáveis, expressões, comando de atribuição Entrada e Saída básica

Introdução ao Scilab. Comandos de entrada e saída de dados.

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

Material Didático Proposto

Programação Estruturada Comandos Condicionais (Decisão) Operadores Relacionais

Material Didático Unificado. Variáveis correspondem a nomes para endereços de memória que são gerenciados pelo Scilab.

Ler os valores dos coeficientes a, b e c Calcular o valor de delta Obter as raízes da equação Imprimir as raízes da equação

INTRODUÇÃO AO SCILAB

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1

Exercícios Repetição

Aula 12- Variáveis e valores reais

Programação de Computadores:

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

Python - Variáveis e expressões

CONCEITOS DE ALGORITMOS

Comandos de desvio de fluxo. Expressões lógicas.

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4

Estrutura de um Algoritmo, Variáveis, Comandos de Entrada e Saída e Expressões Aritméticas

Ambiente de desenvolvimento

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES

Desenvolvimento de programas. Análise do problema. Análise do problema. Análise do problema. Desenvolvimento do algoritmo. Codificação do programa

Introdução a Programação. Curso: Sistemas de Informação Programação I José R. Merlin

Linguagem C: Introdução

Compiladores. Introdução à Compiladores

TÉCNICO DE INFORMÁTICA - SISTEMAS

Introdução ao Python. Programa Computacional

1 Introdução à Programação O que é? Para que serve?... 1

Apostila de Fortran. É uma pseudo-linguagem a qual oferece recursos para que o programador possa codificar e testar os seus algoritmos.

Informática I. Aula 9. Aula 9-17/05/2006 1

Inteligência Computacional Aula 2 - Introdução ao MatLab Graduação /2

Introdução a Matrizes

Introdução a Linguagem C. Prof. Me. Hélio Esperidião

Linguagem de Montagem do NeanderX

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI

Programação Orientada a Objetos

Aula 3 Primeiros programas

PROGRAMAÇÃO I. Introdução

Linguagem Pascal. Prof. Sérgio Rodrigues. É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa;

CONJUNTO DE INSTRUÇÕES

INTRODUÇÃO À COMPUTAÇÃO - EPET006 Aula 3

Introdução ao Fortran 90

Arquitetura e Organização de Computadores

Capítulo 7. Expressões e Sentenças de Atribuição

Introdução a Programação de Jogos

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Linguagens de Programação Classificação

Algoritmo e Programação Matemática

Comandos em C (cont.)

ALGORITMOS E LÓGICA DE PROGRAMAÇÃO PRÉ AULA PRÉ AULA 31/08/2015

Programação de Computadores:

Introdução à Linguagem C

Linguagem de Programação I. Linguagem Pascal

Aula de hoje. Expressões. Expressões. Expressões. Exemplos. Programa em Python. SCC Introdução à Programação para Engenharias

Fundamentos de Programação. Turma CI-240-EST. Josiney de Souza.

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

C Operadores e Expressões

Lógica de Programação I. Gilson de Souza Carvalho

Programação Básica. Estrutura de um algoritmo

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

Introdução à Programação em C

Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição

Introdução ao Scilab

COBOL DB2- CICS. Prof. Maromo [Aula 5]

Capítulo 2 Operadores. A função scanf()

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema

Lógica e Linguagem de Programação Convertendo um algoritmo em pseudocódigo para a linguagem C Professor: Danilo Giacobo

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

5. Expressões aritméticas

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Variáveis, Atribuição, Entrada e Saída

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação. Lista de Exercícios 1

William Stallings Arquitetura e Organização de Computadores 8 a Edição

3. Linguagem de Programação C

Conceitos Básicos de Scripts

Working 03 : Conceitos Básicos II

Linguagem C Princípios Básicos (parte 1)

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

Elementos básicos das linguagens de programação

Revisão: linguagens de programação

GFM015 Introdução à Computação. Plano de Curso e Introdução. Ilmério Reis da Silva UFU/FACOM

Fluxogramas. Leandro Tonietto ago-09

Algoritmos. Algoritmos. Linguagem de programação. Conceitos. Conceitos. Conceitos. Sintaxe do comando para incluir bibliotecas no programa:

Conceitos Básicos de Programação

Noções de algoritmos - Aula 1

Algoritmos: Conceitos Fundamentais. Slides de autoria de Rosely Sanches e Simone Senger de Souza

Transcrição:

Ambiente MatLab

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.418D+24 -->(2^3)^4 ans = 4096. -->2*3+4 ans = 10. -->2*(3+4) ans = 14. 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

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 28

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

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

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 31

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:"); 32

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) 33

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 34

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. 35

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

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

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 38

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 > 39

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 40

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

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! 42

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. 43

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 44

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 45

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

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 47

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

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 49

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 50

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 51

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 52

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 53

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 54

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 55

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. 56

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 57

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 58