Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701 www.decom.ufop.br/moodle 1 Ambiente Scilab Variáveis, expressões, comando de atribuição Entrada e Saída básica 2 UFMG DCC001 2013-1 Scilab é um ambiente de programação voltado para cientistas e engenheiros Foi criado em 1990, por pesquisadores do INRIA, sendo baseado no sistema MatLAB. É gratuito: download www.scilab.org 3 prompt de comandos navegador de variáveis janela de arquivos console: janela de comandos histórico de comandos 4 a é uma variável que passa a existir, recebe e guarda um valor O Scilab “ecoa” o valor recebido pela variável Variáveis criadas Histórico 5 Literal ^ denota exponenciação * denota multiplicação O valor atribuído pode ser uma expressão aritmética com variáveis já conhecidas 6 UFMG DCC001 2013-1 7 UFMG DCC001 2013-1 São nomes para espaços de memória gerenciados pelo Scilab O programador não precisa ter qualquer ideia sobre como é feito esse gerenciamento Variáveis têm seus nomes escolhidos pelo programador segundo algumas regras ◦ O primeiro caractere do nome deve ser uma letra ◦ Os outros podem ser letras ou dígitos, ou qualquer caractere dentre '_', '#', '!', '$‘ e '?' ◦ O nome de uma variável em Scilab deve ter no máximo 24 caracteres 8 UFMG DCC001 2013-1 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) O mais importante é escolher nomes com significado claro para quem lê o programa 9 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, em Scilab e em várias outras linguagens de programação. 10 UFMG DCC001 2013-1 O Scilab usa uma variável default, ans, quando uma expressão é digitada no prompt e não é atribuída a uma variável. O segundo fator está ausente na expressão aritmética. 11 As variáveis de um expressão, do lado direito de uma atribuição, devem estar definidas. Não foi definido um valor para a variável lucro ! 12 Funções pré-definidas em Scilab podem ser usadas uma expressão. Expressão do lado direito: o valor corrente de x é adicionado a 8, resultando 8.0000927; esse resultado é atribuído a x. O valor da expressão do lado direito da atribuição, 22, é atribuído à variável x; o antigo valor é substituído na memória. 13 -->d = a+x !--error 4 Undefined variable: x -->b = 1024 -->b = 2*b A expressão pode conter b = a própria variável alvo. 2048. Todas as variáveis em uma expressão devem estar definidas, ou o Scilab reclama 14 UFMG DCC001 2013-1 -->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 = O Scilab oferece um sem-número 1.5066283 de funções pré-definidas como cos e sqrt 15(square root). UFMG DCC001 2013-1 A linguagem SciLab possui os operadores aritméticos: Operador Aritmético Denotação em SciLab Exemplo Resultado Soma + 7+5 12 Subtração - 10 – 9 1 Multiplicação * 22 * 10 220 Divisão / 50 / 2 25 Menos Unário - -26 -26 Exponenciação (potenciação) ^ 8^2 64 16 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 4 8 4 32 3 2 34 2 4096 12 17 UFMG DCC001 2013-1 Precedência Operação 1a Potenciação 2a Multiplicação, divisão Adição, subtração 3a Parênteses podem alterar prioridades UFMG DCC001 2013-1 18 -->2^3*4 ans = -->2^(3*4) ans = -->2^3^4 ans = -->2^(3^4) ans = -->(2^3)^4 ans = -->2*3+4 ans = -->2*(3+4) ans = 32. 4096. “ans” é o nome de uma variável que recebe valores de expressões sem variável alvo 2.418D+24 2.418D+24 4096. 10. 14. Notação Scilab (e Fortran, e C, e Java, e ...) para 2.418 x 1024 UFMG DCC001 2013-1 19 Função Resto da Divisão Inteira Raiz Quadrada Valor Absoluto Coseno Tangente Seno Denotação em SciLab Exemplo Resultado modulo modulo(8, 3) 2 sqrt abs cos tan sin sqrt(32) abs(-8) cos(30) tan(7.3456) sin(%pi) 5.6568542 8 0.1542514 1.7945721 1.225D-16 OBS: Nas funções trigonométricas os ângulos devem ser usados em radianos. 20 Denotação em Scilab Valor %pi O número . %inf Representa infinito . %i %e A base do logaritmo natural. %t ou %T Representa o valor booleano verdadeiro. %f ou %F Representa o valor booleano falso. 21 22 UFMG DCC001 2013-1 1. Calcule as expressões matemáticas 23 2. Calcule as expressões matemáticas 24 3. Calcule as expressões matemáticas, definindo valores para a, b, c e d 25 26 Área do círculo de raio r: A = π r2 Faça um programa para calcular a área de um círculo de raio = 5cm. OBS: ◦ Podemos obter a solução diretamente no prompt do Scilab: -->A = %pi * 5^2 ◦ E se agora quisermos calcular a área de um círculo com 16cm de raio? Teremos que digitar tudo de novo: -->A = %pi * 16^2 Para evitar isso, vamos escrever um programa que faz esse cálculo. 27 UFMG DCC001 2013-1 Programas são arquivos texto, 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 Sua execução equivale à digitação na console dos comandos no arquivo 28 UFMG DCC001 2013-1 Instruções bem definidas para resolver um problema Em arquivo, para guardar e continuar/executar depois Comentários tornam o programa mais claro para as pessoas, mas são ignorados pelo computador 29 Editor de Programas 30 UFMG DCC001 2013-1 31 comentário comandos de atribuição que definem os valores de r e de A 32 novo arquivo abrir salvar executar salvar e executa r 33 Para fazer o cálculo para um círculo de raio 16cm, bastaria mudar o valor de r no programa e executá-lo novamente. Entretanto, o que gostaríamos é que o nosso programa pudesse ler o valor do raio do círculo e exibir o valor calculado para a área do círculo. 34 UFMG DCC001 2013-1 comentário comando de leitrura comando de escrita 35 Sintaxe geral do comando input: <variávelAlvo> = input( <frase> ) Onde: <variávelAlvo> é uma variável que representa uma posição da memória que irá armazenar o valor digitado. <frase> é uma string que informa ao usuário qual o dado que ele deve digitar nesta interação. A string deve estar entre aspas duplas. 36 Suponha que o usuário deseje armazenar o valor 50, referente à quantidade de alunos em uma sala de aula, na variável Q. Isso pode ser realizado pela instrução: Q = input(“Digite a quantidade de alunos”) 37 Um valor ser armazenado em uma variável pode ser exibido na tela do computador, por meio do comando printf, o qual tem a seguinte sintaxe geral: printf(<frase>, <lista de expressões>) Exemplo: printf(“Número de alunos = %g”, Q) 38 <frase> é a sentença que se quer imprimir na tela, e que pode estar entremeada por códigos de formato como %g. %g é um código de formato geral para expressões com valores numéricos. existem vários outros códigos de formato como %d, %f ou %s, que vamos explorar em exercícios e em outros exemplos, futuramente. 39 <lista de expressões> é uma lista de expressões separadas por vírgulas, que são calculadas no momento da execução do comando. As expressões na lista são mapeadas, uma a uma, nos códigos de formato, na mesma sequência em que aparecem na <frase>, e a sentença que é impressa é obtida pela substituição do valor de cada expressão na posição marcada pelo código de formato. 40 Exemplo: Suponha: X = 30; Y = 60; O que é impresso pelo comando a seguir? printf(“PRIMEIRO:%g SEGUNDO :%g”, X, Y) Como você escreveria um comando para imprimir os valores das raízes no seu programa da Equação de 2º grau? 41 42 1. 2. Codifique os programas a seguir em Scilab. Utilize comentários e mensagens textuais para o usuário O programa deve ler dois valores, calcular a soma desses valores, armazenando-a em uma variável e imprimir o resultado. O programa deve ler dois valores, calcular o resultado da divisão do primeiro pelo segundo e imprimir o resultado. 43 3. 4. O programa deve imprimir o valor da hipotenusa de um triangulo retângulo, calculada de acordo com os valores lidos de seus catetos. O programa deve ler um valor de temperatura em graus Celsius (°C) e calcular e imprimir a temperatura correspondente, em graus Farenheit (°F) e em graus Kelvin (°K). OBS.: °F = °C × 1.8 + 32 °K = °C + 273.15 44