Definición de Algoritmo. Características de los algoritmos. Análisis Descendente.

38
• Definición de Algoritmo. • Características de los algoritmos. • Análisis Descendente. • Estructuras Algorítmicas. • Programación estructurada • Pasos de la Programación. • Codificación vs. Programación. TEORIA

description

CI2125 TEORIA semana 2. Definición de Algoritmo. Características de los algoritmos. Análisis Descendente. Estructuras Algorítmicas. Programación estructurada Pasos de la Programación. Codificación vs. Programación. ALGORITMO. - PowerPoint PPT Presentation

Transcript of Definición de Algoritmo. Características de los algoritmos. Análisis Descendente.

Page 1: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

• Definición de Algoritmo.

• Características de los algoritmos.

• Análisis Descendente.

• Estructuras Algorítmicas.

• Programación estructurada

• Pasos de la Programación.

• Codificación vs. Programación.

CI2125 TEORIA semana 2

Page 2: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Un algoritmo es un conjunto ordenado y finito de instrucciones que conducen a la solución de un problema.

ALGORITMO

Un programa es la implementación o expresión de un algoritmo en un determinado lenguaje de programación siguiendo las reglas establecidas por el lenguaje elegido

PROGRAMA

Si un algoritmo puede ser ejecutado por una computadora

ALGORITMO COMPUTACIONAL

PROBLEMA ALGORITMO PROGRAMA

Page 3: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

• Debe ser preciso, es decir, cada instrucción debe indicar de forma inequívoca que se tiene que hacer.

• Debe ser finito, es decir, debe tener un número limitado de pasos.

• Debe ser definido, es decir, debe producir los mismos resultados para las mismas condiciones de entrada.

CARACTERISTICAS DEL ALGORITMO

Page 4: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

1.Descomposición del problema en subproblemas más simples.

2.Combinando las estructuras algorítmicas básicas, resolver cada subproblema.

3.Ensamblar las soluciones de cada subproblema.

PASOS PARA CREAR UN BUEN ALGORITMO ( Análisis Descendente )

VENTAJAS• Reutilizar algoritmos existentes.• Permite lo que se conoce como programación

modular

Page 5: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

• Entrada de datos.

• Proceso.

• Salida de resultados.

PARTES DE UN ALGORITMO

ENTRADA PROCESO SALIDA

Page 6: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

 Entrada:

       La cantidad M de metros

  Proceso:

       Cálculo de centímetros  : C = M*100        Cálculo de pulgadas     : P = C/2.54  

  Salida :

       La cantidad C de centímetros y la cantidad P de pulgadas

Algoritmo: Expresar en centímetros y pulgadas una cantidad dada en metros.

algoritmo computacional escrito en lenguaje natural

Page 7: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Es un lenguaje de pseudoprogramación utilizado para escribir algoritmos computacionales. El pseudocódigo es una imitación de uno o más lenguajes de programación, conservando lo básico del Leng natural.No hay estándares.

PSEUDOCODIGO

Algoritmo: Halle el área y el perímetro de un rectángulo.

INICIO    // Declaración de variables     REAL base, altura, area, perimetro

    // Entrada de datos     LEER base, altura 

    // Proceso de cálculo     area = base*altura    perimetro = 2*(base+altura)

    // Salida de resultados     IMPRIMIR area, perimetroFIN  

Page 8: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

1. Secuencia: Sucesión simple de dos o mas acciones, una después de la otra, en el mismo orden en que aparecen.

2. Selección: Estructura SI-CIERTO-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

3. Iteración: Estructura HACER-MIENTRAS-QUE, corresponde a la ejecución repetida de una instrucción mientras que se cumple una determinada condición.

ESTRUCTURAS ALGORITMICAS

REPRESENTACION GRAFICA

SECUENCIA SELECCION ITERACION

Page 9: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

EL Teorema de la Programación estructurada, demostrado por Edsger Dijkstra (1930-2002) en los años sesenta, demuestra que todo programa puede escribirse utilizando únicamente las tres instrucciones LOGICAS de control : SECUENCIA, SELECCIÓN E ITERACION.

PROGRAMACION ESTRUCTURADA

Un programa estructurado se compone de funciones, segmentos, módulos y/o subrutinas, cada una con una sola entrada y una sola salida., y en ejecución no tiene partes por las cuales nunca pasa, ni tiene ciclos infinitos.

"programación sin GOTO""programación sin GOTO"

Page 10: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

PASOS EN LA PROGRAMACION1.- Definición del problema

El problema debe estar bien definido, y deben eliminarse las ambigüedades y la incertidumbre.

1.a.- Especificación de entradas - Descripción de los datos de entrada del programa: - Valores específicos de entrada, Formato, Rango de validez1.b.- Especificación de salidas - Descripción de los datos de salida del programa: - Valores que deben ser producidos: Formato: precisión, cifras significativas, ubicación en la pantalla, Rango de validez1.c- Procesamiento especial - Verificar y procesar ciertas condiciones que podrían llevar a error o que requieran un procesamiento especial.

Page 11: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

PASOS EN LA PROGRAMACION

2.- Esquema de la solución

Un programa no se compone de una única tarea, sino de varias tareas interrelacionadas. Hay que descomponer un problema en sub-partes y hacer un esquema de la solución.

3.- Selección y Representación de Algoritmos

Seleccionar los algoritmos que resolverán las sub-tareas que conforman el programa

Page 12: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

PASOS EN LA PROGRAMACION4.- CodificaciónEs el Proceso de traducir los algoritmos a un lenguaje de programación.

5.- Eliminación de ErroresDebemos ubicar y corregir los inevitables errores.

6.- Prueba y validaciónResultados correctos, en todos los posibles casos.

7.- DocumentaciónDocumentación técnica, manuales, ayuda referente al programa y su funcionamiento.

Page 13: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

PROGRAMACION

CODIFICACION

Serie completa de pasos involucrados en la resolución de un problema utilizando el computador

Se refiere al proceso de escribir instrucciones en un lenguaje de programación particular.

Page 14: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Estructura SecuencialUna estructura secuencial es aquella en la que las

instrucciones están una a continuación de la otra siguiendo una secuencia única, sin cambios de ruta.

La estructura secuencial tiene una entrada y una salida. 

Inicio …. acción 1 acción 2 acción 3 …Fin

Diagrama de Flujo Pseudo código

Page 15: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Entrada: metros, Pre-cond: numero real positivo

       La cantidad M de metros Proceso:

Cálculo de centímetros: C = M*100 Cálculo de pulgadas: P = C/2.54  

Salida : Post-cond: valores reales positivos

       La cantidad C de centímetros y la cantidad P de pulgadas

Algoritmo: Expresar en centímetros y pulgadas una cantidad dada en metros.

algoritmo computacional escrito en lenguaje natural

Page 16: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Es un lenguaje de pseudo programación utilizado para escribir algoritmos computacionales.

PSEUDOCODIGO

Algoritmo: Halle el área y el perímetro de un rectángulo.

INICIO    // Declaración de variables // variables de entrada    REAL base, altura // variables de proceso y salida REAL area, perimetro

    // Entrada de datos Pre: reales positivos     LEER base, altura 

    // Proceso de cálculo     area = base*altura    perimetro = 2*(base+altura)

    // Salida de resultados Post: reales    IMPRIMIR area, perimetroFIN  

Page 17: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

VariablesUna variable es una localización o casillero en la memoria principal

que almacena un valor Para almacenar un dato, se necesita una variable.

Partes de una variable: nombre, tipo y valor.

Las variables deben ser declaradas antes de asignarles un valor. Declaración de una variable:

tipo nombre

Declaración de varias variables con el mismo tipo de dato:

tipo nombre1, nombre2, nombre3, ..., nombren

Tipo puede ser: ENTERO, REAL, CARÁCTER, CADENA o LOGICO

Page 18: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Nombre: El nombre de una variable debe comenzar con una letra, puede tener números y el símbolo _ .

EJEMPLOS: Declaración de variables

ENTERO edadREAL descuento

Esto crea los casilleros de memoria edad y descuento.

edad descuento

ENTERO nota_1, nota_2, nota_3

Esto crea los casilleros de memoria nota_1, nota_2 y nota_3.

nota_1 nota_2 nota_3

Variables

Page 19: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

3. Asignación:Asignar a una variable el valor de una expresión. La expresión

puede ser una simple variable, un simple literal o una combinación de variables, literales y operadores

variable = expresión

La variable y el valor de expresión deben tener el mismo tipo de dato.

Cuando se asigna un valor ENTERO a una variable REAL, entonces el valor ENTERO se convertirá en REAL antes de almacenarse.

Ej: REAL metro, centimetro LEER metro

centimetro = metro * 100 // asignación, Valor de la variable

Instrucciones Algorítmicas Básicas

Page 20: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Ejemplo: Diseñe un pseudo código que halle el área y el perímetro de un rectángulo. Usando valores dados de la base y la altura

