Diferencia entre revisiones de «Usuario:ManuelRomero/JavaScript/algoritmica/algoritmicaBase»
Línea 51: | Línea 51: | ||
#leer/escribir | #leer/escribir | ||
==== Instrucción inicio/fin de bloque ==== | ==== Instrucción inicio/fin de bloque ==== | ||
− | Un programa es un bloque de instrucciones que tiene un ''inicio'' y un ''fin''. Dentro de este ''bloque'' puede haber muchos bloques. Siempre cada bloque empezará y terminará con una instrucción de inicio /fin bloque respectivamente | + | Un programa es un bloque de instrucciones que tiene un ''inicio'' y un ''fin''. Dentro de este ''bloque'' puede haber muchos bloques. Siempre cada bloque empezará y terminará con una instrucción de inicio /fin bloque respectivamente. |
+ | *De forma general, algorítmicamente podríamos establecer esto de la siguiente manera | ||
<source lang=java> | <source lang=java> | ||
Línea 77: | Línea 78: | ||
} | } | ||
</source> | </source> | ||
+ | *El concepto '''''function''''' lo abordaremos posteriormente. | ||
+ | {{Punto clave| | ||
+ | Title="La identación| | ||
Muy importante es la '''indentación''' es decir que '''todas '''las instrucciones de un determinado bloque vayan indentadas a un mismo nivel, con el mismo margen. Cada nuevo nivel de bloque aumento la sangría o margen. Si cierro el bloque vuelvo a niveles anteriores. | Muy importante es la '''indentación''' es decir que '''todas '''las instrucciones de un determinado bloque vayan indentadas a un mismo nivel, con el mismo margen. Cada nuevo nivel de bloque aumento la sangría o margen. Si cierro el bloque vuelvo a niveles anteriores. | ||
+ | }} | ||
{{nota|Algunos lenguajes como '''Python '''usan directamente la indentación como inidicador de inicio/fin de bloque}} | {{nota|Algunos lenguajes como '''Python '''usan directamente la indentación como inidicador de inicio/fin de bloque}} |
Revisión de 01:54 26 feb 2016
Contenido
Programando
Algunas conceptos previas
Algunas conceptos previas
Estructras de controlEstructura secuencialConsiste en poner una instrucción detrás de otras. El orden de ejecución es secuncial y en orden (Excepción a esta regla los procesadores fuera de orden e instrucciones independientes).
Un programa
Instrucciones secuenciales
Instrucción inicio/fin de bloqueUn programa es un bloque de instrucciones que tiene un inicio y un fin. Dentro de este bloque puede haber muchos bloques. Siempre cada bloque empezará y terminará con una instrucción de inicio /fin bloque respectivamente.
programa MiPrograma
inicio
bloque_dentro_de_mi_programa
inicio
instruciones
fin
...
instrucciones
fin
function bloque_principal() { function otro_bloque_B() { //instricciones_bloque_B } //instrucciones del bloque princial }
<script> ..... Código javaScript <script>
<script type=text/javascript> ..... Código javaScript <script> </html> Instrucción de declaraciónSirve para declarar elementos dentro del programa En un programa se pueden declarar
La forma de realizar una declaración de variable será tipo_variables identificador_variable Necesito declarar el tipo para saber cuanto espacio de memoria debo reservar para almacer el valor de la variable. por ejemplo en un entero puede ser que necesite 2 bytes, pero en un float 8 bytes
identificador_constante = valor Respecto a los tipos de variable, en otro apartado realizaremos una clasificación más estricta, pero de momento podemos considerar entero o int , en javascript será de tipo number' cadena_caracteres o String en javascript será el tipo string real o float, en javascript será de tipo number' igualmente. booano o boolean en javascript será de tipo booleano' igualmente. {{}} Identificador es un nombre que identifica a la variable.Existen reglas para crear los identificadores y éstas dependen del lenguaje para el que estemos escribiendo código. Por ejemplo en PHP tienen que empezar por $ En javaScriptlos identificadores siguen la siguiente expresión regular [a..zA..Z|_|$][ [a..zA..Z][a..zA..Z|_|$|0..9]
Veamos ejemplos de declaración de variables Plantilla:Punto Clave //Declaramos tres variables (edad, nombre, raiz) de los tipos que precede (entero, string o cadena de caracteres y real o float) int edad; String nombre; float raiz; Ejemplos de declaración de constantes En principio en la constante no necesito saber el tipo con lo que en muchos lenguajes directamente uso identificador y valor const IVA = 3.14; const MESES = 12; En javaScript siempre ha sido un aspecto no del todo desarrollado, en la última versión sí que aparece la palabra reservada const para este propósito. Eso si, una vez inicializada ya no puedo modificar su valor (como buena constante que es) //Defino una constante { const IVA = 3.14; const MESES = 12; const pi = 3.1416; // … mas instrucciones } instrucción de asignaciónConsiste en asignar un valor a una variable a = valor La parte de la izquierda siempre será una variable posición de memoria donde almacenaré el valor valor se puede expresar de diferentes maneras:
Instrucciones de leer/escribirEn realidad aquí depende de los lenguajes, algunos como Pascal y Modula tiene dentro del lenguaje una instrucción para visualizar un texto por la pantalla y otra para leerlo del teclado y asignárselo a una variable. Otros (la mayoría), como Java, C, python,... esta funcionalidad nos la brinda una función de una biblioteca que previamente debe ser cargada. Otros como PHP tienen ambas cosas echo (parte del lenguaje), print función del sistema, ambas para visualizar caracteres por pantalla. En general con cualquier lenguaje podremos: visualizar(”cadena de caracteres , valor de variable” + variable+”expresion) y para leer un valor que el usuario introduzca por el teclado y almacenarlo en una variable leer(variable); Un Ejemplo algoritmicamente quedaría void MiPrograma principio visualizar (“Introduce tu edad”); leer edad; visualizar (“Tu edad es de”+ edad); fin En javaScritp vamos a usar dos funciones para este cometido alert prompt Estructuras SelectivasLas instrucciones que introducen las estructuras selectivas permiten ejecutar unas u otras instrucciones en función de que ocurra una situación o no ocurra. La sintaxis de las instrucciones selectivas son si (condicion) entonces bloque fin_si De nuevo condición es una expresión booleana que tras evaluarse obtenemos un valor verdadero o falso. alternativamente a esta estructura de control tenemos el sino si (condicion) entonces bloque_1 si_no bloque_2 fin_si y también cabe la posibilidad de incluir varios sino_si si (condicion) entonces bloque_1 sino_si (condicion_2) bloque_2 sino_si (condicion_3) bloque_3 fin_si Por ejemplo vamos a suponer que queremos ver en función de la edad si alguien es niño(0..11) adolescente(12-16), joven(17.. 29) adulto(30-65) o mayor 66.. programa di_situacion_edad inicio int edad visualizar 'dime tu edad' leer (edad); si (edad<=11) entonces visualizar 'Que bien, eres un niño'); sino_si(edad <= 16) entonces visualizar 'No te enfades demasiado, Ya eres un adolencente'); sino_si(edad <= 29) entonces visualizar 'Ahora eres un joven lábrate el futuro'); sino_si(edad <= 65) entonces visualizar 'Ya eres todo un adulto'); sino_si(edad >65) entonces visualizar 'Eres mayor, !Cuantas cosas has hecho!, Disfruta de la vida'); fin_si fin En este caso las estructuras de control tienden a complicarse en especial en leguajes como java o c donde el sino_si no es en realidad mas que otro si con su inicio y fin de bloque correspondiente. Alternativa a la estructura de control siSi lo que estamos analizando tiene dos situaciones la estructura de control si vista anteriormente es muy cómoda Pero cuando tenemos varias situaciones como es el caso anterior, la edad que estamos analizando tiene 4 posibles sitiaciones, puede ser muy complejo gestionarlo con el si, para esta situaciones esta la estructura de control caso u opcion o con tiene diferentes afecciones caso variable caso: valor1 bloque1 caso: valor2 bloque2 caso: valor3 bloque3 caso: valor4 bloque4 defecto: bloque_otro_caso fin_caso
programa di_situacion_edad inicio int edad visualizar 'dime tu edad' leer (edad); caso edad caso <=11 visualizar 'Que bien, eres un niño'); caso <= 16) entonces visualizar 'No te enfades demasiado, Ya eres un adolencente'); caso <= 29) entonces visualizar 'Ahora eres un joven lábrate el futuro'); caso <= 65) entonces visualizar 'Ya eres todo un adulto'); defecto visualizar 'Eres mayor, !Cuantas cosas has hecho!, Disfruta de la vida'); fin_caso fin Este ejemplo no se aprecia la utilidad y ventaja de usar el case en casos donde hay varias posibles situaciones, no obstante a lo largo del curso seguro que lo experimentamos. Estructuras Iterativas o repetitivasEste tipo de estructuras permiten repetir un bloque de ejecución controlado por una determinada condición Mientras se produzca la condición repito el bloque de control. La condición es una expresión booleana (Se evalúa y me da cierto o falso) algorítmicamente sería mientras (condición) hacer bloque_instrucciones fin_mientras Reglas de oro para realizar buclesEn condición normalmente evaluamos alguna/s variables. Debemos tener en cuenta tres reglas de oro para los bucles
consite en tener cuidado con la condición <, <=... por ejemplo si quiero visualizar la tabla de multiplicar normal 2*1... 2*10 programa Error_mientras_3 inicio int veces; int tabla; veces = 1 visualizar 'dime un número para sacar su tabla de multiplicar' Leer (tabla); mientras veces < 10 hacer visualizar (tabla +'*'+ veces +'='+tabla*veces); veces = veces+1; fin_mientras Observamos que imprimiría si introducimos el 2 2*1=2 2*2=4,.. 2*9=18 y nos faltaría el 2*10 por que la condición no debería de ser < estricto sino <= Es cierte que de todos este es el error menos malo, pero dependiendo de situaciones puede ser incluso peor que los anteriores, ya que aparentemente tu programa funciona bien, pero el valor que te retorna es incorrecto :( Tipos de buclesEn realidad cualquier situación iterativa se puede hacer con la estructura mientras vista anteriormente. pero existen situaciones en las que ya sabemos de antemano antes de ejecutar el bucle cuantas veces lo vamos a hacer.
Para esta situaciones esta la estructura de control para que a continuación exponemos como en el caso anterior con la tabla de multiplicar programa Iteracion_Para inicio int veces; int tabla; visualizar 'dime un número para sacar su tabla de multiplicar' Leer (tabla); para veces = 1 hasta veces = 10 hacer visualizar (tabla +'*'+ veces +'='+tabla*veces); fin_para Como vemos en este caso no tengo que inicializar la variable antes del bucle ni actualizarla dentro La inicialización se hace en la cabecera La actualización es transparente al programador (la realiza el cuerpo del bucle) El número de veces puede ser una variable, no ha de ser conocido en tiempo de compilación. Por ejemplo el siguiente bucle calcula el sumatorio de n números (desde el 1 hasta n: 1+2+3+4+...) programa Iteracion_para_2 inicio int numNumeros; int numero; int total = 0; visualizar 'dime hasta que número quieres sumar' Leer (numNumeros); para numero = 1 hasta numero = numNumeros hacer total=total+numero fin_para visualizar 'el sumatorio desde 1 hasta'+numNumeros+'es'+total fin
Hay situaciones en las que sé de antemano que por lo menos una vez sí que se va a ejecutar el cuerpo del bucle. En estos casos hacer la primera vez una comparación es innecesario. Para ahorrar esta instrucción, se desarrollo la estructura de control hacer ... hasta que, en la cual la condición de evaluación del bucle se hacer al final del cuerpo del bucle. Supongamos que le programa quiere visualziar los años para jubilarse de 1 o varias personas. programa Iteracion_hacer_1 inicio caracter seguir hacer visualizar 'dime tu edad' Leer (edad); visualizar ' te faltan '+(65-edad)+'años para jubilarte'; visualizar 'quieres seguir' leer (seguir); hasta que seguir ='n'; Como vemos en este caso no hay que inicializar la variable fuera del bucle, sino que se hace en la primera iteración del bucle.
LENGUAJES DE PROGRAMACION
Niveles de lenguajesEn función de la proximidad de compresión del lenguaje al lenguaje humano se puede hablar de tres niveles de lenguajes de programación.
Conjunto de 0'1 y 1's que corresponden a códigos binarios que el procesador es capaz de entender y ejecutar
Proceso de transformaciónEntendemos por tal el hecho de pasar de código de alto nivel a código máquina. Este proceso puede ser una mera traducción como es el caso de pasar de ensamblador a código máquina, o ser un proceso más complejo. Lenguajes compiladosgenerando primero el obj que es binario, pero aún falta enlazar librerías y resolver direccionamiento relativo a direecionamiento absoluto. esta tarea la hace el link que genera el .exe
EjemplosExisten diferentes modos de expresar un algoritmo Por ejemplo con un ordinograma como la siguiente imagen o seudocódigo como ya hemos visto
'DIVIDE Y VENCERAS'
La programación de clases se realiza con programación estructurada y modular, por lo que debemos de saber programar de forma estructurada y modular |