SciLab Programável
Transcrição
SciLab Programável
1 Aluísio Eustáquio da Silva SciLab Programável Material didático usado em aulas de Programação de Computadores, Algoritmos e Lógica de Programação Betim Maio de 2012 2 PROGRAMAÇÃO O SciLab permite que se criem programas, que são algoritmos escritos numa linguagem que o computador possa entender e executar. Programa de computador é um conjunto de instruções que são codificadas em linguagem de máquina, a linguagem do computador, por um outro programa, e depois executadas. Existem dois tipos de programas para se criar programas: Compiladores: codificam todo o programa para depois executá-lo Interpretadores: codificam e executam instrução por instrução O SciLab está na categoria dos interpretadores. SCRIPTS São arquivos do tipo texto com um conjunto de instruções a serem executadas. Esses arquivos podem ser gravados e usados toda vez que for necessário, sem necessidade de nova digitação. Os scripts são executadas em ordem sequencial, de cima para baixo. Pode-se acrescentar em um programas estruturas que são executadas dependendo de certas condições e estruturas que se repetem um número finito de vezes. Para criar um script usaremos o próprio editor de scripts do SciLab que apresenta uma série de facilidades, como por exemplo, a convenção de cores abaixo: Azul claro comandos da linguagem Azul escuro funções da linguagem Verde comentários Marrom strings Rosa parênteses Preto variáveis 3 ESTRUTURA DE UM PROGRAMA Adotaremos alguns padrões, não obrigatórios, para tornar os programas simples, legíveis e funcionais: Todo Programa começará com um comentário onde ficará expresso de forma bem clara qual é o objetivo do mesmo, quem o desenvolveu e a data de confecção. Os comandos (instruções) de um programa serão delimitados em uma função com as palavras chaves do SciLab function e endfunction. As instruções do programa serão escritas, uma por linha Cada linha será alinhada à esquerda, com espaços, “endentações”, nas estruturas de um mesmo nível. As palavras chaves do programa serão obrigatoriamente escritas com letras minúsculas Todo identificador de variável que tiver mais de um caractere se iniciará com letra maiúscula Os identificadores compostos terão cada palavra se iniciando com letra maiúscula e separados por travessão (underline). Exemplo: //EXEMPLO 1 //PROGRAMA PARA CONVERTER POLEGADAS EM MILÍMETROS function Polegadas_Milimetros() //DECLARAÇÃO DE VARIÁVEIS //inteiro Numerador_Polegada, Denominador_Polegada //real Milimetros printf("************************************************************"); printf("\nPrograma para converter polegadas em milímetros"); printf("\n**********************************************************\n"); //ENTRADA DE DADOS Numerador_Polegada = input("Digite o numerador de uma medida em polegadas: "); Denominador_Polegada = input("Digite o denominador de uma medida em polegadas: "); //PROCESSAMENTO Milimetros = (Numerador_Polegada / Denominador_Polegada) * 25.4; //SAIDA DE RESULTADOS printf("\nPolegadas: %d / %d ", Numerador_Polegada, Denominador_Polegada); printf(" = %4.2f ", Milimetros); return; //RETORNA À FUNÇÃO CHAMADORA endfunction //PROGRAMA PRINCIPAL clc; Polegadas_Milimetros(); //FIM PROGRAMA PRINCIPAL 4 ESTRUTURAS SEQUENCIAIS De acordo com a sequência das ações executadas por um programa, suas estruturas podem ser classificadas em: Estrutura Sequencial, Condicional ou de Repetição. Nas estruturas sequenciais os comandos serão executados na ordem em que aparecem. Nas estruturas condicionais os comandos são executados ou não, dependendo de certas condições verdadeiras ou falsas. E nas estruturas de repetição, sequências de comandos serão repetidas dependendo de condições verdadeiras ou falsas. Para facilitar o desenvolvimento de programas, escreveremos todos os comandos em uma rotina que em SciLab é denominada “function”. Depois criaremos um programa que “chama” essa rotina. Esse programa será chamado de programa principal, apesar desse termo não existir em SciLab. //EXEMPLO 2 //PROGRAMA PARA TRANSFORMAR GRAUS FAHRENHEIT EM GRAUS CELSIUS // PROGRAMA PARA TRANSFORMAR GRAUS CELSIUS EM GRAUS FAHRENHEIT function Fahrenheit_Celsius() //DECLARAÇÃO DE VARIÁVEIS //real Fahrenheit, Celsius printf("****************************************************"); printf("\nPrograma para converter graus Fahrenheit em Celsius"); printf("\n e"); printf("\nPrograma para converter graus Celsius em Fahrenheit"); printf("\n***************************************************\n"); //ENTRADA DE DADOS Fahrenheit = input("Digite uma temperatura em graus Fahrenheit: "); //PROCESSAMENTO Celsius =(5/9)*( Fahrenheit -32); //SAÍDA DE RESULTADOS printf("\nFahrenhit: %3.1f ", Fahrenheit); printf("\nCelsius: %3.1f ", Celsius); printf("\n\n"); Celsius = input("Digite uma temperatura em graus Celsius --> "); Fahrenheit = 9 * Celsius / 5 + 32; printf("\nCelsius: %3.1f ", Celsius); printf("\nFahrenhit: %3.1f ", Fahrenheit); return; //RETORNA À FUNÇÃO CHAMADORA endfunction // function Fahrenheit_Celsius() //PROGRAMA PRINCIPAL clc; Fahrenheit_Celsius(); //FIM PROGRAMA PRINCIPAL 5 ESTRUTURAS CONDICIONAIS Os programas anteriores executaram apenas uma sequência de ações, uma após a outra, em uma ordem pré-estabelecida seguindo o padrão: Declaração de variáveis Entrada de dados pelo teclado, sem validação dos mesmos Processamento sequencial (sem desvios ou repetições) Impressão de valores na tela Nos próximos programas introduziremos comandos para controlar a ordem e o número de vezes que uma tarefa deve ser executa. OPERADORES RELACIONAIS São operadores que estabelecem uma relação entre dois operandos, gerando um resultado verdadeiro ou falso. Matemática Significado SciLab = igual a == ≠ diferente de > maior que > < menor que < ≤ menor ou igual a <= ≥ maior ou igual a >= <> ou ~= OPERADORES LÓGICOS São operadores que estabelecem uma “conexão” entre expressões lógicas. Utilizaremos três operadores lógicos: NÃO ~ OU | E & O operador NÃO (~) tem apenas um operando, o OU (|) e o E (&) têm dois operandos. Esses operadores produzem um resultado lógico (“True” = verdadeiro ou “False” = falso). 6 Para facilitar o entendimento, usa-se fazer uma tabela, chamada tabela verdade, com esses operadores. Sejam duas proposições quaisquer p e q p q ~p p | q p & q T T F T T T F F T F F T T T F F F T F F ESTRUTURAS CONDICIONAIS SIMPLES if (condição) then bloco de comandos_1 end bloco de comandos_2 Funcionamento Se a condição, entre parênteses, for verdadeira será executado o bloco de comandos_1, e posteriormente o bloco de comandos_2, senão (condição falsa) a execução passará diretamente para o bloco de comandos_2. Exemplo: //EXEMPLO 3 //PROGRAMA PARA VERIFICAR SE UM VALOR É MAIOR OU MENOR QUE OUTRO function Maior_Menor() //DECLARAÇÃO DE VARIÁVEIS //real Valor_1, Valor_2 //LÊ UM VALOR DA VARIÁVEL Valor_1 Valor_1 = input ("Digite o primeiro valor: "); //LÊ UM VALOR DA VARIÁVEL Valor_2 Valor_2 = input ("Digite o primeiro valor"); //VERIFICA SE Valor_1 É MAIOR QUE Valor_2 if (Valor_1 > Valor_2) then printf("Valor_1 é maior que Valor_2"); //SE A CONDIÇÃO ACIMA É VERDADEIRA end //FIM DA ESTRUTURA CONDICIONAL //VERIFICA SE Valor_1 É MENOR QUE Valor_2 if (Valor_1 < Valor_2) then printf("Valor_1 é menor que Valor_2 "); //SE A CONDIÇÃO ACIMA É VERDADEIRA end //FIM DA ESTRUTURA CONDICIONAL return; endfunction //FIM DO FUNÇÃO Maior_Menor //PROGRAMA PRINCIPAL clc; Maior_Menor(); 7 ESTRUTURA CONDICIONAL DUPLA if (condição) then Bloco de comandos_1 else Bloco de comandos_2 end Funcionamento Se a condição, entre parênteses, for verdadeira será executado o bloco de comandos_1, se for falsa será executado o bloco de comandos_2. Exemplo: //EXEMPLO 4 //PROGRAMA PARA VERIFICAR SE UM VALOR É MAIOR OU MENOR QUE OUTRO //VERSÃO 2 function Maior_Menor2() //DECLARAÇÃO DE VARIÁVEIS //inteiro Valor_1, Valor_2 //LÊ O VALOR DA VARIÁVEL Valor_1 Valor_1 = input("Digite o primeiro valor: ") //LÊ O VALOR DA VARIÁVEL Valor_2 Valor_2 = input("Digite o segundo valor:") //VERIFICA SE Valor_1 É MAIOR QUE Valor_2 if (Valor_1 > Valor_2) then printf("Valor_1 é maior que Valor_2") //SE A CONDIÇÃO ACIMA É VERDADEIRA else printf("Valor_1 é menor que Valor_2") //SE A CONDIÇÃO ACIMA É FALSA end //FIM DA ESTRUTURA CONDICIONAL endfunction //PROGRAMA PRINCIPAL clc; Maior_Menor2(); //FIM DO PROGRAMA 8 EXEMPLOS Alguns problemas com estruturas condicionais. Programa para ler um número inteiro e escrevê-lo, caso seja número negativo. Um número é negativo se é menor que zero. //EXEMPLO 5 //FUNÇÃO PARA VERIFICAR SE UM NÚMERO É NEGATIVO, POSITIVO OU NULO function Sinal() //DECLARAÇÃO DE VARIÁVEIS //real Numero //ENTRADA DE DADOS Numero = input("Digite um número"); //PROCESSAMENTO E SAÍDA DE RESULTADOS printf ("%f é ", Numero) if (Numero < 0) then printf (" é negativo"); else if (Numero > 0) then printf (" positivo"); else printf (" nulo"); end end return; endfunction //PROGRAMA PRINCIPAL clc; Sinal(); //FIM PROGRAMA PRINCIPAL 9 Programa para ler a idade de uma pessoa e verificar se ela é ou não, maior de idade. Uma pessoa é maior de idade se possui 18 anos ou mais. //EXEMPLO 6 //PROGRAMA PARA VERIFICAR SE UMA PESSOA É MAIOR DE IDADE OU NÃO function Maioridade() //DECLARAÇÃO DE VARIÁVEIS //inteiro Idade //ENTRADA DE DADOS Idade = input("Digite idade :") //PROCESSAMENTO E SAÍDA DE RESULTADOS if (Idade < 18) then printf ("Não é maior de idade"); else printf ("É maior de idade"); end return; endfunction //PROGRAMA PRINCIPAL clc; Programa para resolver equação do primeiro grau Maioridade(); //FIM DO PROGRAMA PRINCIPAL 10 Programa para resolver equação do primeiro grau //EXEMPLO 7 // PROGRAMA PARA RESOLVER EQUAÇÃO DO PRIMEIRO GRAU function Equacao_Primeiro_Grau() //DECLARAÇÃO DE VARIÁVEIS //real a, b, x //ENTRADA DE DADOS a = input("Digite o coeficiente a "); b = input("Digite o coeficiente b"); //PROCESSAMENTO E SAÍDA DE RESULTADOS if (a <> 0) then x = -b / a; printf("\nx = %4.2f é raiz da equação do primeiro grau %2.1fx + %2.1f = 0", x, a, b); else printf ("Impossível resolver equação com a = 0"); end return; endfunction //PROGRAMA PRINCIPAL clc; Equacao_Primeiro_Grau(); //FIM PROGRAMA PRINCIPAL 2 ESTRUTURAS DE REPETIÇÃO Uma estrutura de repetição é utilizada quando um comando ou uma sequência de comandos de um programa deve ser repetida. Cada linguagem de programação tem suas estruturas específicas de repetição. Os programas em SciLab oferecem duas estruturas de repetição REPETIÇÕES DEPENDENTES DE CONDIÇÃO NO INÍCIO ESTRUTURA “while” NOTAÇÃO while (condição) bloco de comandos_1 end bloco de comandos_2 11 Funcionamento Enquanto a condição entre parênteses for verdadeira o bloco de comandos_1 será executado e quando for falsa o processamento passará ao bloco de comandos_2. Exemplo Trecho de programa para escrever na tela os números inteiros de 0 a 9. 1. x=0 //Valor inicial de x 2. while (x < 10) //Verifica se x é menor que 10 3. printf(“%f”, x) //Se a condição é verdadeira escreve x 4. x=x+1 //Aumenta x em uma unidade 5. end 6. //Novos comandos //Termina a repetição quando x = 10 Para facilitar o entendimento numeramos as linhas de comandos. Comentários: 1) Atribui o valor inicial (0 – zero) à variável x. 2) Comando que verifica o valor da variável x, gerando um valor verdadeiro ou falso, que indicará se o processamento continuará na próxima linha de comandos (linha 3) ou se desviará para a linha 6. 3) escreve o valor de x: 0, 1, 2, 3, 4, 5, 6, 7,8, 9 4) aumenta uma unidade na variável x e coloca o resultado na própria variável x que passará a ser: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (último valor que será o responsável pelo encerramento da estrutura de repetição). 5) limita os comandos da estrutura de repetição. 6) próximos comandos do programa, fora da estrutura de repetição. 12 PROGRAMAS EXEMPLOS DE ESTRUTURAS DE REPETIÇÃO Programa para escrever na tela os números ímpares de 7 a 15 . //EXEMPLO 8 //PROGRAMA PARA ESCREVER NA TELA OS NÚMEROS POSITIVOS ÍMPARES, //MENORES QUE N (lido do teclado) function Impares() //DECLARAÇÃO DE VARIÁVEIS //inteiro Numero, N //ENTRADA DE DADOS E VALOR INICIAL Numero = 1; N = input ("Digite um inteiro positivo"); //PROCESSAMENTO E SAÍDA DE RESULTADOS while (Numero <= N) printf("%d\t", Numero); Numero = Numero + 2; end endfunction // Impares() //PROGRAMA PRINCIPAL clc; Impares(); //FIM DO PROGRAMA PRINCIPAL 13 Programa para escrever as letras maiúsculas de F a Q. //EXEMPLO 9 //PROGRAMA PARA ESCREVER AS LETRAS MAIÚSCULAS DE F A Q. function Escreve_Letras() //DECLARAÇÃO DE VARIÁVEIS //literal Letra //inteiro x //VALOR INICIAL (“INICIALIZAÇÃO”) Letra = 'F'; //PROCESSAMENTO E SAÍDA DE RESULTADOS x = ascii(Letra); //CODIGO ASCII DA LETRA while (x <= ascii('Q') ) printf("%s ", ascii(x)); x = x + 1; end //REPETE ENQUANTO LETRA <= Q //ESCREVE LETRA //SOMA 1 NO CODIGO DA LETRA endfunction //PROGRAMA PRINCIPAL clc; EscreveLetras(); //FIM DO PROGRAMA PRINCIPAL 14 Leia o nome e a altura de três pessoas. Determine e escreva o nome e a altura da pessoa mais alta //EXEMPLO 10 //LER O NOME E A ALTURA DE TRÊS PESSOAS. //DETERMINAR E ESCREVER O NOME E A ALTURA DA PESSOA //MAIS ALTA function Maior_Altura() //DECLARAÇÃO DE VARIÁVEIS //real Altura, Maior_Altura //literal Nome, Nome_do_mais_Alto //inteiro Contador Maior_Altura = 0; Contador = 1; //PROCESSAMENTO E SAÍDA DE RESULTADOS while (Contador <= 3) //ENTRADA DE DADOS printf("%dª pessoa de 3", Contador); Nome = input("Digite nome", "string"); Altura = input("Digite altura : "); if (Altura > Maior_Altura) Maior_Altura = Altura Nome_do_mais_Alto = Nome; end Contador = Contador + 1; end //WHILE printf("%s é o mais alto dos 3 e mede %f", Nome_do_mais_Alto, Maior_Altura); endfunction //PROGRAMA PRINCIPAL clc; Maior_Altura(); //FIM DO PROGRAMA PRINCIPAL 15 ESTRUTURA DE REPETIÇÃO COM VARIÁVEL DE CONTROLE Quando o número de repetições é conhecido, pode-se usar a estrutura: for (Variável = Valor_Inicial: Passo: Valor_Final) Bloco de comandos_1 end Bloco de comandos_2 Sendo Variável uma variável cujo valor inicial é Valor_Inicial e cujo valor final é Valor_Final, e Passo é o acréscimo dado a essa variável. O bloco de comandos_1 será executado para cada valor de Variável. Variável sofre um acréscimo Passo, positivo ou negativo, podendo ser omitido se a variável aumenta de 1 em 1 Alguns problemas anteriores podem ser resolvidos usando-se essa estrutura. EXEMPLOS Faça um programa para imprimir a tabuada de multiplicação do número inteiro 9. //EXEMPLO 11 //IMPRIMIR A TABUADA DE 9 (MULTIPLICAÇÃO) function Tabuada_9() //DECLARAÇÃO DE VARIÁVEIS //inteiro Multiplicador, Fator_Fixo, Produto //Valor inicial Fator_Fixo = 9; //PROCESSAMENTO E SAÍDA DE RESULTADOS for (Multiplicador = 0: 1: 9) Produto = Multiplicador * Fator_Fixo; printf("\n%d * %d = %d ", Multiplicador, Fator_Fixo, Produto); end; endfunction //PROGRAMA PRINCIPAL clc; Tabuada_9(); //FIM DO PROGRAMA PRINCIPAL Escreva um programa para escrever todos os números inteiros palíndromos de 4 algarismos. Um número palíndromo ou frase “palíndroma” é aquela que é idêntica se lida da direita para a esquerda ou da esquerda para a direita. 16 Exemplos: “luz azul”, “acaiaca”, “ovo”, “Ana”, “arara”, “socorram-me subi no onibus em marrocos” “12321”, “2002” Para os números palíndromos de 4 algarismos temos o padrão X Y Y X, onde X é um número inteiro de 1 a 9 e Y um número inteiro de 0 a 9. Assim cada número inteiro palíndromo de 4 algarismos será da forma: 1000 X + 100 Y + 10 Y + X //EXEMPLO 12 //ESCREVER OS NÚMEROS PALÍNDROMOS DE 4 ALGARISMOS function Palindromo() //DECLARAÇÃO DE VARIÁVEIS //inteiro Numero, X, Y //PROCESSAMENTO E SAÍDA DE RESULTADOS for (X = 1: 9) for (Y = 0: 9) Numero = 1000 * X + 100 * Y + 10 * Y + X; printf("\t%8d", Numero); end; end; //X = 1 até 9 endfunction //PROGRAMA PRINCIPAL clc; Palindromo(); //FIM DO PROGRAMA PRINCIPAL 17 Programa que: Leia um número inteiro e positivo N. Calcule e escreva a soma dos N primeiros termos da seqüência: 1/2, 2/5, 3/8, 4/11, 5/14, 6/17, ... //EXEMPLO 13 //PROGRAMA QUE: //LER UM NÚMERO INTEIRO E POSITIVO N. //CALCULAR E ESCREVER A SOMA DOS N PRIMEIROS TERMOS DA //SEQÜÊNCIA: //1/2, 2/5, 3/8, 4/11, 5/14, 6/17, ... function SomaSequencia() //DECLARAÇÃO DE VARIÁVEIS //inteiro Contador, Numerador, Denominador, N //real Soma Soma =0; Numerador = 1; Denominador = 2; //ENTRADA DE DADOS N = input("Numero de termos") //PROCESSAMENTO for (Contador = 1: N) Soma = Soma + Numerador / Denominador; Numerador = Numerador + 1; Denominador = Denominador + 3; end; //FIM FOR //E SAÍDA DE RESULTADOS printf ("%f", Soma); endfunction //PROGRAMA PRINCIPAL clc; SomaSequencia(); //FIM DO PROGRAMA PRINCIPAL
Documentos relacionados
Algoritmo para converter uma temperatura em Fahrenheit para
O C é "Case Sensitive" O C é "Case Sensitive", isto é, maiúsculas e minúsculas fazem diferença. Se se declarar uma variável com o nome soma ela será diferente de Soma, SOMA, SoMa ou sOmA. Da mesma ...
Leia mais