inicia programacion tecnicas
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