inicia programacion tecnicas

Upload: marisol

Post on 05-Jul-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/16/2019 Inicia Programacion Tecnicas

    1/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    1

    INICIANDO LAPROGRAMACIÓNTécnicas y Diseños de Algoritmos

    © Derechos de Autores Reservados

    PERCY ELIAS VIVANCO MUÑOZ

    NILO ELOY CARRASCO ORÉ

    LUIS AMBICHO MEZA

    ©Derechos de Edición Reservados

    IMPRESO EN PERÚ

    ©Derechos de Artes Gráficas Reservados

    Este libro no puede ser en parte o totalmente reproducido; memorizado en sistema de archivo o

    transmitido en cualquier forma o medio electrónico, mecánico, fotocopia o cualquier otro sin la previa

    autorización de los AUTORES y EDITOR.

    “La formaci ó n en inform á  tica no puede convertir a nadie en experto programador, de la misma forma que estudiar pinceles y pigmentos puede hacer a alguien un experto pintor” 

    Eric Raymond 

  • 8/16/2019 Inicia Programacion Tecnicas

    2/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    2

  • 8/16/2019 Inicia Programacion Tecnicas

    3/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    3

  • 8/16/2019 Inicia Programacion Tecnicas

    4/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    4

  • 8/16/2019 Inicia Programacion Tecnicas

    5/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    5

    TEMARIO GENERAL

    INDICE

    TEMA 1........................................................................................................................................................1 ALGORITMOS Y PROGRAMAS.............................................................................................................1

    1. INTRODUCCIÓN A LOS ALGORITMOS2. SISTEMAS DE PROCESAMIENTO DE LA INFORMACIÓN3. DEFINICIÓN DE ALGORITMO4. TIPOS DE ALGORITMOS5. COMENZAMOS A PROGRAMAR6. METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS POR MEDIO DE COMPUTADORA

    7. PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS8. CONSTANTES, VARIABLES Y EXPRESIONES

    9. OPERADORES Y OPERANDOS10. TÉCNICAS PARA LA FORMULACIÓN DE ALGORITMOS.11. ENTRADA Y SALIDA DE LA INFORMACIÓN:

    EJERCICIOS

    TEMA 2........................................................................................................................................................9RESOLUCIÓN DE PROBLEMAS CON COMPUTADORAS Y HERRAMIENTAS DE PROGRAMACIÓN 9

    1. RESOLUCIÓN DE PROBLEMAS2. ÁNALISIS DEL PROBLEMA3. DISEÑO DEL ALGORITMO4. RESOLUCIÓN EN LA COMPUTADORA5. FLUJOGRAMAS6. DIAGRAMAS NS O DE NASSI-SCHERDERMAN7. PSEUDOCÓDIGO

    EJERCICIOS

    TEMA 3.....................................................................................................................................................15ESTRUCTURA GENERAL DE UN PROGRAMA...............................................................................15

    1. CONCEPTO DE PROGRAMA2. INSTRUCCIONES Y TIPOS3. ELEMENTOS BÁSICOS DE UN PROGRAMA4. ESTRUCTURAS DE ALGORITMOS Y PROGRAMAS

    EJERCICIOS

    TEMA 4.....................................................................................................................................................19INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA

    ......................................................19

    1. TÉCNICAS DE PROGRAMACIÓN2. PROGRAMACIÓN MODULAR3. PROGRAMACIÓN CONSTRUCTORA4. ESTRUCTURA SECUENCUAL5. ESTRUCTURAS SELECTIVAS6. ESTRUCTURAS REPETITIVAS7. ANIDACIÓN DE BUCLES Y CONDICIONALES8. CONTROL DE DATOS DE ENTRADA

    EJERCICIOS

    TEMA 5.....................................................................................................................................................28SUBPROGRAMAS: PROCEDIMIENTOS Y FUNCIONES...............................................................28

    1. INTRODUCCIÓN A LOS SUBPROGRAMAS O SUBALGORITMOS2. FUNCIONES

  • 8/16/2019 Inicia Programacion Tecnicas

    6/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    6

    3. PROCEDIMIENTOS4. AMBITOS: VARIABLES LOCALES Y GLOBALES5. COMUNICACIÓN ENTRE SUBPROGRAMAS: PASO DE PARÁMETROS6. FUNCIONES Y PROCEDIMIENTOS COMO PARÁMETROS7. EFECTOS LATERALES8. RECURSIVIDAD

    EJERCICIOS

    TEMA 6.....................................................................................................................................................43ESTRUCTURA DE DATOS: ARRAYS.................................................................................................43

    1. INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS2. ARRAYS UNIDIMENSIONALES O VECTORES3. OPERACIONES CON ARRAYS UNIDIMENSIONALES O VECTORES4. ARRAYS BIDIMENSIONALES O MATRICES5. ARRAYS MULTIDIMENSIONALES6. ALMACENAMIENTO DE ARRAYS EN MEMORIA7. ARRAYS COMO PARÁMETROS DE SUBPROGRAMAS8. ARRAYS DE “PUNTEROS”

    EJERCICIOS

    TEMA 7.....................................................................................................................................................57LAS CADENAS DE CARACTERES.....................................................................................................57

    1. JUEGO DE CARACTERES2. CADENA DE CARACTERES3. DATOS DE TIPO CARÁCTER4. OPERACIONES CON CADENAS

    EJERCICIOS

    TEMA 8.....................................................................................................................................................65FICHEROS O ARCHIVOS.....................................................................................................................65

    1. EL TIPO DE REGISTRO DE DATOS

    2. NOCIÓN DE ARCHIVO3. TERMINOLOGÍA DE ARCHIVOS4. TIPOS DE SOPORTE5. TIPOS DE ORGANIZACIONES DE FICHEROS6. OPERACIONES SOBRE FICHEROS7. TRATAMIENTO DE FICHEROS SECUENCIALES8. FICHEROS DE TEXTO

    EJERCICIOS

    TEMA 9.....................................................................................................................................................82ORDENACIÓN, BÚSQUEDA E INTERCALACIÓN INTERNA.......................................................82

    1. INTRODUCCIÓN

    2. ORDENACIÓN3. BÚSQUEDA4. INTERCALACIÓN

    TEMA 10...................................................................................................................................................87ORDENACIÓN, BÚSQUEDA Y FUSIÓN EXTERNA........................................................................87

    1. ARCHIVOS ORDENADOS2. FUSIÓN O MEZCLA DE ARCHIVOS ORDENADOS3. PARTICIÓN DE ARCHIVOS4. CLASIFICACIÓN DE ARCHIVOS

    TEMA 11:.................................................................................................................................................90 ALGORITMOS Y PROGRAMAS:..........................................................................................................90

    1. EINTRODUCCIÓN A LAS ESTRUCTURAS DINÁMICAS DE DATOS2. LISTAS

  • 8/16/2019 Inicia Programacion Tecnicas

    7/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    7

    3. LISTAS ENLAZADAS4. PROCEDIMIENTOS DE LISTAS ENLAZADAS5. LISTAS CIRCULARES CON CABECERA6. LISTAS DOBLEMENTE ENLAZADAS7. PILAS8. COLAS

    9. DOBLES COLAS O BICOLASEJERCICIOS

    BIBLIOGRAFIA

  • 8/16/2019 Inicia Programacion Tecnicas

    8/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    8

    TEMA 1

    1. INTRODUCCIÓN A LOS ALGORITMOS

    Si tuvieses que escoger un programa entre varios que resuelven un mismo problema, ¿enfunción e que escogerí as?: ¿ e su elegancia?, ¿ e la legibili a ?, ¿ el interfaz eusuario?, ¿ e su veloci a e ejecución?, ¿ e la memoria que consume? No cabe u ade que todos los factores influyen. Nosotros consideraremos aquí  criterios basados en laeficiencia, es decir, en el mejor aprovechamiento de los recursos computacionales.Nuestro objeto de estudio serian los métodos de resolución de problemas, es decir, losalgoritmos, y no los programas, o sea, sus implementaciones concretas usan o iferenteslenguajes e programación.El desarrollo de algoritmos es un tema fundamental e importante en el diseño deprogramas, aplicaciones de cómputo y soluciones informáticas. Por lo cual, el alumno

    ebe tener buenas bases que le sirvan para po er crear e manera f ácil y rápi a elesarrollo e sus programas.

    2. SISTEMAS DE PROCESAMIENTO DE LA INFORMACIÓNUn ordenador es una máquina de procesamiento de información. Es una máquina con unconjunto de elementos que interactúan entre sí , cables, chips, procesadores, etc., (procesarinformación es la capaci a el Sistema e Información para efectuar cálculos e acuer ocon una secuencia e operaciones preestableci a. Estos cálculos pue en efectuarse condatos introducidos recientemente en el sistema o bien con datos que están almacenados).Para procesar la información está   el hardware (corresponde a todas las partes f í sicas ytangibles e una computa ora: sus componentes eléctricos, electrónicos, electromecánicosy mecánicos, microprocesador, RAM, buses, chips,), y el software (que comprende elconjunto de los componentes lógicos necesarios para hacer posible la realización de unatarea especí fica, en contraposición a los componentes f í sicos del sistema, el hardware).

    3. DEFINICIÓ

    N DE ALGORITMOSi bien los allegados a la informática saben que un algoritmo es un conjunto deoperaciones ordenadas de modo tal en que puedan resolver un problema, son pocos lossaben que el término deriva del matemático astrónomo y geógrafo musulmán al-Jwarizmi.Los algoritmos tienen algo en común con las funciones matemáticas: reciben una entraday pro ucen una sali a, pero para que pue a ser consi era o como algoritmo ebe sereficiente encontrar una solución en el menor tiempo posible , finito posee un númerodeterminado de pasos) y definido (se llega al mismo resultado si se sigue el mismo procesomás de una vez).En conclusión un algoritmo es una serie de pasos organizados que describe el proceso quese debe seguir, para dar solución a un problema especí fico.

    4. TIPOS DE ALGORITMOSExisten dos tipos y son llamados así  por su naturaleza:

    Cualitativos:  Son aquellos en los que se describen los pasos utilizando palabras.

    Cuantitativos:   Son aquellos en los que se utilizan cálculos numéricos para definirlos pasos del proceso.

    Definici   n de Len uaje Es una serie de sí mbolos que sirven para transmitir uno o más mensajes (ideas) entre dosentidades diferentes. A la transmisión de mensajes se le conoce comúnmente comocomunicación.

    La comunicación es un proceso complejo que requiere una serie de reglas simples, pero

  • 8/16/2019 Inicia Programacion Tecnicas

    9/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    9

    in ispensables para po erse llevar a cabo. Las os principales son las siguientes:

    Lenguajes A gor  tmicos Un Lenguaje algorí tmico es una serie de sí mbolos y reglas que se utilizan para describir

    e manera explí cita un proceso.

    Tipos de Lenguajes Algorí

    tmicos

    Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmoiagrama e flujo .

    No Gráficos: Representa en forma descriptiva las operaciones que debe realizar unalgoritmo pseu ocó   igo .

    INICIOEntero: EdadESCRIBA “cuál es tu edad?” Lea EdadSI (Edad >=18 entonces)

    ESCRIBA “Eres mayor de Edad”SINOESCRIBA “No eres mayor de Edad”FINSIESCRIBA “fin del algoritmo”FIN

    5. COMENZAMOS A PROGRAMARUn computador es un sistema electrónico diseñado para procesar grandes cantidades de

    atos a alta veloci a con el fin e generar información   útil en el proceso e toma edecisiones. Dicha información contará   con los atributos de oportunidad, veracidad,confiabilidad y exactitud. Pero estas actividades no se pueden desarrollar por sí  sola, para

    esto se requiere de ser programada, introducirle instrucciones u ó

    rdenes que le digan lo quetiene que hacer. Un programa es la solución a un problema inicial, así  que todo comienzaallí , en el   Problema. El proceso e programación es el siguiente: Da o un etermina oproblema el programador debe idear una solución y expresarla usando un algoritmo, luegode esto, debe codificarlo en un determinado lenguaje de programación y por   últimoejecutar el programa en el computador el cual refleja una solución al problema inicial. Estoes a grandes rasgos lo que hace el programador de computadores.

    6. METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS POR MEDIO DECOMPUTADORA

    DEFINICIÓN DEL PROBLEMAEn este paso se determinan la información inicial para la elaboración del programa. Esdonde se determina qué  es lo que debe resolverse con el computador, el cual requiere unadefinición clara y precisa. Es importante que se conozca lo que se desea que realice lacomputadora; mientras esto no se conozca del todo no tiene mucho caso continuar conla siguiente etapa.

    ANÁLISIS DEL PROBLEMAUna vez que se ha comprendido lo que se desea de la computadora, es necesario definir:

    Los datos de entrada.Cuál es la información que se desea producir (salida)Los méto os y f órmulas que se necesitan para procesar los atos.

    Una recomendación muy práctica es el de colocarse en el lugar de la computadora yanalizar qué   es lo que se necesita que se ordene y en qué   secuencia para producir los

  • 8/16/2019 Inicia Programacion Tecnicas

    10/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    10

    resulta os espera os.

    DISEÑO DEL ALGORITMOLas caracterí sticas de un buen algoritmo son:

    Debe tener un punto particular de inicio.

    Debe ser definido, no debe permitir dobles interpretaciones.Debe ser general, es decir, soportar la mayorí a de las variantes que se puedanpresentar en la definición del problema.Debe ser finito en tamaño y tiempo e ejecución.

    CODIFICACIÓNLa codificación es la operación de escribir la solución del problema (de acuerdo a la lógica

    el iagrama e flujo o pseu ocó   igo , en una serie e instrucciones etalla as, en uncódigo reconocible por la computadora, la serie de instrucciones detalladas se le conocecomo código fuente, el cual se escribe en un lenguaje de programación o lenguaje de altonivel.

    PRUEBA Y DEPURACIONSe denomina prueba de escritorio a la comprobación que se hace de un algoritmo parasaber si está   bien hecho. Esta prueba consiste en tomar atos especí ficos como entra a yseguir la secuencia in ica a en el algoritmo hasta obtener un resulta o, el análisis e estosresultados indicará   si el algoritmo está   correcto o si por el contrario hay necesidad decorregirlo o hacerle ajustes.

    7. PRIMITIVAS PARA EL DESARROLLO DE A LGORITMOSTodos estos elementos con los cuales se construyen dichos algoritmos se basan en una

    isciplina llama a: Programación Estructura a.

    DatoEs la expresión general que describe los objetos con los cuales opera el programa. Porejemplo, la edad y el domicilio de una persona, forman parte de sus datos. Los datos sesitúan en objetos llama os variables.

    Las variables son zonas de memoria cuyo contenido cambia durante la fase deprocesamiento e información. Son objetos cuyo valor pue e ser mo ifica o a lo largo ela ejecución de un programa. Las variables llevan un nombre llamado identificador. Estepuede ser una cadena de letras y dí gitos, empezando siempre con una letra. Por ejemplo: Pi,curso99, nom_alum, etc.

    Tipos De DatosTo os los atos tienen un tipo asocia o con ellos. Un ato pue e ser un simple carácter,tal como ‘a’, un valor entero tal como 35. El tipo de dato determina la naturaleza del

    conjunto de valores que puede tomar una variable.Estos datos Pueden ser:

    SimplesNuméricosLógicosAlfanuméricos (char, string)

    EstructuradosArreglos (vectores y matrices)RegistrosArchivos

    Punteros

  • 8/16/2019 Inicia Programacion Tecnicas

    11/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    11

    Tipos e Datos SimplesDatos Num éricos: Permiten representar valores escalares e forma numérica, esto incluye a los númerosenteros y los reales.

    Este tipo de datos permiten realizar operaciones aritméticas comunes.

    Datos    gicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que representan elresulta o e una comparación entre otros atos numéricos o alfanuméricos .

    Datos alfanum éricos (string): Es una secuencia de caracteres alfanuméricos que permiten representar valoresidentificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Esposible representar números como alfanuméricos, pero estos pierden su propiedadmatemática, es ecir no es posible hacer operaciones con ellos. Este tipo e atos serepresentan encerra os entre comillas.

    I entifica ores Los identificadores representan los datos de un programa (constantes, variables, tipos dedatos). Un identificador es una secuencia de caracteres que sirve para identificar unaposición en la memoria e la computa ora, que permite acce er a su conteni o.

    Ejemplo: nombre, num_hors, califica, etc.

    Reglas para formar un identificador 

    Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no deben contenerespacios en blanco.

    Letras, dí gitos y caracteres como la subraya ( _ ) est

    án permitidos despu

    és del primercarácter.

    La longitud de identificadores puede ser de varios caracteres. Pero es recomendable unalongitud promedio de 8 caracteres.

    El nombre del identificador debe dar una idea del valor que contiene.

    8. CONSTANTES, VARIABLES Y EXPRESIONESConstantesUna constante es un dato numérico o alfanumérico que no cambia durante la ejecucióndel programa.

    Ejemplo:pi = 3.1416

    VariableEs un espacio en la memoria de la computadora que permite almacenar temporalmenteun dato durante la ejecución de un proceso, su contenido puede cambiar durante laejecución del programa.Para po er reconocer una variable en la memoria e la computa ora, es necesario arleun nombre con el cual podamos identificarla dentro de un algoritmo.

    Ejemplo: area = pi * radio 2

    Las variables son: el radio, el area y la constate es pi

  • 8/16/2019 Inicia Programacion Tecnicas

    12/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    12

    Clasificación de las VariablesPor su conteni oVariables Numéricas: Son aquellas en las cuales se almacenan valores numéricos,positivos o negativos, es ecir almacenan números el 0 al 9, signos + y - y el punto

    ecimal.

    Ejemplo: iva = 0.15 pi = 3.1416 costo = 2500

    Variables Lógicas: Son aquellas que solo pueden tener dos valores (cierto o falso) estosrepresentan el resulta o e una comparación entre otros atos.

    Variables Alfanuméricas: Esta forma a por caracteres alfanuméricos letras, números ycaracteres especiales).

    Ejemplo: letra = ’a’ apellido = ’lopez’ direccion = ’Av. Libertad #190’

    Por su uso

    Variables de Trabajo: Variables que reciben el resultado de una operación matemáticacompleta y que se usan normalmente entro e un programa.

    Ejemplo: Suma = a + b /c

    Contadores: Se utilizan para llevar el control del numero de ocasiones en que se realizauna operación o se cumple una con ición. Con los incrementos generalmente e uno enuno.

    Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativade una serie de valores que se van leyendo o calculando progresivamente.

    ExpresionesLas expresiones son combinaciones de constantes, variables, sí mbolos de operación,paréntesis y nombres de funciones especiales.

    Por ejemplo: a + (b + 3) / c

    Ca a expresión toma un valor que se etermina toman o los valores e las variables yconstantes implicadas y la ejecución de las operaciones indicadas.

    Una expresión consta de operadores y operandos. Según sea el tipo de datos quemanipulan, se clasifican las expresiones en:

    AritméticasRelacionalesLógicas

    9. OPERADORES Y OPERANDOS

    OperadoresSon elementos que relacionan de forma diferente, los valores de una o más variables y/oconstantes. Es decir, los operadores nos permiten manipular valores.

    Operadores AritméticosLos operadores aritméticos permiten la realización de operaciones matemáticas con losvalores (Variables y constantes).

    Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. Si

  • 8/16/2019 Inicia Programacion Tecnicas

    13/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    13

    ambos son enteros, el resulta o es entero; si alguno e ellos es real, el resulta o es real.

    Opera ores Aritm é  ticos + Suma- Resta* Multiplicación

    / DivisiónMod Modulo (residuo de la división entera)

    Ejemplos:Expresión Resultado7 / 2 3.512 mod 7 54 + 2 * 5 14

    Prioridad de los Operadores AritméticosTodas las expresiones entre paréntesis se evalúan primero. Las expresiones con paréntesis

    anidados se evalúan de dentro a fuera, el paréntesis más interno se evalúa primero.Dentro de una misma expresión los operadores se evalúan en el siguiente orden:

    1. Exponenciación2. *, /, mod Multiplicación, división, modulo.3. +, - Suma y resta.

    Los operadores en una misma expresión con igual nivel de prioridad se evalúan deizquier a a erecha.

    Ejemplos:

    4 + 2 * 5 = 1423 * 2 / 5 = 9.23 + 5 * (10 - (2 + 4)) = 232.1 + (1.5 + 12.3) = 2.1* 13.8 = 29.98

    Operadores Relacionales

    Se utilizan para establecer una relación entre dos valores. Luego compara estos valoresentre si y esta comparación pro uce un resulta o e certeza o false a ver a ero ofalso .

    Los operadores relacionales comparan valores del mismo tipo (numé

    ricos o cadenas).Estos tienen el mismo nivel de prioridad en su evaluación.

    Los opera ores relaciónales tiene menor priori a que los aritméticos.

    Tipos de operadores Relacionales

    > Mayor que< Menor que> = Mayor o igual que< = Menor o igual que< > Diferente= Igual

    Ejemplos:

  • 8/16/2019 Inicia Programacion Tecnicas

    14/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    14

    Si a = 10, b = 20, c = 30a + b > c Falsoa - b < c Ver a ero a - b = c Falsoa * b < > c Verdadero

    Ejemplos no lógicos:

    a < b < c10 < 20 < 30T > 5 < 30(no es lógico porque tiene diferentes operandos)

    Operadores LógicosEstos operadores se utilizan para establecer relaciones entre valores lógicos. Estos valorespue en ser resulta o e una expresión relacional.

    Tipos e opera ores LógicosAnd YOr O

    Not NegaciónEjemplo:

    Para los siguientes ejemplos T significa verdadero y F falso.

    Operador Not Operador Not Operando ResultadoT FF T

    Operador And Operador And

    Operando1 Operador Operando2 ResultadoT AND T TT F FF T F

    F F F

    Operador Or Operador Or Operando1 Operador Operando2 ResultadoT Or T TT F T

    F T T

    F F FPrioridad de los Operadores Lógicos

    1. Not2. And3. Or

    Prioridad de los Operadores en General

    1.2.3. *, /, Mod, Not4. +, -, And5. >, =, < =, < >, =, Or

  • 8/16/2019 Inicia Programacion Tecnicas

    15/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    15

    Ejemplos:Sea: a = 10 b = 12 c = 13 =10

    10.T CNICAS PARA LA FORMULACIÓN DE ALGORITMOS.

    Diagrama de FlujoUn diagrama de flujo es la representación gráfica de un algoritmo. También se puede decirque es la representación detallada en forma gráfica de cómo deben realizarse los pasos en lacomputadora para producir resultados.

    Esta representación gráfica se da cuando varios sí mbolos (que indican diferentes procesosen la computadora), se relacionan entre si mediante lí neas que indican el orden en que sedeben ejecutar los procesos. Los sí mbolos utilizados han sido normalizados por el institutonorteamericano e normalización ANSI :

    11. ENTRADA Y SALIDA DE LA INFORMACIÓN:

    Las dos operaciones básicas de cada salida son las de lectura y de escritura. La lectura esequivalente a la asignación en cuanto que va a haber una variable que recibe un valor,pero este valor no resulta de evaluar ninguna expresión, sino que el valor lo vamos a leer

    e un ispositivo externo e entra a.

    Leer (nombre de la variable)

    El valor introducido por el dispositivo externo, tiene que ser del mismo tipo del que lavariable que se le asigne.La operación de escritura lo que hace es mostrar el valor de una variable en un dispositivoexterno de salida.

    Escribir (variable)La operación de escritura no es una operación destructivo en memoria. Al pedir un valoral usuario hay que decirle que es lo que se le quiere pedir escribiendo un mensaje.

    EJERCICIOS: TEMA 1 

    1. A (3*2 5 mod 1 + 8*(3-5) < (2+8-1 mod 1)A (3*32 mod 1 + (-16)) < 10A -16 < 10A Verdadero

    1.1. A A o (3+5*8) < 3 y ((-6/3 div 4)*2 < 2)A Ver a ero o 43 < 3 y 0 2 < 2A Verdadero o Falso y VerdaderoA Verdadero o FalsoA Verdadero

    2. B 3 mod 2 div 3B 1 iv 3B 0

    2.1.C (-B*2 8*3 mod 4) y (‘A’>’B’)C (0 24 mod 4) y FalsoC Falso y FalsoC Falso

  • 8/16/2019 Inicia Programacion Tecnicas

    16/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    16

    2.2.A C o no (3=5) y (8 3+B)A Falso o Ver a ero y Ver a eroA Falso o VerdaderoA Verdadero

  • 8/16/2019 Inicia Programacion Tecnicas

    17/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    17

    Ó

    Ó

    1. RESOLUCIÓN DE PROBLEMAS:

    La resolución de un problema desde el punto de vista algorí tmico tiene 3 fases:- Análisis del problema: Comprensión.- Diseño del algoritmo: Resolución algorí tmica.- Resolución en computadora: Implantación del algoritmo en un lenguaje de

    programación.

    2. ANÁLISIS DEL PROBLEMA:

    El objetivo de  ésta fase es comprender el problema para lo cual como resultado tenemos

    que obtener la especificación de las entradas y salidas del problema. Tiene que quedarclaro que entra y que sale.

    3. DISE O DEL ALGORITMO:

    Una vez comprendido el problema se trata de determinar que pasos o acciones tenemosque realizar para resolverlo.Como criterios a seguir a la hora e ar la solución algorí tmica hay que tener en cuenta:

    1. Si el problema es bastante complicado lo mejor es dividirlo en partes máspequeñas e intentar dividirlo en partes más pequeñas e intentar resolverlas porsepara o. Esta meto ologí a e ivi e y vencerás también se conoce con elnombre e iseño escen ente.

    2. Las ventajas de aplicar esto son:- Al ivi ir el problema en mó   ulos o partes se compren e más f ácilmente.- Al hacer modificaciones es más f ácil sobre un módulo en particular que en todo el

    algoritmo.- En cuanto a los resultados, se probarán mucho mejor comprobando si cada

    módulo da el resultado correcto que si intentamos probar de un golpe todo elprograma porque si se produce un error sabemos en que módulo ha sido.

    Una segunda filosof í a a la hora de diseñar algoritmos es el refinamiento por pasos, y espartir de una idea general e ir concretando cada vez más esa descripción hasta quetengamos algo tan concreto para resolver. Pasamos e lo más complejo a lo más simple.

    La representación de los algoritmos:Una vez que tenemos la solución hay que implementarla con alguna representación. Lasrepresentaciones más usadas son los flujogramas, los diagramas NS y el pseudocódigo.También la solución se puede escribir en algunos casos en lenguaje natural pero no sehace porque es muy ambiguo, e incluso otras formas de expresión como f  órmulasmatemáticas.

    Escritura del algoritmo:Al escribir el algoritmo hay que tener en cuenta:

    - Las acciones o pasos a realizar tienen que tener un determinado orden.- En cada momento solo se puede ejecutar una acción.- Dentro de las sentencias del algoritmo pueden existir palabras reservadas (palabras

    propias del lenguaje de programación que tienen para el compilador un

    determinado significado).

  • 8/16/2019 Inicia Programacion Tecnicas

    18/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    18

    - Si estamos utilizan o pseu ocó   igo tenemos también que usar la i entación(aumenta la legibilidad del problema para que se pueda leer mejor).

    4. RESOLUCIÓN EN LA COMPUTADORA:Es hacer entender nuestro algoritmo a la computadora para que lo pueda hacer.1. Codificamos el algoritmo en un leguaje de programación.

    2. Ejecutar el programa antes compilado.3. Comprobar los resulta os y si no funciona, corregirlo.

    5. FLUJOGRAMAS:Es una notación gráfica para implementar algoritmos. Se basa en la utilización de unossí mbolos gráficos que enominamos cajas, en las que escribimos las acciones que tiene querealizar el algoritmo.Las cajas están conectadas entre sí  por lí neas y eso nos indica el orden en el que tenemosque ejecutar las acciones.En todo algoritmo siempre habrá una caja de inicio y otra de fin, para el principio y finaldel algoritmo.

    Los sí

    mbolos:Lí neas de flujo: Una lí nea con una flecha que sirve para conectar los

    sí mbolos del diagrama y la flecha indica la secuencia en la que se van a ejecutar lasacciones.

    Sí mbolo de proceso: Indica la acción que tiene que realizar lacomputa ora. Dentro escribimos la acción.

    Representa las acciones de entrada y salida. Dentro colocaremos lasacciones de lectura y escritura.

    Condición: Dentro se va a colocar una condición. Sirve pararepresentar estructuras selectivas y repetitivas y lo que se hace alencontrar ese signo es evaluar la condición que hay dentro tal quesegún la condición sea verdadera o falsa iremos por caminos distintos.

    Principio y fin: Dentro del sí mbolo ira la palabra inicio o fin delalgoritmo.

    Subprograma: Dentro se coloca el nombre del subprograma al que sellama.

    Conectores: Nos sirven cuando un flujograma no me cabe en una columna de la hoja yhay que seguir en otra columna:

    - Si es en la misma hoja:

    - Si es en hoja distinta:

  • 8/16/2019 Inicia Programacion Tecnicas

    19/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    19

    Los conectores se ponen uno on e termina la columna y otra on e empieza.

    Es una aclaración para entender mejor el código, pero no es parte delcódigo, no se ejecuta.

    Otros símbolos:- Pantalla: Cuando una salida es por pantalla.

    - Teclado: Para representar una entrada por teclado.

    - Impresora:

    - Entrada/Salida por disco:

    *Problema:

    Queremos hallar el producto de varios números positivos introducidos por teclado y elproceso termina cuando se meta un número negativo.1. Iniciar la variable el pro ucto.2. Leer el primer número.3. Preguntar si es negativo o positivo.4. Si es negativo nos salimos y escribimos el producto.5. Si es positivo, multiplicamos el número leí do y luego leemos un nuevo número, y se

    vuelve al paso 3.

    Inicio

    P 1

    Leer num

    Num >= 0 Escribir P

    P P * num Fin

  • 8/16/2019 Inicia Programacion Tecnicas

    20/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    20

    Leer num

    6. DIAGRAMAS N-S O DE NASSI-SCHEDERMAN:Es semejante al flujograma, peor sin flechas y cmabiando algo los s í mbolos de condición y

    repetición. Las cajas van unidas.

    Condiciones:

    Con iciónSI NO

    Repetitivas:

    Mientas Des e vi=v1 hastavn

    Repetir hasta

    Problema anterior:

    Inicio

    P 1

    Leer num

    Mientras num >= 0

    P p*num

    Leer num

    Escribir P

    Fin

    7. PSEUDOCÓDIGO:Es un lenguaje de especificación de algoritmos, pero muy parecido a cualquier lenguaje deprogramación, por lo que luego su traducción al lenguaje es muy sencillo, pero con laventaja e que no se rige por las normas e un lenguaje en particular. Nos centramos másen la lógica el problema.El pseudocódigo también va a utilizar una serie de palabras clave o palabras especialesque va in ican o lo que significa el algoritmo.1. Inicio y Fin: Por donde empieza y acaba el algoritmo.

  • 8/16/2019 Inicia Programacion Tecnicas

    21/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    21

    Begin /en : Pacal.{ } : En C.

    2. Sí  Entonces If then elseSino

    3.Mientras /hacer while do

    4. Repetir / hasta repeat until5. Desde /hasta for .. to6. Según sea Case

    SwithLos comentarios van encerrados entre llaves.Hay que utilizar la identación.

    Algoritmo Var

    : Inicio

    Fin

    Algoritmo ProductoVar

    P, num: enteroInicio

    P 1Leer numMientras num >=0 hacer

    P p*num

    Leer numFin mientrasEscribir p

    Fin

    EJERCICIOS: TEMA 2 

    1. Realizar un programa que convierta los grados a radianes.

    Algoritmo convertirVarGrados, rad: real

    InicioEscribir “Introduce los grados”Leer gradosSi grados >= 360

    Entonces grados grados mod 360Fin siRad grados / 180Escribir rad “ radiantes”

    Fin

  • 8/16/2019 Inicia Programacion Tecnicas

    22/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    22

    2. Realizar un algoritmo que pi a un valor entero que equivale a un número e uros yme calcule a cuantos billetes de 5000, 1000, monedas de 200, 25, 1.

    Algoritmo cambioVar

    Duros: real

    InicioEscribir Intro uce los urosLeer durosDuros duros * 5Escribir duros div 5000 “billetes de 5000”Duros uros mo 5000Escribir duros div 1000 “billetes de 1000”Duros uros mo 1000Escribir duros div 200 “monedas de 200”Duros uros mo 200Escribir duros div 25 “monedas de 25”Duros duros mod 25

    Escribir duros “monedas de 1”Fin

    3. Realizar un programa que pida al usuario la velocidad en m/s y el radio de lacircunferencia de la pista, y resultada el programa devuelve el tiempo que tarda el atleta endar 2 vueltas a la pista, sabiendo que el atleta descansa 1 minuto cada 1000 metros.

    Algoritmo recorridoVar

    Velocidad, radio, tiempo, longitud: enteroInicio

    Escribir “Introduce la velocidad”

    Leer velocidadEscribir “Introduce el radio”Leer radioLongitud 4 * 3.1416 * radioDescanso longitud div 1000Tiempo longitud div velocidad + descanso * 60Escribir tiempo

    Fin

  • 8/16/2019 Inicia Programacion Tecnicas

    23/122

  • 8/16/2019 Inicia Programacion Tecnicas

    24/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    24

    Bucle: Un conjunto e instrucciones que se repiten un número finito eveces. Lleva asociado aparte de las instrucciones una condición que es laque determina cuando se termina un bucle. Ejecución de un bucle(iteración). Los bucles se pueden anidar unos dentro de otros, y puedehaber varios bucles al mismo nivel, pero nunca se entrelazan.Contador: Un elemento cuyo valor se incrementa o decrementa en un

    valor constante en cada iteración de un bucle, y se utiliza para controlarla condición del bucle.Acumulador: Es una variable que también se suele usar en los bucles yque se incrementa o decrementa en cada iteración del bucle, pero no enuna cantidad constante.

    Algoritmo ejemploVar cont, num, sum: enteroInicio

    Cont 0Sum 0Mientras cont 3

    Leer numSum sum + numCont cont +1

    Fin mientrasEscribir suma

    End

    Interruptor (marca, bandera o flag): Es una variable que sirve comoin ica or e una etermina a información y que solo pue e tomar unode dos valores. El valor de la variable tiene asociado un signo y puedevariar a lo largo de la ejecución.

    Algoritmo ejemploVar cont, num, suma: enteroNeg: boolean

    InicioCont 0Sum 0Neg falsoMientras cont 3

    Leer numSi num < 0

    Entonces neg verdaderoFin siSum sum + numCont cont + 1

    Fin mientrasSi neg=verdadero

    Entonces escribir (“Se ha leí do negativos”)Sino escribir (“No negativos”)

    Fin siFin

    Si es leer un número negativo o hasta 3 números:Mientras (cont 3) y (neg = verdadero)

    4. ESCRITURA DE ALGORITMOS Y PROGRAMAS:

    En pseudocódigo el programa tiene dos partes, la cabecera y el cuerpo. La cabeceracontiene el nombre del algoritmo, y el cuerpo contiene 2 partes.

  • 8/16/2019 Inicia Programacion Tecnicas

    25/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    25

    La primera es la zona e eclaraciones e var y const, y la segun a es la zona e lasinstrucciones del programa.En la zona de instrucciones para que quede más legible hay que usar la identación y si esnecesario hay que usar comentarios entre llaves.

    EJERCICIOS: TEMA 3 

    1. ¿Cuáles y cuántos son los números primos comprendidos entre 1 y 1000?Algoritmo n_primosConst

    Primero=1Limite=1000

    Varcont, i, j: enteroprimo: boolean

    InicioCont 0Desde i= primero hasta limite

    primo verdaderoj 2mientras (i>j) y (primo =verdadero)

    Si i mod j = 0Entonces primo falsoSino j j + 1

    Fin siFin mientrasSi primo = ver a ero

    Entonces escribir i” “Cont cont + 1

    Fin si

    Fin desdeEscribir “Entre “primero” y “limite” hay “cont” nº primos”Fin

    2. Calcular el máximo de números positivos introducidos por teclado, sabiendo quemetemos números hasta que introduzcamos uno negativo. El negativo no cuenta.Algoritmo maximoVar

    Num, max: enteroInicio

    Max 0

    Escribir “Introduzca nº positivos y para acabar introduzca uno negativo”Leer numMientras num >=0

    Si num >maxEntonces max num

    Fin siLeer num

    Fin mientrasEscribir “El mayor número es” max

    Fin

    3. Determinar cuales son los múltiplos de 5 comprendidos entre 1 y N.Algoritmo multiplosVar

    i: entero

  • 8/16/2019 Inicia Programacion Tecnicas

    26/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    26

    InicioDesde i=1 hasta n

    Si i mo 5 =0Entonces escribir i

    Fin siFin desde

    Fin

  • 8/16/2019 Inicia Programacion Tecnicas

    27/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    27

    Ó Ó

    1. T CNICAS DE PROGRAMACIÓN:

    El programar con flujogramas o diagramas NS resulta muy lioso en el momento en que elprograma se complica, por eso vamos a utilizar siempre el pseudocódigo, en el que vamosa utilizar dos técnicas de programación que no se usan por separado, sino que soncomplementarios.

    Estas técnicas son:Programación modular: Consiste en dividir el programa en partes llamadasmó   ulos, e implementar ca a uno e esos mó   ulos por separa o.Programación estructurada: Cuyo objetivo es hacer más legible y lógico laestructura del programa utilizando para ello solamente tres tipos de estructuras:selectivas, secuenciales con icionales y repetitivas.

    2. PROGRAMACIÓN MODULAR:

    Se basa en dividir el programa en partes llamadas módulos, que se analizan y codifican deforma independiente y que realizan una determinada tarea que será  en realidad una partedel problema total a resolver.En todo algoritmo o programa existirá   un módulo o programa principal que es al quetransfiere el control cuando comienza la ejecución del programa, y luego desde  él, se vallamando al resto de los subprogramas.

    Llamar a un subprograma quiere decir transferirle el control, es decir que se comienza aejecutar y lo hará  desde el comienzo del subprograma hasta que se termine y al terminar

    evuelve el control al subprograma que lo llamó. Dentro el subprograma a su veztambién pue o llamar a otros pero en cualquier caso al final se evuelve el control almódulo que hace la llamada. El control al programa llamado se devuelve a la instrucción

    siguiente a la que se hizo la llamada.Un módulo solo tiene acceso a los módulos a los que llama y a los submódulos a los que asu vez llaman  éstos. Los resultados producidos por un módulo pueden ser utilizados porotros.No existe un criterio fijo para determinar el tamaño, ni muy grandes ni muy pequeños, laidea fundamental es que realicen una  única cosa y muy concreta.Los módulos o subprogramas reciben diferentes nombres según el lenguaje deprogramación y s e gún su tipo. Se llaman procedimientos y funciones (Pascal, C),subrutinas (basic, fortran), secciones (cobol).

    3. PROGRAMACIÓN ESTRUCTURADA:La caracterí stica fundamental es que se va a basar en el uso  únicamente de tres estructuras

    e control. Para ello se apoya en las siguientes filosof í as:1. Recursos abstractos: Son los recursos con los que no contamos a la hora de

    programar, pero en los que nos apoyamos a la hora de solucionarlos. Estosrecursos se tienen que ir transforman o en recursos concretos.

    2. Diseño descendente (top down): Se trata de ir descomponiendo el problema enniveles o pasos cada vez más sencillos, tal que la salida de una etapa va a servircomo entrada de la siguiente. En las primeras etapas tomamos el punto de vistaexterno, es decir, que entradas hay y que salidas hay, y a medida que vamosbajan o e nivel, lo vamos vien o e mo o interno como lo hace por entro .

    3. Estructuras básicas de control: Para hacer cualquier programa siguiendo losanteriores pasos de razonamiento, al final codificamos el programa usando trestipos e secuencias repetitivas, alternativas y secuenciales .

    Al final todo programa va a tener una  única entrada y una  única salida.

  • 8/16/2019 Inicia Programacion Tecnicas

    28/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    28

    Des e la entra a tienen que existir caminos que nos permiten pasar por to as las partesdel programa y llevarnos a la salida, y finalmente no se van a permitir los bucles infinitos.

    4. ESTRUCTURA SECUENCIAL:Es cuando una instrucción sigue a otra en secuencia, es decir, la salida de una instrucciónes la entra a e la siguiente.

    FLUJOGRAMA: DIAGRAMAS NS: PSEUDOC DIGO:Leer numNum num*2Escribir num

    5. ESTRUCTURAS SELECTIVAS:Se evalúa la condición y en función del resultado se ejecuta un conjunto de instrucciones uotro. Hay tres tipos e selectivas simple, oble o múltiple :

    * Simple: Es la estructura : Sí  entonces

    fin sí Evaluamos la condición y si es verdadera ejecutamos el conjunto de condiciones asociadasal entonces, y si es falso, no hacemos nada.

    FLUJOGRAMA: DIAGRAMA NS:

    Condició

    nSI NO

    Doble: Se evalúa la condición y si es verdad se ejecutan el conjunto de accionesasociadas a la parte entonces, y si es falso se ejecutan el conjunto de accionesasociadas a la parte sino.

    FLUJOGRAMA: DIAGRAMAS NS: PSEUDOC DIGO:Si No

    Cond Sí   Si Cond No Entonces

    Acc1 Acc2 Sino Acc1 Acc2 Fin si

    Una condición se ejecuta una  única vez.

    Alternativa múltiple: Se evalúa una con ición o expresión que pue e tomar n valores.Según el valor que la expresión tenga en cada momento se ejecutan las accionescorrespondientes al valor. En realidad equivale a un conjunto de condiciones anidadas. Encualquier lenguaje, es Case o Swith.

  • 8/16/2019 Inicia Programacion Tecnicas

    29/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    29

    PSEUDOC DIGO:Según sea

    : : .................................

    : fin según

    - Otro: Las acciones asociadas al valor otro se ejecutan cuando la expresión no tomaninguno de los valores que aparecen antes. Otherwise, Else.

    El valor con el que se compara la expresión, va a epen er e los lenguajes, e lo que seaese valor. En general ese valor puede ser un valor constante, un rango de valores o inclusootra condición.

    FLUJOGRAMA: DIAGRAMAS NS:

    Expr Expresión

    V1 V2 V3 V4 . Otro

    V1 V2 V3 V4 V5 V6

    Hacer un programa que pueda dibujar una recta, un punto o un rectángulo.Algoritmo dibujoVar op: carácterEscribir (“Introduce una opción”

    1. Punto

    2. Recta3. Rectángulo”)Leer opSegún sea op

    “1”: leer x.........

    “2”: leer x..........

    “3”: leer x..........

    “otro”: escribir “opción errónea”fin según

    Para un rango de valores:Leer una nota y escribir en pantalla la calificación:Var nota: enteroLeer notaSegún sea nota

    1..4: escribir “suspenso”5..6: escribir “aprobado”7..8: escribir “Notable”9: escribir “Sobresaliente”10: escribir “Matricula de honor”

    fin según

    En algunos lenguajes se permite poner una condición:Según sea nota

  • 8/16/2019 Inicia Programacion Tecnicas

    30/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    30

    Nota >=1 y nota

  • 8/16/2019 Inicia Programacion Tecnicas

    31/122

  • 8/16/2019 Inicia Programacion Tecnicas

    32/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    32

    Si Entonces Sino si

    Entonces Sino si

    Entonces Fin siFin si

    Fin si

    El case siempre equivale a una anidación de condicionales, pero no al reves.

    Bucles anidados:Al igual que podemos colocar unas expresiones dentro de otras, unos bucles pueden estar

    entro e otros, pero nunca pue en cruzarse. Al ani ar bucles hay que tener en cuentaque el bucle mas interno funciona como una sentencia mas del bloque mas externo y portanto en cada iteración del bucle mas externo se van a ejecutar todas las iteraciones del

    bucle mas interno por cada iteración del mas externo.Si el bucle mas externo se repite n veces y el mas interno se repite m veces, si por ca aiteración del mas externo se repite el mas interno, el número total de iteraciones será m*n.

    Los bucles que se anidan pueden se de igual o distinto tipo.Desde i=1 hasta 8

    Desde j=1 hasta 5Escribir “Profesor”i”introduzca su asignatura nº”jLeer asignatura

    Fin desdeFin desde

    8. CONTROL DE DATO DE ENTRADA:

    A. Cuando existe un valor centinela que determina el fin del bucle:El bucle se va a repetir mientras no se lea un etermina o valor. La primera lectura se va arealizar fuera del bucle, y si la primera vez que lo leo ya encuentro ese valor centinela nopodemos entrar en el bucle y seguirá a continuación, sino entramos en el bucle.Se va utilizar una estructura  Mientras.

    B. Lectura secuencial de un fichero:Tendremos que leer del primero al   último registro del fichero. Habrá   que usar unMientras, aunque hay dos posibilidades: Leer fuera del bucle y al final de bucle, o leerdentro al principio del bucle. Se usa una u otra dependiendo del lenguaje.

    C. Cuando en un bucle sabemos el número exacto de veces que se repite el bucle:Usamos el Desde...Hasta.

    D. Control de datos para no permitir datos erroneos:No dejar seguir al usuario hasta que no introduzca datos correctos. Hay que usar unRepetir...Hasta.

    Repetir RepetirLeer datos leer op

    Hasta (datos correctos) hasta (op>=1) y (op

  • 8/16/2019 Inicia Programacion Tecnicas

    33/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    33

    EJERCICIOS: TEMA 4 

    1. Al final e curso eseamos saber cual ha si o el alumno e primero con mejor notamedia. Se sabe que este año entraron 150 alumnos y que en primero todos tienen 5asignaturas. Dar el nombre y la nota media.Algoritmo nota_media

    ConstAlumnos=150Asignaturas=5

    VarNombre, mejor_alum: cadenaNota, suma, media, acum: realI, j: entero

    InicioAcum 0Desde i=1 hasta alumnos hacer

    Suma 0Escribir “Introduzca el nombre del alumno”

    Leer nombreDesde j=1 hasta asignaturas hacerEscribir “Introduzca la nota de la asignatura”Leer notaSuma suma + nota

    Fin desdeMedia suma / asignaturasSi media > acum

    Entonces acum me iaMejor_alum nombre

    Fin siFin desde

    Escribir “El mejor alumno es “mejor_alumEscribir “Su nota media es “acumFin

    2. Calcular la suma de los divisores de cada número introducido por teclado.Terminaremos cuando el número sea negativo o 0.Algoritmo divisoresVar

    Numero, i, suma :enteroInicio

    Escribir “Introduce un número, y para acabar uno negativo”Leer número

    Mientras numero > 0Suma 0Desde i=1 hasta numero /2

    Si numero mo i =0Entonces suma suma + i

    Fin siFin desde

    Suma suma + numeroEscribir “La suma de los divisores del número es “sumaLeer numero

    Fin mientrasFin

    3. Se coloca un cápital C, a un interes I, durante M años y se desea saber en cuanto sehabrá converti o ese capital en m años, sabien o que es acumulativo.

  • 8/16/2019 Inicia Programacion Tecnicas

    34/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    34

    Algoritmo interesVar

    I, j, m: enteroC, temporal: real

    Iniciorepetir

    Escribir Intro uce el capital, el interes y el tiempoLeer c, i, mHasta (c>0) y ((i

  • 8/16/2019 Inicia Programacion Tecnicas

    35/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    35

    fin

    5. Da a la siguiente f órmula:

    Averiguar el valor de x pidiendo al usuario los valores de n, a, b.

    Algoritmo ecuacionVar

    N, a, b, primer, según, i, j: enteroX: real

    InicioPrimer 0

    Según 1RepetirEscribir “Introduce el valor de n, a, b”Leer n, a, b

    Hasta n>=0Desde i=1 hasta n

    Primer (((a-b) i –3)+n)+primerFin desdeDesde j=2 hasta n-1

    Según ((2*a*(i-1))*según)Fin desdeX primer / según

    Escribir xFin

    6. Dada la siguiente serie matemática:a1=0a2=0an=an-1 + (2*an-2) para n>=3

    Determinar cual es el valor y el rango del primer término cuyo valor sea mayor o igual a2000.

    Algoritmo serie

    VarA1, a2, an, cont: enteroInicio

    A1 1A2 0An a1 + (2*a2)N 3Mientras an < 2000

    A2 a1A1 anAn a1 + 2 a2Cont cont + 1

    Fin mientrasEscribir “El rango es “cont” y el resultado es”an

    fin

    1

    2

    1

    ))1(*2(

    )3)((

    n

    i

    n

    i

    i

    ia

    nba

     X 

  • 8/16/2019 Inicia Programacion Tecnicas

    36/122

  • 8/16/2019 Inicia Programacion Tecnicas

    37/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    37

    La lista e parámetros es la información que se le tiene que pasar a la función. Losparámetros luego dentro de la función los podemos utilizar igual que si fueran variableslocales definidas en la función y para cada parámetro hay que poner su nombre y tipo.El nombre de la función lo da al usuario y tiene que ser significativo.

    En las variables locales se declaran las variables que se pueden usar dentro de la función.

    Entre las acciones ten rá   que existir entre ellas una el tipo   retorno  . Estasentencia pondrá   fin a la ejecución de la función y devolverá   el valor de la función, esdecir, como valor asociado al nombre de mismo tipo que el tipo de datos que devuelve ala función, este valor por tanto tiene que ser del mismo tipo que el tipo de datos que

    evuelve la función, que es el que habremos in ica o al eclarar la función en la partefinal e la cabecera.

    No se permiten funciones que no devuelvan nada.Los parámetros que aparecen en la declaración de la función se denominan parámetrosformales, y los parámetros que yo utilizo cuando llamo a la función se denominanparámetros actuales o reales.

    Invocació

    n de una funció

    n:Para llamar a una función se pone el nombre de la función, y entre paréntesis losparámetros reales, que podrán ser variables, expresiones, constantes,... pero siempre delmismo tipo que los parámetros normales asociados.

    (parámetros reales)La función puede ser llamada desde el programa principal o desde cualquier otrosubprograma.Para llamar a la función desde cualquier parte, implica el conocimiento previo de que  éstafunción existe.

    A través de los parámetros reales de la llamada se proporciona a la función la informaciónque necesita, para ello, al hacer la llamada lo que se produce es una asociación automática

    entre pará

    metros reales y pará

    metros formales. Esta asociació

    n se realiza segú

    n el or ene la aparición y e izquier a y erecha.Si el parámetro formal y real no son del mismo tipo, en Pascal se produce un error, y en Cse transforman los tipos si es posible.La llamada a una función,   siempre va a formar parte de una expresión, de cualquierexpresión en la que en el punto en la que se llama a la función, pudiera ir colocadocualquier valor del tipo de datos que devuelve la función, esto se debe a que el valor quedevuelve una función esta asociado a su nombre.

    Pasos para hacer la llamada a una función:1. Al hacer la llamada y ceder el control a la función, se asocia (asigna el valor) de cada

    parámetro real a cada parámetro formal asociado, siempre por orden de aparición y deizquierda a derecha, por lo que siempre que no coincidan los tipos y el número de

    parámetros formales y reales, se produce un error.2. Si todo ha ido bien, se ejecutan las acciones de la función hasta que lleguemos a una de

    tipo   retorno   que pondrá  fin a la ejecución. Pueden existir varias sentencias deretorno en la misma función, pero en cada llamada solo se podrá ejecutar uno.

    3. Se le asocia al nombre e la función el valor retorna o y se evuelve el control alsubprograma que hizo la llamada pero sustituyendo el nombre de la función por elvalor devuelto.

    Otra forma de especificar el retorno de una función:Se le asigna el valor devuelto al nombre de la función.

    N_funcion valorEjemplo de función:Una función que calcule la mitad del valor que le paso parámetro. Suponemos que es un

    valor entero.Funcion mitad (n: entero): real

  • 8/16/2019 Inicia Programacion Tecnicas

    38/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    38

    Var m: realInicio

    M n/2Retorno m

    Fin mitad

    Algoritmo calc_mitaVar num: enteroInicio

    Escribir “Introduce un número para hallar su mitad”Leer numEscribir “La mitad de “num” es “mitad(num)

    Fin

    * La funci   n solo puede ser llamada desde una expresi   n.

    3. PROCEDIMIENTOS:

    El inconveniente de una función es que solo puede devolver un  único valor, por lo que sí nos interesa evolver 0 o N valores, aunque pue o usarlo para evolver un solo valor,debo usar un procedimiento.Un procedimiento es un subprograma o un subalgoritmo que ejecuta una determinadatarea, pero que tras ejecutar esa tarea no tienen ningún valor asocia o a su nombre comoen las funciones, sino que si evuelve información, lo hace a través e parámetros.Al llamar a un procedimiento, se le cede el control, comienza a ejecutarse y cuandotermina devuelve el control a la siguiente instrucción a la de llamada.

    Diferencias entre funciones y procedimientos:1. Una función devuelve un único valor y un procedimiento puede devolver 0,1 o N.2. Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre

    como ocurrí a con la funci

    ón.3. Mientras que la llamada a una función forma siempre parte de una expresión, la

    llamada a un procedimiento es una instrucción que por sí    sola no necesitainstrucciones.Esta llamada consiste en el nombre del procedimiento y va entre paréntesis van losparámetros que se le pasan. En algunos lenguajes (como el C), se pone delante lapalabra Llamar a (Call) procedimiento (parámetro).

    Sintaxis:Procedimiento ( : tipo_par,...)Var : tipoInicio

    fin

    La cabecera va a estar formada por el nombre del procedimiento que será un identificadory que debe de ser significativo, y luego entre paréntesis los parámetros o la informaciónque se le pasa al procedimiento. Para cada parámetro hay que indicar el tipo de paso deparámetro. Hay os tipos fun amentales e paso e parámetros, por valor y porreferencia, si no ponemos tipo de paso de parámetros, se toma el tipo de paso deparámetros por valor.En el cuerpo del procedimiento donde van las sentencias ya no habrá   ninguna de tipo, ahora bien, si el proce imiento evuelve resulta os a través e susparámetros, cosa que solo podrá   hacer a través de los parámetros que se pasan porreferencia, tendrán que existir sentencias de asignación de valores a estos parámetrospasados por referencia, a través de los cuales se van a devolver los resultados.

    Como se llama a un proce imiento:[llamar a (Call)] nombre_proc (par_reales)

  • 8/16/2019 Inicia Programacion Tecnicas

    39/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    39

    Pasos para hacer la llama a a un proce imiento:1. Se cede el control al procedimiento al que se llama y lo primero que se hace al cederle

    el control es sustituir ca a parámetro formal e la efinición por el parámetro actual oreal e la llama a asocia o a él. Esta asociación entre parámetros formales y reales se

    hace e izquier a a erecha por or en e colocación y para que se pue a pro ucir estaasociación tienen que existir el mismo número de parámetros formales que reales, yademás el tipo tiene que coincidir con el del parámetro formal asociado, sino secumple alguna de estas condiciones hay un error.

    2. Si la asociación ha si o correcta comienzan a ejecutarse las instrucciones elprocedimiento hasta llegar a la  última instrucción. Al llegar a la instrucción se vuelvena asociar los parámetros formales que devuelven los resultados a los parámetrosformales asociados en la llamada, es decir, de esta manera algunos de los parámetrosreales e la llama a ya conten rán los resulta os el proce imiento.

    3. Finalmente se cede el control a la siguiente instrucción a la que se hace la llamada,pero teniendo en cuenta que en esta instrucción y en las siguientes puedo usar ya losparámetros reales en los que se devolvieron los resultados del procedimiento para

    trabajar con ellos.Procedimiento mitad (num:entero,ent-sal M:real)Inicio

    M num/2Fin mitad

    Algoritmo calc_mitadVar

    N: enteroMit: real

    Inicio

    Escribir “Introduce un nú

    mero”Leer nMitad (n,mit)Escribir “La mitad es”mit

    fin

    4. ÁMBITOS: VARIABLES LOCALES Y GLOBALES:

    ¿Qué es el ámbito de un identificador?:

    El  ámbito de un identificador (variables, constantes, funciones,...) es la parte del programaen la que se conoce y por tanto se pue e usar un i entifica or.Según el  ámbito hay 2 tipos de variables, locales y globales:1. Local: Aquella que está   declarada y definida dentro de un subprograma luego su

    ámbito coinci irá con el ámbito el subprograma en la que este efini a.Esto quiere decir que la variable no tiene ningún significado, no se conoce y no sepuede acceder a ella desde fuera del subprograma y que tiene una posición de memoria

    istinta a la e cualquier otra, incluso si es e una variable que tiene el mismo nombrepero que está   efini a fuera el subprograma.Las variables locales a un subprograma se definen en la parte de la definición devariables del mismo. Los parámetros formales que se le ponen a un subprograma secomportan dentro de  él como si fueran también variables locales a  él.

    2. Globales: Son las que están definidas a nivel del programa, es decir, su   ámbito es elprograma o algoritmo principal y todos los subprogramas que van junto con él.A esta variable podemos acceder desde cualquiera de los subprogramas y el programa

    principal, salvo que alguno e esos subprogramas tenga efini a una variable local conel mismo nombre que la variable global, en este caso si utilizo el nombre de esa

  • 8/16/2019 Inicia Programacion Tecnicas

    40/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    40

    variable me referiré   a la local, nunca a la global ya que tienen 2 zonas e memoriadistintas).

    Lugar en el que se definen las variables globales:En algunos lenguajes se define en el programa principal, y esa variable será   global, enotros lenguajes se efinen fuera el programa principal y fuera e cualquier otro

    subprograma antes e empezar el programa principal . Méto o que vamos a usar.El problema de usar variables globales es que como todos los subprogramas las puedenmodificar, puede ser posible que haya usos indebidos cuando un subprograma utiliza unavariable global sin saber que otro la ha mo ifica o, por esa razón nunca usaremos parapasar información entre los subprogramas variables globales, sino que usaremos variablesde entrada-salida, salvo que no nos quede más remedio.

    Procedimientos anidados:

    La anidación de procedimientos no se permite en todos los lenguajes y consiste en quedentro de un procedimiento podamos definir o meter el código de otros.Si la anidación de procedimientos está  permitida, se plantean más problemas en cuanto al

    ámbito, es e este punto e vista, se ice que una variable local se conoce en elprocedimiento en el que está definida y en todos los procedimientos anidados a  él que sonlos que componen el   ámbito de dicho procedimiento, salvo que en alguno de esosprocedimientos anidados este definida una variable local con el mismo nombre en cuyocaso entro e ese proce imiento siempre nos referiremos a la variable local efini a en élporque siempre se consi era el ámbito más restringi o.

    PPVar A,BP1

    A,C,DP2

    AP3D,E

    P4 D,FP5

    P6 F,A

    VARIABLES MBITO SUBPROGRAMAA del PP P4,P5B del PP P1,P2,P3,P4,P5,P6A del P1 P1,P3C el P1 P1,P2,P3D del P1 P1,P2,P3A del P2 P2D del P3 P3E del P3 P3D del P4 P4,P5,P6F del P4 P4,P5F del P6 P6

    A del P6 P6

  • 8/16/2019 Inicia Programacion Tecnicas

    41/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    41

    5. COMUNICACIÓN ENTRE SUBPROGRAMAS: PASO DE PARÁMETROS.

    La mejor forma para llevar a cabo la comunicación ente subprogramas, es el paso deparámetros. Trataremos de evitar siempre que sea posible el uso de variables globales.

    Cuando llamamos a una función o procedimiento, le pasamos a través de los parámetrosla información que necesita, y en el caso e un proce imiento también evolvemos através e sus parámetros los resulta os. Para ello efiniremos el tipo el parámetro aprincipio del subprograma, que es lo que conocemos como parámetros formales, y alhacer la llamada pasamos la información a través de los parámetros reales.

    ¿Cómo se efectúa la correspondencia entre parámetros formales y reales?:Existen 2 métodos:

    1. Correspondencia posicional: En este caso se emparejan los parámetros formalesy reales por la posición que ocupan (orden de declaración) y de izquierda a

    erecha. Para que se pue a realizar esta asociación, tiene que haber el mismonúmero e parámetros formales y reales, y con el mismo tipo.

    F (x:entero,y:real)Var a:realF (3,A)

    2. Correspondencia por nombre implí cito: Ahora en la llamada al subprograma sepone explí citamente a que parámetro formal correspon e ca a real.Ahora en la llamada ponemos el nombre del parámetro formal, separado pordos puntos (:) y el nombre del parámetro real que le pasamos, con lo cual ya noimporta la posición en la que coloquemos la información.

    F (x:3,y:A)F (y:A,x:3)

    Un lenguaje que permite esto es ADA.Usaremos siempre el primer método (posicional).

    Paso de pará

    metros:Del modo de paso de parámetros va a depender el resultado que se obtenga.

    1. Tipos de parámetros: Según se usen para meter datos o para obtener resultados.Existen 3 tipos:

    1. De entrada: Son parámetros que solo aportan información de entrada alsubprogama en el que pertenecen como parámetros. Aporta el valor que tienencomo entrada al subprograma. En el caso de una función, todos sus parámetrosson de este tipo.Como solo sirven como entrada, solo pueden ser leí dos, pero no modificados, yaunque se modificasen dentro de un subprograma, fuera no va a tener efecto esamodificación.

    2. De sali a: Se usan solo y exclusivamente para evolver resulta os a través eellos. Su valor al hacer la llamada al subprograma no nos importa, sino que esevalor solo va a tener importancia cuando termina la ejecución del programa. Unparámetro e este tipo teóricamente nunca se pue e leer, solo se va actualizar.

    3. De entrada y salida: El valor del parámetro tiene importancia tanto a la entradacomo a la salida del subprograma, nos aporta información cuando llamamos alsubprograma y por otra parte devolvemos a través de   él resultados cuandoterminamos el subprograma, en este caso, tiene sentido tanto leer comoactualizar el parámetro.

    Solo ADA es un lenguaje que va a soportar los 3 tipos de paso de parámetro. Se ponencomo In, Out, In-Out.El resto e los lenguajes solo permiten os tipos e parámetros, e entra a solo para

    leer datos) y de entrada-salida (para devolver resultados, aunque también se puedeusar para leer datos).

  • 8/16/2019 Inicia Programacion Tecnicas

    42/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    42

    2. Métodos de paso de parámetros:- Paso de parámetros por copia:

    - Por valor.

    - Por resulta o.- Por valor-resultado.- Paso de parámetros por referencia.- Paso de parámetros por nombre o nominal.

    Paso de parámetros por copia:

    La caracterí stica fundamental de este método de paso de parámetros es que el parámetroformal siempre se consi era que tiene asocia a una irección e memoria en la que estáalmacenado y que por tanto se comporta igual que una variable local del subprograma enque aparece.

    En este método lo que importa es el valor del parámetro actual.

    1. Por valor: Nos interesa el valor del parámetro actual a la entrada, para ello este valorse copia en la irección e memoria el parámetro formal asocia o. En este caso elparámetro real puede se una constante, expresión o variable, y nunca se va a usar paradevolver resultado a través de  él, por esa razón precisamente puede ser una constanteo una expresión, porque al no devolver resultados a través de   él no necesita tomarninguna zona e memoria en la que este almacena o, es más, incluso si el parámetroactual fuera una variable y la mo ificásemos entro el subprograma algo que nodeberí amos hacer), fuera del subprograma no tendrí a ninguna repercusión estamodificación, es decir, esa variable servirí a valiendo lo mismo en el programa desde elque se hace la llamada después y antes de hacerla.El funcionamiento serí a el siguiente:

    - Al hacer la llamada al subprograma se evalúa el valor del parámetro real, y ese

    es el que se asocia, es decir, el que se guarda o asigna al pará

    metro formalasocia o.- Comenzamos a ejecutar el subprograma y si por casualidad se produce algún

    cambio en el parámetro formal, el parámetro actual no se verá   afectado, esecir, su valor seguirá  sien o el mismo en el subprograma es e on e se llama

    que antes e hacer la llama a al subprograma.

    Algoritmo EjVar A:entero 3 3 6

    Inicio A del PP X de PA 3P (A)Escribir A

    FinProcedimiento P(x:entero)Inicio

    X x*2Escribir x

    Fin pEl valor de A serí a 3 y el de X serí a 6.

    2. Por valor-resultado:  En el valor-resultado nos interesa el valor del parámetro actualtanto a la entra a como a la sali a e la ejecución el subprograma.Esto quiere decir que se cambia el valor del parámetro formal cambiará   también elvalor de su parámetro real asociado, cosa que no ocurrí a antes, y esto supone por

    tanto que ahora el parámetro real tiene que tener asociada obligatoriamente una

  • 8/16/2019 Inicia Programacion Tecnicas

    43/122

  • 8/16/2019 Inicia Programacion Tecnicas

    44/122

  • 8/16/2019 Inicia Programacion Tecnicas

    45/122

  • 8/16/2019 Inicia Programacion Tecnicas

    46/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    46

    X 2Y F(x,’a’)

    Fin PFuncion F1(x:entero;y:carácter):enteroInicio

    Escribir y

    Retorno x+1FinFuncion F2(A:entero;B:carácter):enteroInicio

    Escribir “Hola” BRetorno A

    Fin F2

    El paso de funciones y procedimientos como parámetros, nos va a permitir que desde unsubprograma po amos llamar a otros, pero tenien o en cuenta que el subprogramallamado no va a ser uno determinado, sino que va a depender en cada momento delsubprograma pasado como parámetro real, de esta manera el subprograma puede llamar a

    un conjunto de n subprogramas que cumplan unas determinadas caracterí sticas, pero solouno en ca a momento.No hay que confundir el paso de una función como parámetro con la llamada a unafunción cuando aparece como parámetro real en la llamada a un subprograma. Paradiferenciarlo, cuando paso una función como parámetro solo pondré   su nombre, encambio cuan o llamo a una función para pasar el valor que evuelve como parámetropon ré  el nombre e la función y con sus argumentos para in icar que ahí  se pue e hacerla llamada. Esto se puede hacer porque la llamada a una función puede aparecer encualquier expresión en la que apareciese cualquier valor del tipo de datos que devuelve.

    Procedimiento P(A:entero)Inicio

    Escribir AFin PFuncion F(x:entero):enteroInicio

    Retorno (x*2)Fin F

    Algoritmo EJVar IInicio

    I 2P(F(I)) Esto no es pasar una función como parámetro

    Fin

    7. EFECTOS LATERALES:Un efecto lateral es cualquier modificación que un subprograma (sea función oprocedimiento), realiza en elementos situados fuera de   él pero sin hacer esasmo ificaciones a través el paso e parámetros.Los efectos laterales siempre hay que evitarlos porque no somos conscientes o nocontrolamos que se han producido.Para realizar comunicación entre subprogramas solo se hará   a través el paso eparámetro para evitar los efectos laterales.Los efectos laterales normalmente se producen por el uso de variables globales o variableslocales que abarcan varios proce imientos esto solo es posible si hay ani ación esubprogramas). Por lo tanto evitaremos su uso excepto que sea imprescindible.

    Var A:entero

  • 8/16/2019 Inicia Programacion Tecnicas

    47/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    47

    Algoritmo EJVar B:enteroInicio

    B 1A 2P(B)

    Escribir AFinProcedimiento P(x:entero)Inicio

    A x+2Fin P

    8. RECURSIVIDAD:Se dice que un subprograma es recursivo cuando se llama a sí  mismo. La recursividad seva a po er usar en subprogramas que pue en efinirse en términos recursivos, es ecir, entermino de sí  mismo, como procesos de alguna manera repetitivos.La recursividad trataremos de evitarla siempre que sea posible, es decir, siempre que lo

    mismo se pue a solucionar con un bucle, ya que ca a vez que un subprograma se llama así   mismo hay que almacenar en la pila el sistema la irección e retorno e esesubprograma, con lo cual si hacemos muchas llamadas recursivamente iremos llenando lapila del sistema, y se desbordara acabando con la memoria.Todo programa recursivo tiene que tener alguna condición que ponga fin a la recursividad,es decir, que el programa deje de llamarse a s í  mismo cuando se cumpla la condición, sinose formarí a un bucle infinito.

    Funcion potencia (base:entero;exp:entero):realVar P:real

    I:enteroInicio

    P 1Desde i=1 hasta expP P*base

    Fin desdeRetorno P

    Fin

    Funcion potencia (base:entero;exp:entero):realInicio

    Si exp=0 entonces retorno 1Sino

    Retorno (base*potencia(base,exp-1)Fin potencia

    EJERCICIOS: TEMA 5 

    1. Implementar un subprograma que realice la serie de Fibonacci, que es:Fibonacci (1)= Fibonacci (2)=1N > 2 Fibonacci (n)= Fibonacci (n-1) + Fibonacci (n-2)

    Algoritmo serie_fibonacciVar

    I, n: enteroInicio

    Escribir “Introduce un número”Leer n

  • 8/16/2019 Inicia Programacion Tecnicas

    48/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    48

    Des e i=1 hasta nEscribir “La serie de fibonacci de “i” es “fibonacci (i)

    Fin es eFinFuncion fibonacci (num: entero): enteroInicio

    Si num=1 o num=2Entonces retorno 1Sino

    Retorno (fibonacci (num-1) + fibonacci (num-2)Fin si

    Fin fibonacci

    2. Implementar un subprograma al que pasándole como parámetros 2 valores enteros M yN, me calcule el combinatorio

    Algoritmo combinatorioVar

    M,n: enteroInicioRepetir

    Escribir “Introduce el valor de M y N”Leer m,n

    Hasta m >nEscribir “El combinatorio es “factorial (m) div (factorial(n)*factorial(m-n))

    FinFuncion factorial (num: entero): realInicio

    Si num=0Entonces retorno 1

    SinoRetorno (num * factorial (num-1))Fin si

    Fin factorial

    3. Implementar un subprograma que me halle cual es la primera potencia en base 2 mayorque un número que pasamos como parámetro, devolviendo el valor de dicha potencia y elexponente al que está elevado.

    Algoritmo elevarVar

    Numero, resp1, resp2: enteroInicioEscribir “Introduce un número”Leer numeroComprueba (numero, resp1, resp2)Escribir “2 ”resp1”=”resp2” >”numero

    FinProcedimiento comprueba (num: entero; ent-sal n: entero; ent-sal pot: entero)Inicio

    N 1Mientras pot < n

    Pot pot *2N n+1

    Fin mientrasFin comprueba

  • 8/16/2019 Inicia Programacion Tecnicas

    49/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    49

    4. Implementar un subprograma que calcule recursivamente en cuanto se convierte uncapital C al final de N años y a un interés I.

    Funcion calculo (c: entero;i: entero; n: entero): realInicio

    Si m=0Entonces retorno CSino

    Retorno (c*(1+i/100)+calculo (c,i,n-1)Fin si

    Fin calculo

    5. Calcular el primer término e la siguiente serie que sea mayor o igual a un valor V quese le pasa como parámetro y me devuelva el lugar que ocupa en la serie y el valor.Ai=0An=n+(An-1)!

    Funcion factorial (num: entero): enteroVarI, acum: entero

    InicioAcum 1Desde i=1 hasta num

    Acum acum * iFin desdeRetorno acum

    Fin factorialProcedimiento serie (v: entero; ent-sal an: entero; ent-sal n: entero)Var

    A1: enteroInicioA1 0An 0N 1Mientras an

  • 8/16/2019 Inicia Programacion Tecnicas

    50/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    50

    Acum1 acum1 + xFin desdeDes e j=0 hasta n-1

    Y 1 +i*acum1 + yFin desdeRetorno acum2

    Fin suma7. ¿Qué se escribe en pantalla tras la siguiente ejecución?Algoritmo EJVar

    A,B,C: enteroInicio

    A 1B 2C A+3P1 (A, B-C, C)C C – F(A)P2 (A,C)

    P1 (C, B, A)Escribir A, B, CFinProcedimiento P1 (ent-sal x: entero; y: entero; ent-sal z: entero)Inicio

    X y +zY x +1Z y * 2

    Fin P1Procedimiento P2 (ent-sal x: entero; y: entero)Inicio

    X x +1 –y

    Y 3Fin P2Funcion F (x: entero): enteroInicio

    X x + 3Retorno (x – 1)

    Fin F

    La solución es A=8; B=2; C=3

  • 8/16/2019 Inicia Programacion Tecnicas

    51/122

  • 8/16/2019 Inicia Programacion Tecnicas

    52/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    52

    Sin embargo na ie impi e que comiencen en cualquier otro valor.Los arrays se almacenan siempre en posiciones consecutivas de memoria y podemosacceder a cada elemento del array de manera independiente a través de los   í ndices. Uní n ice no tiene porque ser un valor constante, sino que pue e ser también una variable ouna expresión que al ser evalua a evuelva ese  í n ice.A la hora de definir un array siempre habrá  que dar el nombre del array, el rango de sus

    í n ices y el tipo e los atos que contiene, y para hacer esa eclaración, se utiliza lasiguiente nomenclatura.: array [LI .. LS] de sueldo: array [1 .. 8] de realsueldo: array [1990 .. 1997] de realsueldo [1992] 100000I: enteroI 1992Sueldo [I]Sueldo [I+2]

    3. OPERACIONES CON ARRAYS UNIDIMENSIONALES O VECTORES:

    1. Asignación de un dato a una posición concreta del array:[indice] valor

    1 2 3 4 5 6 7 8 9 10 11 12Ventas [3] 800000

    2. Lectura y escritura de datos:leer [indice]escribir [indice]

    desde i=1 hasta 12escribir “Introduce las ventas del mes”ileer ventas [i]

    fin desdedesde i=1 hasta 12escribir “Ventas del mes”i”=”ventas [i]

    fin es e

    3. Recorrido o acceso secuencial de un array:- Consiste en pasar por todas las posiciones del array para procesar su información.Desde i=1 hasta 12

    Ventas [i] ventas [i] + 1000000Fin es e

    4. Actualización de un array:

    1º) Añ

    adir datos:Es un caso especial de la operación de insercción de un elemento en un array, pero elelemento lo metemos después de la  última posición que contiene información válida en elarray.Para que esto se pueda hacer es necesario que si actualmente el array tiene K posiciones deinformación váli a, tenga un tamaño e al menos K+1 para que pue a aña ir otroelemento a continuación de K.

    [K+1] valor

    2º) Inserción de datos:Consiste en intro ucir un elemento en el interior e un array para lo cual será  necesariodesplazar todos los elementos situados a la derecha del que vamos a insertar una posicióna la derecha con el fin de conservar el orden relativo entre ellos.

  • 8/16/2019 Inicia Programacion Tecnicas

    53/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    53

    Para que se pue a insertar un nuevo elemento en el array si ya existen N elementos coninformación en el array, el array tendrá  que tener un tamaño de cómo mí nimo N+1 parapoder insertar el elemento.

    C E F J M O

    “G”Siendo K la posición en la que tengo que insertar el nuevo elemento y N el número deelementos válidos en el array en el momento de la inserción y siempre suponiendo de N+1,el algoritmo de inserción será:

    Desde i=N hasta KA[I+1] A[I]

    Fin desdeA[K] valor

    3º) Borrar datos:Para eliminar un elemento de un array si ese elemento está  posicionado al final del array,no hay ningún problema, simplemente si el tamaño del array era N, ahora hay que

    considerar que el tamaño del array es N-1.Si el elemento a borrar ocupa cualquier otra posición entonces ten ré  que esplazar to oslos elementos situados a la derecha del que quiero borrar una posición hacia la izquierdapara que el array quede organizado.

    C E F J M OBorrar J.Suponiendo que el número de elementos validos actualmente es N y que quiero borrar elelemento de la posición K.

    Des e i=K hasta N-1A[I] A[I+1]

    Fin desdePara indicar que el número de elementos validos es N, podrí amos indicarlo como N

    N-1.4. ARRAYS BIDIMENSIONALES O MATRICES:En un array uni imensional o vector ca a elemento se referencia por un   í n ice, en unarray bidimensional cada elemento se va a referenciar por 2   í ndices, y ahora larepresentación lógica ya no va a ser un vector, sino una matriz.Un array bidimensional de M*N elementos es un conjunto de M*N elementos, todos delmismo tipo, cada uno de los cuales se referencia a través de 2 subí ndices. El primersubí ndice podrá  variar entre 1 y M si hemos empezado a numerar los   í ndices por 1, y elsegundo í ndice variará entre 1 y N, si hemos empezado a numerar los  í ndices por el 1.

    Y más en general podemos definir un array de 2 dimensiones de la siguiente manera.: array [LI1..LS2,LI2..LS2] de

    [I , J]LI1

  • 8/16/2019 Inicia Programacion Tecnicas

    54/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    54

    1 2 3 4 5 6 7 8 9 10 11 1219901991

    19921993

    X

    19941995

    Ventas [1993,3]

    En memoria estarí a almacenado todo seguido:

    Manejo de matrices:- Para poner a 0 todos los elementos de la matriz.

    M: array [1..N,1..M] de enteroVar i,j enteroDesde i=1 hasta n

    Desde j=1 hasta MM [i,j] 0

    Fin desde

    Fin desde

    - Para poner a 0 solo los elementos de la fila I:Desde i=1 hasta N

    M [i,j] 0Fin es e

    5. ARRAYS MULTIDIMENSIONALES:Un array multidimensional es un array de 3  ó más dimensiones. Si tenemos un array de N

    imensiones, ca a imensión e tamaño 1, 2,.., N, el número e elementos el arrayserá   1 2 .. N, y para acce er a un elemento concreto el array utilizaremos Ní n ices, ca a uno e los cuales referenciará   a una posición entro e una imensión,

    siempre según el orden de declaración.En memoria, el array se sigue almacenando en posiciones consecutivas.La declaración de un array multidimensional serí a:Nom_array: array [LI1..LS1,LI2..LS2,LI3..LS3,LIN..LSN] de tipoNom_array [I1,I2,I3,IN]

    LI1

  • 8/16/2019 Inicia Programacion Tecnicas

    55/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    55

    En el caso de un array bidimensional, también se seguirá   almacenando en posicionescontiguas de memoria, y su tamaño será el producto de sus elementos pro el tamaño.Ahora, la forma en la que están almacenados esos elementos va a depender de que el arrayse almacene fila a fila o columna a columna, que también se conoce comoalmacenamiento por orden de fila mayor o por orden de columna mayor.

    C1 C2 ..... Cm C1 C2 ... CmF1 F2 F3

    A: array [1..N,1..M] de Fila1,1 1,2 1,3 ..... 1,

    M2,1 2,2 2,3 .... 2,

    MN,1 N,2 ... N,

    m

    Como hallar la dirección base en la que comienza a almacenarse un determinado elementode un array:- Unidimensionales:

    DIR(A[I])= Dir_Base + (I-1) * TamañoNúmero elemento = 3

    Tamaño = 5Dir_Base = 100A[3] comienza en la dirección 110

    - Bidimensionales:Orden de fila mayorDir(A[i,j])= Dir_Base + [((I-1)*M)+(J-1)]*TamañoOrden de columna mayorDir(A[i,j])= Dir_Base + [((J-1)*N)+(I-1)]*Tamaño

    7. ARRAYS COMO PARÁMETROS DE SUBPROGRAMAS:Un array es también un tipo de datos estructurado, y se puede pasar como parámetro a unsubprograma, pero el problema es que no sabemos como indicar si su paso es por valor o

    por referencia.En principio, el paso de un array siempre tiene sentido que sea por referencia (que semodifique y tenga repercusión en el exterior), y si es por valor solo servirí a para leerinformación.La mayor parte de los lenguajes de programación, pasan los arrays por referencia (si semodifica el array se nota en el exterior). Nosotros también lo haremos así .Si paso el array y no quiero modificarlo, con no modificarlo basta.

    Es distinto pasar un array como parámetro a pasar una posición del array, si paso el arrayentero como parámetro, el parámetro formal asociado será   un array con la mismaestructura que el parámetro real, pero si lo que quiero pasar es un elemento e unaposición concreta del array, el parámetro formal asociado no será del tipo array, sino que

    será

      del tipo de datos que contenga el array, porque cada elemento de un array es unelemento independiente que se puede usar por separado.

    En el caso de que pasemos un array entero como parámetro, el parámetro formal asociado,tendrá   que ser un array de la misma estructura que tiene el mismo tipo de datos y elmismo tamaño.En C, el parámetro formal asociado tiene que ser del mismo tipo de datos, pero no hacefalta que sea del mismo tamaño.

    Para pasar un array como parámetro real, utilizare el nombre del array, en cambio sipasamos una posición concreta, usaré el nombre y el   í ndice. En C, el nombre de un arrayindica su dirección de comienzo en memoria, y por eso siempre se pasa por referencia.Siempre vamos a pasar los arrays por referencia, sin la palabra clave ent-sal.

  • 8/16/2019 Inicia Programacion Tecnicas

    56/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    56

    Como en las funciones no se pasan los parámetros por referencia, lo mejor es no pasar losarrays como parámetros de las funciones.

    Procedimiento (:array [LI1..LS1] de ; ...)Var A: array [LI1..LS1] de Nom_p (array) Sólo se pasa el nombre.

    8. ARRAYS DE “PUNTEROS”:En reali a lo que vamos a explicar con este concepto es la posibili a e que es e unarray se apunte a la posición de otro array. Que unos arrays sirvan para referenciar aotros.

    ¿Qué es un puntero?Un puntero es una variable que contiene una irección en la que está   almacena o unelemento que llamamos apunta o.Desde este punto de vista, un   í ndice indirectamente también es un puntero porquein irectamente in ica una posición el array, pero no lo es irectamente porque noalmacena una irección.Desde este punto de vista, si un array contiene valores de   í ndices, es decir, que cada

    posición de ese array lo que hace es apuntar a la posición de otro array, entonces decimosque es un array e punteros, aunque en reali a la efinición mas correcta es que es unarray de  í ndices a otro array.

    ¿Cuándo es útil usar un array de índice?Imaginemos que tenemos una compañí a que quiere tener almacenados los datos de susempleados organizados por zonas. Imaginemos que hay 4 zonas.

    Z1 Z2 Z3 Z4X W H CA J DY K

    LPodemos almacenar esta información de distintas formas:

    - Un array bidimensional 4*N, en donde 4 son las zonas y N es el númeromáximo e emplea os que hay por zona.El inconveniente es la perdida de espacio.

    - Usar un array unidimensional o vector donde estén todos los datos seguidos.El inconveniente es que no tengo los empleados ordenados por zonas.

    - Usar un array unidimensional, y entre cada 2 zonas meter en la posición que vaentre ellas una marca especial para in icar que paso e zona.El inconveniente es que para pasar a una zona tengo que pasar por todas lasanteriores.

    - Usar un array de í 

    ndices:Un array con la información de los empleados.Otro array de í ndices que contendrá tantas posiciones como zonas haya.En cada posición de cada zona almacenaré   el   í ndice en donde comienza elprimer empleado de esa zona en el array de empleados.Zonas Empleados1 X4 A5 Y7 W

    H J

    CDK

  • 8/16/2019 Inicia Programacion Tecnicas

    57/122

    T CNICAS Y DISE OS DE ALGORITMOS   INICIANDO LA PROGRAMACIÓN

    57

    L

    Listar to os los emplea os e la zona 3:Desde i=zona[3] hasta zona[4]-1

    Escribir Empleados [i]Fin desde

    * Número de empleados:Zona [4] – Zona [3]

    EJERCICIOS: TEMA 6  

    1. Hay unos multicines con 5 salas, y cada sala con 100 personas distribuidas en 20asientos y 5 filas.Si yo pido entrada para una sala, implementar un programa que me diga si hay sitio enla sala.

    Algoritmo cines

    ConstSalas=5Asientos=20Filas=5

    VarN_salas,j,k: enteroMarca: booleanA: array [1..salas,1..asientos,1..filas] de entero

    InicioPedir_datos (n_salas)Mientras n_salas 0

    Marca falso

     J 0K 1Repetir

    Si j > asientosEntonces j 1

    K k+1Fin siSi (j=asientos) y (k>=filas)

    Entonces escribir “Sala llena”Marca verdadero

    Sino si a [n_salas,j,k]=0Entonces a[n_salas,j,k] 1

    Escribir “Asiento”j”fila”kMarca verdaderoFin si

    Fin siHasta (a[n_salas,j,k]=1) y (marca=verdadero)Pedir_datos (n_salas)

    Fin mientras