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 prompt de comandos Foi criado em 1990, por pesquisadores do INRIA, sendo baseado no sistema MatLAB. É gratuito: download www.scilab.org janela de arquivos navegador de variáveis console: janela de comandos histórico de comandos 3 4 1
5 6 Literal O Scilab ecoa o valor recebido pela variável a é uma variável que passa a existir, recebe e guarda um valor Variáveis criadas Histórico 7 ^ denota exponenciação * denota multiplicação O valor atribuído pode ser uma expressão aritmética com variáveis já conhecidas 8 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 10 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 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. 11 12 3
O Scilab usa uma variável default, ans, quando uma expressão é digitada no prompt e não é atribuída a uma variável. As variáveis de um expressão, do lado direito de uma atribuição, devem estar definidas. O segundo fator está ausente na expressão aritmética. Não foi definido um valor para a variável lucro! 13 14 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. -->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 15 16 4
-->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 (square root). 17 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 18 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 Precedência Operação 1 a Potenciação 2 a Multiplicação, divisão 3 a Adição, subtração Parênteses podem alterar prioridades 19 20 5
-->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. ans é o nome de uma variável que recebe valores de expressões sem variável alvo Notação Scilab (e Fortran, e C, e Java, e...) para 2.418 x 10 24 21 Função Denotação em SciLab Exemplo Resultado Resto da Divisão Inteira modulo modulo(8, 3) 2 Raiz Quadrada sqrt sqrt(32) 5.6568542 Valor Absoluto abs abs(-8) 8 Coseno cos cos(30) 0.1542514 Tangente tan tan(7.3456) 1.7945721 Seno sin sin(% (%pi pi) 1.225D-16 16 OBS: Nas funções trigonométricas os ângulos devem ser usados em radianos. 22 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. 23 24 6
1. Calcule as expressões matemáticas 2. Calcule as expressões matemáticas 25 26 3. Calcule as expressões matemáticas, definindo valores para a, b, c e d 27 28 7
Área do círculo de raio r: A = π r 2 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. 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 29 30 Instruções bem definidas para resolver um problema Em arquivo, para guardar e continuar/executar depois Editor de Programas Comentários tornam o programa mais claro para as pessoas, mas são ignorados pelo computador 31 32 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 ax 2 + bx + c = 0 novo arquivo abrir salvar executar salvar e executa r 35 Sua solução pode ser obtida através dos seguintes passos: 1. Atribuir um valor para a 2. Atribuir um valor para b 3. Atribuir um valor para c 4. Calcular o valor de delta, onde delta = b 2 4 * a * c 5. Calcular o valor de x 1, onde x 1 = ( -b + sqrt(delta) ) / (2 * a) 6. Calcular o valor de x 2, onde x 2 = ( -b - sqrt(delta) ) / (2 * a) 36 9
a x 2 + 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,, 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 ) 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) 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. existem vários outros códigos de formato como %d, %f ou %s, que vamos explorar em exercícios e em outros exemplos, futuramente. 41 <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. 42 Exemplo xemplo: 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? 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. 43 44 11
comentário comando de leitrura comando de escrita 45 46 Codifique os programas a seguir em Scilab. Utilize comentários e mensagens textuais para o usuário 1. O programa deve ler dois valores, calcular a soma desses valores, armazenando-a em uma variável e imprimir o resultado. 2. O programa deve ler dois valores, calcular o resultado da divisão do primeiro pelo segundo e imprimir o resultado. 3. O programa deve imprimir o valor da hipotenusa de um triangulo retângulo, calculada de acordo com os valores lidos de seus 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.: F = C 1.8 + 32 K = C + 273.15 47 48 12