Lenguaje "LSL" - Algoritmos
 
Linden Scripting
Principal
Introduccion
Algoritmos
Seudocodigos
Creditos
Valoracion
Estudiantes
Descargas
Foro de Ayuda

PRIMERA ENTREGA:


Primero daré unas definiciones para familiarizarnos con el tema:

* Problema:- limite que impide el desarrollo , factor no Deseado

* O.S =>"kernel":- controla los dispositivos "sistema operativo"

* Lenguaje de programación:- define sintaxis y semantica para escribir programas que comunican al usuario con la máquina

existen lenguajes de bajo nivel, medio y alto nivel.


ejemplo de bajo nivel:

PUSH, AX

ADD, AX

POP, AX


ejmplo alto nivel:

for (i=0;i<10;i++)

     {

           printf("nEste es un ejemplo");

     }

* Analisis: "descomposición " de un problema

* requerimientos: FUNCIONALES- define las funciones que el sistema sera capaz de realizar estos deben definir los procesos y actividades que componen el sistema completo

NO FUNCIONALES- son aquellos que no estan relacionados directmente con los procesos que define el sistema

* modelo del mundo: básicamente es trasformar un problema del mundo real a un mundo virtual "sistemas"

* desarrollo de un programa:

 

[ANALISIS]

 |

[DISEÑO]

 |

[IMPLEMENTACION]

 |

[MANTENIMIENTO]

|

[DOCUMENTACION]

 

--------------------------------------------------------------------------------


Estructura de un programa:

 

"SEUDOCODIGO "HOLA_MUNDO"

 

inicio

escribir("hola mundo") //muestra por pantalla hola mundo

fin

Como vemos la estructura de un programa consta por un inicio, las sentencias, tambien poseen unas variables.

definición de variable: es un date que cambia constantemente, un espacio en memoria que aloja el dato almacenado, pertenece a un conjunto de datos.

Existen varios tipos de variables tales como

-enteros

-reales

-carácter

-logico / boleano

que en lenguaje de programación son:

entero - int, short, long, byte

real - float, double

caracter - char

logico - boolean

cada uno establecido por un valor en memoria:

teniendo:

byte = (00000000) 8 bits


teniendo encuenta esto tenemos:


byte = 8 bits

int = 4 byte

short = 2 byte

long = 8 byte

float = 4 byte

double = 8 byte

char = 1 byte ACII => americano

2 byte UNICODE => estandar multilenguaje

boolean = 1 byte


--------------------------------------------------------------------------------
Tenemos, que un programa posee unas entradas y unas salidas, las entradas son todas aquellas que el usuario ingresa o que se establecen desde el mismo programa, las salidas son todas aquellas que arrojan un resultado, o un valor, "lo que se muestra por pantalla", un proceso es una acción que se ejecuta, teniendo encuenta veamos un ALGORITMO que lo represente:

* problema: mayor de tres numeros "enteros"

variables... a, b, c

-entradas: a, b, c "pre condición"

-salidas: r "pos condición"

Tenemos entonses el siguiente algoritmo:


si a > b entonces

r = a

sino

r = b

si c > r entonces

r = c


--------------------------------------------------------------------------------

CASOS PARA TENER EN CUENTA:

 

1) Analizar el problema

2) Describir entradas

3) Describir salidas

4) Explorar casos

5) Realizar algoritmo

6) Prueba de escritorio

7) Montar en lenguaje


DESCRIPCION DE UN ALGORITMO:


Es una serie de instrucciones lógicas en un orden específico y finitas, para resolver un problema:

CONSTA DE: principio, procesos, entradas y salidas.


MEMORIA RAM:

_________________

| |___|

| heap |___|

| [ ] |___| V. locales

| |___|

|____________|___|

 

HAY variables locales y globales, las globales se almacenan de manera independiente.

en el espacio mayor se almacenan la globales, el

"heap" almacena funciones, los cuadros mas pequeños son donde se almacenan las variables locales.


QUE SON LAS VARIABLES:

como explique anteriormente es donde se almacena un tipo de dato. Estas variables se dividen en "locales" y "globales":

