Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701 www.decom.ufop.br/moodle Ambiente Scilab Variáveis, expressões, comando de atribuição Entrada e Saída básica 1 2 Scilab é um ambiente de programação voltado para cientistas e engenheiros UFMG DCC001 2013-1 prompt de comandos Foi criado em 1990, por pesquisadores do INRIA, sendo baseado no sistema MatLAB. navegador de variáveis janela de arquivos É gratuito: download www.scilab.org console: janela de comandos 3 histórico de comandos 4 1 5 6 Literal 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 ^ denota exponenciação Histórico * denota multiplicação O valor atribuído pode ser uma expressão aritmética com variáveis já conhecidas 7 8 UFMG DCC001 2013-1 2 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 9 UFMG DCC001 2013-1 10 UFMG DCC001 2013-1 Forma: 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 11 <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. 12 UFMG DCC001 2013-1 3 As variáveis de um expressão, do lado direito de uma atribuição, devem estar definidas. 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. Não foi definido um valor para a variável lucro ! 13 14 -->d = a+x !--error 4 Undefined variable: x 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. -->b = 1024 -->b = 2*b A expressão pode conter b = a própria variável alvo. 2048. 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. 15 Todas as variáveis em uma expressão devem estar definidas, ou o Scilab reclama 16 UFMG DCC001 2013-1 4 Valor pré-definido como a melhor aproximação em ponto flutuante de 64 bits de π -->a = %pi a = 3.1415927 “;” suprime o eco automático -->b = 2*%pi; -->c = cos(a) + sqrt(b) c = O Scilab oferece um sem-número 1.5066283 de funções pré-definidas como A linguagem SciLab possui os operadores aritméticos: 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 cos e sqrt 17(square root). UFMG DCC001 2013-1 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 ? 23 × 4 = 8 × 4 = 32 23×4 = 212 = 4096 19 UFMG DCC001 2013-1 18 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 20 5 -->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 = “ans” é o nome de uma variável que recebe valores de expressões sem variável alvo 32. 4096. Função Resto da Divisão Inteira Raiz Quadrada Valor Absoluto Coseno Tangente Seno 2.418D+24 2.418D+24 Denotação em SciLab Exemplo Resultado modulo modulo(8, 3) 2 sqrt abs cos tan sin sqrt(32) abs(abs( -8) cos(30) tan(7.3456) tan (7.3456) sin(% (%pi pi)) sin (% pi 5.6568542 8 0.1542514 1.7945721 1.225D1.225D -16 4096. Notação Scilab (e Fortran, e C, e Java, e ...) para 2.418 x 1024 10. 14. UFMG DCC001 2013-1 Denotação em Scilab OBS: Nas funções trigonométricas os ângulos devem ser usados em radianos. 21 22 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. 23 24 UFMG DCC001 2013-1 6 1. 3. Calcule as expressões matemáticas 2. Calcule as expressões matemáticas 25 26 27 28 Calcule as expressões matemáticas, definindo valores para a, b, c e d 7 Área do círculo de raio r: A = π r2 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 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. 29 UFMG DCC001 2013-1 30 Instruções bem definidas para resolver um problema UFMG DCC001 2013-1 Editor de Programas Em arquivo, para guardar e continuar/executar depois Comentários tornam o programa mais claro para as pessoas, mas são ignorados pelo computador 31 32 UFMG DCC001 2013-1 8 comentário comandos de atribuição que definem os valores de r e de A 33 34 Seja a equação do segundo grau ax2 + bx + c = 0 novo arquivo abrir salvar executar salvar e executa r Sua solução pode ser obtida através dos seguintes passos: 1. 2. 3. 4. 5. 6. 35 Atribuir um valor para a Atribuir um valor para b Atribuir um valor para c Calcular o valor de delta, onde delta = b2 – 4 * a * c Calcular o valor de x1, onde x1 = ( -b + sqrt(delta) sqrt(delta) ) / (2 * a) Calcular o valor de x2, onde x2 = ( -b - sqrt(delta) sqrt(delta) ) / (2 * a) 36 9 • a x2 + b x + c = 0 • encontrar a solução da equação para a = 2, b = -1 e c = 2; 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. 37 38 Suponha que o usuário deseje armazenar o valor 50, 50, referente à quantidade de alunos em uma sala de aula, na variável Q. Isso pode ser realizado pela instrução: Um valor ser armazenado em uma variável pode ser exibido na tela do computador, por meio do comando printf, printf, o qual tem a seguinte sintaxe geral: geral: printf(<frase>, <lista de expressões>) Q = input(“Digite a quantidade de alunos”) Exemplo: printf(“Número de alunos = %g”, Q) 39 40 10 <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. 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. futuramente. <lista de expressões> é uma lista de expressões separadas por vírgulas, que são calculadas no momento da execução do comando. 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. formato. 41 Exemplo: xemplo: Suponha: Suponha: X = 30; 30; Y = 60; 60; 42 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 er o valor do raio do círculo e exibir o valor calculado para a área do círculo. 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? 43 44 UFMG DCC001 2013-1 11 comentário comando de leitrura comando de escrita 45 Codifique os programas a seguir em Scilab Scilab.. Utilize comentários e mensagens textuais para o usuário 1. 2. O programa deve ler dois valores, calcular a soma desses valores, armazenandoarmazenando-a em uma variável e imprimir o resultado. resultado. O programa deve ler dois valores, calcular o resultado da divisão do primeiro pelo segundo e imprimir o resultado. resultado. 46 3. O programa deve imprimir o valor da hipotenusa de um triangulo retângulo, calculada de acordo com os valores lidos de seus catetos. catetos. 4. 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.: 47 °F = °C × 1.8 + 32 °K = °C + 273.15 48 12