Considere que: area = base x altura ; perimetro = 2 x (base+altura). 

INICIO     // Declaración de variables de entrada

// Precondición: base y altura deben ser mayor que cero     REAL base, altura

// Declaración de variables de salidaREAL area, perimetro

    // Entrada de datos      LEER base, altura      // Proceso de cálculo     area = base*altura    perimetro = 2*(base+altura)     // Salida de resultados     IMPRIMIR area, perimetro FIN    

Page 21: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Como es todo esto en el Lenguaje C ??

El lenguaje de programación C, tiene una sintaxis particular para definir variables, literales, instrucciones básicas de entrada, salida y asignación, y operaciones aritméticas y lógicas

Esta sintaxis debe ser correcta, de otra manera el compilador del lenguaje no creara el código binario ejecutable para el computador.

Page 22: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Lenguaje C Imprimir en pantalla

Para imprimir se usa la función

printf(“ Hola Mundo “);

Entre las comillas es lo que vamos a sacar por pantalla. Para utilizar la función printf en nuestros programas debemos incluir la directiva:

#include <stdio.h>

Al principio del programa

Page 23: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

El primer programa:

#include <stdio.h> void main() {

/* Aquí va el cuerpo del programa */ printf(“ Hola Mundo “);

}

Este programa lo único que hace es sacar por “Consola” el mensaje:

Hola Mundo

Lenguaje C - Cuerpo principal

Page 24: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Explicación:#include es una directiva. Sirve para indicar al compilador que incluya

otro archivo (stdio.h, standard input-output). Este archivo contiene declaraciones de funciones que el programa necesita usar, en particular, contiene la declaración de la función printf.

Todos los programas de C deben tener una función llamada main, Las llaves { indican el Inicio de la función, /* xxx */, es un comentario, no se ejecuta

La función printf muestra un mensaje por la pantalla.una cadena de caracteres van encerradas entre dobles comillas “”El símbolo \n indica un cambio de línea. C requiere un punto y coma al final de cada sentencia (;) } Finaliza la función main,.

Lenguaje C - Cuerpo principal

Page 25: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Librerías o bibliotecas:En el estándar C se definen un conjunto de librerías de

funciones, que satisfacen servicios elementales.

Las interfaces a estos servicios se definen en unos archivos cabeceras ( header files ) que terminan en .h

Algunos de los servicios proporcionados por las bibliotecas estándares son:

• entrada y salida de datos (stdio.h) • manejo de cadenas (string.h) • memoria dinámica (stdlib.h) • rutinas matemáticas (math.h)

Ejemplo: #include <stdio.h>

Lenguaje C - Cuerpo principal

Page 26: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Comentarios

• En el C original, tienen la forma /* cualquier texto */

• Los comentarios se pueden extender varias líneas

• No se pueden anidar comentarios (comentarios dentro de otros)

Ejemplos:

{ /* Esto es un comentario que ocupa varias líneas */ /* esto es otro comentario */ /* este no es /* valido */ en C */

}

Lenguaje C - Cuerpo principal

Page 27: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Ejercicio: Busca los errores en este programa: void main() { /* Aquí va el cuerpo del programa */ Printf( "Hola mundo\n" );

}

…C es “case sensitive”,… archivo cabecera “stdio.h”

Lenguaje C - Cuerpo principal

Page 28: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Al compilar:

ERROR: que nos indicará que no hemos definido la función Printf

SOLUCION: incluir la librería stdio.h #include <stdio.h>

ERROR: nos dice que desconoce Printf.SOLUCION: C es “case sensitive”, debe ser en minúscula,

osea, printf

Lenguaje C - Cuerpo principal

Page 29: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Lenguaje C - Imprimir en pantalla

"\n". Es el indicador de retorno de carro. Lo que hace es saltar el cursor de escritura a la línea siguiente.

la contrabarra '\' sirve para indicarle al compilador que escriba caracteres que de otra forma no podríamos, como “, como la misma \, y caracteres especiales como ‘n’ (newcarrie), Ej: \n \\ \”

printf( "Cadena\n" ); printf( "Segunda\n" ); printf( "Primera cadena" "Segunda cadena" ); printf( "Primera texto en medio Segunda \n" ); printf( "Esto es \"importante\"\n" ); printf( "Hola\\Adios\n" );

Page 30: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Lenguaje C - Variables Nombres:No se pueden poner más que letras de la 'a' a la 'z' (la ñ no vale), números y el símbolo '_'. No se pueden poner signos de admiración, ni de interrogación... El nombre de una variable comienza con letra.

Camiones camiones Numero NUMERObuffer BuffeRa1J10hola29num_alumnos

1abnombre?num/alumnos main

VALIDOSminúsculas y mayúsculas

son diferentes en C‘ case sensitive ‘

INVALIDOSNo se pueden usar las

palabras reservadas de C

Page 31: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Lenguaje C - Variables Tipos de datos básicos:

C provee 4 tipos de datos básicos para almacenar caracteres, números reales y números enteros.

Tipo Bytes de almacenamiento Rango

char 1 -128 a 127

int 2 32768 a 32767

float 4 3'4 E-38 a 3'4 E+38

double 8 1'7 E-308 a 1'7 E+308

Page 32: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Lenguaje C - Asignación con =Se usa el símbolo = para asignar el valor de una expresión a una variable.

variable = expresion

Ej: /* declaración de las variables */int n, m; /* n y m son de tipo entero */float x, y; /* x y y son de tipo real */

/* distintos ejemplos de asignación */ n = 3 * m + 2;

x = 20.4;y = (x+1)*20 / (18.9 – x);

Page 33: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Lenguaje C - Variables Tipos de datos básicos:C permite asignar un valor a las variables al momento de su declaración.

char Para almacenar caracteres. Ejemplos:

char firstInitial = 'J';char secondInitial = 'K';

int Para almacenar números enteros. Ejemplos:

int count;int number_of_students = 30;

float y double Para almacenar números reales. Los números reales contienen una parte entera y una decimal. La diferencia entre float y double está en el número de bytes empleados para almacenar la variable. Double permite valores mas grandes que float.

float owned = 0.0;double owed = 2.9979e+45, d = 1.3456e-45;

Page 34: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Lenguaje C - Variables Imprimir valores de variables: La rutina printf permite la aparición de valores numéricos, caracteres y cadenas de texto por pantalla.

printf( control, arg1, arg2... );Cuando se usan argumentos debe indicarse en la cadena de control tantos modificadores como argumentos se quieran presentar.

Los modificadores más utilizados son:

%c Un único carácter, %i Un entero

%d Un entero con signo, en base decimal %u Un entero sin signo, en base decimal, %e Un número real en coma flotante, con exponente %f Un número real en coma flotante, sin exponente %s Una cadena de caracteres

Page 35: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Lenguaje C - Variables Imprimir valores de variables con ‘printf’Ejemplo:

#include <stdio.h>

void main(){ char InicialAp = ‘J’; int m = 2; float x = 2.3; double num_grande; num_grande = 2.9979e+120; printf(“Mi Inicial es %c \n”,InicialAp); printf(“Entero m es %i \n”,m); printf(“Real x es %f y double es %e \n”,x, num_grande);}

Page 36: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Lenguaje C - Variables Leer valores de variables: La rutina scanf permite leer valores numéricos, caracteres y cadenas de texto del teclado. El prototipo de la función scanf es:

scanf( control, arg1, arg2... );

Ej: int Edad; printf("Introduzca la Edad:"); scanf("%d", &Edad);

    Los modificadores del control estarán formados por el caracter % seguido de un caracter de conversión. Los argumentos indicados serán, nuevamente, las variables.

     La principal característica de la instrucción scanf es que necesita saber la dirección de memoria en que se encuentra la variable para poder almacenar la información obtenida. Para indicarle esta posición utilizaremos el símbolo ampersand ( & ), que colocaremos delante del nombre de cada variable.

Page 37: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

Lenguaje C - Variables Leer valores de variables:

Los modificadores más utilizados son:

%c Un único carácter, %i Un entero

%d Un entero con signo, en base decimal %u Un entero sin signo, en base decimal, %e Un número real en coma flotante, con exponente %f Un número real en coma flotante, sin exponente %s Una cadena de caracteres

Cuando se usan varios argumentos o variables, debe indicarse en la cadena de control tantos modificadores como argumentos se quieran leer.Ej: int Edad, sexo; float salario; printf("Introduzca la Edad, sexo y salario \n"); scanf("%d %c %f", &Edad, &sexo, &salario);

Page 38: Definición de Algoritmo.  Características de los algoritmos.   Análisis Descendente.

VENTAJAS

• Los programas son más fáciles de entender.

• Reducción del esfuerzo en las pruebas.

• Reducción de los costos de mantenimiento.

• Programas más sencillos y más rápidos.

• Aumento en la productividad del programador.

• Los programas quedan mejor documentados.

PROGRAMACION ESTRUCTURADA