Locales:: son aquellas que estan dentro de un programa, o dentro de un ciclo y solo existen dentro de tal.

Globales:: son todas aquellas que estan en un programa principal, y pueden ser llamadas desde cualquier subprograma.


ESTRUCTURA SECUENCIAL:


Permite representar las instrucciones que se repiten una tras otra, tambien se puede decir que son instrucciones seguidas:


REPRESENTACION:


inicio

<instrucción 1 >

<instrucción 2 >

<instrucción 3 >

.

.

.

.

<instrucción N >

fín


ejercicio:

Realizar un algoritmo que dados dos números diferentes de un rectangulo encuentre el perímetro y el área

-ENTRADAS:

* valor de un lado

* valor del otro lado

-SALIDAS:

* valor del perimetro

* valor del área del rectángulo

-PROCESO:

Cálculos para obtener el perímetro y el área,

* perímetro = suma de los cuatro lados del rectangulo

* área = lado de la base y lado de la altura

-VARIABLES:

L1 = valor del lado base

L2 = valor del lado áltura

P = perímetro

A = área

 

SEUDOCODIGO:

inicio

lea: (L1, L2)

p= 2*L1+2*L2

A= L1*L2

escribir ("el perímetro es:",p)

escribir ("el área es:",A)

fín

 

EJERCICIO:

Hallar dados dos numeros cual es mayor, igual ó menor

-ENTRADA:

*valores de A y B

-SALIDA:

*mensaje que dice si es: mayor, menor, ó igual

-PROCESO

*comparar A con B


--------------------------------------------------------------------------------

SEUDOCODIGO


inicio

lea: A,B

si A > B entonces

escribir ("A es mayor")

sino

si A = B entonces

escribir ("A es igual a B")

sino

escriba ("A es menor que B")

fin_si

fin_si

fin


--------------------------------------------------------------------------------


Como nos podemos dar cuenta, todo tiene un inicio y tiene un fin para concluir. es importante fijarse en esto, el seudocodigo anterios nos podemos dar cuenta que se utiliza un si y un fin_si para concluir, al igual que un inicio y un fin, esto en un lenguaje de programacion en el caso de C/C++ y java se representa con un corchete. { }

el (SI) es un condicional lógico, que realiza una acción de falso o verdadero.


Este problema se puede resolver mediante ciclos tales como:

para (sentencias)

mientras (sentencias)

hacer (-codigo-) mientras que (sentencias)

si (-código-) sino (--)

pero eso se explicara mas adelante...


Estructura repetitiva:

hasta ahora hemos visto que las instrucciones solo se ejecutan una sola ves con las estructuras repetitivas o ciclos podemos ejecutar una acción las veces que se desee o que necesitemos.

veamos el caso del "mientras" o "mientras que"

MIENTRAS <expresión lógica> haga

<secuencia>

fín mientras


--------------------------------------------------------------------------------

HACER <expresión lógica>

<secuencia>

mientras que

fín  mientras


FUNCIONAMIENTO:

mientras = realiza una acción determinando su expresión lógica, cuya acción esta determinada por la secuencia

hacer mientras que = realiza una acción y luego determina hasta donde esta realizada dicha acción, mientras que cumple su ciclo y despues finaliza


EJEMPLO:

sumar los 5 primeros números naturales

ENTRADA:

*los 5 números

SALIDA:

*suma de los números

VARIBLES: núm y suma

----------------------------------------

inicio

num=0

suma=0

mientras (núm < 5) haga

num=núm+1

suma=suma+núm

fín  mientras

escribir ("la suma es:",suma)

fín
---------------------------------------------

ESTRUCTURAS ADICIONALES

LOS CASOS O SELECCION MULTIPLE:


permite seleccionar una opción dentro de un margen de alternativas

REPRESENTACION:

casos de <variable>

caso 1

<secuencia>

casos 2

<secuencia>

---

---

---

caso N

<secuencia>

casos: <secuencia N+1>

fin casos


--------------------------------------------------------------------------------

ejemplo:


caso de A:

caso 1 (A=A+1)

