sábado, 3 de octubre de 2015

ALGORITMO



ALGORITMOS

DEFINICIÓN:
Un Algoritmo, se puede definir como una secuencia de instrucciones que representan un modelo de solución para determinado tipo de problemas. O bien como un conjunto de instrucciones que realizadas en orden conducen a obtener la solución de un problema. Por lo tanto podemos decir que es un conjunto ordenado y finito de pasos que nos permite solucionar un problema.
Los algoritmos son independientes de los lenguajes de programación. En cada problema el algoritmo puede escribirse y luego ejecutarse en un lenguaje de diferente programación. El algoritmo es la infraestructura de cualquier solución, escrita luego en cualquier lenguaje de programación.

Programa: 
Un programa es una serie de instrucciones ordenadas, codificadas en lenguaje de programación que expresa un algoritmo y que puede ser ejecutado en un computador.

CLASIFICACIÓN DE ALGORITMOS: Los algoritmos se pueden clasificar en cuatro tipos:

  • Algoritmo computacional: Es un algoritmo que puede ser ejecutado en una computadora. Ejemplo: Fórmula aplicada para un cálculo de la raíz cuadrada de un valor x.
  • Algoritmo no computacional: Es un algoritmo que no requiere de una computadora para ser ejecutado. Ejemplo: Instalación de un equipo de sonido.
  • Algoritmo cualitativo: Un algoritmo es cualitativo cuando en sus pasos o instrucciones no están involucrados cálculos numéricos. Ejemplos: Las instrucciones para desarrollar una actividad física, encontrar un tesoro.
  • Algoritmo cuantitativo: Una algoritmo es cuantitativo cuando en sus pasos o instrucciones involucran cálculos numéricos. Ejemplo: Solución de una ecuación de segundo grado.

CARACTERÍSTICAS DE UN ALGORITMO: Todo algoritmo debe tener las siguientes características:
  • 1. Debe ser Preciso, porque cada uno de sus pasos debe indicar de manera precisa e inequívoca que se debe hacer.
    2. Debe ser Finito, porque un algoritmo debe tener un número limitado de pasos.
    3. Debe ser Definido, porque debe producir los mismos resultados para las mismas condiciones de entrada.
    4. Puede tener cero o más elementos de entrada.
    5. Debe producir un resultado. Los datos de salida serán los resultados de efectuar las instrucciones.

PARTES DE UN ALGORITMO:
 Todo Algoritmo debe tener las siguientes partes:
· Entrada de datos, son los datos necesarios que el algoritmo necesita para ser ejecutado.
· Proceso, es la secuencia de pasos para ejecutar el algoritmo.
· Salida de resultados, son los datos obtenidos después de la ejecución del algoritmo.

TÉCNICAS DE REPRESENTACIÓN: Para la representación de un algoritmo, antes de ser convertido a lenguaje de programación, se utilizan algunos métodos de representación escrita, gráfica o matemática. Los métodos más conocidos son:



· Diagramación libre (Diagramas de flujo).
· Diagramas Nassi-Shneiderman.
· Pseudocódigo.
· Lenguaje natural (español, inglés, etc.).
· Fórmulas matemáticas.



PROGRAMACIÓN ESTRUCTURADA:

 La programación estructurada es un estilo con el cual el se busca que el programador elabore programas sencillos y fáciles de entender. Para ello, la programación estructurada hace uso de tres estructuras básicas de control. Éstas son: Estructura Secuencial Estructura Selectiva Estructura Repetitiva (ó Iterativa) La programación estructurada se basa un teorema fundamental, el cual afirma que cualquier programa, no importa el tipo de trabajo que ejecute, puede ser elaborado utilizando únicamente las tres estructuras básicas (secuencia, selección, iteración). 

DEFINICIÓN DE LAS TRES ESTRUCTURAS BÁSICAS 

Estructura Secuencial:
 Indica que las instrucciones de un programa se ejecutan una después de la otra, en el mismo orden en el cual aparecen en el programa. Se representa gráficamente como una caja después de otra, ambas con una sola entrada y una única salida. Las cajas A y B pueden ser definidas para ejecutar desde una simple instrucción hasta un módulo o programa completo, siempre y cuando éstos también sean programas apropiados. Programación Instituto Tecnológico de Celaya Ingeniería Química

 Estructura Selectiva:
 También conocida como la estructura SI-VERDADERO-FALSO, plantea la selección entre dos alternativas con base en el resultado de la evaluación de una condición; equivale a la instrucción IF de todos los lenguajes de programación y se representa gráficamente de la siguiente manera: En el diagrama de flujo anterior, C es una condición que se evalúa; A es la acción que se ejecuta cuando la evaluación de esta condición resulta verdadera y B es la acción ejecutada cuando el resultado de la evaluación indica falso. La estructura también tiene una sola entrada y una sola salida; y las funciones A y B también pueden ser cualquier estructura básica o conjunto de estructuras. 

Estructura Repetitiva (Iterativa):
 También llamada la estructura HACER-MIENTRAS-QUE, corresponde a la ejecución repetida de una instrucción mientras que se cumple una determinada condición. 


                  EJEMPLOS DE ALGORITMO

Inicio
Dormir 
haga 1 hasta que suene el despertador (o lo llame la mamá).
Mirar la hora.
¿Hay tiempo suficiente?

Si hay, entonces 
    Bañarse.
    Vestirse.
    Desayunar.

Sino, 
      Vestirse.
Cepillarse los dientes.
Despedirse de la mamá y el papá.
   ¿Hay tiempo suficiente?

Si, Caminar al paradero.
SinoCorrer al paradero.
Hasta que pase un bus para la universidad haga :
    Esperar el bus
    Ver a las demás personas que esperan un  bus.
Tomar el bus.

Mientras no llegue a la universidad haga 
    Seguir en el bus.
    Pelear mentalmente con el conductor.
Timbrar.
Bajarse.
Entrar a la universidad. 

Fin



REPRESENTACION DE ALGORITMO






Un diagrama de flujo es una representación gráfica de un proceso. Cada paso del proceso es representado por un símbolo diferente que contiene una breve descripción de la etapa de proceso. Los símbolos gráficos del flujo del proceso están unidos entre sí con flechas que indican la dirección de flujo del proceso.
 El diagrama de flujo ofrece una descripción visual de las actividades implicadas en un proceso mostrando la relación secuencial ente ellas, facilitando la rápida comprensión de cada actividad y su relación con las demás, el flujo de la información y los materiales, las ramas en el proceso, la existencia de bucles repetitivos, el número de pasos del proceso, las operaciones de interdepartamentales… Facilita también la selección de indicadores de proceso

pseudocódigo


El PSEUDOCODIGO esta considerado como una descripción de un algoritmo que resulta independiente de otros lenguajes de programación. Para que una persona pueda leer e interpretar el código en cuestión, se excluyen diversos datos que no son clave para su entendimiento.
Un pseudocódigo, por lo tanto, se emplea cuando se pretende describir un algoritmo sin la necesidad de difundir cuáles son sus principios básicos. De esta manera, un ser humano encontrará mayores facilidades para comprender el mensaje, a diferencia de lo que ocurriría si estuviese frente a un lenguaje de programación real.
Estas características hacen que los pseudocódigos sean utilizados en obras científicas y educativas y en las etapas previas al desarrollo de un software, a la manera de boceto antes de proceder a la programación.



 ESTRUCTURA PROGRAMA C++



Es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup, un lenguaje de programación C con mecanismos que permiten la manipulación de objetos, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.

*Componente estructural básico; Funciones:
Directivas de preprocesador
Declaraciones globales (variables globales, funciones,…)
Función main()
{
Secuencia de declaraciones e instrucciones
}
función1 ()
{
Secuencia de declaraciones e instrucciones
}
...
Función ()
{
Secuencia de declaraciones e instrucciones
}


*Directivas del preprocesador
Los compiladores de C++ proporcionan bibliotecas de funciones.
Cada biblioteca de funciones tiene asociado un archivo de definición que se denomina cabecera.
Para utilizar algo de una biblioteca en un programa, hay que colocar al principio del programa una directiva de preprocesamiento seguida de la cabecera de la biblioteca entre ángulos.
Instrucciones al compilador antes de que se compile el programa principal
Las directivas más usuales son:
# include
# define
# include <iostream.h>
Indica al compilador que lea las directivas antes de compilar la función principal

*La función main()
Una función C++ es un subprograma que devuelve un valor, un conjunto de valores  o realiza una tarea específica. Todo programa C++ tiene una única función main() que es el punto inicial de entrada al programa. Si se intenta declarar dos funciones main() dentro del programa se produce error.
Estructura de un programa C++
#include <iostream.h>
main()
{
   …
   ...
}
Las sentencias escritas entre las llaves se denominan BLOQUE
#include <iostream.h>
int main()
{
   entrada_datos();
   proceso_datos();
   return 0;
   ...
}
Llamadas a otras funciones.

*Tipos de datos básicos en C++
El tipo de dato determina la naturaleza del valor que puede tomar una variable.Un tipo de dato define un dominio de valores y las operaciones que se pueden realizar con éstos valores.
C++ dispone de unos cuantos tipos de datos predefinidos (simples) y permite al programador crear otro tipo de datos.
Tipo de datos básicos
• int ( Números enteros )
• float ( Números reales )
• double ( Números reales más grandes que float )
• bool ( Valores lógicos )
• char ( Caracteres y cualquier cantidad de 8 bits )
• void ( Nada. Sirve para indicar que una función no devuelve valores)


Una de las estructuras más utilizadas en programación en C++ es el “if”. Sirve para el ordenador distinga entre varios caminos posibles. Si hay más de uno, se utilizará “else” para señalar el restante. Las condiciones van entre llaves.

Mayor
> 
Menor
< 
Igual
==
Distinto
!=
Mayor o igual
>=
Menor o igual
<=




EJEMPLO:

/*PROGRAMA QUE NOS PERMITE SABER SI EL NUMERO INGRESADO ES PAR O NO*/
  1. include <stdio.h>
  2. include <stdlib.h>
int main () {
   int numero;
   printf ("Ingrese el valor de numero: ");
   scanf ("%d", &numero);
   if(numero%2==0)
       printf ("\n***El numero es par\n");
   else
       printf ("\n***El numero es impar\n");
   putchar ('\n');
   system("pause");
   return EXIT_SUCCESS;
}


  

Estructuras de control: IF, FOR, FOR EACH, WHILE.



Las estructuras de control nos permiten controlar el flujo del programa: tomar decisiones, realizar acciones repetitivas etc, dependiendo de unas condiciones que nosotros mismos establezcamos. Así podemos hacer un script que nos salude cada día de la semana de una manera diferente. O por ejemplo hacer un script que nos pida la contraseña una y otra vez hasta que suministremos la opción correcta.
1.- La toma de decisiones if-else:
Quizá la estructura de control más básica y la más utilizada sea if-else:
if (condicion) {
// instrucciones que hay que ejecutar si la condición es verdadera
} else {
// Instrucciones que hay que ejecutar si la condición es falsa
}
En castellano sería algo así:
Si (Tal cosa es cierta) {
//  Haz esto
} En caso contrario {
// Haz esto otro
}

Veamos un ejemplo real: En un formulario preguntaremos al usuario como se llama, pasaremos las variables a la página “saludos.php” . En saludos.phpmostraremos un saludo diferente en función de si el usuario soy yo o es cualquier otro
Formulario
<html>
<head>
<title> Ejemplo básico de If </title>
</head>
<body>


<form action="saludos.php" method="get">

¿Quién eres?<br />
<input type="text" name="nombre" />

<input type="submit" name="reset" value=" Enviar " />
</form>
</body>
</html>


saludos.php
<html>
<head>
<title> Ejemplo básico de If </title>
</head>
<body>
<h1> Página de bienvenida</h1>
<?php // Empieza el código php
if ($nombre=="Coder") {  // Si el nombre es Coder
echo(" Hombre $nombre! Ya estás cotilleando por aquí otra vez!"); // saludo especial
}else {
echo("Hola, $nombre, gracias por visitarnos"); // saludo para los demás
}
?>
</body>
</html>

La cláusula else (la parte del if-else que indica lo que hay que hacer si la condición es falsa) es opcional. No es necesario ponerla. Por ejemplo puedo querer un script que sólo me salude a mi. En este caso, cambiaría saludos.php de la siguiente manera:
<html>
<head>
<title> Ejemplo básico de If </title>
</head>
<body>
<h1> Página de bienvenida</h1>
<?php // empieza el código php
if ($nombre=="Coder") { // Si el nombre es Coder
echo(" Hombre $nombre! Ya estás cotilleando por aquí otra vez!"); // Saludo para Coder
}
?>
</body>
</html>


NOTA: Cuidado con el operador ==, es importante recordar que hay que utilizar un doble signo igual. Si utilizas sólo “=”, estarás utilizando el operador de asignación, es decir estableciendo que $nombre es igual a Coder con lo que la condición siempre sería cierta .
Las condiciones pueden complicarse mucho más, supongamos que queremos dejarte pasar sólo sí además de llamarte Coder, te sabes la contraseña, que en nuestro caso es “foros”:
                             

                                    Formulario:

<html>
<head>
<title> Ejemplo básico de If </title>
</head>
<body>


<form action="saludos.php" method="get">

¿Quién eres?<br />
<input type="text" name="nombre" /><br />
¿Y tu Contraseña?<br />
<input type="text" name="pass" />

<input type="submit" name="reset" value=" Enviar " />
</form>
</body>
</html>
saludos.php
<html>
<head>
<title> Ejemplo básico de If </title>
</head>
<body>
<h1> Página de bienvenida</h1>
<?php // Empieza el código php
if ($nombre=="Coder" and $pass =="foros") {
// Si el nombre es Coder y la contraseña foros
echo(" Hombre $nombre! Ya estás cotilleando por aquí otra vez!"); // saludo especial
}else {
echo("ahhhhhhhhhhh como no te sabes el nombre y la contraseña, no puedes pasar"); // saludo para los demás
}
?>
</body>
</html>
Además tenemos la instrucción elseif, que como su nombre indica, es una combinación de if y else. Añade una nueva condición en el caso de que la primera fuera falsa y sólo ejecuta las instrucciones si esta nueva condición es verdadera. Es decir,
Veamos un ejemplo:
if ($a > $b) {
// Ejecuta esto si a es Mayor que b
echo("a es mayor que  b");


} elseif ($a == $b) {
// si a no es mayor que be, comprueba si a es igual a b
echo("a es igual que  b");
} else {
// si no se cumplen las anteriores condiciones ejecuta ésta
echo ("a es menor  que b");
}
2- Bucles: While
If else nos permitía decidir si queríamos ejecutar o no una instrucción en función de una condición, los bucles nos permiten utilizar una condición para determinar cuantas veces queremos ejecutar una instrucción.:
While (condicion) {


// Instrucciones a ejecutar una y otra
//vez mientras la condición sea cierta
}
El funcionamiento es muy parecido al del if-else, la diferencia estriba en que si la condición es cierta y se ejecuta la orden, la condición vuelve a comprobarse una y otra vez mientras siga siendo cierta. En cambio en el cambio del if-else sólo se comprueba la condición una vez, si es cierta se ejecuta la instrucción y se sigue con el programa.
Veamos un ejemplo:
$cantidad = 1;
while ($cantidad < 10) {
echo ("$cantidad ");
$cantidad++;
}
Esto traducido a castellano sería:
$cantidad = 1; $cantidad es igual a uno
while ($cantidad < 10) Mientras el valor de la variable $cantidad sea menor que 10
echo (“$cantidad “); Escribe el valor de cantidad
$cantidad++ (suma 1 al valor que tenga $cantidad, también podríamos haber escrito $cantidad = $cantidad +1)
Veamos como funciona el script paso a paso,
$Cantidad es igual a 1
1 es menor que 10
Escribo 1 en pantalla
$cantidad = 2 (1+1)
2 es menor que 10
Escribo 2 en pantalla
$cantidad = 3 (2+1)…
Si ejecutamos este script, en pantalla veríamos 1 2 3 4 5 6 7 8 9
3- Bucles: do While
Los bucles do while, son muy parecidos a los bucles while, sólo que comprobamos si la condición es cierta al final del bucle en lugar de al principio. Así nuestras instrucciones se ejecutan siempre al menos una vez, lo que no ocurre en las condiciones while si la condición es falsa.
$cantidad = 1;
do {
echo ($cantidad);
} while ($cantidad<1);
Traducido sería
$cantidad = 1
do ( // ejecuta
echo ($cantidad); escribe el valor de cantidad
while ($cantidad<1); mientras cantidad sea mayor que 1 -> la condición es falsa luego el programa sale del bucle, pero ha escrito una vez el valor de $cantidad. El resultado en pantalla sería 1
4- Bucles: for
Los bucles for funcionan exactamente igual que en C . Con una sola instrucción controlamos todo el bucle, así que para los vaguetes está muy bien.
for (valor inicial; condicion; ejecutar en cada blucle) {


// Instrucciones a ejecutar mientras la condición sea cierta
}
Ejemplo
for ($cantidad = 1; $cantidad <10; $i++) {
echo("$cantidad");
}
Traducido es igual a:
Cantidad es igual a 1, mientras cantidad sea menor que 10 escribe cantidad en pantalla y después súmale 1 al valor de cantidad. Es decir, es exactamente el mismo ejemplo que vimos en el bucle while pero de otra manera.
4- Swich/case
Nos permite ejecutar un bloque de código u otro dependiendo del valor de una variable. Veamos un ejemplo.
Primero para asignar un valor a la variable, vamos a hacernos un formulario:
<html>
<head>
<title> Ejemplo de switch </title>
</head>
<body>
<form action="switch.php" method="get">

¿Quién eres?<br />

<input type="radio" name="quien" value="cgus" /> cgus<br />
<input type="radio" name="quien" value="xela" /> xela<br />
<input type="radio" name="quien" value="adanedhel" /> adanedhel<br />
<input type="radio" name="quien" value="jorgito" /> jorgito<br />
<input type="submit" name="reset" value=" Enviar " />
</form>
</body>
</html>
Switch.php
<html>
<head>
<title>Ejemplo de Swich</title>
</head>
<?php

switch($quien) {
case "cgus": // Primera posibilidad

echo (" $quien es todo un leader ");
break;
case "adanedhel": // segunda posibilidad
echo ("$quien es un elfo");
break;
case "xela": // tercera posibilidad
echo ("$quien es normal");
break;
default: // Posiblidad si no es ninguna de las anteriores
echo ("$quien es un desconocido");
}
?>
</body>
</html>
Tenéis más información sobre las estructuras de control en el manual de php
Sintaxis alternativa
PHP ofrece una sintaxis alternativa para alguna de sus estructuras de control; a saber, if, while, for, y switch. Puede hace el código más legible en algunos casos, especialmente en las páginas multiuso que vamos a ver a continuación:
If con construcción alternativa
<?php if ($a==5): ?>
A es igual a 5
<?php endif; ?>
if con elseif y else en el formato alternativo:

if ($a == 5):
print "a es igual a 5";
print "...";
elseif ($a == 6):
print "a es igual a 6";
print "!!!";
else:
print 
“a no es ni 5 ni 6”;
endif;
While utilizando la construcción alternativa
$i = 1;
while ($i <= 10):
print $i;
$i++;
endwhile;
For con la construcción alternativa
for (expr1; expr2; expr3): sentencia; ...; endfor;
Páginas Multiuso
Páginas multiuso son aquellas que pueden mostrar un contenido completamente diferente dependiendo de alguna condición. De esta forma, podemos hacer varias cosas en un solo documento.
La estructura habitual de una página multiuso es:
<html>
<head>
<title> Página Multiusos </title>
</head>
<body>


<php?
If (condición) { ?>
<!-- HTML que se mostará si la condición es cierta -->
<?php }else{ ?>
<!-- html que se mostratará si la condición es falsa -->
<?php } ?>

</body>
</html>

O utilizando la sintaxis alternativa que acabamos de ver:

<html>
<head>
<title> Página Multiusos </title>
</head>
<body>

<php?
if (condición): ?>
<!-- HTML que se mostará si la condición es cierta -->
<?php else: ?>
<!-- html que se mostratará si la condición es falsa -->
<?php endif; ?>

</body>
</html>
Esto puede parecer un poco confuso. Pero es precisamente una de las características que están haciendo muy popular al PHP: su capacidad de pasar de php a html en cualquier momento y todas las veces que sea necesario.
Ejemplo
Para nuestro ejemplo vamos a utilizar el ejemplo que vimos para switch y utilizar una sola página (multiuso.php) para el formulario y las respuestas en lugar de las dos que teníamos antes
<html>
<head>
<title> Página Multiusos </title>
</head>
<body>
<?php
if (!isset($quien)): ?>


<html>
<head>
<title> Ejemplo de switch </title>
</head>
<body>

<form action="multiuso1.php" method="get">

¿Quién eres?<br />

<input type="radio" name="quien" value="cgus" /> cgus<br />
<input type="radio" name="quien" value="xela" /> xela<br />
<input type="radio" name="quien" value="adanedhel" /> adanedhel<br />
<input type="radio" name="quien" value="jorgito" /> jorgito<br />
<input type="submit" name="reset" value=" Enviar " />
</form>
</body>
</html>

<?php else:

switch($quien) {
case "cgus": // Primera posibilidad

echo (" $quien es todo un leader ");
break;
case "adanedhel": // segunda posibilidad
echo ("$quien es un elfo");
break;
case "xela": // tercera posibilidad
echo ("$quien es un normal");
break;
default: // Posiblidad si no es ninguna de las anteriores
echo ("$quien es un desconocido");
}

endif;
?>
</body>
</html>



                             EXPLICACION DE ALGORITMO



     





No hay comentarios:

Publicar un comentario