Beruflich Dokumente
Kultur Dokumente
Pagina principal
MÓDULO 6: REGISTROS
__
Pagina principal
● 1. Introducción a la programación.
● 1.1 Historia de la computación
● 1.2 Estructura de un computador
● 2. Introducción a los algoritmos.
● 2.1 Algoritmos
● 2.2 Problemas
● 2.3 Teoria de la programacion estructurada
● 3. Metodología de programación un-programa.
● Introducción
● 3.1 Diálogo
● 3.2 Especificación de algoritmos
● 3.3 Diseño estructurado de algoritmos
● 6. Estructuras repetitivas.
● 7. Arreglos y matrices.
● 8. Funciones.
Módulo 6. Registros
● 14. Registros.
__
LA FABRICACION EN
HISTORIA DE LA
SERIE
COMPUTACIÓN
1.1.1 ANTECEDENTES
Durante los cien años siguientes, las máquinas activadas por tarjetas perforadas
se modificaron, se mejoraron e hicieron más rápidas, pero aún no podían mantener
el ritmo de las crecientes necesidades humanas de procesamiento de listas de
pagos, cuentas, facturas, análisis de ventas y otros problemas.
Figura 3. Mark I
Figura 4. ENIAC
Como las interrupciones de este tipo podían hacerse miles de veces más rápido que
los aparatos electro-mecánicos, el ENIAC constituyó un gran inicio hacia el
desarrollo de las computadoras modernas.
ESTRUCTURA DE UN
HISTORIA DE LA
COMPUTADOR
COMPUTACIÓN
__
ESTRUCTURA DE UN
HISTORIA DE LA
COMPUTADOR
COMPUTACIÓN
Tabla de contenido
__
Tabla de contenido
ARQUITECTURA DE
ESTRUCTURA DE UN
SOFTWARE
COMPUTADOR
Un computador desde la perspectiva del hardware, esta constituido por una serie
de dispositivos cada uno con un conjunto de tareas definidas. Los dispositivos de
un computador se dividen según la tarea que realizan en: dispositivos de
entrada, salida, comunicaciones, almacenamiento y computo.
[1] La unidad central de proceso es más conocida como CPU por sus siglas en
inglés Central Process Unit.
[2] La unidad aritmético lógica es más conocida como ALU por sus siglas en
inglés Arithmetic Logic Unit.
__
ARQUITECTURA DE
ESTRUCTURA DE UN
SOFTWARE
COMPUTADOR
ESTRUCTURA DE UN
Tabla de contenido
COMPUTADOR
Un sistema operativo.
Un conjunto de lenguajes a diferente nivel con los cuales se comunica con el
usuario y con sus dispositivos. Entre estos están los lenguajes de máquina, los
ensambladores y los de alto nivel.
Un conjunto de aplicaciones de software.
Un conjunto de herramientas de software.
Software: El hardware por si solo no puede haga nada, pues es necesario que
exista el software, que es un conjunto de instrucciones que le dicen al hardware
que haga .
CODIGO ARGUMENTO(S)
MNEMONICO ARGUMENTO(S)
Es el software encargado de administrar los recursos del sistema, para esto ofrece
un conjunto de primitivas (funciones y procedimientos) a otro software, que le
permiten a este ultimo ser tan independiente de la arquitectura de hardware como
le sea posible. Se dice que un software es para el sistema operativo <nombre>,
si utiliza las primitivas que el sistema operativo <nombre>
proporciona. Adicionalmente, un sistema operativo ofrece un conjunto de comandos
a los humanos sean o no programadores, para interactuar con la máquina.
Los sistemas operativos pueden ser escritos en lenguaje de alto nivel, como UNIX
que fue escrito en C, en lenguaje ensamblador y/o en lenguaje máquina. Algunos
de los sistemas operativos más conocidos son UNIX, LINUX, Microsoft Windows.
ESTRUCTURA DE UN
Tabla de contenido
COMPUTADOR
TABLA DE CONTENIDO
2.1 ALGORITMOS
Se dice que una tarea esta ‘bien definida’, si se sabe de manera precisa las
acciones requeridas para su realización. Aunque los recursos que debe utilizar
cada tarea deben ser finitos estos no están limitados, es decir, si una tarea
bien definida requiere una cantidad inmensa (pero finita) de algún recurso para
su realización, dicha tarea puede formar parte de un algoritmo. Además, se dice
que una secuencia de tareas esta ‘bien definida’ si se sabe el orden exacto
de ejecución de cada una de las mismas.
__
TABLA DE CONTENIDO
TECNICAS PARA LA
FORMULACION DE
ALGORITMOS
ALGORITMOS
TECNICAS PARA LA
FORMULACION DE
ALGORITMOS
ALGORITMOS
ALGORITMOS
__
ALGORITMOS
TECNICAS PARA LA
PSEUDOCODIGO
FORMULACION DE
ALGORITMOS
SIMBOLO FUNCION
__
TECNICAS PARA LA
PSEUDOCODIGO
FORMULACION DE
ALGORITMOS
FORMULACION DE ALGORITMOS
ALGORITMOS
2.1.2.2 PSEUDOCODIGO
Secuencia
Inicio
acción1
acción2
acción n
Fin
Decisión
Simple
si condición entonces
acción1
acción2
acción
n
Doble
si condición entonces
acción1
acción2
en caso contrario
acción1
acción2
Iteracción
Fija
acción1
acción2
acción
n
Condicional al inicio
mientras condición
hacer
acción1
acción2
acción
n
Condicional al final
repita
acción1
acción2
acción
n
Hasta que
condición
Selección
casos selector de
valor1 :
acción1
acción2
valor2 :
acción1
acción2
...
valor
n:
acción1
acción2
__
FORMULACION DE ALGORITMOS
ALGORITMOS
EJERCICIOS DE
ALGORITMOS
ALGORITMOS
ALGORITMO:
Inicio
Dormir
haga 1 hasta que suene el despertador (o lo llame la
mamá).
Mirar la hora.
¿Hay tiempo suficiente?
Si hay, entonces
Bañarse.
Vestirse.
Desayunar.
Sino,
Vestirse.
Cepillarse los dientes.
Despedirse de la mamá y el papá.
¿Hay tiempo suficiente?
Si, Caminar al paradero.
Sino, Correr al paradero.
Hasta que pase un bus para la universidad haga :
Esperar el bus
Ver a las demás personas que esperan un bus.
Tomar el bus.
Mientras no llegue a la universidad haga :
Seguir en el bus.
Pelear mentalmente con el conductor.
Timbrar.
Bajarse.
Entrar a la universidad.
Fin
ALGORITMO:
Inicio
PASO 1. Aflojar los tornillos de la rueda pinchada con la llave inglesa.
PASO 2. Ubicar el gato mecánico en su sitio.
PASO 3. Levantar el gato hasta que la rueda pinchada pueda
girar libremente.
PASO 4. Quitar los tornillos y la rueda pinchada.
PASO 5. Poner rueda de repuesto y los tornillos.
PASO 6. Bajar el gato hasta que se pueda liberar.
PASO 7. Sacar el gato de su sitio.
PASO 8. Apretar los tornillos con la llave inglesa.
Fin
ALGORITMO:
Inicio
PASO 1. Colocar los números el primero encima del segundo,
de tal manera que las unidades, decenas, centenas, etc., de
los números queden alineadas. Trazar una línea debajo del
segundo número.
PASO 2. Empezar por la columna más a la derecha.
PASO 3. Sumar los dígitos de dicha columna.
PASO 4. Si la suma es mayor a 9 anotar un 1 encima de la
siguiente columna a la izquierda y anotar debajo de la línea las
unidades de la suma. Si no es mayor anotar la suma debajo
de la línea.
PASO 5. Si hay más columnas a la izquierda, pasar a la
siguiente columna a la izquierda y volver a 3.
PASO 6. El número debajo de la línea es la solución.
Fin
4. PROBLEMA: Sean los puntos P=(a,b) y Q=(c,d) que definen una recta, encontrar
un segmento de recta perpendicular a la anterior que pasa por el punto medio de
los puntos dados.
ALGORITMO:
Inicio
PASO 1. Trazar un círculo con centro en el punto P que pase por el punto Q.
PASO 2. Trazar un círculo con centro en el punto Q que pase por el punto P.
__
EJERCICIOS DE
ALGORITMOS
ALGORITMOS
ESTRUCTURA BASICA DE UN
ALGORITMOS
ALGORITMO
a. Cada niño posee un turno en el que trata de averiguar el número del otro.
b. En su turno el primer niño pregunta si un número que dice es el pensado por
el segundo.
c. Si el número que ha dicho el primer niño es el que pensó el segundo, este
último debe informarle al primero que ganó.
d. Si el número no es el segundo niño debe decir si su número pensado es menor
o mayor al que el primer niño dijo.
e. Luego el segundo niño tiene su turno y de esta manera se van intercalando
hasta que alguno de los dos gane.Desarrollar un algoritmo para jugar adivina
mi número.
__
ESTRUCTURA BASICA DE UN
ALGORITMOS
ALGORITMO
ALGORITMOS PROBLEMAS
ALGORITMOS PROBLEMAS
ALGORITMOS
2.2 PROBLEMAS
__
ALGORITMOS
EJEMPLOS DE
PROBLEMAS
PROBLEMAS
A su vez, los problemas solubles se dividen en dos clases: los algorítmicos y los
no algorítmicos.
__
EJEMPLOS DE
PROBLEMAS
PROBLEMAS
PROBLEMAS EJERCICIOS
1. Sean los puntos P=(a,b) y Q=(c,d) que definen una recta, encontrar un
segmento de recta perpendicular a la anterior que pase por el punto medio de
los puntos dados.
diferentes tamaños. La caja a apilar no puede ser más grande que las que ya
estén apiladas en dicho lugar. El robot puede solo tomar la caja de más arriba de
una pila. Mirando la figura, como puede el robot pasar las tres cajas apiladas en
el lugar A, al lugar C usando, si es necesario, el lugar de apilar B.
__
PROBLEMAS EJERCICIOS
PROGRAMACIÓN
PROBLEMAS
ESTRUCTURADA
2.2.3 EJERCICIOS
3. Si Juan tiene el doble de la edad de Pedro y la suma de las edades de los dos
es 33 años, ¿Cuántos años tiene Juan y cuántos tiene Pedro?.
4. ¿Qué figura se forma al unir los puntos marcados con números consecutivos
con una línea?
__
PROGRAMACIÓN
PROBLEMAS
ESTRUCTURADA
TEORIA DE LA
PROGRAMACION
ALGORITMOS
ESTRUCTURADA
Introducción
1. Secuencia Simple
2. Selección
3. Iteración
TEORIA DE LA
PROGRAMACION
ALGORITMOS
ESTRUCTURADA
PROGRAMACIÓN
ESTRUCTURADA
El teorema de la estructura.
Secuencia: Las instrucciones del programa se ejecutan en el orden en el cual ellas aparecen
en el programa como se indica en la siguiente figura:
Iteración: Repetir varias veces una acción hasta cuando deje de cumplirse la condición.
Se conoce como la estructura HACER - MIENTRAS
Es de anotar que hay algunas variaciones a esta estructura dependiendo del lenguaje
de programación. La idea fundamental es que siempre que aparezca una función que se
puede dibujar en recuadro se pueda sustituir por cualquiera de las tres estructuras
básicas constituyendo así un programa propio.
__
PROGRAMACIÓN
ESTRUCTURADA
Nota: Los ejemplos incluidos en esta sección presentados en pseudocódigo son solo para
ilustrar la metodología
mas no se espera que el estudiante los comprenda.
__
METODOLOGIA DE ESPECIFICACION DE
3.1 DIALOGO
Ejemplo. Sean los puntos P=(a,b) y Q=(c,d) que definen una recta, encontrar
un segmento de recta perpendicular a la anterior que pase por el punto medio de
los puntos dados.
__
METODOLOGIA DE ESPECIFICACION DE
TABLA DE CONTENIDO
__
TABLA DE CONTENIDO
PASOS PARA LA
ESPECIFICACION DE ESPECIFICACION DE
ALGORITMOS ALGORITMOS
3. La dependencia que mantendrán las salidas obtenidas con las entradas recibidas.
Esta descripción puede ser presentada mediante un diagrama de caja negra como
el de la siguiente figura:
__
PASOS PARA LA
ESPECIFICACION DE ESPECIFICACION DE
ALGORITMOS ALGORITMOS
EJEMPLOS DE
ESPECIFICACION DE
ESPECIFICACION
ALGORITMOS
__
EJEMPLOS DE
ESPECIFICACION DE
ESPECIFICACION
ALGORITMOS
ESPECIFICACION DE ALGORITMOS
ALGORITMOS
Condiciones
Descripción de Entradas y Ni: Nota i-ésima con i=1,2,3,4, Final: Nota Final.
Salidas
Condiciones
ESPECIFICACION A
Entradas A,B,C (números de entrada) de tipo Real.
ESPECIFICACION B
Diagrama de Caja Negra:
Descripción de Entradas y
A, B, C: Números de entrada, Mayor: Valor Mayor.
Salidas
Condiciones
ESPECIFICACION A
Cx (coordenada x del círculo) de tipo Real.
ESPECIFICACION B
Diagrama de Caja Negra:
Descripción de Entradas y
Salidas
r: Radio del círculo.
Condiciones
__
ESPECIFICACION DE ALGORITMOS
ALGORITMOS
TABLA DE CONTENIDO
__
TABLA DE CONTENIDO
DISEÑO
DIVISION
ESTRUCTURADO DE
ALGORITMOS
__
DISEÑO
DIVISION
ESTRUCTURADO DE
ALGORITMOS
DISEÑO DEFINICION DE
ESTRUCTURADO DE ABSTRACCIONES
ALGORITMOS
3.3.1 DIVISIÓN
Problema b.1: Realizar un programa que lea una serie de n números enteros
y determine si la suma de los mismos es un cuadrado perfecto.
Especificación:
donde
División:
• Primera Iteración
• Segunda Iteración
Pseudo-código
Procedimiento principal()
variables
n : entero
suma : entero
dato : entero
dato : entero
i : entero
Inicio
escribir (“Número de datos:”)
leer (n)
suma := 0
para (i:=1 hasta n hacer)
escribir (“ingrese un dato:”)
leer (dato)
fin_para
si redondear( raiz2( suma ) ) = raiz2( suma )
entonces
escribir (“La suma es un cuadrado perfecto”)
sino
escribir (“La suma no es un cuadrado perfecto”)
fin_si
Fin
fin_procedimiento
__
DISEÑO DEFINICION DE
ESTRUCTURADO DE ABSTRACCIONES
ALGORITMOS
DIVISION CODIFICACION
Ejemplo:
· Especificación:
donde,
División:
Primer Iteración.
Inicio
1. Leer primer conjunto.
2. Leer segundo conjunto.
3. Leer entero.
4. Determinar si el entero esta en el primer
conjunto.
5. Determinar si el entero esta en el
segundo conjunto.
6. escribir el resultado.
Fin
Segunda Iteración.
1. L eer primer conjunto se divide en:
1.1. eer un dato.
1.2. Determinar si el elemento no esta en el primer conjunto.
1.3. Si no esta agregar el dato al primer conjunto, si ya esta mostrar un
mensaje de error.
1.4. Preguntar si el usuario desea ingresar un nuevo elemento al primer
conjunto.
1.5. Si el usuario desea ingresar un nuevo elemento volver a 1.1.
2. Leer segundo conjunto se divide en:
2.1. Leer un dato.
2.2. Determinar si el elemento no esta en el segundo conjunto.
2.3. Si no esta agregar el dato al segundo conjunto, si ya esta mostrar
un mensaje de error.
2.4. Preguntar si el usuario desea ingresar un nuevo elemento al
segundo conjunto.
2.5. Si el usuario desea ingresar un nuevo elemento volver a 2.1
3. Leer entero.
Procedimiento principal()
variables
i : entero
j : entero
n : entero
m : entero
elemento : entero
continuar : caracter
bandera1 : booleano
bandera2 : booleano
A : arreglo [100] de entero
B : arreglo [100] de entero
/* el codigo siguiente lee el conjunto A*/
n := 0
escribir (“Desea ingresar elementos al conjunto A (S/N):”)
leer (continuar)
mientras (continuar =‘S’ | continuar = ‘s’) hacer
escribir (“Ingrese el elemento al conjunto A:”)
leer (elemento)
/* el codigo siguiente prueba si el elemento esta en el conjunto A */
Inicio
i := 0
mientras (i<n & A[i] <>elemento) hacer
i := i+1;
fin_mientras
si (i =n entonces)
A[n] := elemento
n := n+1
sino
escribir (“Error: el elemento ya esta en el conjunto A”)
fin_si
escribir (“Desea ingresar mas elementos al conjunto A (S/N)”)
leer (continuar)
fin_mientras
/* el codigo siguiente lee el conjunto B */
m := 0
escribir (“Desea ingresar mas elementos al conjunto B (S/N)”)
leer (continuar)
mientras (continuar =‘S’ |continuar = ‘s’ hacer)
escribir (“Ingrese el elemento al conjunto B:”)
leer (elemento)
/* el codigo siguiente prueba si el elemento esta en el conjunto B */
i := 0
mientras (i<m & B[i] <>elemento hacer)
i := i+1;
fin_mientras
si (i = m) entonces
B[m] := elemento
m := m+1
sino
escribir (“Error: el elemento ya esta en el conjunto B”)
fin_si
escribir (“Desea ingresar mas elementos al conjunto B (S/N)”)
leer (continuar)
fin_mientras
/* el codigo siguiente lee un elemento a probar */
escribir (“Ingrese el dato a probar en los conjuntos”)
leer (elemento)
/* el codigo siguiente prueba si el elemento esta en el conjunto A */
i := 0
mientras (i<m & A[i] <>elemento) hacer
i := i+1;
fin_mientras
si( i =n entonces)
bandera1 := falso
sino
bandera1 := verdadero
fin_si
/* el codigo siguiente prueba si el elemento esta en el conjunto B */
i := 0
mientras (i<m & B[i] <>elemento) hacer
i := i+1
fin_mientras
si (i = m entonces)
bandera2 := falso
sino
bandera2 := verdadero
fin_si
/* el codigo siguiente determina si el elemento esta en alguno de los dos
conjuntos */
si (bandera1 | bandera2) entonces
escribir (“El dato dado esta en alguno de los dos conjuntos”)
sino
escribir (“El dato dado esta en ninguno de los conjuntos”)
fin_si
Fin
fin_procedimiento
Se puede observar que esta función además de recibir el arreglo de datos y el elemento,
recibe un entero adicional n. Este entero se utiliza para indicar el tamaño del conjunto
dado. Esta función se codifica como sigue:
Variables
bandera :booleano
i : entero
inicio
/* el codigo siguiente prueba si el elemento esta en el
conjunto */
i := 0
mientras (i<n & A[i] != e) haga
i := i+1;
fin_mientras
si (i == n) entonces
bandera := falso
sino
bandera := verdadero
fin_si
retornar bandera
fin_funcion
inicio
/* el codigo siguiente lee el conjunto */
n := 0
escribir (“Desea ingresar elementos al conjunto ”, c, “ (S/N)”)
leer (continuar)
mientras (continuar =‘S’ | continuar =‘s’) haga
escribir (“Ingrese el elemento al conjunto ”, A , “ :”)
leer (elemento)
Procedimiento principal()
inicio
n :entero
m :entero
elemento :entero
__
DIVISION CODIFICACION
PRUEBAS DE
TABLA DE CONTENIDO
ESCRITORIO
3.4 CODIFICACIÓN
#include <iostream.h>
__
PRUEBAS DE
TABLA DE CONTENIDO
ESCRITORIO
Básicamente, una prueba de escritorio es una ejecución ‘a mano’ del algoritmo, por
lo tanto se debe llevar registro de los valores que va tomando cada una de
las variables involucradas en el mismo.
suma :entero
entrada :entero
menor :entero
leer entrada
menor = entrada
suma = 0
mientras (entrada != 0) haga
si (entrada < menor) entonces
menor =entrada
fin_si
suma = suma + entrada
leer entrada
fin_mientras
escribir “valor Menor:”
escribir menor
escribir “Suma:”
escribir suma
__
Tabla de contenido
5. ESTRUCTURAS DE CONTROL
5.1 Secuencia
5.2 Selección
5.3 Estructura de selección multiple
5.4 Codificación de algoritmos en lenguajes de programación
Autoevaluación
__
Tabla de contenido
CONSTRUCTORES
VARIABLES
BÁSICOS (PARTE A)
4.1 DATOS
Ejemplos.
A = {a, b, c}
B = {0, 1, 2, 3, 4}
Ejemplos.
C = {x | x es un número primo}
B = {x | x es una vocal}
EJEMPLOS
El nombre asignado al conjunto de
Entero: 123<-1<0<2
números enteros.
Distinguir los números enteros de los números reales. Por ejemplo el 2 (sin
punto decimal), indica que el elemento es del conjunto de los enteros, mientras que
el 2.0 (con punto decimal), indica que es un elemento del conjunto de los reales.
Distinguir los símbolos y palabras que forman parte del sistema de representación
o codificación del algoritmo, de los usados para representar un dato concreto de
los tipos caracter y cadena de caracteres respectivamente. En este curso los datos
de tipo caracter son representados entre comillas simples (‘), mientras que los
datos de tipo cadena de caracteres son representados entre comillas dobles (“).
__
CONSTRUCTORES
VARIABLES
BÁSICOS (PARTE A)
CONSTRUCTORES
LITERALES
BÁSICOS (PARTE A)
4.2 VARIABLES
● velocidad
● x
● valor1
● exponente
● val_max
4.2.2 Tipo.
El tipo de una variable es el mismo tipo de los datos que se pueden almacenar en
el espacio de memoria que la variable referencia. Por ejemplo, una variable de
tipo entero, es decir, que se ha declarado[1] como entera, sólo se puede usar
para referenciar datos de tipo entero. La cantidad de memoria, es decir, el espacio
en memoria en bits, asignada para almacenar un dato de un tipo depende del
sistema operativo y del compilador del lenguaje.
<nombre> : <tipo>
● val_max : real
● contador : entero
● nombre : cadena
● letra : caracter
● bandera : booleano
Nota: Aplet es una aplicación desarrollada en lenguaje JAVA. Haz clik el gráfico
para observarla.
CONSTRUCTORES
LITERALES
BÁSICOS (PARTE A)
CONSTRUCTORES
CONSTANTES
BÁSICOS (PARTE A)
4.3 LITERALES
● 12345
● 4768
● –138
● 2609
● 10
● 3465.98
● 29.0
● -123.78
● 23.7e-4 (en notación científica 23.7e-4 equivale a 23.7 * 10-4)
● –3.9876
Un literal de tipo carácter es una símbolo delimitado por comillas simples (‘)
Son las palabras falso y verdadero, las cuales son usadas para representar los
dos valores de verdad.
__
CONSTRUCTORES
CONSTANTES
BÁSICOS (PARTE A)
CONSTRUCTORES
EXPRESIONES
BÁSICOS (PARTE A)
4.4 CONSTANTES
<nombre> = <literal>
Una buena técnica de programación es usar letras mayúsculas para los nombres
de las constantes.
● PI = 3.1415926
● VELOCIDAD_LUZ = 300000000.0
● SALUDO_BASICO = “Hola, Buenos días”
● TAMANO_MAXIMO = 1000
● ESPACIO = ‘ ’
__
CONSTRUCTORES
EXPRESIONES
BÁSICOS (PARTE A)
CONSTRUCTORES
BÁSICOS (PARTE A)
4.5 EXPRESIONES
Introduccion
4.5.1 Expresiones numericas
4.5.2 Expresiones logicas
4.5.3 Evaluacion de expresiones
4.5.4 Ejercicios de expresiones
4.5.5 Instrucciones sobre variables, literales y constantes
__
CONSTRUCTORES
BÁSICOS (PARTE A)
EXPRESIONES
EXPRESIONES
NUMÉRICAS
4.5 EXPRESIONES
__
EXPRESIONES
EXPRESIONES
NUMÉRICAS
( A + 5 ) * ( Y +piso(X+2.5) )
__
EVALUACION DE
EXPRESIONES
EXPRESIONES
Tablas de verdad
Negación : (~)
Es una expresión lógica si A y son de tipo entero, X es una variable de tipo real
y bandera es una variable de tipo booleano.
EVALUACION DE
EXPRESIONES
EXPRESIONES
EXPRESIONES
__
EXPRESIONES
PRECEDENCIA DE
EVALUACION DE
OPERADORES
EXPRESIONES
Una expresión sea del tipo que sea se evalúa mediante el siguiente algoritmo:
Inicio
PASO 1. Reemplazar todas las variables de la expresión por
su valor.
PASO 2. Desde los paréntesis más internos hacia los más
externos mientras existan paréntesis y/o operadores haga :
2.1. Si una función no tiene todos sus argumentos evaluados,
evaluar cada uno de los mismos.
2.2. Evaluar toda función que tenga sus argumentos
evaluados y reemplazarla por su valor resultado.
2.3. Realizar las operaciones indicadas según la precedencia
de los operadores que actúan sobre números y/o valores de
verdad, es decir, términos ya evaluados.
2.4. Si sólo un número y/o valor de verdad se encuentra entre
paréntesis eliminar los paréntesis.
PASO 3. El número o valor de verdad que resulta es el valor
de la expresión.
Fin
Para que una expresión sea correcta, los términos que se conectan mediante
un operador deben ser del mismo tipo. Por ejemplo, si en una expresión se suma
una variable A con un literal entero, la variable debe ser tipo entero.
__
PRECEDENCIA DE
EVALUACION DE
OPERADORES
EXPRESIONES
EJEMPLOS DE EVALUACIÓN DE
EVALUACION DE
EXPRESIONES
EXPRESIONES
Precedencia Operadores
8 ( ) Paréntesis
7 - (signo menos)
6 *, /, mod
5 +, - (substracción)
4 >, <, = ,>=, <=, <>
3 ~
2 &
1 |
Nótese que los paréntesis tienen la máxima precedencia, es decir, lo que está
entre los paréntesis es lo primero que se evalúa; mientras que el | lógico tiene la
más baja precedencia, lo que indica que será el último en ser evaluado. Cuando
una expresión esta formada por operadores de la misma precedencia,
dichos operadores son evaluados de izquierda a derecha.
EJEMPLOS DE EVALUACIÓN DE
EVALUACION DE
EXPRESIONES
EXPRESIONES
EJERCICIOS DE
EVALUACION DE
EXPRESIONES
EXPRESIONES
(A + 5) * (Y+ piso(X+2.5))
__
EJERCICIOS DE
EVALUACION DE
EXPRESIONES
EXPRESIONES
INSTRUCCIONES SOBRE
EJEMPLOS DE VARIABLES, LITERALES Y
1. Si tiempo, velocidad y peso son variables de tipo real, contador, itera y suma son de
tipo entero, letra y primo son de tipo carácter y bandera es de tipo booleano, determinar
cuales de las siguientes expresiones son validas y cuales no; se debe justificar la respuesta.
2. Si tiempo, velocidad y peso son variables de tipo real, contador, itera y suma son de
tipo entero, letra y primo son de tipo carácter y bandera es de tipo booleano, con valores 3.0,
-4.5, 8.0, 5, -2, 30 y falso respectivamente, evaluar las siguientes expresiones
__
INSTRUCCIONES SOBRE
EJEMPLOS DE VARIABLES, LITERALES Y
EXPRESIONES
Las dos operaciones que se pueden realizar sobre una variable son modificar su
valor y mostrar su valor. Existen dos instrucciones diferentes que permiten modificar
el valor de una variable: asignación y lectura, mientras que existe sólo una forma
de mostrar el valor: escritura.
La única operación que se puede realizar sobre constantes y/o literales es mostrar
su valor y se usa de la misma manera como se muestra el valor de una variable.
4.5.5.1 Asignacion
4.5.5.2 Lectura y escritura
4.5.5.3 Ejercicios de instrucciones sobre variables
__
EXPRESIONES
INSTRUCCIONES SOBRE
LECTURA Y ESCRITURA
VARIABLES, LITERALES Y
CONSTANTES
4.5.5.1 ASIGNACIÓN
<nombre> := <expresión>
1. Evaluar la expresión.
n := n + 1
Suponga que y es una variable de tipo real que tiene el valor –3.0, la asignación
y := 3 + y * y
INSTRUCCIONES SOBRE
LECTURA Y ESCRITURA
VARIABLES, LITERALES Y
CONSTANTES
EJERCICIOS DE
INSTRUCCIONES SOBRE INSTRUCCIONES SOBRE
VARIABLES, LITERALES Y VARIABLES
CONSTANTES
leer (nombre)
● leer (n)
● leer (m)
● leer (x)
● leer (y)
escribir (nombre)
● escribir (n)
● escribir (m)
● escribir (x)
● escribir (y)
● escribir (cambio_linea )
● escribir (“Hola, buenos días” )
__
EJERCICIOS DE
INSTRUCCIONES SOBRE INSTRUCCIONES SOBRE
VARIABLES, LITERALES Y VARIABLES
CONSTANTES
INSTRUCCIONES SOBRE
AUTOEVALUACION
VARIABLES, LITERALES Y
CONSTANTES
1. Si x, v y p son variables de tipo real, cont, i y k son variables de tipo entero, letra y
c son variables de tipo carácter, band y terminar son variables de tipo booleano,
MAX es una constante de tipo entero y PI es una constante de tipo real,
determinar cuales de las siguientes instrucciones son validas; se debe justificar
la respuesta
● leer (letra )
● escribir (MAX )
● leer (cont )
● escribir (x )
● leer (MAX)
● leer (v )
● x :=enteroAreal(k) + 2.0 * PI
● letra :=‘p’
● letra :=“p”
● letra :=p
● letra :=c
● p :=v / x * raiz2( p ) – band
● band :=(p-v / x*cuadrado(p)) | ~(terminar | x >=v)
● x :=“3.2444” + “1.4e-4”
● x :=3.2444 + 1.4e-4
● x :=‘v’ + ‘p’
● terminar :=p > v >=x
● terminar :=verdadero
● terminar :=“falso”
● terminar :=‘f’ <=letra
● x + 3.0 :=v
● v :=x * p + enteroAreal(caracterAentero(letra))
● band :=(x+v)*p | terminar | cont <=k + i
● k :=caracterAentero( letra + caracterAentero(c) ) + k
2. Si x,v y p son variables de tipo real, con valores 3.5, 1.4 y 6.0
respectivamente, determinar el valor de la variable z de tipo real al realizar cada
una de las asignaciones siguientes:
● z :=v - p / (x + p / x – v)
● z :=p / x / v + p / x * v
● z:=(v – 3.0 * x / p) / (4.0 – v / (5.0 + p / x))
● z:=cuadrado(v + raiz2( x + p )) – v * x
3. Si x, v y p son variables de tipo real, con valores 3.5, 1.4 y 6.0 respectivamente, i,
k y cont son variables enteras con valores 5, 2 y –4, respectivamente, letra y c
son variables de tipo carácter con valores ‘p’ y ‘t’ y bandera y terminar de
tipo booleano con valores falso y verdadero respectivamente. Determinar el valor
de cada una de las variables después de ejecutar las siguientes instrucciones, en
el orden en que aparecen.
4. Si x, v y p son variables de tipo real, con valores 3.5, 1.4 y 6.0 respectivamente, i,
k y cont son variables enteras con valores 5, 2 y –4, respectivamente, letra y c
son variables de tipo carácter con valores ‘p’ y ‘t’ y bandera y terminar de
tipo booleano con valores falso y verdadero respectivamente. Determinar el valor
de cada una de las variables después de ejecutar las siguientes instrucciones, en
el orden en que aparecen.
● v := x + (p – raiz2(x) * ( v – x ) + 3.0) * p
● bandera := (terminar | ~ (i+2 <=cont | p>=v)) | (x+v = p)
● i := cont * realAentero(x * v – p/2.0) + k – i
● x := v + raalAenterol( caracterAentero( letra ) )
● cont := cont + 1
● letra := enteroAcaracter( k )
● k := ( k + cont ) mod ( piso( p ) + techo( v ) )
● p := p + x – enteroAreal( piso( p+x) + 5 )
__
INSTRUCCIONES SOBRE
AUTOEVALUACION
VARIABLES, LITERALES Y
CONSTANTES
CONSTRUCTORES
SELECCION
BÁSICOS(PARTE A)
5.1 SECUENCIA
Dada una lista de instrucciones <instrucción 1> <instrucción 2> ... <instrucción n>
la estructura de SECUENCIA permite la ejecución de dicha lista en el orden en
que aparecen las instrucciones, es decir, se ejecuta primero la
instrucción <instrucción 1> luego la instrucción <instrucción 2>, y por último
se ejecuta la instrucción <instrucción n> La forma general de la secuencia es:
<instrucción1>
<instrucción2>
.
.
<instrucción
n>
DIALOGO
ESPECIFICACIÓN
Condiciones a = p * r2
DISEÑO
Primera Iteración:
Inicio
PASO 1. leer el valor del radio del círculo
PASO 2. calcular el área del círculo
PASO 3. escribir el área del círculo
Fin
Iteración Final:
PRUEBA DE ESCRITORIO
Este algoritmo cuenta con seis (6) líneas, las tres primeras (1-3) , son para definir
las variables y constantes usadas y las últimas tres (4-6), son las instrucciones
que son aplicadas sobre dichos datos. De esta manera la prueba de escritorio se
debe realizar solamente sobre las tres últimas líneas, teniendo en cuenta los
DIALOGO
ESPECIFICACIÓN
DISEÑO
Primera Iteración:
Inicio
PASO 1. Leer las entradas
PASO 2. Realizar el cálculo
PASO 3. escribir los resultados
Fin
Segunda Iteración:
Inicio
PASO 1. Leer las entradas
PASO 1.1. Leer el número total de animales
PASO 1.2. Leer el número total de patas
PASO 2. Realizar el cálculo
PASO 2.1. Calcular el número de gansos
PASO 2.2. Calcular el número de conejos
PASO 3. escribir los resultados
PASO 3.1. escribir el número de gansos
PASO 3.2. escribir el número de conejos
Fin
Iteración Final:
PRUEBA DE ESCRITORIO
Este algoritmo cuenta con diez (10) líneas, las cuatro primeras (1-4), son para
definir las variables usadas y las últimas seis (5-10) son las instrucciones que
son aplicadas sobre dichos datos. De esta manera la prueba de escritorio se
debe realizar solamente sobre las líneas (5-10), teniendo en cuenta los valores
para las variables.
__
CONSTRUCTORES
SELECCION
BÁSICOS (PARTE A)
5.2 SELECCIÓN
si (condición) entonces
sino
fin_si
DIALOGO
ESPECIFICACIÓN
CONDICIONES
Texto = “Es palíndrome ” si u = c, “No es palíndrome” en otro caso
DISEÑO
http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/index.html (2 of 9) [12/02/2008 12:35:03 a.m.]
Programa Universidad Virtual
Primera Iteración:
Inicio
PASO 1. Leer el número.
PASO 2. Determinar si es palíndrome o no.
PASO 3. escribir el texto resultado.
Fin
Segunda Iteración:
Inicio
PASO 1. Leer el número.
PASO 2. Determinar si es palíndrome o no
PASO 2.1. Calcular las unidades del número
PASO 2.2. Calcular las decenas del número.
PASO 2.3. Calcular el texto resultado.
PASO 3. escribir el texto resultado.
Fin
Iteración Final:
si (u = c) entonces
texto :=“es palíndrome” /* el número es palíndrome */
sino
texto := “no es palíndrome” /* el número no es palíndrome */
fin_si
PRUEBA DE ESCRITORIO
Este algoritmo cuenta con trece (13) líneas, las cuatro primeras (1-4), son para
definir las variables usadas y las últimas nueve (5-13) son las instrucciones que
son aplicadas sobre dichos datos. De esta manera la prueba de escritorio se
debe realizar solamente sobre las líneas (5-13), teniendo en cuenta los valores
para las variables.
DIALOGO
ESPECIFICACIÓN
CONDICIONES
DISEÑO
Primera Iteración:
Inicio
PASO 1. Leer los tres números
PASO 2. Determinar cual es el máximo
PASO 3. escribir el máximo
Fin
Segunda Iteración:
Inicio
PASO 1. Leer los tres números
PASO 1.1. Leer el primer número
PASO 1.2. Leer el segundo número
PASO 1.3. Leer el tercer número
PASO 2. Determinar cual es el máximo Si el primer número es mayor o igual a
los otros dos números el primero es el máximo.Si no es así y si el segundo número
es mayor o igual a los otros dos números el segundo es el máximo.De otra manera,
se tiene que el tercer número es el máximo.
PASO 3. escribir los resultados
Fin
Iteración Final:
si a b | a c entonces
mayor := a /* el máximo es a pues es mayor que b y c */
sino
si b a | b c entonces
mayor := b /* el máximo es b pues es mayor que a y c */
sino
mayor := c /* sino es ni a ni b entonces es c */
fin_si
fin_si
PRUEBA DE ESCRITORIO
Este algoritmo cuenta con diecisiete (17) líneas, las cuatro primeras (1-4), son
para definir las variables usadas y las últimas trece (5-17) son las instrucciones
que son aplicadas sobre dichos datos. De esta manera la prueba de escritorio se
debe realizar solamente sobre las líneas (5-17), teniendo en cuenta los valores
para las variables.
LINEA a b c mayor
ENTRADA SALIDA
5 50 50
6 140 140
7 30 30
8 La condición es evaluada a falso, por lo tanto se pasa a la línea 11, la siguiente
al sino de la selección en ejecución.
LINEA a b c mayor
ENTRADA SALIDA
5 20 20
6 10 10
7 30 30
8 La condición es evaluada a falso, por lo tanto se pasa a la línea 11, la siguiente
al sino de la selección en ejecución.
11 La condición es evaluada a falso, por lo tanto se pasa a la línea 14, la siguiente
línea al sino de la selección en ejecución.
14 30
15 Se salta a la siguiente línea.
16 Se salta a la siguiente línea.
17 El máximo de los tres es: 30
Como se puede apreciar en los ejemplos anteriores, una selección puede contener
(en cualquiera de sus dos bloques de instrucciones), lecturas, escrituras,
http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/index.html (7 of 9) [12/02/2008 12:35:03 a.m.]
Programa Universidad Virtual
<variable> = .....
si<condición1> entonces
<variable> := <expresión 1>
sino
si <condición 2>entonces
<variable> := <expresión 2>
sino
...............
sino
si <condición n>entonces
<variable>:= <expresión n>
http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/index.html (8 of 9) [12/02/2008 12:35:03 a.m.]
Programa Universidad Virtual
sino
<variable> := <expresión final>
fin_si
..............
fin_si
fin_si
__
CODIFICACIÓN DE
CONSTRUCTORES ALGORITMOS EN LENGUAJES
seleccionar<opción> hacer
caso <constante_1>:
<bloque instrucciones 1>
caso <constante_2>:
<bloque instrucciones 2>
...............
caso <constante_n>:
<bloque instrucciones n>
caso <por defecto>:
<bloque instrucciones>
fin_seleccionar
caso <constante_1>:
<bloque instrucciones 1>
fin_caso
caso <constante_2>:
<bloque instrucciones 2>
fin_caso
...............
caso <constante_n>:
<bloque instrucciones n>
fin_caso
caso <por defecto>:
<bloque instrucciones>
fin_caso
fin_seleccionar
ESPECIFICACIÓN
DISEÑO
Primera División:
Inicio
PASO 1. Leer el número.
PASO 2. Determinar la transacción y Ejecutarla.
Fin
Segunda División:
Inicio
Paso 1. Leer el número.
Paso 2. Determinar la transacción
Paso 2.1. si es 1
Paso 2.1.1. Ejecutar la transacción 1
Paso 2.1.2. Salir
Paso 2.2. si es 2
Paso 2.2.1. Ejecutar la transacción 2
Paso 2.2.2. Salir
Paso 2.3. si es 3
Paso 2.3.1. Ejecutar la transacción 3
Paso 2.3.2. Salir
Paso 2.4. si es 4
Paso 2.4.1. Ejecutar la transacción 4
Paso 2.4.2. Salir
Paso 2.5. si es 5
Paso 2.5.1. Ejecutar la transacción 5
Paso 2.5.2. Salir
Paso 2.5. si no esta en el rango
Paso 2.5.1. Salir
Fin
División Final:
seleccionar n hacer
caso 1:
<consignación>
fin_caso
caso 2:
<retiro>
fin_caso
caso 3:
<pago de servicios>
fin_caso
caso 4:
<cambio de clave>
fin_caso
caso 5:
<consulta de saldo>
fin_caso
fin_seleccionar
__
CODIFICACIÓN DE
CONSTRUCTORES ALGORITMOS EN LENGUAJES
ESTRUCTURA DE
AUTOEVALUACIÓN
SELECCIÓN MULTIPLE
Ejemplos.
SEUDOCODIGO C++
procedimiento principal()
variables
a:entero
b:entero /* para mostrar en pantalla */
inicio #include <iostream.h>
void main(){
escribir ("Digite
numero:") leer (a) int a; /* a es entera */
escribir ("Digite int b; /* b es entera */
numero") cout << "Digite
leer (b) numero:";
si (a<b) entonces cin >> a;
cout << "Digite
numero:";
escribir
cin >>b;
("El
if( a<b ){
mayor
cout << "El mayor es:";
es:")
cout << b;
escribir
}
( b)
else{
cout <<"El mayor es:";
sino cout << a;
escribir ( "El mayor }
es:")
escribir (a)
}
fin_si
fin_procedimiento
Traducción de tipos:
__
ESTRUCTURA DE
AUTOEVALUACIÓN
SELECCIÓN MULTIPLE
Tabla de contenido
__
Tabla de contenido
CONSTRUCTORES
CICLO MIENTRAS
BÁSICOS (PARTE B)
6.1 REPETICIÓN
Ciclo mientras
Ciclo HAGA-MIENTRAS
Ciclo repita-HASTA
Ciclo para
__
CONSTRUCTORES
CICLO MIENTRAS
BÁSICOS (PARTE B)
<bloque de instrucciones>
fin_mientras
4.1.1.1 EJEMPLOS.
DIALOGO:
ESPECIFICACIÓN:
Condiciones
DISEÑO:
Primera Iteración:
1. Leer el número
2. Recorrer los números desde el cero hasta el número dado e irlos sumando.
3. escribir la suma
http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/index.html (3 of 6) [12/02/2008 12:37:05 a.m.]
Programa Universidad Virtual
Iteración Final:
fin_mientras
PRUEBA DE ESCRITORIO:
11 Se salta hasta la línea que contiene la condición del ciclo mientras en ejecución, es decir,
hasta la línea 8
8 La condición es evaluada a verdadero, por lo tanto se ejecuta el bloque de acciones del ciclo,
es decir, pasa a la línea 9.
9 3
10 3
11 Se salta hasta la línea que contiene la condición del ciclo mientras en ejecución, es decir,
hasta la línea 8
8 La condición es evaluada a verdadero, por lo tanto se ejecuta el bloque de acciones del ciclo,
es decir, pasa a la línea 9.
9 6
10 4
11 Se salta hasta la línea que contiene la condición del ciclo mientras en ejecución, es decir,
hasta la línea 8
8 La condición es evaluada a verdadero, por lo tanto se ejecuta el bloque de acciones del ciclo,
es decir, pasa a la línea 9.
9 10
10 5
11 Se salta hasta la línea que contiene la condición del ciclo mientras en ejecución, es decir,
hasta la línea 8
8 La condición es evaluada a verdadero, por lo tanto se ejecuta el bloque de acciones del ciclo,
es decir, pasa a la línea 9.
9 15
10 6
11 Se salta hasta la línea que contiene la condición del ciclo mientras en ejecución, es decir,
hasta la línea 8
8 La condición evalúa a falso, por lo tanto no se ejecuta el bloque de acciones del ciclo y
este termina, es decir, pasa a la línea 12, la línea siguiente a la línea del fin_mientras del ciclo.
12 La suma es: 15
● Applet ejemplo 1
__
haga
<bloque de instrucciones>
mientras (condición)
EJEMPLOS
DIALOGO:
ESPECIFICACIÓN:
Salidas texto Cadenas (texto es una cadena que indica que una
operación no ha sido realizada por que falta leer los datos o no se
ha realizado operación alguna o el valor de la operación).
DISEÑO:
Primera Iteración:
haga
1. Presentar menu
2. Leer opción
Segunda Iteración:
haga
1. Presentar menu
2. Leer opción
Iteración final:
a: real
b: real
c: real
datos_leidos: booleano
operacion_realizada: booleano
opcion : entero
datos_leidos := falso
operacion_realizada := falso
haga
escribir("Menu de operaciones")
escribir(cambioLinea)
escribir("0. Terminar")
escribir(cambioLinea)
escribir("1. Leer datos")
escribir(cambioLinea)
escribir("2. Sumar datos")
escribir(cambioLinea)
escribir("3. Restar datos")
escribir(cambioLinea)
escribir("4. Multiplicar datos")
escribir(cambioLinea)
escribir("5. Dividir datos")
escribir(cambioLinea)
escribir("6. Mostrar Resultado")
escribir(cambioLinea)
leer( opcion )
seleccionar (opcion) de
caso 1:
escribir("Ingrese el primer número")
leer( a )
escribir("Ingrese el segundo número" )
leer( b )
datos_leidos := verdadero
operacion_realizada := falso
caso 2:
si ( datos_leidos ) entonces
c := a + b
operacion_realizada := verdadero
sino
escribir( "Error. no se han leido los datos ****" )
fin_si
caso 3:
si ( datos_leidos ) entonces
c := a - b
operacion_realizada := verdadero
sino
escribir( "Error. no se han leido los datos ****" )
fin_si
caso 4:
si ( datos_leidos ) entonces
c := a * b
operacion_realizada := verdadero
sino
escribir( "Error. no se han leido los datos ****")
fin_si
caso 5:
si ( datos_leidos ) entonces
c := a / b
operacion_realizada := verdadero
sino
escribir( "Error. no se han leido los datos ****" )
fin_si
caso 6:
si ( operacion_realizada ) entonces
escribir(“El resultado de la última operación es:”)
escribir( c )
sino
escribir( “Error. no se han leido los datos ****” )
fin_si
otrocaso:
fin_seleccionar
n: entero
suma: entero
i: entero
haga
suma := suma + i
i := i + 1
mientras (i <= n)
__
repita
<bloque
de instrucciones>
hasta
(condición)
EJEMPLOS.
Ejemplo 1. Desarrollar un programa que lea una serie de datos hasta que se
ingrese el dato 0 y calcule su suma.
DIALOGO:
ESPECIFICACIÓN:
Condiciones
an = 0.0 El último número leído es cero.
DISEÑO:
Primera Iteración:
repita
1. Leer número
2. Acumular número
escribir resultado
Iteración Final:
n: entero
suma: entero
suma := 0
repita
escribir(“Ingrese el número:”)
leer( n )
suma := suma + n
hasta (n = 0 )
n: entero
suma: entero
i: entero
leer( n )
suma := 0
i := 1
repita
suma := suma + i
i := i + 1
hasta (i > n )
__
<bloque de instrucciones>
fin_para
Donde <variable> es la variable contadora del ciclo, la cual debe ser de tipo
entero, <lim inf >es el valor inicial que toma la variable contadora, <lim sup> es
el valor final que puede tomar la variable contadora y <bloque>es el bloque
de acciones que es ejecutado en cada iteración, mientras la variable contadora
no sobrepase el límite superior. En cada iteración, después de ejecutar el bloque,
la variable contadora es incrementada en uno (1).
EJEMPLOS.
DIALOGO:
ESPECIFICACIÓN:
Salidas a1, a2, a3 Enteros, (ai es el i-esimo múltiplo del número dado).
Condiciones ai = n * i para 1 i 3
DISEÑO:
Primera Iteración:
Para los números entre uno y tres calcular el múltiplo del número
Iteración Final:
n: entero
a: entero
i: entero
a := n * i
escribir(n)
escribir(“*”)
escribir( i)
escribir( “=”)
escribir( a)
escribir(cambioLinea)
fin_para
escribir(“Termino...”)
PRUEBA DE ESCRITORIO:
Como es la
primera vez
que llega a
esta línea, se
asigna en la
variable
contadora el
límite inferior.
Ahora se
comprueba si
la variable
contadora es
menor o igual
al límite
superior. En
este caso es
cierto
entonces se
ejecuta el
bloque de
acciones del
ciclo para, es
decir, se pasa
a la línea
7 3
8 3*1=3
9 2
Se incrementa
la variable
contadora y se
vuelve a la
línea de inicio
del ciclo para,
es decir, línea
6.
Se comprueba
si la variable
contadora es
menor o igual
al límite
superior. En
este caso es
6 cierto
entonces se
ejecuta el
bloque de
acciones del
ciclo para, es
decir, se pasa
a la línea 7.
7 6
8 3*2=6
9 3
Se incrementa
la variable
contadora y se
vuelve a la
línea de inicio
del ciclo para,
es decir, línea
6.
La variable
contadora es
menor que el
6
límite superior
se pasa a la
línea 7
7 9
8 3*3=9
9 4
Se incrementa
la variable
contadora y se
vuelve a la
línea de inicio
del ciclo para,
es decir, línea
6.
La variable
contadora no
es menor que
el límite
superior se
6
pasa a la línea
siguiente al
fin_para, es
decir, a la
línea 10.
10 Termino...
n: entero
suma: entero
i: entero
leer( n )
suma := 0
suma := suma + i
fin_para
__
CORRESPONDENCIA ENTRE
CICLO PARA
CICLOS
Algoritmo Solución
i: entero
i := 99
escribir( i)
escribir( ‘,’ )
i := i – 2
fin_mientras
En este caso i es una variable contadora, ya que en cada iteración del ciclo la
variable es decrementada en una cantidad fija (2).
Ejemplo. Calcular las suma de los cuadrados de los números entre 1 y 100.
Algoritmo Solución
http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/index.html (2 of 6) [12/02/2008 12:40:54 a.m.]
Programa Universidad Virtual
i: entero
suma: entero
i := 1
suma := 0
En este caso suma es una variable acumuladora mientras que la variable i es contadora.
Una variable bandera es utilizada dentro de la condición del ciclo, ya sea sin
negar, negada o conectada con una expresión booleana, para determinar cuando
un ciclo se sigue iterando o cuando no. De esta manera una variable bandera
debe ser de tipo booleano.
Ejemplo. Realizar un programa que lea una serie de números reales y los sume.
El programa debe preguntar al usuario cuando desea ingresar un siguiente dato y si
el usuario responde que no desea ingresar más datos el programa debe confirmar
la respuesta. Si el usuario desea continuar ingresando datos se debe
seguir solicitando datos y si el usuario confirma su deseo de salir, el programa
debe mostrar la suma de los datos leídos y terminar.
Especificación:
donde,
datos es la colección de n números reales que el usuario ingresa hasta que decide
no continuar ingresando datos y sumaÎ R es la suma de dichos números.
Algoritmo Solución
bandera: booleano
suma: real
dato: real
c: caracter
bandera := verdadero
suma := 0.0
bandera := falso
fin_si
fin_si
fin_mientras
Vale la pena recordar que una variable del tipo booleano toma valores de verdad y
por lo tanto, por sí sola es una expresión lógica. Adicionalmente, la expresión
lógica bandera = verdadero es equivalente a la expresión lógica bandera.
__
CORRESPONDENCIA ENTRE
CICLO PARA
CICLOS
CODIFICACIÓN DE
TIPOS DE VARIABLES ALGORITMOS EN LENGUAJES
<bloque> <bloque>
haga repita
<bloque> <bloque>
mientras hasta
(condición) (condición)
<bloque> <bloque>
<bloque>
fin _para
<bloque>
<variable> := <variable> + 1
fin _mientras
__
CODIFICACIÓN DE
TIPOS DE VARIABLES ALGORITMOS EN LENGUAJES
CONSTRUCTORES BÁSICOS
CORRESPONDENCIA
(PARTE B)
ENTRE CICLOS
fin_mientras };
Haga do {
hacer-
bloque_instrucciones bloque_instrucciones
mientras
escribir
cout<<
i:=0
i <<" ";
i=i+1;
mientras (i<=0) hacer
escribir ("Desea
};
continuar ? S/N")
i:=0
mientras (i<=0) cout<<"Numeros del 0 al 10:";
hacer i=0;
while ( i<=10){
escribir
(i," ") cout<< i <<" ";
i:=i+1 i=i+1;
fin_mientras };
escribir ("Desea cout<< "Desea continuar ? S/N";
continuar ? S/N") cin >> opcion;
leer(opción)
}while(opcion == ´s´ || opcion ==´S´);
mientras (opcion =´s´ | opcion =´S
´)
__
CONSTRUCTORES BÁSICOS
CORRESPONDENCIA
(PARTE B)
ENTRE CICLOS
Tabla de contenido
__
Tabla de contenido
FORMA DE ACCESAR UN
ELEMENTO DE UN
ARREGLOS Y MATRICES
ARREGLO
ARREGLOS
Ejemplos.
Ejemplos.
Ejemplos.
__
FORMA DE ACCESAR UN
ELEMENTO DE UN
ARREGLOS Y MATRICES
ARREGLO
Para obtener o modificar uno de los datos almacenados en una variable del tipo
arreglo se utiliza la siguiente notación de subíndice:
<nombre>[<indice>]
__
FORMA DE ACCESAR UN
ELEMENTO DE UN ARREGLO
EJEMPLOS PRÁCTICOS
Los arreglos son útiles cuando se requiere mantener y realizar operaciones sobre
una colección determinada de datos de un mismo tipo, por ejemplo:
Aquí esta el pseudo código para este programa, se deja la especificación del mismo
al lector.
Inicio
/* Las siguientes seis lineas de codigo leen el arreglo de reales */
para (i := 0 hasta 19) hacer
escribir (“ingrese el dato:”)
escribir (i)
escribir (cambioLinea)
leer (A[i])
fin_para
/* Las siguientes cuatro lineas de codigo calculan la suma de los
reales */
suma := 0
para (i:=0 hasta 19) hacer
suma := suma + A[i]
fin_para
/* la siguiente linea calcula el promedio */
promedio := suma / 20.0
/* las siguientes dos lineas imprimen el resultado */
escribir (“El promedio es:”)
escribir (promedio)
Fin
1.2.1 Ordenamientos
1.2.2 Búsquedas
__
FORMA DE ACCESAR UN
ELEMENTO DE UN ARREGLO
ORDENAMIENTOS
En algunos casos el tipo de un arreglo tiene un orden total asociado a él. Por
ejemplo, los números enteros están ordenados totalmente y los caracteres
están ordenados totalmente por el ASCII asociado a cada uno. Un
ordenamiento sobre un arreglo es una operación que dado un arreglo retorna
el mismo arreglo con los elementos ordenados en forma ascendente o descendente.
Inicio
para (i :=0 hasta n-2) hacer
para (j:=i+1 hasta n-1) hacer
si (A[i] > A[j]) entonces
/* Las siguientes 3 lineas de programa son muy famosas y
son conocidas
como el intercambio de variables o swapping */
auxiliar := A[i]
A[i] := A[j]
A[j] := auxiliar
sino
fin_si
fin_para
fin_para
Fin
__
BUSQUEDAS
Inicio
continuar := verdadero
i := 0
mientras ( i<n & continuar ) hacer
/* aunque aquí aparece como una asignación simple esta línea de
programa puede involucrar varias operaciones más. Es lo que en
la metodología de programación se llama división. */
cumple_propiedad := propiedad( A[i] )
/* si el elemento cumple la propiedad se deja de iterar el ciclo, el
elemento buscado es A[i]. si no se cumple se prueba el siguiente
elemento del arreglo */
si (cumple_propiedad) entonces
continuar := falso
sino
i := i + 1
fin_si
fin_mientras
/* si se encontro un elemento que cumple con la propiedad la
variable continuar se pone a falso y la variable contadora i, indica
cual es el elemento si no se encontra la variable continuar esta en
verdadero */
si (continuar := falso) entonces
escribir (“El elemento buscado es:”)
escribir (A[i])
sino
escribir (“No existe un elemento que cumpla con la propiedad”)
fin_si
Fin
Inicio
continuar := verdadero
i := 0
mientras ( i<n & continuar ) hacer
cumple_propiedad := A[i] modulo 2 = 0
si (cumple_propiedad) entonces
continuar := falso
sino
i := i + 1
fin_si
fin_mientras
si (i < n) entonces
escribir (“El elemento buscado es:”)
escribir (A[i])
sino
escribir (“No existe un elemento que cumpla con la propiedad”)
fin_si
Fin
Inicio
continuar := verdadero
i := 0
mientras ( i<n & continuar ) hacer
/* las siguientes cinco lineas verifican si el elemento A[i] cumple la
propiedad de ser numero primo */
k := 2
mientras ( k<A[i] & A[i] modulo k <> 0 ) hacer
k := k + 1
fin_mientras
cumple_propiedad := k = A[i]
si (cumple_propiedad) entonces
continuar := falso
sino
i := i + 1
fin_si
fin_mientras
si (i < n) entonces
escribir (“El elemento buscado es:”)
escribir (A[i])
sino
escribir (“No existe un elemento que cumpla con la propiedad”)
fin_si
Fin
Aunque toda búsqueda se puede realizar con el algoritmo anterior, este resulta
poco eficiente en muchos casos, por ejemplo para calcular el máximo o mínimo de
un arreglo. El anterior algoritmo se puede modificar de acuerdo al problema concreto
a resolver.
Inicio
x :=A[0]
i := 1
mientras (i<n ) hacer
si (x < A[i]) entonces
x := A[i]
sino
fin_si
i := i + 1
fin_mientras
escribir (“El elemento buscado es:”)
escribir (A[i])
Fin
En algunos problemas, si los elementos del arreglo están ordenados las búsquedas se
pueden optimizar.
escribir A[0]
escribir A[n/2]
__
ARREGLOS Y MATRICES
CADENAS DE CARÁCTERES
Ejemplos.
1. [‘w’, ’q’, ’9’, ‘?’, ‘\0’, ‘j’] es una cadena de caracteres de tamaño seis (6).
2. [‘ ’, ’\0’, ’*’, ‘u’, ‘\0’, ‘K’, ‘=’] es una cadena de caracteres de tamaño siete (7).
3. [’\0’, ’b’, ‘)’, ‘\0’, ‘)’, ‘\0’] es una cadena de caracteres de tamaño seis (6).
5. [‘_’, ’0’, ’1’, ‘3’, ‘\0’] es una cadena de caracteres de tamaño cinco (5).
La cantidad de caracteres que aparecen antes del primer fin de cadena determina
la longitud de una cadena. Es de aclarar que el tamaño y la longitud de una cadena
de caracteres no son iguales, la relación que existe entre las dos es que la longitud
es siempre menor que el tamaño de la cadena. Los caracteres que aparecen antes
del fin de cadena determinan el texto de la misma. Generalmente el texto de
una cadena es presentado entre comillas dobles (“).
Ejemplos.
1. [‘w’, ’q’, ’9’, ‘?’, ‘\0’, ‘j’] es una cadena de tamaño seis (6), longitud cuatro (4) y
texto “wq9?”.
2. [‘ ’, ’\0’, ’*’, ‘u’, ‘\0’, ‘K’, ‘=’] es una cadena de tamaño siete (7), longitud uno (1)
y texto “ “.
3. [’\0’, ’b’, ‘)’, ‘\0’, ‘)’, ‘\0’] es una cadena de tamaño seis (6), longitud cero (0) y
texto “”(la cadena vacía).
4. [‘#’, ’\0’] es una cadena de tamaño dos (2), longitud uno (1) y texto “#”.
5. [‘_’, ’0’, ’1’, ‘3’, ‘\0’] es una cadena de tamaño cinco (5), longitud cuatro (4) y
texto “_013”.
Ejemplos.
Como las cadenas de carácter son uno de los datos más utilizados en programación, en
muchos lenguajes se han implementado funciones para las operaciones más comunes
sobre cadenas. La siguiente es una lista corta de estas operaciones:
Operación Descripción
longitudCadena( <cadena1> ) retorna la longitud de la cadena
copiarCadena( <cadena1>, crea una copia de la cadena <cadena2> en la
<cadena2> ) cadena <cadena1>
concatenarCadena( <cadena1>, Retorna la concatenación de <cadena1> con
<cadena2>) <cadena2> en <cadena1>.
retorna menos uno (-1) si <cadena1> es menor
compararCadenas( <cadena1>,
que <cadena2>, cero (0) si son iguales y uno
<cadena2> )
(1) en otro caso.*
Inicio
i := 0
mientras (cadena1[i] <> ‘\0’ & cadena2[i] <> ‘\0’ & cadena1[i] <>
cadena2[i]) hacer
i := i + 1
fin_mientras
si ( cadena1[i] = ‘\0’ ) entonces
si ( cadena2[i] = ‘\0’ ) entonces
x :=0
sino
x := -1
fin_si
sino
si ( cadena2[i] = ‘\0’ ) entonces
x := 1
sino
si ( cadena1[i] < cadena2[i] ) entonces
x := -1
sino
x := 1
fin_si
fin_si
fin_si
Fin
Ejemplos. Sean cad1 =“Texto uno (1)”, cad2 =“Otro texto 2-”, cad3 =“Adios !...” y
cad4 = “Texto dos (2)” cadenas de caracter.
1. concadenarCadena( cad1, cad2 ) deja a cad1 como “Texto uno (1)Otro texto 2-”.
2. concadenarCadena( cad3, cad1 ) deja a cad3 como “Otro texto 2-Texto uno (1)”.
4. compararCadena( cad4, cad1 ) retorna uno (1) pues cad4 es mayor según
el orden lexicográfico que cad1.
5. compararCadena( cad1, “Texto uno (1)” ) retorna cero (0) pues el texto de cad1
es igual al texto enviado.
6. copiarCadena( cad2, “texto uno (1)”) deja a cad2como “texto uno (1)”.
7. Tome cad2 del ejemplo 8, comparar( cad1, cad2 )retorna menos uno (-1)
pues ‘T’es menor que ‘t’según el orden del ASCII.
ARREGLOS Y MATRICES
ARREGLOS Y MATRICES
MATRICES
Ejemplos.
1. [[1, 2], [0, 3], [8, -3]] es un arreglo de tamaño tres (3) de arreglos de tamaño
dos (2) de enteros.
2. [[0.3, 1.2, -1.2], [0.0, -2.7, 5.1], [9.4, 3.2, 1e-5]] es un arreglo de tamaño tres (3)
de arreglos de tamaño tres (3) de reales.
3. [[‘r’, ‘$’, ‘q’], [‘p’, ‘@’, ‘i’]] es un arreglo de tamaño dos (2) de arreglos de
tamaño tres (3) de caracteres.
Ejemplos.
1. La matriz [[1, 2], [0, 3], [8, -3]] se presenta en forma de tabla como sigue
1 2
0 3
8 -3
2. La matriz [[‘r’, ‘$’, ‘q’], [‘p’, ‘@’, ‘i’]] se presenta en forma tabular como sigue
3. La matriz [[0.3, 1.2, -1.2], [0.0, -2.7, 5.1], [9.4, 3.2, 1e-5]] se presenta en forma
de tabla así
Ejemplos.
6. Cuadro : arreglo[4] de arreglo[3] de real define una matriz con nombre Cuadro
de tipo real, de cuatro filas por tres columnas.
<nombre>[<fila>][<columna>]
3 -2 4 5
2 4 -8 0
0 10 13 1
1. Tabla[2][1], retorna el elemento que está en la fila dos y columna uno, es decir
10 (recuerde que se indexa desde cero).
2. Tabla[0][0], retorna el elemento que está en la fila cero y columna cero, es decir 3.
3. Tabla[0][3], retorna el elemento que está en la fila cero y columna tres, es decir 5.
4. Tabla[2][0], retorna el elemento que está en la fila dos y columna cero, es decir 0.
5. Tabla[1][2], retorna el elemento que está en la fila uno y columna dos, es decir -8.
6. Tabla[j-i][j+i], retorna el elemento que está en la fila uno y columna tres, es decir 0.
3 -2 4 5
2 4 -8 0
0 10 13 20
Tabla[j-2][j*i] := Tabla[j-i][j+i] + 3
cambia el elemento que está en la fila cero y columna dos por el valor 3, es
decir, Tabla queda como:
3 -2 3 5
2 4 -8 0
0 10 13 1
Se puede apreciar en los ejemplos siete y nueve que cuando una matriz es
de enteros, un valor almacenado en la matriz se puede utilizar como índice o
como parte de una expresión numérica.
Las matrices son útiles cuando se tiene información en forma tabular que debe
ser mantenida y procesada. Ejemplos de información que se presenta en
forma tabular son: los sistemas de ecuaciones lineales (donde la
información proporcionada son los coeficientes de cada ecuación lineal), problemas
de optimización lineal, cuadros estadísticas, entre otros.
Ejemplo. Una empresa tiene una tabla con las unidades vendidas por cada mes de
un año, de los cuatro productos que vende. La tabla tiene la siguiente forma:
Producto \ Mes 1 2 3 4 5 6 7 8 9 10 11 12
Producto 1
Producto 2
Producto 3
Producto 4
donde la fila indica el producto y la columna el mes del año. El elemento en la fila i
y columna j indica el número de unidades vendidas del producto i+1, en el mes j+1.
Realizar un programa que lea las unidades vendidas de cada producto por mes en
un año y calcule la cantidad de unidades vendidas de cada producto en un año,
la cantidad de unidades vendidas de los cuatro productos por cada mes, el
producto con menos ventas en un año y el mes en que más se vendió cada producto.
Dialogo:
Objetos conocidos: Una tabla de números de cuatro (4) filas por doce (12)
columnas que indica la cantidad de unidades vendidas de un producto por cada
mes de un año.
Objetos desconocidos: Una lista de números de tamaño cuatro (4) con la cantidad
de unidades vendidas de cada producto, otra lista de números de tamaño doce
(12) con las unidades vendidas en cada mes, un número que indica el producto
más vendido y una lista de números de tamaño cuatro (4) que indica en que mes
se vendió más cada producto.
Algoritmo:
Inicio
/* Las variables usadas en el algoritmo*/
i : entero
j : entero
min : entero /* indice del producto menos vendido */
M : arreglo[4][12] de entero /* la tabla de ventas */
T : arreglo[4] de entero /* los totales por producto */
V : arreglo[12] de entero /* los totales por mes */
Max : arreglo[4] de entero /* meses de mas ventas por producto */
/* las siguientes diez lineas leen la tabla de ventas */
para (i :=0 hasta 11) hacer
para j := 0 hasta 3 hacer
escribir “Ingrese las ventas del producto ”
escribir j+1
escribir “ Para el mes “
escribir i+1
escribir cambio_linea
leer M[j][i]
fin_para
fin_para
/*las siguientes seis lineas calculan los totales de ventas por producto */
para i := 0 hasta 3 hacer
T[i] := 0
para j := 0 hasta 11 hacer
T[i] := T[i] + M[i][j]
fin_para
fin_para
/* las siguientes seis lineas calculan los totales de ventas por mes */
para i := 0 hasta 11 hacer
V[i] := 0
para j :=0 hasta 3 hacer
V[i] := V[i] + M[j][i]
fin_para
fin_para
/* las siguientes catorce lineas (incluyendo comentarios) calculan el
mes de mas ventas por producto */
para i := 0 hasta 3 hacer
/* se supone que el de mas ventas fue el primero */
Max[i] := 0
/* se compara con los demas y si hay uno mejor se cambia */
para j := 1 hasta 11 hacer
/* se compara el mes j-esimo con el que se lleva como mejorsi el mes
j-esimo es mejor se cambia por j el que se lleva */
si M[i][j] < M[i][Max[i]] entonces
Max[i] := j
fin_si
fin_para
fin_para
/* las siguientes catorce lineas (incluyendo comentarios) calculan el
producto menos vendido en el año */
/* se supone que el menos vendido es el producto cero */
min := 0
para i := 1 hasta 3 hacer
/* si hay uno menor se cambia */
si T[i] < T[min] entonces
min := i
fin_si
fin_para
/* se imprimen los resultados */
/* ventas totales por producto */
para i := 0 hasta 3 hacer
escribir “Unidades vendidas del producto “
escribir i+1
escribir T[i]
escribir cambio_linea
fin_para
/* ventas totales por mes */
para i := 0 hasta 11 hacer
escribir “Unidades vendidas en el mes “
escribir i+1
escribir V[i]
escribir cambio_linea
fin_para
/* mes en el que mas se vendio cada producto */
para i := 0 hasta 3 hacer
escribir “El mes en el que mas se vendio el producto “
escribir i+1
escribir“ fue el mes ”
escribir Max[i]
escribir cambio_linea
fin_para
/* producto menos vendido */
escribir “El producto menos vendido fue “
escribir min +1.
Fin
__
ARREGLOS Y MATRICES
CORRECCION
MATRICES
EVALUACION
Definición
X : arreglo[tam] de tipo tipo X[tam];
Arreglo
X[índice] X[índice]
Uso
Donde 0<=índice<= tam - 1 Donde 0<=índice<= tam - 1
MATRICES
Definición X : arreglo[tam1][tam2] de
tipo X[tam1][tam2];
Matrices tipo
X[i][j] X[i][j]
Uso 0<=i<=tam1-1 0<=i<=tam1-1
0<=i<=tam2-1 0<=i<=tam2-1
CADENA DE
CARACTERES
Definición S : arreglo [tamaño] de
char S[tamaño];
cadena caracter
S[i] S [i]
Acceso a
retorna el caracter de la retorna el caracter de la
posición
posición i + 1 posición i + 1
cin.getline(S,tam_max);
Lectura de
leer(S)
una cadena tam_max: tamaño máximo de
la cadena
longitudCadena(S)
strlen (s);
Longitud de la
cadena Retorna el número de
Retorna el número de caracteres
caracteres
a[i]:=i+12; a[i]=i+12;
fin_para };
cout <<"\nImpresión del contenido de
escribir "impresión del contenido de arreglo\n";
arreglo" for (i=0; i<10; i++){
para i:=0 hasta 9 hacer
cout << a[i] << " ";
escribir( a[i] )
escribir( " " ) };
cout<<"\n";
fin_para /*cargar matriz por filas */
escribir( cambio_linea )
/*cargar matriz por filas */ for (i=0; i<2; i++){
para i:=0 hasta 1 hacer
fin_para
/*imprimir contenido de matriz */ };
escribir "condenido de matriz"
__
CORRECCION
MATRICES
EVALUACION
Contenido
B[10] : entero;
j : entero;
Para j <-- 0 hasta 4 incr 1
B[j] <-- 2 * j + 1
Fin_Para
Para j <-- 5 hasta 9 incr 1
B[j] = B[9- j] – B[j - 1]
Fin_Para
Solución:
A[10]: entero
j, x : entero
Para j <-- 1 hasta 6 incr 1
Leer x
Si (x – j < 0 || x – j > 9) entonces
Continuar al siguiente j;
Si_no
A[x - j] <-- j
Fin_Si
Fin_Para
Entradas : 8, 3, 10, 6, 7, 7
Solución:
j = 1, A[7] = 1
j = 2, A[1] = 2
j = 3, A[7] = 3
j = 4, A[2] = 4
j = 5, A[2] = 5
j = 6. A[1] = 6
Solución
La siguiente tabla sigue las variables a través de la ejecución del programa
i j k a [ i] b[j] c[k]
1 0 0 0 12 17 12
2 1 0 1 41 17 17
3 1 1 2 41 34 34
4 1 2 3 41 81 41
A[8]: entero
j, x: entero
Para j <-- 0 hasta 7 incr 1
Leer x
A[j] <-- x
Fin_Para
Para j <-- 7 hasta 0 incr -1
A[7 – j ] <-- A[ A[ j ] ]
Fin_Para
Entradas : 2,8,1,7,5,6,7,3
Solución
j 0 1 2 3 4 5 6 7
A[ 0 ] A[ 1 ] A[ 2 ] A[ 3 ] A[ 4 ] A[ 5 ] A[ 6 ] A[ 7 ]
valor 2 8 1 7 5 6 7 3
El siguiente ciclo hace una asignación a cada elemento siguiendo los siguientes pasos
j A[ 7 - j ] < -- A[ A[ j ] ] Expresión
7 A[ 7 - 7 ] < -- A[ A[ 7 ] ] A[ 3 ] 7 A[ 0 ] < -- 7
6 A[ 7 - 6 ] < -- A[ A[ 6 ] ] A[ 7 ] 3 A[ 1 ] < -- 3
5 A[ 7 - 5 ] < -- A[ A[ 5 ] ] A[ 6 ] 7 A[ 2 ] < -- 7
4 A[ 7 - 4 ] < -- A[ A[ 4 ] ] A[ 5 ] 6 A[ 3 ] < -- 6
3 A[ 7 - 3 ] < -- A[ A[ 3 ] ] A[ 6 ] 7 A[ 4 ] < -- 7
2 A[ 7 - 2 ] < -- A[ A[ 2 ] ] A[ 7 ] 3 A[ 5 ] < -- 3
1 A[ 7 - 1 ] < -- A[ A[ 1 ] ] A[ 3 ] 6 A[ 6 ] < -- 7
0 A[ 7 - 0 ] < -- A[ A[ 0 ] ] A[ 7 ] 3 A[ 7 ] < -- 3
Recuerde que los elementos del arreglo van cambiando a medida que el ciclo se ejecuta asi:
A[j] 2 8 1 7 5 6 7 3
Iteración 0 7 8 1 7 5 6 7 3
Iteración 1 7 3 1 7 5 6 7 3
Iteración 2 7 3 7 7 5 6 7 3
Iteración 3 7 3 7 6 5 6 7 3
Iteración 4 7 3 7 6 7 6 7 3
Iteración 5 7 3 7 6 7 3 7 3
Iteración 6 7 3 7 6 7 3 7 3
Iteración 7 7 3 7 6 7 3 7 3
A[ 0 ] A[ 1 ] A[ 2 ] A[ 3 ] A[ 4 ] A[ 5 ] A[ 6 ] A[ 7 ]
7 3 7 6 7 3 7 3
La respuesta es 3
Entrada: 1, 2, 3, 4, 5, 6
Entrada: 6, 7, 8, 9, 10, 11
Solución:
El programa lee y genera los arreglos A y B de la siguiente manera
A B
1 2 3 6 7 8
4 5 6 9 10 11
C
1 2 3
6 7 8
4 5 6
9 10 11
__
Contenido
Tabla de contenido
Haga Click
__
Tabla de contenido
FUNCIONES Y
FUNCIONES RECURSIVAS
PROCEDIMIENTOS
FUNCIONES
Las funciones se usan cuando existen dos o más porciones de algoritmo dentro de
un programa que son iguales o muy similares, por ejemplo, en un algoritmo se
puede emplear varias veces una porción de algoritmo que eleva a una potencia
dada un número real. De esta manera se define una función que al ser
invocada ejecute dicho código, y en el lugar donde estaba la porción de
algoritmo original, se hace un llamado (ejecución) de la función creada.
variables
<declaraciones>
inicio
<instrucciones>
retornar <valor>
fin_funcion
donde,
<valor>:es el valor que retorna la función, puede ser una variable del tipo
que retorna la función o una expresión que de cómo resultado un dato del tipo
de retorno.
EJEMPLOS
(a , b) Þ a2+2*b
inicio
fin_funcion
(a , b , c ) Þ a si a b y a c
Þ b si b a y b c
Þ c si c a y c b
inicio
si a b | a c entonces
m := a
sino
si b a |b c entonces
m:= b
sino
m := c
fin_si
fin_si
retornar m
fin_funcion
__
FUNCIONES Y
FUNCIONES RECURSIVAS
PROCEDIMIENTOS
FUNCIONES Y
PROCEDIMIENTOS
PROCEDIMIENTOS
FUNCIONES RECURSIVAS
f(6.5) = ……
EJEMPLOS
n Þ 1 si n 1
Algoritmo:
n Þ 1 si n 1
Algoritmo:
(n , m ) Þ n si n>0 y m 0
Þ m si n 0 y 0 m
Þ suma_rara(n-2,m-3)+ suma_rara(m-2,n-3)+ m + n
Algoritmo:
__
FUNCIONES Y
PROCEDIMIENTOS
PROCEDIMIENTOS
PROCEDIMIENTOS
Los procedimientos son muy utilizados en los efectos laterales que se pueden llevar
a cabo: escribir en pantalla, modificar variables, leer datos, etc.
<declaraciones variables>
inicio
<instrucciones>
fin_procedimiento
[1] Una función puede retornar más de un valor si ella usa argumentos por
referencia. En este texto los argumentos por referencia sólo se usarán en
los procedimientos ya que, es una muy mala técnica de programación el uso
de argumentos por referencia en funciones. Esta consideración se hace por
que matemáticamente una función no puede modificar los valores de los argumentos.
__
FUNCIONES Y
FUNCIONES Y
PROCEDIMIENTOS
PROCEDIMIENTOS
inicio
fin_procedimiento
EJEMPLOS.
leer (n)
hasta (0 < n | n <= 100)
/* las siguientes seis lineas leen los n datos a procesar */
para (i = 0 hasta n - 1) hacer
fin_para
fin_procedimiento
__
FUNCIONES Y
FUNCIONES Y
PROCEDIMIENTOS
PROCEDIMIENTOS
FUNCIONES Y
FUNCIONES Y
PROCEDIMIENTOS
PROCEDIMIENTOS
procedimiento principal()
variables
inicio
<instrucciones>
fin_procedimiento
donde,
FUNCIONES Y
FUNCIONES Y
PROCEDIMIENTOS
PROCEDIMIENTOS
FUNCIONES Y
PROCEDIMIENTOS
FUNCIONES Y PROCEDIMIENTOS
procedimiento principal()
variables
<declaración de variables programa>
inicio
<instrucciones>
fin_procedimiento
EJEMPLOS.
Algoritmo:
procedimiento principal()
variables
n : entero
x : real
y : real
inicio
escribir “Digite el numero de terminos a calcular de e(x)”
leer n
escribir “Digite el valor sobre el que quiere calcular e(x)”
leer x
y e( x, n )
escribir “El valor de e(”
escribir x
escribir “) es “
escribir y
fin_procedimiento
Algoritmo:
/*
las siguientes cuatro lineas son para obtener el numero de
datos a leer. Se controla que no sea un numero invalido
*/
repita
escribir “Ingrese el numero de reales a operar”
leer n
hasta (0 < n n 1000)
/* las siguientes seis lineas leen los n datos a procesar */
para i 0hasta n-1 haga escribir “Ingrese el dato ”
escribir i
escribir “-esimo”
leer A[i]
fin_para
fin_procedimiento
procedimiento principal()
variables
n : entero
A : arreglo[1000] de entero
inicio
leer_arreglo( n, A )
ordenar( n, A )
escribir “Esta es la colección ascendentemente:”
escribir_ascendente( n, A )
escribir cambio_linea
escribir “Esta es la colección descendentemente:”
escribir_descendente( n, A )
escribir cambio_linea
fin_procedimiento
__
FUNCIONES Y
PROCEDIMIENTOS
Tabla de contenido
MÓDULO 6: REGISTROS
14. Registros
__
Tabla de contenido
REGISTROS REGISTROS
REGISTROS
<nombre> como
<nombre1> : <tipo1>
<nombre2> : <tipo2>
<nombren> : <tipon>
fin_tipo
donde,
EJEMPLOS.
Estudiante como
codigo : entero
fin_tipo
Caja como
alto : real
ancho : real
largo : real
fin_tipo
Complejo como
x : real
y : real
fin_tipo
__
REGISTROS REGISTROS
REGISTROS
constantes
<declaración constantes>
tipos
<declaración registros>
procedimiento principal()
variables
inicio
<algoritmo principal>
fin_procedimiento
EJEMPLOS.
<variable>.<campo>
donde,
EJEMPLOS.
promedio := 0.0
fin_para
Como cualquier otra variable, una variable de tipo registro puede ser
pasada como argumento a una función y/o procedimiento por valor o
por referencia.
Algoritmo:
constantes
TAMANO_NOMBRE = 100
N = 40
NUM_NOTAS = 5
tipos
Estudiante como
codigo : entero
fin_tipo
variables
i : entero
inicio
leer( e.nombre )
leer( e.codigo )
leer( e.notas[i] )
fin_para
fin_procedimiento
variables
i : entero
promedio : real
inicio
promedio := 0.0
fin_para
retornar promedio
fin_funcion
variables
max : real
i : entero
inicio
max := A[0]
max : A[i]
fin_si
fin_para
retornar max
fin_funcion
/* algoritmo principal */
procedimiento principal()
variables
i : entero
max : real
inicio
escribir cambio_linea
LeerEstudiante( curso[i] )
fin_para
fin_procedimiento
__
REGISTROS