escriba ("A")

caso 2 (A=A+2)

escriba ("A")

caso 3 (A=A+3)

escriba ("A")

otros

casos: escriba ("A")

fin casos


--------------------------------------------------------------------------------

SUBPROGRAMAS

como hemos visto anteriormente hay un único programa a desarrollar pero que cuando tenemos que implementar varias funciones y diferentes, pues bueno, como vemos con cualquier aplicacion que utilicemos en nuestro "kernel" un programa cumple varias funciones, pero esto esta dado por varios subprogramas.

Un subprograma puede llamar a otro y visceversa.

REPRESENTACION DE UN SUBPROGRAMA

procedimiento - nombre- (parametro)

<instrucciones>

fin_nombre

ARREGOLA - ARRAY

anteriormente se vio una variable como un unico campo de almacanamiento en memoria, la cual establecemos un valor y permanese a no ser que se modifique, pero esto esta bien, pero no nos sirve para cuando nosotros queremos crear. una base de datos de 100 espasios en memoria, no podemos colocar (E1,E2,E3,E4,...,E100) nos ocupa mucha memoria y nos tomaria mucho tiempo.

ARREGLOS

Un arreglo o vector es donde se guardan varias variables en un solo campo, en fila o columna.

EJEMPLO:

<nombre>

________

[][][][]|

¬¬¬¬¬¬¬¬

 

esto seria graficamente para entenderlo mejor

EJEMPLO DE UN VECTOR O ARREGLO

si queremos colocar las edades de un grupo, especificamos el tamaño del vector y la longitud.

lo que esto realiza es lo siguiente


--------------------------------------------------------------------------------


MEMORIA

 

edad[1] <relleno> direccion x

edad[2] <relleno> direccion x+1

edad[3] <relleno> direccion x+2

edad[4] <relleno> direccion x+3


cada variable es independiente


lea: edad[1], edad[2], edad[4]:

escribir ("edad[1], edad[4]")

RETOMANDO LAS EDADES

quedaria en memoria asi:

 

edad[1] <12> direccion x

edad[2] <44> direccion x+1

edad[3] <basura> direccion x+2

edad[4] <23> direccion x+3

 

para borrar los campos del vector

solucion:


--------------------------------------------------------------------------------

UTILIZANDO MIENTRAS

 

inicio

indice = 1

mientras indice <=5 haga

edad [indice]=0

indice=indice+1

fin mientras

fin

--------------------------------------------------------------------------------

REGISTROS Y ARCHIVOS:


es una estructura de datos compuesta. se puede decir que un registro es un conjunto de campos variables relacionados, que en general, pueden pertenecer a tipos de datos diferentes.


ejemplo:

[<nombre>]

[<edad>]

[<cedula>]


se emplea mediante una estructura (struct)

por lo que en C/C++ se definiria asi:


struct persona

{

    long cc;

    char nom [40];

    int edad;

}

Donde [40]

es el tamaño o el numero de pocisiones que le daremos a este struct

 

______________________________________...


RECUERDA:

 

repasa lo planteado anterior mente, no te conformes con esta información solo te estoy dando un guia para que puedas buscar y aprender.

 

AHORA:

realicemos unos ejercicios para que practiques y mas adelante poder pasar el codigo a un lenguaje

 

trata de realizar los ejercicios planteados sin ver la respuesta.

 

DEFINICION DE CONSTANTE: una variable constente es la que se le determina un valor y lo conserva hasta el fin del programa a no ser que dicho valor sea cambiado despues

----------------------------------------...
1) REALICEMOS UN SEUDOCODIGO QUE DIGA QUE NUMERO ES MAYOR TENIENDO EN CUENTA QUE EL USUARIO DIGITE UN NUMERO Y SEA COMPARADO CON VALRO=5.

----------------------------------------...
2) PREGUNTAR AL USUARIO UN NUMERO HASTA QUE ESCRIBA UNO (>30)

----------------------------------------...
3) REALIZAR UN JUEGO EL CUAL EL USUARIO INGRSE UN NUMERO Y OTRO USUARIO LO TENGA QUE ADIVINAR Y QUE EL SISTEMA TE DE PISTAS PARA PODER DESCUBRIR EL NUMERO DEL PRIMER USUARIO

