fundamentos de programación en scilab

Download Fundamentos de programación en scilab

If you can't read please download the document

Upload: gabriel-romero

Post on 12-Jun-2015

37.654 views

Category:

Education


19 download

DESCRIPTION

Manual de scilab orientada a la programación

TRANSCRIPT

  • 1. FUNDAMENTOS DE PROGRAMACIN Por:Gabriel Romero Mora Email:[email_address] [koko a ] Comunidad de software Libre en ESPOL

2. Contenido

  • Introduccin

3. Variables y Constantes 4. Entrada y salida de datos 5. Operadores de comparacin y L gicos 6. Estructuras de control: Condicionales e Iterativas 7. Arreglos: Vectores y matrices 8. Funciones 9. Cadena de Caracteres 10. Estructuras 11. Archivos 12. IntroduccinScilabes un programa desarrollado por INRIA y ENPCde Franciapara el clculo numrico, programacin y grficos. Es similar aMATLAB y Octave , es utilizado enWindows , Linux, Unix, etc. Caractersticas principales

  • Programacin con lenguaje simple y fcilmente asimilable.

13. Permite operaciones diversas operaciones matriciales. 14. Posee capacidades de generacin de grficos en dos y tres dimensiones. Links de descarga :http://www.scilab.org/ http://scilabsoft.inria.fr . 15.

  • Entorno de Scilab

16. Variables En Scilab las variables no son nunca declaradas: su tipo y su tamao cambian de forma dinmica de acuerdo con los valores que le son asignados.As, una misma variable puede ser utilizada, por ejemplo, para almacenar un nmero complejo, luego una matriz de nmeros enteros y luego para almacenar un texto.Las variables se crean automticamente al asignarles un contenido. Asimismo, es posible eliminar una variable de la memoria si ya no se utiliza. Var=5 Var=9.2 Var=[1 3 6 7] var=Mensaje de texto Tipo entero Tipo real (float) Tipo vector Tipo cadena(string) 17.

  • Ejemplo: La variableava cambiando su tipo y no necesita ser declarada previamente.

18. Constantes

  • Las constantes que existen en scilab son:

19. %irepresenta la parte imaginaria. 20. %pirepresenta el valor 3,1416. 21. %erepresenta el valor de euler 2,7182. 22. Para valores lgicos: 23. %trepresenta verdadero. 24. %frepresenta falso. 25. Comentarios 26. Descripciones colocadas por el programador, son omitidas por el interprete de scilab. 27. //Esto es un comentario 28. Entrada y salida de datos

  • Funcin input() Se utiliza para que el programa pida valores de entrada a las variables mientras se ejecuta.Sintaxis :
    • Para ingresar valores tipo numricas variable_numrica=input ( 'texto' ); Para ingresar cadenas de texto variable_cadena =input ( 'texto','s' );
    Ejemplo:
    • numero = input ( 'Ingrese un numero: ' ); cadena = input ( 'Ingrese un texto: ', 's' );

29.

  • Funciones disp() y printf() Muestran datos de salida por pantalla. disp:Muestra el valor de los datos sin formato
  • Sintaxis :

30. disp ( nombre_variableo'texto' ); 31. printf:Muestra los datos de salida formateados. 32. Sintaxis: 33. printf ( 'T exto:%s numero:%dn' ,varCad,varNum); Formato para Variables %sMuestra contenido de variables tipo cadena de caracteres. %dMuestra contenido de variables tipo numricas.%cMuestra el contenido de variables tipo carcternCaracter de salto de lnea(un enter) . 34.

  • Ejemplos:
  • Las variables no van con comillas simples.

35. Un texto cualquiera va con comillas simples. 36. Uso de printf 37. Operador Descripcin xy x es mayor que y. x>=y x es mayor o igual que y. x~=yxy x no es igual a y. Operadores de comparacin 38. Operadores Lgicos Operador Descripcin x&y Retorna T si x y y son verdaderos caso contrario retorna F. x|y Retorna F si x y y son falsos caso contrario retorna T. ~ xRetorna el valor F si x vale T o T si x vale F. 39.

  • Rangos
  • Son argumentos tipo numricos dedicados a contar.

40. Se usan en estructuras for. 41. Se pueden crear vectores filas.

  • Sintaxis: valor_inicial : salto : valor_final Si no se colocael salto, el valor pre determinado ser 1.

Ejemplos: 42.

  • Contadores y Acumuladores
  • Contador

43. Se suele denominar contador cuando el incremento de la variable es de uno en uno. 44. Sintaxis: 45. variable = variable + 1;

  • Acumulador

46. Variable cuyo valor se incrementa o decrementa en un valor fijo (en cada iteracin de un bucle). 47. Sintaxis: 48. variable=variable +valor 49. variable=variable -valor 50. variable=variable *valor 51. variable=variable /valor Nota:Los contadores y acumuladores son variables que se necesitaninicializarcon algn valor y son muy utilizados en los lazos de repeticin. 52.

  • Nmeros Aleatorios
  • Son nmeros obtenidos al azar. La funcinrand()genera nmeros aleatorios entre 0 y menor a 1. Sintaxis: min + fix( rand ()*( max - min +1) ) ;

53.

  • Ejemplo: Generar 10 nmeros aleatorios entre 5 y 23

for i=1:10 aleatorio= 5 +fix(rand()*( 23 - 5 +1)); disp(aleatorio); end Genera un nmero aleatorio entre 5 y 23. Estructuraforque se repite10veces y va generando en cada repeticin un nmero aleatorio entre5y23y lo va mostrando con la funcindisp. Muestra cada nmero aleatorio generado. 54. Funcin Descripcin sqrt(x) Devuelve la raz cuadrada. abs(x) Devuelve el valor absoluto. modulo(x,y) Devuelve el resto de dividir x por y. sin(x) Devuelve el seno, x en radianes. cos(x) Devuelve el coseno, x en radianes. tan(x) Devuelve la tan, x en radianes.

  • Funciones Elementales

55. Estructuras de ControlCondicionales

  • Permiten la ejecucin de un conjunto de instrucciones si se cumple una condicin
    • Sentencia if

if condicin[then] Instrucciones; else Instrucciones; end if condicin[then] Instrucciones; end if condicin1[then] Instrucciones; elseif condicin2 Instrucciones; else Instrucciones; end Nota:t hen es opcional, puede ser reemplazada por un salto de lnea . 56.

  • Sentenciaselect

select variable case valor1 [ then] Instruciones1; case valor2 [ then] Instruciones2; case valor3 [ then] Instruciones3; .. .. else Instruciones; end

  • Esta sentencia compara el valor devariablecon cada valor de los cases y si coincide con uno, ejecuta las instrucciones dedicho case, caso contrario ejecuta las instrucciones de else.

57. Los valores de case pueden ser enteros o strings. 58.

  • Ejemplos :

disp('Control de Estudiantes'); disp('1. Registrar estudiante'); disp('2. Consultar estudiante'); disp('3. Salir'); opc=input('Ingrese una opcion: '); selectopc case1 disp('Ha ingresado en Opcion 1'); case2 disp('Ha ingresado en Opcion 2'); case3 disp('Fin del Programa'); else disp('Otra opcion');end disp('Control de Estudiantes'); disp('1. Registrar estudiante'); disp('2. Consultar estudiante'); disp('3. Salir'); opc=input('Ingrese una opcion: '); ifopc==1 disp('Ha ingresado en Opcion 1'); elseifopc==2disp('Ha ingresado en Opcion 2'); elseifopc==3 disp('Fin del Programa'); else disp('Otra opcion');end 59. Estructuras de ControlIterativas

  • Son estructuras que repiten instrucciones de cdigosegn una condicin lgica o un rango de valores.

for ndice=rango Instrucciones; end while condicin Instrucciones ; end Estructura for Estructura while Estructura que repiteinstrucciones hasta llegar al fin delrango . Estructura que repiteinstrucciones mientras la condicin seaverdadera . 60.

  • Ejemplos:

Realice un programa que muestre los cinco primeros nmeros naturales y la suma. usando while. Solucin : veces=0; numero=1; suma=0; whileveces 764 disp('Numero Invertido'); numero=input('Ingrese un numero:'); invertido=0; whilenumero~=0digito= modulo (numero,10); invertido=(invertido*10)+digito; numero=fix(numero/10); end printf('El numero invertido es:%dn',invertido); Solucin : modulo(m,n) , funcin que extrae el ltimo dgito del nmero.invertido almacena el nuevo nmero invertido yfix(n)es una funcin que redondea al entero ms cercano a cero 62. suma=0; fortermino=1:n suma=suma+termino^2; end printf('La suma de la serie es: %dn',suma); Acumulador de la suma Realice un programa que dado un nmero de n trminos genere la suma de la siguiente serie: 1 2 +2 2 +3 2 +... +n 2 Solucin : for que se repite n veces desde 1a n. 63. Arreglos de una dimensin oVectores

  • Son un conjunto de varios elementos del mismo tipo.

Contenido del bloque n del vector. Tamao del vector(length). Elndice de un vectores unnmero nicoque se asigna a cada bloque del vector, el cual permite acceder a la informacin de dicho bloque(Ejemplo: A(2)=7). Eltamao de un vectores el nmero de bloques que lo conforman. La funcin length(A) permite conocer ese tamao. A 7 1 n . . . . .2 3 Indices del vector 64.

  • Existen dos tipos de vectores: Vector Fila Vector Columna

Se agrupan los elementos de forma vertical. Se lo define como: [a1 ;a2 ;a3 ;; an] Se agrupan los elementos de forma horizontal. Se lo define como: [a1 ,a2 ,a3 ,, an] o [a1 a2 a3 an] Ejemplo : Ejemplo : 1 2 3 4 1234 65.

  • Ejemplos: Crear un vector de n elementos aleatorios entre 1 y n y mostrarlo.

Primera forma de crear y llenar un vector n=input('Ingrese n terminos: '); fori=1:n aleatorio= 1+fix(rand()*n);// Genera un aleatorio v(i)=aleatorio; // Llena el vector de aleatorios end disp(v);// Muestra el vector Segunda forma de crear y llenar un vector v=[];// Se define un vector vaco n=input('Ingrese n terminos: '); for i=1:n aleatorio= 1+fix(rand()*n); v=[v;aleatorio];//Llena el vector de aleatorios end disp(v);// Muestra el vector 66.

  • Ejemplos: Se tiene el siguiente vector A=[1,0,1,0,0,1,0]. Determine cuantos 1's hay en el vector.

Solucin

  • A=[1,0,1,0,0,1,0];

Unos=0;// se inicializa el contador de 1's // for que recorre todo el arreglo A fori=1:length(A) // verifica si existe 1's y los cuenta ifA(i)==1 unos=unos+1; end end printf('La cantidad de unos es:%dn',unos);// Muestra # de 1's 67. Arreglo de dos dimensiones oMatrices

  • Es un conjunto de elementos del mismo tipo cuyo acceso a sus elementos se realiza porndices .

123456 1 2 3 4 5 6 Fila A A(3,3)=5 Columna 5 68.

  • Se define una matriz con valores de la siguiente forma: M=[7, 1, 0 ;3, 2, 9] Ejemplo:

69. Ejemplo: Se necesita transmitir una matriz de 7 filas y 7 columnas conteniendo bits (ceros o unos). Antes de transmitirla se debe agregar una columna conteniendo ceros o unos de tal manera que las 7 filas tengan paridad par, es decir que la cantidad de unos en cada fila sea par. Este cero o uno adicional se denomina bit de paridad. Genere aleatoriamente la matriz de 7x7 llena con ceros y unos, agregue el bit de paridad en cada fila y muestre la matriz resultante. 70.

  • // Se genera la matriz 7X7 llena con ceros y unos unos=0; fori=1:7
    • forj=1:7
      • matriz (i,j)=fix(rand()*2);

end end 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 1 0 1 0 1 1 1 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 71. fori=1:7 forj=1:7 if matriz (i,j)==1 unos=unos+1;//cuenta el numero de 1's por fila end end ifmodulo(unos,2)==0//verifica si unos(contador) es par vparidad(i)=0;else vparidad(i)=1;//Agrega bit de paridad end end matrizBits=[matriz,vparidad];// Se agrega el vector vparidad a matriz disp( matrizBits );//Se muestra la matrizBits 72. FUNCIN DESCRIPCIN eye(m,n) Crea una matriz identidad cuadrada de tamao n. ones(m,n) Crea una matriz de 1's. zeros(m,n) Crea una matriz de 0's. rand(m,n) Crea una matriz de aleatorios entre 0 y menor a 1.

  • Funciones que generan vectores y matrices

