TEMA 2. CONCEPTOS BÁSICOS DE ALGORÍTMICA



Documentos relacionados
Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Titulo de hoy 25/09/2017 COLEGIO SAN ANTONIO MARIA CLARET 1

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Conceptos. Generales ALGORITMOS

TEMA 1: Algoritmos y programas

TEMA 1. PROGRAMACIÓN DE UN COMPUTADOR

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Introducción a la programación: Contenido. Introducción

Tema 2 Introducción a la Programación en C.

Programación de Ordenadores

Prof. María Alejandra Quintero. Informática Año

INICIACIÓN A LA PROGRAMACIÓN 1ª parte

Tema 5. Soporte lógico de computadoras.

La resolución de problemas es una tarea únicamente humana comprobable en todos los casos con los mismos resultados.

La resolución de un problema

Universidad Autónoma del Estado de México Facultad de Medicina

Introducción a la Algorítmica Transparencias correspondientes a las clases impartidas por los profesores: Lourdes Miró Amarante Ignacio García Vargas

Acción que el procesador puede ejecutar sin necesidad de información suplementaria

TEMA 3: El proceso de compilación, del código fuente al código máquina

Fundamentos de programación. Organización de una computadora

Algoritmo. Programa. Lenguaje algorítmico

Principios de Algoritmia

Tema: Introducción a la Programación Estructurada

Técnicas de Programación

INSTITUTO NACIONAL SUPERIOR DEL PROFESORADO TÉCNICO - TÉCNICO SUPERIOR EN INFORMÁTICA APLICADA - PROGRAMACIÓN I

Capítulo 3 CICLO DE VIDA DE UN PROGRAMA. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Instituto José Manuel Estrada - Villa de Soto. Asignatura: Desarrollo de Soluciones Informáticas. Curso: 5to I. Docente: Contreras, María Elena

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

PRESENTACIÓN DEL ALGORITMO

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

ALGORITMO. Podemos encontrar muchas definiciones de algoritmo en los textos de programación, todas ellas muy similares:

FUNDAMENTOS DE PROGRAMACIÓN. Algoritmos y Programas

Computación I (CI-2125) Clase 3. Prof. Mireya Morales Primera

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.

Tema 5. Diagramas de flujo. Computacion - FA.CE.NA.

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

2.1 METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS

Programación Estructurada

Lenguaje de Diseño. Primera Parte. Resolución de Problemas y Algoritmos. Primer Cuatrimestre Ing. En Informática e Ing.

Programación Estructurada. Sesión 4:Estructuras de control

Introduccion a la Programacion. Pablo Sevilla Jarquin

RECORDAR TIPOS DE DATOS

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo:

Tema 2. Concepto de Algoritmo

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Sentencias iterativas

Iniciación a La Programación Prof. Carolina Cols

Dobles: Es el caso de la instrucción if-else (punto 1.2).

TEMA 4: ALGORITMOS Y PROGRAMAS

b) Diagrama de flujo La representación del algoritmo mediante la utilización de un diagrama de flujo sería como el que se muestra:

DISEÑO ESTRUCTURADO USANDO HERRAMIENTAS DE

GUÍA DE TRABAJO Tecnología en Sistemas de Información

INSTITUTO SUPERIOR DE EDUCACION RURAL ISER FUNDAMENTOS DE PROGRAMACION

Lenguaje de Diseño. Primera Parte. Segundo Cuatrimestre 2017

Introducción a la programación: Algoritmos

ETAPA Cómo se llaman los profesionales que escriben el código de los programas? Programadores.

CIF 2452 Fundamentos de Programación

ESTRUCTURAS DE CONTROL

Lenguajes de programación

FACULTAD DE INGENIERIA

INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION

Unidad III: Introducción a la Programación

CIENCIA DE LA COMPUTACION

Guía práctica de estudio 05: Pseudocódigo

Introducción a la programación

Unidad II: Análisis semántico

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Introducción a la programación

El pseudocódigo es una herramienta de programación en la que las instrucciones se escriben en palabras similares al inglés o español, que facilitan

Leer el pedido. Examinar ficha del cliente. Si el cliente es solvente aceptar pedido, en caso contrario rechazar pedido.

Este método de diseño de algoritmos en etapas, yendo de los conceptos generales a los de detalle, se conoce como método descendente (top-down).

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

Pseudocódigo. La forma en que se escribe un pseudocódigo es la siguiente:

Contenidos: Definiciones:

Lógica de programación 1

Guía práctica de estudio 06: Estructuras de repetición