----------------------------------------...
----------------------------------------...
----------------------------------------...
RESPUESTA A LOS PROBLEMAS:

1)

inicio

   constante real valor=5

   real x

   escribir ("deme x")

   leer (x)

  si (x> valor)

       escribir ("es mayor que 5")

       si (x< valor)

                  escribir ("es menor que 5")

                  sino
                        escribir ("es igual que 5")

        fin
   fin
fin

----------------------------------------...
2)

inicio

entero n

   escribir ("digite  un número")

   leer (n)

   mientras que (n<30)hacer

             escribir ("digite un numero de nuevo")

    fin

fin

----------------------------------------...
3)

inicio

 entero a,b

 escribir ("usuario uno digite un numero")

 leer (a)

  escribir ("usuario dos adivine el numero de usuario uno")

  leer (b)

  mientras (b>a)hacer

       escribir ("el numero es mayor que el primero")

  fin

  mientras (b<a)hacer

       escribir ("el numero es menor que el primero")

  fin

  si (a=b)

      escribir ("el nuemro es correcto")

  fin

fin


--------------------------------------------------------------------------------

AHORA VEAMOS UN EJEMPLO DE SUBPROGRAMA

 

programa principál

seudocodigo x

inicio

subprograma_y()

subprograma_w()

subprograma_k()

fin


EJEMPLO:

Hagamos un programa que sume los numeros ingresados por el usuario y que despues el programa pirncipal llame al subprograma suma y el resultado de la suma lo multiplique por dos, le pida un nuevo número al usuario y lo divida por el resultado. y muestre el valor obtenido por pantalla.

aplicando el concepto de variable global y local, y mirando que podemos reasignar un valor a una variable.

----------------------------------------...
subprograma_suma

inicio

  entero n1,n2

  escribir ("ingrese un numero")

  leer (n1)

  escribir ("ingrese un otro numero")

  leer (n2)

  respuesta = n1+n2

fin

 

programa_principal

inicio

   entero respuesta, div, acumulador
   escribir ("ingrese un numero para dividir")
   leer (div)

   acumulador = subprograma(respuesta)*2

   acumulador = acumulador / div

   escribir ("el valor obtenido es:",acumulador)

fin

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
como podemos apreciar el primer codigo es el de el subprograma y el segundo el del programa principal, el cual llama al subprograma, coje el valor que le dio lo establece en (respuesta) por que es la funcion que estamos llamando lo multiplica por dos y el resultado lo pasa a acumulador que le damos el valor de acumulador dividido en el numero ingresado y nos da un valor entero.

el caso de dar a una variable el valor de la misma variable se aplica en casos parecidos, esto toma el valor que ya tenia y lo cambia por una nueva instruccion, en el caso de contador es el valor que le dio dividido y el resultado es el mismo acumulador.


--------------------------------------------------------------------------------

MIREMOS UN FOR.


un for es un para, osea efectua una accion para la sentencia determinada entrando dentro de la terminología ciclo.


ejemplo:

para (i=1;i<=k;i++)

lo que realiza esta secuencia es que la variable (i) empieza en uno y se incrementa de a uno hasta llegar a la variable (k)

despues se puede colocar la accion a realizar o la instrucción

 

ejemplo:


  para (i=1;i<=k;i++)

  inicio

    escribir("numero:",i)

  fin


--------------------------------------------------------------------------------

AHORA MIREMOS LO QUE ES UN FOR ANIDADO


como se entiende es un for dentro de otro for, osea una estructura para dentro de otra.


ejemplo:


para(i=0;i>k;i++)

  inicio

    para(j=100:j<=i;j--)

    inicio

        <accion>

     fin

  fin


Bueno hasta aca llega la primera parte de algoritmia.

apartir de este momento nos vamos a empesar a meter en el codigo de LSL con casos

Hoy habia 6 visitantes (6 clics a subpáginas) ¡Aqui en esta página!
FORO DE AYUDA Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis