810 likes | 1.6k Views
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.
E N D
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 Un algoritmo es un conjunto ordenado y finito de instrucciones que conducen a la solución de un problema. ALGORITMO COMPUTACIONAL Si un algoritmo puede ser ejecutado por una computadora PROBLEMA ALGORITMO PROGRAMA PROGRAMA 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
CARACTERISTICAS DEL ALGORITMO • 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.
PASOS PARA CREAR UN BUEN ALGORITMO ( Análisis Descendente ) • Descomposición del problema en subproblemas más simples. • Combinando las estructuras algorítmicas básicas, resolver cada subproblema. • Ensamblar las soluciones de cada subproblema. VENTAJAS • Reutilizar algoritmos existentes. • Permite lo que se conoce como programación modular
PARTES DE UN ALGORITMO • Entrada de datos. • Proceso. • Salida de resultados. ENTRADA PROCESO SALIDA
Algoritmo: Expresar en centímetros y pulgadas una cantidad dada en metros. 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 computacional escrito en lenguaje natural
PSEUDOCODIGO 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. 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 Algoritmo: Halle el área y el perímetro de un rectángulo.
ESTRUCTURAS ALGORITMICAS • Secuencia: Sucesión simple de dos o mas acciones, una después de la otra, en el mismo orden en que aparecen. • 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 • Iteración: Estructura HACER-MIENTRAS-QUE, corresponde a la ejecución repetida de una instrucción mientras que se cumple una determinada condición. REPRESENTACION GRAFICA SECUENCIA SELECCION ITERACION
PROGRAMACION ESTRUCTURADA 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. 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"
PASOS EN LA PROGRAMACION • 1.- 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 validez • 1.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 validez • 1.c-Procesamiento especial • - Verificar y procesar ciertas condiciones que podrían llevar a error o que requieran un procesamiento especial.
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
PASOS EN LA PROGRAMACION 4.- Codificación Es el Proceso de traducir los algoritmos a un lenguaje de programación. 5.- Eliminación de Errores Debemos ubicar y corregir los inevitables errores. 6.- Prueba y validación Resultados correctos, en todos los posibles casos. 7.- Documentación Documentación técnica, manuales, ayuda referente al programa y su funcionamiento.
PROGRAMACION Serie completa de pasos involucrados en la resolución de un problema utilizando el computador CODIFICACION Se refiere al proceso de escribir instrucciones en un lenguaje de programación particular.
Estructura Secuencial Una 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. Diagrama de Flujo Pseudo código Inicio …. acción 1 acción 2 acción 3 … Fin
Algoritmo: Expresar en centímetros y pulgadas una cantidad dada en metros. 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 computacional escrito en lenguaje natural
PSEUDOCODIGO Es un lenguaje de pseudo programación utilizado para escribir algoritmos computacionales. 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 Algoritmo: Halle el área y el perímetro de un rectángulo.
Variables Una 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
Variables 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 edad REAL 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
Instrucciones Algorítmicas Básicas 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
INICIO // Declaración de variables de entrada // Precondición: base y altura deben ser mayor que ceroREAL base, altura // Declaración de variables de salida REAL 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 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).
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.
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
Lenguaje C - Cuerpo principal 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 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 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 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 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 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 - Imprimir en pantalla 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" ); "\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 \\ \”
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 NUMERO buffer BuffeR a1 J10hola29 num_alumnos 1ab nombre? num/alumnos main VALIDOS minúsculas y mayúsculas son diferentes en C ‘ case sensitive ‘ INVALIDOS No se pueden usar las palabras reservadas de C
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.
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);
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;
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
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); }
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.
Lenguaje C - Variables Leer valores de variables: 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); 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
PROGRAMACION ESTRUCTURADA • 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.