FUNDAMENTOS FUNDAMENT OS DE PROGRAMACIÓN PROGRAMACIÓN
Por: Gabriel Romero Mora Por: Gabriel Email:
[email protected]
[kokoa [kokoa] Comunidad de software Libre en ES!L
Contenido ●
"ntrodu##i$n
●
%ariables y Constantes
●
Entrada y salida de datos
●
!&eradores de #om&ara#i$n y L$gi#os
●
Estru#turas de #ontrol' Condi#ionales e "terati(as
●
)rreglos' %e#tores %e#tores y matri#es matri#es
●
*un#iones
●
Cadena de Cara#teres
●
Estru#turas
●
)r#hi(os
Contenido ●
"ntrodu##i$n
●
%ariables y Constantes
●
Entrada y salida de datos
●
!&eradores de #om&ara#i$n y L$gi#os
●
Estru#turas de #ontrol' Condi#ionales e "terati(as
●
)rreglos' %e#tores %e#tores y matri#es matri#es
●
*un#iones
●
Cadena de Cara#teres
●
Estru#turas
●
)r#hi(os
Introducción Scilab Scilab es un &rograma desarrollado &or "+R") y E+C de *ran#ia &ara el #,l#ulo num-ri#o &rograma#i$n y gr,fi#os. Es similar a MATLA ! Octa"# es utili/ado en 0indows Linux 1nix et#.
Caract#r$%tica% &rinci&a'#% rograma#i$n #on lenguae sim&le y f,#ilmente asimilable. ermite o&era#iones di(ersas o&era#iones matri#iales. osee #a&a#idades de genera#i$n de gr,fi#os en dos y tres dimensiones.
Link% d# d#%car(a) htt&'33www.s#ilab.org3 htt&'33s#ilabsoft.inria.fr .
Entorno de Scilab
%ariables En S#ilab las (ariables no son nun#a de#laradas' su ti&o y su tamao #ambian de forma din,mi#a de a#uerdo #on los (alores 5ue le son asignados. )s6 una misma (ariable &uede ser utili/ada &or eem&lo &ara alma#enar un n7mero #om&leo luego una matri/ de n7meros enteros y luego &ara alma#enar un texto. Las (ariables se #rean autom,ti#amente al asignarles un #ontenido. )simismo es &osible eliminar una (ariable de la memoria si ya no se utili/a. %ar89 %ar8:.2 %ar8;< = > ? (ar8AMensae de textoA
Bi&o entero Bi&o real floatD Bi&o (e#tor Bi&o #adenastringD
E*#+&'o) La (ariable a (a #ambiando su ti&o y no ne#esita ser de#larada &re(iamente.
Constantes ●
●
●
●
Las #onstantes 5ue existen en s#ilab son'
,i re&resenta la &arte imaginaria. ,&i re&resenta el (alor =<4<>. ,# re&resenta el (alor de euler 2?<2. Para valores lógicos:
●
●
,t re&resenta (erdadero. ,- re&resenta falso.
Co+#ntario% Fes#riiones #olo#adas &or el &rogramadors#ilab son omitidas &or el inter&rete de s#ilab.
33Esto es un #omentario
Entrada y salida de datos Función in&ut./ Se utili/a &ara 5ue el &rograma &ida (alores de entrada a las (ariables mientras se ee#uta. Sintaxis : ara ingresar (alores ti&o num-ri#as
"aria0'#1nu+2rica 3 in&ut.4t#5to4/6 ara ingresar #adenas de texto
"aria0'#1cad#na 3 in&ut.4t#5to474%4/6 Ejemplo:
nu+#ro3in&ut.4In(r#%# un nu+#ro) 4/6 cad#na3in&ut.4In(r#%# un t#5to) 474%4/6
Funcion#% di%&./ ! &rint-./ Muestran datos de salida &or &antalla.
●
disp: Muestra el valor de los datos sin formato Sintaxis) dis&nombre(ariable o HtextoHDI
●
&rint-) Muestra los datos de salida formateados. Sintaxis: &rintf HBexto'Js numero'JdKnH(arCad(ar+umDI Formato para Variables ,% Muestra #ontenido de (ariables ti&o #adena de #ara#teres. ,d Muestra #ontenido de (ariables ti&o num-ri#as. ,c Muestra el #ontenido de (ariables ti&o #ar,#ter 8n Cara#ter de salto de l6neaun enterD.
E*#+&'o%) ●
●
●
Las (ariables no (an #on #omillas sim&les. 1n texto #ual5uiera (a #on #omillas sim&les. 1so de &rintf
!&eradores de #om&ara#i$n Orador
D#%cri&ción
x < y
x es menor que y.
x <= y
x es menor o igual que y.
x == y
x es igual que y.
x > y
x es mayor que y.
x >= y
x es mayor o igual que y.
x ~= y x <> y
x no es igual a y.
!&eradores L$gi#os Operador x & y
Descripción 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.
~ x
Retorna el valor F si x vale T o T si x vale F.
Ran(o% Son argumentos ti&o num-ri#os dedi#ados a #ontar. Se usan en estru#turas for. Se &ueden #rear (e#tores filas.
Sinta5i%)
(alorini#ial)%a'to)(alorfinal Si no se #olo#a el salto el (alor &re determinado ser,
E*#+&'o%)
Contador#% ! Acu+u'ador#% ●
Contador Se suele denominar #ontador #uando el in#remento de la (ariable es de uno en uno.
●
Acu+u'ador %ariable #uyo (alor se in#rementa o de#rementa en un (alor fio en #ada itera#i$n de un bu#leD. Sintaxis:
Sintaxis:
(ariable 8 (ariable
(ariable8(ariable (alor (ariable8(ariable N (alor (ariable8(ariable O (alor (ariable8(ariable 3 (alor
Nota) Los #ontadores y a#umuladores son (ariables 5ue se ne#esitan inicializar #on alg7n (alor y son muy utili/ados en los la/os de re&eti#i$n.
N9+#ro% A'#atorio% Son n7meros obtenidos al a/ar. La fun#i$n rand./ genera n7meros aleatorios entre P y menor a <.
Sintaxis: minfixrandDOmaxNmin
+in) n7mero m6nimo a generar. +a5' n7mero m,ximo a generar. -i5./) fun#i$n 5ue redondea a n7mero m,s #er#ano a P. rand./) fun#i$n 5ue genera un n7mero aleatorio #on de#imales entre P y menor a < .
E*#+&'o) Generar
-or i8<'
#nd
Genera un n7mero aleatorio entre 9 y 2=. Muestra #ada n7mero aleatorio generado.
Estru#tura -or 5ue se re&ite :; (e#es y (a generando en #ada re&eti#i$n un n7mero aleatorio entre < y => y lo (a mostrando #on la fun#i$n di%&?
Funcion#% E'#+#nta'#% Función
Descripción
s5rtxD absxD moduloxyD
Fe(uel(e la ra6/ #uadrada.
sinxD
Fe(uel(e el seno x en radianes.
#osxD
Fe(uel(e el #oseno x en radianes.
tanxD
Fe(uel(e la tan x en radianes.
Fe(uel(e el (alor absoluto. Fe(uel(e el resto de di(idir x &or y.
Estru#turas de Control
Condiciona'#%
ermiten la ee#u#i$n de un #onunto de instru##iones si se #um&le una #ondi#i$n
S#nt#ncia ii- #ondi#i$n ;then
i- #ondi#i$n ;then
"nstru##ionesI
"nstru##ionesI
#nd
#'%# "nstru##ionesI
#nd
i- #ondi#i$n< ;then "nstru##ionesI
#'%#i- #ondi#i$n2 "nstru##ionesI
#'%# "nstru##ionesI
#nd
Nota) then es oional &uede ser reem&la/ada &or un salto de l6nea .
Senten#ia %#'#ct %#'#ct variable
●
#ase valor1 ;then "nstru#iones
#nd
●
Esta senten#ia #om&ara el (alor de variable #on #ada (alor de los #ases y si #oin#ide #on uno ee#uta las instru##iones de di#ho #ase #aso #ontrario ee#uta las instru##iones de else. Los (alores de #ase &ueden ser enteros o strings.
E*#+&'o%' dis&HControl de EstudiantesHDI dis&H<. Registrar estudianteHDI dis&H2. Consultar estudianteHDI dis&H=. SalirHDI
dis&HControl de EstudiantesHDI dis&H<. Registrar estudianteHDI dis&H2. Consultar estudianteHDI dis&H=. SalirHDI
oin&utH"ngrese una oion' HDI
oin&utH"ngrese una oion' HDI
i- oX<
%#'#ct o ca%# <
dis&HQa ingresado en !ion
#'%#
dis&H!tra oionHDI
#nd
dis&HQa ingresado en !ion
#'%# #nd
dis&H!tra oionHDI
Estru#turas de Control
It#rati"a%
Son estru#turas 5ue re&iten instru##iones de #$digo seg7n una #ondi#i$n l$gi#a o un rango de (alores.
E%tructura -or Estru#tura 5ue re&ite instru##iones hasta llegar al fin del rango.
-or 6ndi#e8rango "nstru##ionesI
#nd
E%tructura @i'# Estru#tura 5ue re&ite instru##iones mientras la #ondi#i$n sea (erdadera.
@i'# condición "nstru##ionesI
#nd
E*#+&'o%) Reali#e un &rograma 5ue muestre los #in#o &rimeros n7meros naturales y la suma. usando while. So'ución )
(e#es8PI numero8
Contadores )#umulador de la suma
@i'# (e#es9
&rintfHJdKnHnumeroDI suma8sumanumeroI numero8numero
#nd
&rintfHLa suma es' JdKnHsumaDI
Reali#e un &rograma 5ue in(ierta un numero dado. Eem&lo' 4>? NNN ?>4 So'ución ) dis&H+umero "n(ertidoHDI numero8in&utH"ngrese un numero'HDI in(ertido8PI
@i'# numeroT8P digito8+odu'o numero
#nd
&rintfHEl numero in(ertido es'JdKnHin(ertidoDI
+odu'o.+7n/ fun#i$n 5ue extrae el 7ltimo d6gito del n7mero. in(ertido alma#ena el nue(o n7mero in(ertido y -i5.n/ es una fun#i$n 5ue redondea al entero m,s #er#ano a #ero
Reali#e un &rograma 5ue dado un n7mero de n t-rminos genere la suma de la siguiente serie' < 222=2... n2
So'ución )
suma8PI
)#umulador de la suma
-or termino8<'n suma8sumaterminoU2I
for 5ue se re&ite n (e#es desde
#nd
&rintfHLa suma de la serie es' JdKnHsumaDI
)rreglos de una dimensi$n o B#ctor#% ●
Son un #onunto de (arios elementos del mismo ti&o. A
Cont#nido d#' 0'ou# n d#' "#ctor? ?
:
=
>
.....
Indic#% d#' "#ctor
n
Ta+ao d#' "#ctor.'#n(t/?
El $ndic# d# un "#ctor es un n7mero 7ni#o 5ue se asigna a #ada blo5ue del (e#tor el #ual &ermite a##eder a la informa#i$n de di#ho blo5ueEem&lo' )2D8?D. El ta+ao d# un "#ctor es el n7mero de blo5ues 5ue lo #onforman. La fun#i$n length)D &ermite #ono#er ese tamao.
Existen dos ti&os de (e#tores'
B#ctor Fi'a Se agru&an los elementos de forma hori/ontal. Se lo define #omo' E*#+&'o) ;a<7 a27 a=7 V an o ;a< a2 a= V an
<
2
=
4
B#ctor Co'u+na
E*#+&'o'
Se agru&an los elementos de forma (erti#al. Se lo define #omo'
<
;a<6 a26 a=6 V 6an
=
2
4
E*#+&'o%) Crear un (e#tor de n elementos aleatorios entre < y n y mostrarlo.
Pri+#ra -or+a d# cr#ar ! ''#nar un "#ctor n8in&utH"ngrese n terminos' HDI for i8<'n aleatorio8 <fixrandDOnDI 33 Genera un aleatorio ".i/3a'#atorio6 33 Llena el (e#tor de aleatorios end dis&(DI 33 Muestra el (e#tor
S#(unda -or+a d# cr#ar ! ''#nar un "#ctor (8;I 33 Se define un (e#tor (a#6o n8in&utH"ngrese n terminos' HDI for i8<'n aleatorio8 <fixrandDOnDI "3["6a'#atorio]6 33Llena el (e#tor de aleatorios end dis&(DI 33 Muestra el (e#tor
E*#+&'o%) Se tiene el siguiente (e#tor )8;<P<PP<P. Fetermine #uantos
So'ución )8;<P<PP<PI 1nos8PI 33 se ini#iali/a el #ontador de
)rreglo de dos dimensiones o Matric#% Es un #onunto de elementos del mismo ti&o #uyo a##eso a sus elementos se reali/a &or 6ndi#es. A <
2
=
4
9
>
Fi'a
<
)fila#olumnaD
2 = 4 9 >
Para acceder al contenido de una celda:
9
A.>7>/3<
Para cambiar al contenido de una celda:
)fila#olumnaD8(alor
Se define una matri/ #on (alores de la siguiente forma' M8;? < P6 = 2 :
E*#+&'o)
E*#+&'o) Se ne#esita transmitir una matri/ de ? filas y ? #olumnas #onteniendo bits #eros o unosD. )ntes de transmitirla se debe agregar una #olumna #onteniendo #eros o unos de tal manera 5ue las ? filas tengan &aridad &ar es de#ir 5ue la #antidad de unos en #ada fila sea &ar. Este #ero o uno adi#ional se denomina bit de &aridad. Genere aleatoriamente la matri/ de ?x? llena #on #eros y unos agregue el bit de &aridad en #ada fila y muestre la matri/ resultante.
33 Se genera la matri/ ?X? llena #on #eros y unos
unos8PI
P
P
<
<
P
<
<
-or i8<'?
<
<
P
P
<
<
P
P
<
<
<
P
<
<
<
P
P
<
<
P
P
P
<
P
<
P
<
<
<
P
<
P
<
P
<
-or 8<'? +atriiD8fixrandDO2DI #nd #nd
-or i8<'? -or 8<'? i- +atriiD88<
unos8unos
#nd #nd i- modulounos2D88P 33(erifi#a si unos#ontadorD es &ar (&aridadiD8PI
#'%#
(&aridadiD8
#nd
#nd
matri/Yits8;matri/(&aridadI 33 Se agrega el (e#tor (&aridad a matri/ dis&matri/YitsDI 33Se muestra la matri/Yits
Funcion#% u# (#n#ran "#ctor#% ! +atric#% FUNCIÓN
DESCRIPCIÓN
eye(m,n)
Crea una matriz identidad cuadrada de tamao n.
ones(m,n)
Crea una matriz de !"s.
zeros(m,n)
Crea una matriz de #"s.
rand(m,n)
Crea una matriz de aleatorios entre # y menor a !.
Función de importante búsqueda
inersec!"ecor# "a$or% Funci$n que retorna el “ 'is'o "a$or( que se esta %uscando en el vector.
Funcion#% 0%ica% con "#ctor#% ! +atric#% FUNCIÓN
DESCRIPCIÓN
det(&)
Retorna el determinante.
sum(&)
Retorna la suma de los elementos de &
'rod(&)
Retorna el 'roducto de los elementos de &
max(&)
Retorna el elemento mximo de &.
min(&)
Retorna el elemento mnimo de &.
trace(&)
Retorna suma de los elementos de la diagonal '.
con*(&)
Retorna la con*ugada de una matriz &.
inv(&)
Retorna la inversa de una matriz cuadrada &.
size(&)
Retorna el + de filas y + de columnas de una matriz &.
lengt(&)
Retorna la dimensi$n mxima de un vector &.
Cadena de #ara#teresstringsD ●
●
1na #adena de #ara#teres es un (e#tor 5ue #ontiene letras o s6mbolos Se las define entre #omillas sim&les o dobles.
E*#+&'o%) HSoftware LibreH *undamentos de &rograma#i$nA
●
ara a##eder a #ada letra de la #adena se usa la fun#i$n &art(e#tor&osi#i$nD donde &artD retorna la letra #orres&ondiente a la &osi#i$n
osi#i$n en la #adena Cadena % (e#torD Retorna o
●
E*#+&'o) Fada una #adena de texto mu-strela in(ertida. str8in&utH"ngresa una #adena' HHsHDI in(ertida8;I for i8lengthstrD'N<'< 33re#orre del final al ini#io de la #adena letra8&artstriDI 33extrae una letra de la #adena in(ertida8in(ertidaletraI 33 o&erador 5ue une las letras end dis&in(ertidaDI 33 Muestra el texto in(ertido
Funcion#% u# +an#*an caract#r#% ! cad#na d# caract#r#%.%trin(%/ FUNCIÓN
DESCRIPCIÓN
str#m&str<srt2D
Retorna P si las #adenas son iguales.
str#at;str<str2D
Retorna la #on#atena#i$n de strings e' str#at;holaAAmundoAD
strindexstr#D
Retorna un (e#tor de &osi#iones del #ar,#ter # en str.
&artstrnD
Retorna el elemento n de str.
#on(str strHmodoHD Con(ierte los #ara#teres de str de may7s#ula a min7s#ula o (i#e(ersa seg7n el modo' u #on(ierte a may7s#ula e' #on(str ●
HholaHHuHD ●
l #on(ierte a min7s#ula e ' #on(str
HQ!L)HHlHD lengthstrD
Retorna la longitud de str.
FUNCIONES ●
Es &osible definir fun#iones &or el usuario. Los ar#hi(os de fun#iones tienen extensi$n ?%ci
Sinta5i% d# -unción con "a'or d# r#torno ) -unction (ariableretornada 8 no+0r#1-uncion listaargumentosD #uer&odefun#i$n
#nd-unction
Se &ueden retornar m,s de una (ariable e in#lusi(e un (e#tor o matri/'
-unction ["ar:7"ar=7"#ctor7+atri] 8 no+0r#1-uncionlistaargumentosD #uer&odefun#i$n
#nd-unction
Sinta5i% d# -unción %in "a'or d# r#torno -unction no+0r#1-uncion listaargumentos o vacioD #uer&odefun#i$n
#nd-unction
●
E*#+&'o:) *un#i$n 5ue retorna la suma de dos n7meros -unction s8sumaabD s8abI
#nd-unction
●
E*#+&'o=) *un#i$n 5ue muestra un men7 no re#ibe argumentos y no retorna (alores.
-unction menuD dis&H!ion
#nd-unction
fun#tion r8#n'i%tanumero(e#torD r8PI for i8<'lenght(e#torD ifint#r%#ct(e#tornumeroD88numeroD r8
Retorna < si se en#uentra en la lista.
Car(ar -uncion#% d# un arci"o?%ci? ●
Las fun#iones son #argadas a un &rograma &rin#i&al #on el #omando #5#c.4-uncion#%?%ci4/7 el #ual se #olo#a al ini#ioy #arga todas las fun#iones 5ue se en#uentran en el ar#hi(o 5ue las #ontiene. Mi%+o dir#ctorio #5#c.4-uncion#%?%ci4/ instru##iones< "nstru##iones2 "nstru##iones= . . . . "nstru##ionesn
Pro(ra+aPrinci&a'?%c#
car(a fun#tion r8-un:abD )rgumentos D )rgumentos=I endfun#tion
-uncion#%?%ci
Funcion#% R#cur%i"a% Las fun#iones re#ursi(as son a5uellas 5ue se invocan a si mismas &ara reali/ar una tarea.
Eem&lo' Es#riba la fun#i$n re#ursi(a Nu+#roDi(ito%(n) #ual re#ibe un n7mero n y retorne el n7mero de d6gitos 5ue lo #onforman. Ejemplos: =P94 la fun#i$n NumeroDigitos retorna 4. =4?:P la fun#i$n NumeroDigitos retorna 9.
-unction r3Nu+#roDi(ito%.n/ i- nH3 Caso Yase r3:6 #'%# r3:Nu+#roDi(ito%.nJ:;/6 #nd #nd-unction
Se llama a si misma y extrae otro d6gito r (a a#umulando el W de d6gitos.
E%tructura%.%truct/ 1na estru#tura struct D es una agru&a#i$n de datos de ti&o diferente bao un mismo nombre. Estos datos se llaman miembros o #am&os. 1na estru#tura es un nue(o ti&o de dato del 5ue luego se &ueden #rear mu#has (ariables. E%tructura Dato ti&o > Dato ti&o = Dato ti&o : Bi&os de datos num-ri#os strings et#D
Cr#ación d# una #%tructura no+0r#8%tructH#am&o
E*#+&'o) alumno8%tructHnombreHHose mariaHHdniH??==999:D
a'u+no no+0r# dni
Zose maria ??==999: Diseño del a estructura
Nota) Los nombres de los #am&os (an #on #omillas sim&les.
●
E*#+&'o) Reali#e un &rograma 5ue registre n estudiantesnombre a&ellido edad matri#ulaD y luego los muestre.
dis&HREG"SBR! FE ESB1F")+BESHDI estudiante8stru#tHnombreHH HHa&ellidoHH HHedadHPHmatri#ulaHH HDI n8in&utH"ngrese numero de estudiantes' HDI for i8<'n &rintfHEstudiante WJdKnHiDI estudianteiD.no+0r#8in&utH"ngrese nombre' HHsHDI estudianteiD.a''ido8in&utH"ngrese a&ellido' HHsHDI estudianteiD.#dad8in&utH"ngrese edad 'HDI estudianteiD.+atricu'a8in&utH"ngrese matri#ula 'HHsHDI end
dis&HL"SB)F! FE ESB1F")+BES REG"SBR)F!SHDI &rintfH+ombreKt)&ellidoKtEdadKtMatri#ulaHDI
-or i8<'n
nombre8estudianteiD.no+0r#I a&ellido8estudianteiD.a''idoI edad8estudianteiD.#dadI matri#ula8estudianteiD.+atricu'aI &rintfHJsKtJsKtJdKtJsKnHnombrea&ellidoedadmatri#ulaDI
#nd
Arci"o% ●
●
Los ar#hi(os o fi#heros &ermiten guardar datos de (ariables y a su (e/ #argarlos' Se usan dos #omandos b,si#os %a"# y 'oad.
Sa"#) #rea un ar#hi(o y guarda valores de variables en el mismo. sa(e Hnombrear#hi(oH (ariables
Load) #arga datos de un ar#hi(o. load Hnombrear#hi(oH (ariables