Un diagrama de flujo es un dibujo que utiliza símbolos estándar de diagramación de algoritmos para computadora, en el que cada paso del algoritmo se

Objetivo específico: Maneja los elementos básicos de algoritmos utilizados para resolver un problema por computadora.

Lenguajes y Compiladores Introducción. Compiladores 1

INSTITUTO TECNOLÓGICO

Tema 2. Algoritmos y Programas. Informática Grado en Física

Tipos De Datos. Numéricos. Alfanuméricos (string) Arreglos (Vectores, Matrices) Estructurados Registros (Def. Por el Archivos Usuario) Apuntadores

Introducción a la programación

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

Transcripción:

TEMA 2. CONCEPTOS BÁSICOS DE ALGORÍTMICA 2.1 Deición de Algoritmo Un algoritmo es una secuencia precisa de operaciones (pasos) que resuelven un problema en un tiempo ito. Solución(problema) ALGORITMO(Solución(problema)) Pasos para la resolución de un problema: Los algoritmos son independientes del lenguaje de programación y del ordenador que los ejecuta. Se pueden expresar en multitud de lenguajes y ejecutarse en ordenadores distintos. 2.1.1 Propiedades de los algoritmos a) Siempre debe terminar. b) Debe contener instrucciones concretas, sin ninguna ambigüedad. c) Todos sus pasos deben ser simples y tener un orden deido. d) Debe funcionar sean cuales sean los datos de entrada. e) Debe ser eficiente y rápido Hay que Optimizar Para un problema existen múltiples soluciones, y debemos escoger aquella que consuma menos tiempo y recursos. f) Es independiente de la máquina y del lenguaje de programación que se vaya a utilizar. Un algoritmo puede implementarse (escribirse) en cualquier lenguaje de programación. Página 1 de 16

2.2 Qué es un programa? Un programa es la expresión (transcripción) de un algoritmo en un lenguaje de programación, capaz de ser procesado por un ordenador tras su compilación y linkado y que controla el funcionamiento de un ordenador a la hora de resolver un problema. ALGORITMO + PROGRAMA LENGUAJE DE PROGRAMACIÓN 2.2.1 Cómo se construye un programa. El proceso de elaboración de un programa, conlleva varias etapas: Análisis Diseño Codificación Pruebas Documentación y Mantenimiento Fase de Análisis: decidir qué es lo que tenemos que hacer. Fase de Diseño (desarrollo de la solución): se dee cómo vamos a hacerlo. Obtención del Algoritmo Se utilizará el Diseño Descendente o TOP-DOWN: Un problema complejo se resuelve dividiendo el problema en subproblemas, y así sucesivamente hasta que la resolución de cada subproblema sea fácilmente programable. Fase de Codificación: Implementación del Algoritmo en el lenguaje de programación más adecuado Obtención del Programa Fase de Pruebas: No basta que el programa esté terminado Hay que comprobar que el programa NO falla y funciona perfectamente en todos los casos posibles que se puedan presentar. Fase de Documentación y Mantenimiento: Se elabora la documentación del programa, y se realizan las actualizaciones oportunas que se vayan necesitando. Página 2 de 16

TODAS ESTAS FASES HAY QUE REALIZARLAS CON SUMO CUIDADO, PUESTO QUE UN ERROR EN UNA DE ELLAS, PUEDE CONLLEVAR LA VUELTA ATRÁS EN TODO EL PROCESO. Resumen: Proceso de creación de un programa Planteamiento del problema a resolver. Antes de nada debemos conocer perfectamente el problema y los resultados a obtener. Representación de los datos. Escoger los tipos de datos a usar. Diseño de un algoritmo. Comprobación y optimización de algoritmos. Debemos asegurarnos que el algoritmo realiza la tarea correctamente. Codificación del programa. Debemos transcribir el algoritmo a un lenguaje de programación concreto para que pueda ser utilizado. Depuración del programa. El programa debe estar libre de errores. Documentación del programa. 2.3 Deición y uso de herramientas para describir soluciones Para representar los algoritmos existen dos métodos principales: El pseudocódigo El diagrama de flujo. Mientras que el pseudocódigo permite enunciar el algoritmo, los diagramas de flujo (organigramas) permiten visualizarlo de forma gráfica. 2.3.1 Diagramas de flujo (organigrama) Es una representación gráfica de un algoritmo mediante una serie de símbolos, que contienen en su interior los pasos del algoritmo, y unas flechas que los unen indicando la secuencia (orden) en la que se deben ejecutar. Los símbolos representan acciones y las flechas el flujo del algoritmo. La descripción de las funciones se puede realizar de forma narrativa, usando un lenguaje natural (conviene que sea parecido al pseudocódigo) Página 3 de 16