Funcin de importante bsqueda intersect(vector, valor):Funcin que retorna el mismo valorque se esta buscando en el vector. 73. FUNCIN DESCRIPCIN det(A) Retorna el determinante. sum(A) Retorna la suma de los elementos de A prod(A) Retorna el producto de los elementos de A max(A) Retorna el elemento mximo de A. min(A) Retorna el elemento mnimo de A. trace(A) Retorna suma de los elementos de la diagonal p. conj(A) Retorna la conjugada de una matriz A. inv(A) Retorna la inversa de una matriz cuadrada A. size(A) Retorna el # de filas y # de columnas de una matriz A. length(A) Retorna la dimensin mxima de un vector A.

  • Funciones bsicas con vectores y matrices

74. Cadena de caracteres(strings)

  • Una cadena de caractereses un vectorque contiene letras o smbolos

75. Se las define entrecomillas simplesodobles . 76. Ejemplos: 'Software Libre' Fundamentos de programacin 77.

  • Para acceder a cada letra de la cadena se usa la funcinpart (vector,posicin), donde part(), retorna la letra correspondiente a la posicin

Posicin en la cadenaCadenas(vector) Retornao 78.

  • Ejemplo:

79. Dada una cadena de texto mustrela invertida. str=input('Ingresa una cadena: ','s'); invertida=[]; fori=length(str):-1:1//recorre delfinal al inicio de la cadena letra= part (str,i);//extrae una letra de la cadena invertida=invertida + letra;//+operador que une las letras end disp(invertida);// Muestra el texto invertido 80.

  • Funciones que manejan caracteres y cadena de caracteres(strings)

FUNCIN DESCRIPCIN strcmp(str1,srt2) Retorna 0 si las cadenas son iguales. strcat([str1,str2]) Retorna la concatenacin de strings, ej: strcat([hola,mundo])strindex(str,c) Retorna un vector de posiciones del carcter c en str. part(str,n) Retorna el elemento n de str. convstr (str,'modo') Convierte los caracteres de str de mayscula a minscula o viceversa, segn el modo:

  • u convierte a mayscula, ej:convstr ('hola','u')

81. l convierte a minscula, ej :convstr ('HOLA','l') length(str) Retorna la longitud de str. 82. FUNCIONES

  • Es posible definir funciones por el usuario. Los archivos de funciones tienen extensin.sci

83. Sintaxis de funcin con valor de retorno : functionvariable_retornada =nombre_funcion(lista_argumentos) cuerpo_de_funcin endfunction Se pueden retornar ms de una variable e inclusive un vector o matriz: function [var1,var2,vector,matriz]=nombre_funcion (lista_argumentos)cuerpo_de_funcin endfunction

  • Sintaxis de funcin sin valor de retorno

function nombre_funcion(lista_argumentos ovacio ) cuerpo_de_funcin endfunction 84.

  • Ejemplo1: Funcin que retorna la suma de dos nmeros

85. functions=suma(a,b)

  • s=a+b;

endfunction 86. Ejemplo2:Funcin que muestra un men, no recibe argumentos y no retorna valores. 87. functionmenu()

  • disp('Opcion1');

88. disp('Opcion2'); 89. disp('Opcion3'); endfunction 90.

  • functionr= enlista (numero,vector)
    • r=0; for i=1:lenght(vector)
      • if( intersect (vector,numero)==numero)
        • r=1;
        end
      end
    endfunction

Retorna 1 si se encuentra en la lista. 91. Cargar funciones de un archivo.sci.

  • Las funciones son cargadas a un programa principal con el comandoexec ('funciones.sci'),el cual se coloca al inicio,y carga todas las funciones que se encuentran en el archivo que las contiene.

ProgramaPrincipal.sce funciones.sci carga Mismo directorio exec('funciones.sci') instrucciones1 Instrucciones2 Instrucciones3 . . . . Instruccionesn 92. Funciones Recursivas

  • Las funciones recursivas son aquellas quese invocan a si mismaspara realizar una tarea.

93. Ejemplo: Escriba lafuncin recursiva NumeroDigitos (n)cual recibe un nmerony retorne el nmero de dgitos que lo conforman. Ejemplos: 3054, la funcinNumeroDigitosretorna 4. 34790, la funcinNumeroDigitosretorna 5. function r=NumeroDigitos(n) if n