Aula 6 Módulo 5. DCC 001 Programação de Computadores 2 Semestre de 2011 Prof. Osvaldo Carvalho UFMG DCC

Documentos relacionados
Processadores e Linguagens de Baixo Nível

Introdução ao Scilab

Processadores e Linguagens de Baixo Nível

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.

Foi criado em 1990 por pesquisadores do INRIA e da ècole Nationale des Ponts et Chaussées (França), sendo gratuito e similar ao Matlab.

É um interpretador,, ou seja, um programa que executa programas; ao contrário de um compilador, não traduz um programa para instruções de máquina.

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

Material Didático Proposto

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

Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I - BCC701

Material Didático Unificado.

Aula Teórica 03. Comandos Condicionais (Decisão)

UFOP PC-I Prof. Guilherme / Anderson. Comando For e String

Aula 03 - Introdução ao Scilab (p2)

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

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

Material Didático Unificado.

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

Introdução ao SciLab. SciLab O que é? Onde obter o programa:

Programação de Computadores:

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

AULA TEÓRICA 03 COMANDO CONDICIONAL

Aula 4 Introdução ao C

02 - Introdução ao Scilab

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

Fundamentos de Programação em Python

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

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

Introdução ao Python. Programa Computacional

INTRODUÇÃO AO SCILAB

Informática I. Aula 9. Aula 9-27/09/2006 1

Python - Variáveis e expressões

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

Informática I. Aula Aula 18-29/10/2007 1

Agenda. Programação estruturada. Sequência. Decisão: Desvio de fluxo INTRODUÇÃO. Expressões lógicas.

Prof. Sandro Wambier

Programação Introdução

INF 1005 Programação I

Introdução ao Scilab. Laura Goulart. 27 de Novembro de 2018 UESB. Laura Goulart (UESB) Introdução ao Scilab 27 de Novembro de / 11

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

Unidade 4: Introdução à Lógica de Programação - Parte II Português Estruturado - Versão Estácio Prof. Daniel Caetano

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

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

Introdução à Computação - aulas 01 e 02 -

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO

Introdução a Programação de Jogos

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

Expressões e sentença de atribuição

Linguagens de Programação. Marco A L Barbosa

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

4. Constantes. Constantes pré-definidas

Linguagem de Programação I Prof. Tiago Eugenio de Melo.

Compiladores. Introdução à Compiladores

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

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

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

Programação de Computadores III

Programação Python. Nesta aula... 1 Programação. 2 Python. Operadores e Operandos Variáveis, Expressões, Instruções Funções Ciclos Comentários

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

Programação I A Linguagem C. Prof. Carlos Alberto

Ambiente de desenvolvimento

Unidade 4: Introdução à Lógica de Programação - Parte II

Lista de Exercícios - 1 Prof: Yuri Frota

Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

3. Linguagem de Programação C

Organização e Arquitetura de Computadores I

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

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Aula 3 Primeiros programas

PROGRAMAÇÃO I. Introdução

Introdução ao software MatLab

Portugol. Tiago Alves de Oliveira

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

3. Linguagem de Programação C

Algoritmo e Programação Matemática

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES

Universidade Federal de Ouro Preto UFOP. Instituto de Ciências Exatas e Biológicas ICEB. Departamento de Computação DECOM

Arquivos. Arquivos correspondem a unidades de armazenamento, tipicamente gravados em unidades de memória secundária.

Universidade Federal de Uberlândia Faculdade de Computação. Expressões aritméticas, relacionais e lógicas Estruturas condicionais

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Introdução à Computação

Linguagens de Programação

Instruções, dados e expressões

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

Compiladores. Introdução

SCS Sistemas de Controle / Servomecanismos. Aula 01 Introdução ao software MATLAB

Engenharia Elétrica AAM. Professor: Marco Shawn Meireles Machado

5. Expressões aritméticas

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

CONJUNTO DE INSTRUÇÕES

Conceitos Fundamentais de MatLab/Octave. Prof. Responsáveis Wagner Santos C. de Jesus

Linguagem de Programação I. Linguagem Pascal

CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP)

ALGORITMOS E APLICAÇÕES. FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior

sumário 1 bases numéricas 1 2 sistemas de numeração em computação introdução representação de números... 3

Transcrição:

Aula 6 Módulo 5 3 Ambiente e Linguagem Scilab 3.1 Compiladores, Interpretadores e Sistemas Operacionais 3.2 Scilab 3.2.1 Variáveis e Comandos de Atribuição 3.2.2 Programas Scilab 3.2.3 Comandos input, if e printf DCC 001 Programação de Computadores 2 Semestre de 2011 Prof. Osvaldo Carvalho UFMG DCC001 2011-2 1

Processadores e Linguagens de Baixo Nível Memória Ciclo de Instrução Lê instrução corrente Interpreta Determina próxima instrução Se não for um desvio, é a que está no endereço consecutivo Esta é a metáfora que um programador de linguagens de baixo nível deve seguir ao construir programas UFMG DCC001 2011-2 2

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

UFMG DCC001 2011-2 4 Assemblers (Montadores) Nós vimos o processo de montagem manual de uma instrução escrita com mnemônicos Isto 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

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 UFMG DCC001 2011-2 5

Proposta original FORTRAN UFMG DCC001 2011-2 6

Alguns Marcos das Linguagens de Programação UFMG DCC001 2011-2 7 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

Compiladores, Interpretadores, Sistema Operacional UFMG DCC001 2011-2 8

UFMG DCC001 2011-2 9 Matlab Criado 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) É uma linguagem (M ) e um ambiente de desenvolvimento e execução

UFMG DCC001 2011-2 10 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

UFMG DCC001 2011-2 11 A Linguagem Scilab Uma linguagem de programação, como as linguagens naturais, une riqueza de expressão a detalhes sintáticos e arbitrariedades Detalhes e arbitrariedades podem vir de escolhas feitas no passado 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

O Ambiente Scilab Interpreta comandos e programas Oferece um editor para a construção de programas, o SciNotes 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 UFMG DCC001 2011-2 12

UFMG DCC001 2011-2 13 Tela Inicial Scilab Barra de Menus Atalhos para funções comuns Prompt de Comandos

UFMG DCC001 2011-2 14 Variáveis e Comandos de Atribuição 1 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

UFMG DCC001 2011-2 15 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 '?'

UFMG DCC001 2011-2 16 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)

UFMG DCC001 2011-2 17 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

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

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

Help - Funções Elementares do Scilab UFMG DCC001 2011-2 20

UFMG DCC001 2011-2 21 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?

UFMG DCC001 2011-2 22 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 Da esquerda para a direita Da esquerda para a direita Parênteses podem alterar prioridades

UFMG DCC001 2011-2 23 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

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

UFMG DCC001 2011-2 25 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

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 UFMG DCC001 2011-2 26

Erros Comuns Escrever delta = b^2 4ac, omitindo os operadores de multiplicação Um erro de sintaxe, denunciado pelo Scilab Escrever r1 = (-b+sqrt(delta))/2*a, o que na verdade calcula b r. a 1 2 Um erro de semântica, que só pode ser descoberto por testes UFMG DCC001 2011-2 27

UFMG DCC001 2011-2 28 Verificando os Resultados ans é o nome de uma variável que recebe valores de expressões sem variável alvo -->a*r1^2 + b*r1 + c ans = 3.865D-12 -->a*r2^2 + b*r2 + c ans = - 2.274D-13

Equações de Segundo Grau: O Scilab como Calculadora 4 UFMG DCC001 2011-2 29 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 Problema Nova equação, redigitação das fórmulas Solução Usar o Scilab como interpretador de programas

UFMG DCC001 2011-2 30 Programas Scilab Programas são arquivos UTF-8, contendo somente caracteres sem formatação, com a terminação.sce Um arquivo-programa contém comandos Scilab Um programa é construído usando o editor SciNotes Um programa é executado seguindo o menu Execute/Load into Scilab do editor SciNotes Sua execução ~equivale à digitação na console dos comandos no arquivo

UFMG DCC001 2011-2 31 O Editor SciNotes Use sempre o SciNotes para construir programas Nunca use o Word, pois ele introduz informação de formatação

Equações de Segundo Grau: Programa Scilab Eq2g1.sce UFMG DCC001 2011-2 32

Menu Executar UFMG DCC001 2011-2 33

Equações de Segundo Grau: Programa Scilab Eq2g_1_0.sce UFMG DCC001 2011-2 34 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; estes valores devem ser fornecidos pelo usuário

Equações de Segundo Grau: Programa Scilab Eq2g_2_0.sce - 1 UFMG DCC001 2011-2 35 // 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:"); Diálogo com o usuário

UFMG DCC001 2011-2 36 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)

UFMG DCC001 2011-2 37 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

UFMG DCC001 2011-2 38 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.

UFMG DCC001 2011-2 39 O Comando if if <condição> then <bloco então > else <bloco senão > end

UFMG DCC001 2011-2 40 Cláusula else vazia if <condição> then <bloco então > if <condição> then else <bloco então > // Nada end end

Equações de Segundo Grau: Programa Scilab Eq2g_3.sce - 2 UFMG DCC001 2011-2 41 //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

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

Partes de um comando if <condição> <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 <bloco senão > UFMG DCC001 2011-2 43

UFMG DCC001 2011-2 44 Operadores Relacionais > maior que >= maior ou igual a < menor que <= menor ou igual a == igual a <> ou ~= diferente de

UFMG DCC001 2011-2 45 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 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 Menos legível

UFMG DCC001 2011-2 46 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.

UFMG DCC001 2011-2 47 Objetivos do Módulo - 1 Conhecer a arquitetura básica de software empregada no desenvolvimento e execução de programas de alto nível Conhecer a sintaxe Scilab para variáveis, expressões, literais e comandos de atribuição Saber procurar por funções numéricas e transformar uma fórmula matemática em uma expressão Scilab

UFMG DCC001 2011-2 48 Objetivos do Módulo - 2 Saber utilizar o Scilab como uma calculadora Conhecer as funcionalidades básicas do ambiente Scilab para criação e execução de programas Saber utilizar o comando input para solicitar e obter dados do usuário em tempo de execução de um programa

UFMG DCC001 2011-2 49 Objetivos do Módulo - 3 Conhecer expressões lógicas e operadores relacionais Saber prever as possíveis computações de um programa com um comando if Ser capaz de construir um programa que utilize o comando if Ser capaz de utilizar o comando printf para controlar o formato de uma saída de dados de um programa

UFMG DCC001 2011-2 50 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

UFMG DCC001 2011-2 51 Conclusões Na linguagem Scilab encontramos construções importantes como if-then-else, e também detalhes, como a inclusão ou não de um ; ao fim de um comando, ou os códigos %g 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.