l No N=2 Si No N=1 Si Escribe PAR N = N - 2 Escribe Impar DFD para indicar si un número es Par o Impar. Página 4 de 16

2.3.2 El pseudocódigo El pseudocódigo es la representación narrativa (no hay reglas sintácticas estrictas) de un algoritmo, escrita en lenguaje natural utilizando las estructuras de control típicas de algún Lenguaje de Programación y algunos símbolos algebraicos. La utilización de pseudocódigo presenta las ventajas de ser más compacto que un organigrama, ser más fácil de escribir y ser más fácil de transcribir a un lenguaje de programación. Las estructuras de control deciden qué camino hay que seguir en función de una condición. Son las siguientes: 1. Estructura secuencial: consiste en colocar una instrucción tras otra, de manera que se van ejecutando de arriba abajo. 2. Estructura selectiva o condicional (si, ): permiten ejecutar un conjunto de instrucciones u otras en función de si se cumple o no una condición 3. Estructura iterativa o de repetición (mientras, repetir, para): permite repetir una instrucción o grupo de ellas un nº fijo de veces o mientras (o hasta que) una condición sea cierta. Estructura secuencial Pseudocódigo de un algoritmo que calcule la media de tres números: Leer (n1); Leer (n2); Leer (n3); suma = n1 + n2 + n3; media = suma / 3; escribir (media); El orden en el que se realizan las operaciones es importante: no puede calcularse la media sin antes haber leído los números. Página 5 de 16

Estructura selectiva o condicional El formato de esta estructura es el siguiente: si (se cumple la condición) conjunto de acciones; sino conjunto de acciones; Es decir, primero se examina la condición: si resulta verdadera, se ejecutan las acciones asociadas al si, en caso contrario se ejecutan las acciones asociadas al sino. La instrucción no es obligatoria en una estructura condicional (si no queremos hacer nada en caso que la condición sea falsa). Algoritmo que calcula la media de 3 nº y devuelve su raíz cuadrada. Leer (n1); Leer (n2); Leer (n3); suma = n1 + n2 + n3; media = suma / 3; Antes de hallar la raíz cuadrada hay si (media >= 0) que ver que la media no es negativa: raiz = RaizCuadrada (media); escribir (raiz); escribir ("No se puede hallar la raiz cuadrada"); Página 6 de 16

La estructura condicional permite anidar unas instrucciones en otras. Supongamos que queremos calcular la nota media de la siguiente forma: Si teoría >= 5 y practica < 5: media = 0.4 x teoría + 0.6 x práctica Si practica >= 5 y teoría < 5: media = 0.6 x teoría + 0.4 x práctica En cualquier otro caso se calculara su media normalmente. Leer (teoria); Leer (practica); si (teoria >= 5) si (practica < 5) media = 0.4 * teoria + 0.6 * practica; media = (teoria + practica) / 2; si (practica >= 5) media = 0.6 * teoria + 0.4 * practica; media = (teoria + practica) / 2; escribir("la media es ", media); Otra forma de resolverlo es usando el operador y en las condiciones. Este operador permite combinar dos condiciones de manera que solo será verdad si ambas condiciones se cumplen: Leer (teoria); Leer (practica); si (teoria >= 5 y practica < 5) media = 0.4 * teoria + 0.6 * practica; si (practica >= 5 y teoria < 5) media = 0.6 * teoria + 0.4 * practica; media = (teoria + practica) / 2; escribir("la media es ", media); Otra posible solución sería: Leer (teoria); Leer (practica); media = (teoria + practica) / 2; si (teoria >= 5) si (practica < 5) media = 0.4 * teoria + 0.6 * practica; si (practica >= 5) media = 0.6 * teoria + 0.4 * practica; escribir("la media es ", media); Página 7 de 16

Además del operador y también existe el operador o el cual permite ejecutar una acción determinada si se verifica una de las condiciones. Leer (edad); si (edad < 16 o edad >= 65) escribir("no puedes trabajar"); escribir("puedes trabajar"); Es decir, solo trabajan los que tengan 16 o más años y menos de 65. Estructura iterativa o de repetición. Esta estructura presenta una serie de variantes que permiten: Estructura mientras Esta estructura permite repetir un conjunto de instrucciones 0 o más veces, ya que la condición se verifica antes de entrar en el bucle. El formato de esta estructura es el siguiente: mientras (se cumpla la condición) conjunto de acciones; Es decir, primero se examina la condición: si resulta falsa, se pasa directamente a la instrucción que haya tras el, de manera que nos saltamos todas las instrucciones que haya dentro del bucle. Estructura repetir mientras Esta estructura evalúa la condición una vez realizada la acción. Por tanto, las instrucciones que están dentro se ejecutan al menos una vez. El formato de esta estructura es el siguiente: repetir conjunto de acciones; mientras (se cumpla la condición); Leer (edad); si (edad >= 16 y edad < 65) escribir("puedes trabajar"); escribir("no Puedes trabajar"); Página 8 de 16

Ej: algoritmo que lee por teclado unos números (hasta que introduzcamos un número negativo) y calcula su media. suma = 0 ; n = 0; escribir("dame un nº no negativo"); mientras (numero >= 0) suma = suma + numero; n = n + 1; escribir("dame un nº no negativo"); si (n > 0) media = suma / n; escribir("la media es ", media); escribir ("La media es 0"); leer (numero); leer (numero); Ej: Algoritmo anterior usando el repetir suma = 0; n = 0; repetir escribir("dame un nº no negativo"); si (numero >= 0) suma = suma + numero; n = n + 1; mientras (numero >= 0); si (n > 0) media = suma / n; escribir("la media es ", media); escribir("la media es 0"); leer (numero); Página 9 de 16

Estructura para Permite realizar una acción un número determinado de veces. El formato de esta estructura es el siguiente: para variable de a conjunto de acciones; En cada iteración del bucle variable va tomando distintos valores comprendidos entre y. En la primera iteración toma el valor, en la segunda +1, y así sucesivamente hasta el valor. Ej: Algoritmo que pide 20 números por teclado y calcula su media. suma = 0; para n de 1 a 20 escribir("introduzca nº", n); leer (numero); suma = suma + numero; media = suma / (n-1); escribir("la media es ", media); Restamos 1 a n ya que se sale del bucle para cuando la variable n sobrepasa el valor 20. La estructura para puede sustituirse por mientras o por repetir: suma = 0; n = 0; mientras (n < 20) escribir("introduzca nº", n+1); leer (numero); suma = suma + numero; n = n + 1; media = suma / n; escribir(" La media es ", media); Página 10 de 16

Cual de las tres variantes usar ante un determinado problema?: si (el bucle tiene que ejecutarse un numero fijo de veces) Utilizar la estructura para; si (el bucle debe ejecutarse como mínimo una vez) Utilizar la estructura repetir...mientras; Utilizar la estructura mientras; Un error muy común con las estructuras de repetición consiste en poner mal la condición de alización u olvidarse de incrementar el contador, dando lugar a bucles initos (bucles que no acaban nunca). suma = 0; n = 1; repetir leer (numero); suma = suma + numero; mientras (n <= 20); media = suma / (n-1); Este bucle nunca aliza ya que olvidamos incrementar la variable n. suma = 0; n = 1; repetir leer (numero); suma = suma + numero; n = n - 1; mientras (n <= 20); media = suma / (n-1); En este caso, la n siempre es menor de 20, ya que la decrementamos en vez de incrementarla. Página 11 de 16

Ej: Calcular la media de una serie de nº positivos dados por teclado. Un valor de 0, como entrada, indicará el al de la serie de números. Pseudocódigo contador = 0; suma = 0; leer(numero); mientras (numero <> 0) suma = suma + numero; contador = contador + 1; leer(numero); si (contador <> 0) media = suma / contador; sino media = 0; escribir(media); Ej: Calcular la suma de los N primeros números impares, siendo N un nº dado por teclado. suma= 0; suma = 0; impar = 1; c = 1; leer (n); impar = 1; para c de 1 a n leer (n); mientras (c <= n) suma = suma + impar; impar = impar + 2; suma = suma + impar; impar = impar + 2; escribir(suma); c = c + 1; escribir (suma); Página 12 de 16

EJEMPLOS Pseudocódigo leer(n); X = 2; mientras (mod(n / X)<> 0 y X<N) X = X + 1; si (X < N) escribir( N no es primo ); sino escribir( N es primo ); Pseudocódigo SUMA = 0; N = 2; mientras (N < = 1000) SUMA = SUMA + N; N = N + 2; escribir(suma); Página 13 de 16

2.4 Traducción de ideas a un lenguaje de programación concreto: El problema de la implementación Para que un ordenador pueda interpretar un algoritmo, éste debe ser expresado en forma de un programa que estará escrito en un determinado lenguaje de programación, lo cual requiere que conozcamos el juego o repertorio de instrucciones del lenguaje. 2.4.1 Acciones y Estructuras de control usadas en los algoritmos Las acciones marcan el juego de operaciones que se pueden realizar, mientras que las estructuras de control determinan el orden de realización de las mismas. ACCIONES: - Asignaciones: consiste en la evaluación de una expresión y en el almacenamiento de su valor en una variable - E/S: se utilizan para que el programa intercambie información con un medio externo - Operaciones Aritmético-Lógicas: Ejecutan operaciones aritméticas (suma, división, potenciación) y lógicas (and, or, not) ESTRUCTURAS DE CONTROL: - Decisiones: son acciones de control de flujo. Permiten modificar el orden en que se realizan otras acciones en función de si se cumple o no una determinada condición. - Ciclos (Bucles): Indican la repetición de un segmento de programa. El ciclo puede ser: - Repetitivo: el segmento se repite un número fijo de veces, - Condicional: el segmento se repite mientras (while) se cumpla una condición o hasta que (do while) deje de cumplirse. 2.4.2 Procedimientos o subrutina Es un fragmento de un programa que realiza una tarea concreta y que tiene un nombre por el que puede ser llamado desde cualquier parte del programa. Se comunica con el programa que los llama a través de unas variables de comunicación denominadas argumentos, que permiten el paso de información entre el programa y el procedimiento. Su uso evita la duplicación de código. Página 14 de 16

2.5 Lenguajes de programación. Clasificación. Colocación en la clasificación del lenguaje C, C++ Un programa es un conjunto de instrucciones que se dan al ordenador indicándoles las operaciones o tareas a realizar. Estas instrucciones se dan en un determinado lenguaje de programación, el cual tiene una determinada sintaxis (palabras clave, símbolos) y debe redactarse cumpliendo una determinada gramática (reglas). LENGUAJE DE PROGRAMACIÓN herramienta que nos permite transformar un algoritmo en un programa. Consta de: Un léxico. Una gramática. Una semántica. Los circuitos electrónicos de la UC sólo pueden interpretar instrucciones escritas en lenguaje máquina, por lo que los programas escritos en Lenguajes de alto nivel hay que traducirlos a lenguaje máquina para que el procesador los pueda procesar. Para realizar esta tarea existen unos programas llamados traductores que realizan esta labor (le damos un programa escrito en un lenguaje de alto nivel y genera un programa equivalente escrito en lenguaje máquina). Existen dos tipos de traductores: compiladores e intérpretes. Compiladores: traducen el programa inicial (programa fuente) y generan un programa (programa objeto). Intérpretes: van analizando, traduciendo y ejecutando una a una las instrucciones del programa fuente; no se analiza una instrucción hasta que la anterior se haya ejecutado. Los intérpretes no generan programa objeto. Página 15 de 16

2.5.1 Clasificación de los lenguajes de programación Los lenguajes de programación los podemos clasificar en tres grupos: lenguaje máquina (prácticamente no utilizado). Son directamente inteligibles por el ordenador, ya que sus instrucciones son cadenas binarias. Dificultad de codificación, poca fiabilidad, dificultad grande de verificar y poner a punto, sólo ejecutable en el procesador específico. lenguaje de bajo nivel (ensamblador). Dependen de la máquina en particular y difícil de programar. Son más fáciles de codificar que en lenguaje máquina. Dependen de la máquina particular donde se ejecutan. Son más difíciles de programar que los lenguajes de alto nivel. lenguajes de alto nivel. Son independientes de la máquina, no dependen del diseño del hardware, son muy portables. Más fáciles de programar y entender. La sintaxis usada está más cerca del lenguaje humano que de la máquina. Inconvenientes: Tiempo de ejecución mayor y no se aprovechan los recursos internos de la máquina eficientemente. Existen muchos lenguajes de programación de alto nivel (C/C++, COBOL, Visual Basic, Java, Modula-2, LISP, etc.) 2.5.2 El Lenguaje C. - Es un lenguaje de nivel medio: combina elementos de lenguajes de alto nivel con la funcionalidad del ensamblador. - Permite hacer cosas que otros lenguajes de alto nivel no pueden hacer (manipulación de bits, bytes, direcciones) y es tan fácil de usar como cualquier otro lenguaje de alto nivel. - Es particularmente adecuado para la programación de sistemas. - Es muy portable, es decir, es posible adaptar el software escrito para un tipo de ordenador en otro. Página 16 de 16