SlideShare una empresa de Scribd logo
1 de 87
Descargar para leer sin conexión
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO
FACULTAD DE INGENIERÍA
DIVISIÓN DE MATERIAS PROPEDÉUTICAS
PROGRAMACIÓN BÁSICA
Notas de complementación para el curso
INGENIERÍA CIVIL PLAN F2
Créditos: 8
Docentes:
M. en I. MARIA DE LOS ÁNGELES CONTRERAS FLORES
Mtra. LETICIA PALMA ROSALES
2
ÍNDICE
Contenido
I.- Introducción
II.- Unidad I (Definiciones) …………………………………………………………………………………………………………………………………………………………………………….. 4
III.- Unidad II (Estructuras de control) ……………………………………………………………………………………………………………………………………………………… 19
III.I.- Secuenciación …………………………………………………………………………………………………………………………………………………………………………………………. 19
III.II.- Selección (Simple, compuesta y múltiple) ……………………………………………………………………………………………………………………………………….. 26
III.III.- Iteración ……………………………………………………………………………………………………………………………………………………………………………………………… 43
IV.- Unidad III Vectores y Matrices ………………………………………………………….……………………………………………………………………………………..……….. 55
V.- Unidad IV Funciones (Modularidad) ……………………………………………………………………………………………………………………………………..………………… 76
VI.- Bibliografía …………………………………………………………………………………………………………………………………………………………………………………………….. 87
3
INTRODUCCIÓN
El presente trabajo tiene como objetivo apoyar a los alumnos de la materia de programación básica proporcionando los conocimientos
básicos en el área de programación, de la misma forma se busca que el alumno refuerce los conocimientos que han sido adquiridos en
clase.
El contenido del trabajo está dividido en cuatro unidades principales en las cuales se abordan desde los fundamentos teóricos hasta su
aplicación en la elaboración de algoritmos para su implementación en los sistemas, la primera unidad define los conceptos básicos de la
programación y su correspondiente uso, por otra parte en la segunda unidad se da una descripción general de lo que son las estructuras
de control utilizadas al momento de realizar un programa; esta sección cuenta con una serie de ejemplos que hacen que el funcionamiento
de estas estructuras sea entendido de una mejor forma, además se dan algunas recomendaciones al querer hacer uso de estas
estructuras.
En la tercera unidad se aborda el tema de las estructuras estáticas más utilizadas al momento de realizar un programa, su
funcionamiento es descrito con el desarrollo ejemplos y recomendaciones útiles.
Finalmente en la cuarta unidad se describe de forma general el uso de la programación modular, especificando y detallando el manejo e
implementación de cada uno de sus componentes, utilizando para ello un ejemplo que permite esquematizar su funcionamiento.
4
UNIDAD I
DEFINICIONES
1.- Algoritmo
Es una manera formal y sistemática de representar la descripción de un proceso se caracteriza por hacerlo mediante una serie de pasos.
Características de un algoritmo
Definido: Todas las acciones deberán estar rigurosamente especificadas por medio de un lenguaje formalmente definido.
Finito: Un algoritmo debe de terminar después de una serie de pasos
Preciso: siempre debe de tener el mismo orden en la ejecución de cada uno de los pasos
Eficiente: Todas las operaciones a ejecutar deberán ser ejecutadas por cualquier persona en cualquier tiempo finito.
Tiene entradas: Un algoritmo tiene cero o más entradas que son usadas mediante la ejecución.
Tiene salidas: Un algoritmo tiene una o más salidas que son producidas como resultado de su ejecución.
2.- Pseudocódigo
Es la descripción del algoritmo realizada en un lenguaje informal es decir un lenguaje que sea neutro (independiente del mecanismo en el
que se solucionara el problema) y completo (que cuente con la capacidad de representar cualquier idea).
5
3.- Programa
Es la descripción de un algoritmo en un lenguaje de programación, que sea capaz de optimizar cada uno de los pasos del algoritmo para
que sea entendido por la computadora.
Existen diversos tipos de programas, dependiendo del objetivo y del lenguaje que se utilice para realizar un programa:
 Fuente: Es el programa escrito por el programador tomando como base el algoritmo realizado, es el primero que se introduce en
la computadora para que realice las instrucciones deseadas, además de ser independiente de la computadora donde lo ingresemos
ya que se introduce en un programa “editor”, o IDE.
 Objeto: Es el producido desde el programa fuente por medio de un proceso que se denomina compilación, en este proceso cada
uno de los pasos (instrucciones) que el programador introduce en el programa fuente son traducidos a operaciones que la
computadora interpreta directamente.
 Ejecutable (binario): Es el producido mediante el programa objeto que se genera en un proceso llamado “montaje”, este proceso
es realizado en un programa montador o linker, en este proceso se realiza una especie de liga que une al programa objeto con
código que se encuentra dentro de la biblioteca del sistema (System Library) y que ayuda para la realización de las operaciones
que son necesarias para que el programa funcione correctamente algunas de estas funciones son: la lectura del teclado, escritura
en la pantalla, la realización de operaciones aritméticas entre otras.
 De utilidad: Son programas que son utilizados por cualquier aplicación (programa), son de uso general, algunos ejemplos de estos
programas son: compiladores, editores, montadores, etc.
6
4.- Lenguaje de programación
Es el lenguaje utilizado por el programador para ingresar las instrucciones a la computadora para la ejecución correcta del algoritmo, y
que a su vez genera el código fuente.
Existen diversos lenguajes de programación que se clasifican de acuerdo a las instrucciones y gramática que servirá para la codificación
del algoritmo. Los lenguajes se clasifican en tres grandes grupos:

Lenguaje maquina: Son los lenguajes entendibles directamente por la computadora, las instrucciones en este lenguaje son expresados
en términos de la unidad más pequeña (bit) es decir en ceros y unos, algunos ejemplos de instrucciones de este lenguaje son:
0011 0110 0001
1010 1111 0101
Este lenguaje es muy complicado para entenderse por un programador pero muy fácil para una computadora.
Lenguajes de bajo nivel (ensambladores): Son lenguajes generalmente dependientes de la maquina, este tipo de lenguajes simplifica
en gran manera la interpretación del lenguaje maquina ya que asocia a cada grupo de bits una instrucción a ser realizada por la
computadora estas instrucciones son conocidas como nemónicos o nemotécnicos algunos ejemplos son: ADD (suma), SUB (resta), MPY
(multiplicar), etc. Un ejemplo más completo seria:
7
Después que el programa ha sido escrito en un lenguaje ensamblador se necesita de un programa llamado ensamblador que lo traduzca a
código máquina.
Lenguajes de alto nivel: Son lenguajes en donde las instrucciones son escritas en lenguaje parecido al de los humanos, en general al
lenguaje inglés, esto facilita mucho la lectura y escritura de programas. Algunos ejemplos de instrucciones son: IF, ELSE,
THEN, WHILE, REPEAT, etc. ADA, BASIC, COBOL, FORTRAN, C, PASCAL entre otros, son ejemplos de algunos de estos lenguajes.
En general se puede ver la acción de un programador en la siguiente imagen
8
5.- Sentencia
Es la unidad mínima o elemental de un lenguaje e indica una norma procesal, para la forma específica de trato de un elemento en una
operación. La precisión de las sentencias determina la precisión de la ejecución del programa y para conseguirla deben ajustarse a una
sintaxis muy concreta. En general, las sentencias se clasifican en ejecutables (especifican operaciones de cálculos aritméticos y
entrada/salida de datos) y no ejecutables (no realizan acciones concretas, ayudan a la legibilidad del programa, pero no afecta en la
ejecución del programa).
 Sentencia de entrada.- Es aquella que permite el ingreso de datos, para el caso del lenguaje informal su sintaxis es:
lee nombre_variable
 Sentencia de salida.- Es aquella que permite mostrar en un dispositivo de salida un mensaje y/o un valor de una variable, para el
caso de lenguaje informal su sintaxis es:
escribe [“texto”] ó [“texto” , variable] ó [variable , “texto”]
 Sentencia de asignación.- Es aquella que permite guardar un valor constante o el resultado de una expresión en un identificador
de variable, para el lenguaje informal la sintaxis es:
variable ← constante ó expresión (la variable toma el valor de la constante o expresión)
 Sentencia de control.- Es aquella que define el flujo de acciones a ser realizadas por el procesador
6.- Identificador
El nombre de un elemento dentro de un programa, si el nombre hace referencia a una variable se le conoce como identificador de
variable, los identificadores representan los objetos de un programa (constantes, variables, tipos de datos, procedimientos, funciones,
unidades, programas, etc.). Un identificador se caracteriza por estas reglas:
Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no puede contener espacios en blanco
Letras, dígitos y caracteres subrayados ( _ ) están permitidos después del primer carácter
9

No se puede utilizar una palabra reservada
Identificadores válidos (ejemplos)
nombre
letras
CONT
A_B_C
nombre_apellido
Identificadores no válidos (ejemplos)
Fox&Horas contiene un carácter no válido (&)
F Bar contiene un espacio en blanco
7Cont contiene un número al inicio
Año contiene un carácter no válido (ñ)
único contiene un acento
7.- Constantes y Variables
Una constante es un valor que no puede cambiar durante la ejecución del programa, recibe un valor en el momento de la compilación del
programa y este valor no puede ser modificado
Las variables son objetos de un programa cuyo valor puede cambiar durante la ejecución del programa. El cambio se produce mediante
sentencias ejecutables.
10
8.- Contador y Acumulador
Contador: Un contador es un variable que se incrementa, cuando se ejecuta, en una unidad o en una unidad constante.
Ejemplo:
contador ←25
contador ←Contador + 1 (el valor final de contador será 26)
Acumulador: Es una variable que se incrementa en una cantidad variable.
Ejemplo:
suma ←suma + x (si x vale 7 y Suma 40, el nuevo valor de Suma será 47)
9.- Expresiones
Se denomina expresión a toda combinación de símbolos, números y signos operatorios. Según la naturaleza de estos signos operatorios
las expresiones se clasifican en: algebraicas, relacionales y lógicas. La mayoría de los signos operatorios son binarios esto es requieren
de 2 operandos. Las expresiones se evalúan de izquierda a derecha y de acuerdo a la precedencia de los signos operatorios. La
precedencia de un signo operatorio es la que indica el orden de realización de cada operación dentro de una expresión.




11
Signos operatorios aritméticos


Signos operatorios relacionales


12
Signos operatorios lógicos
Reglas básicas de precedencia
Las expresiones se evalúan de izquierda a derecha
1. Un operando entre dos signos operatorios de diferente precedencia es afectado por el de mayor precedencia
2. Un operando entre dos signos operatorios de igual precedencia es afectado por el que está a la izquierda
3. Las expresiones entre paréntesis son evaluadas antes que cualquier expresión
Nota: El valor de precedencia que tiene cada uno de los signos se muestra en los rectángulos que están en la parte izquierda de cada tabla
13
10.- Comentarios
La legibilidad de los programas aumenta considerablemente utilizando comentarios. Los comentarios es un texto explicativo, situado en el
programa e ignorado por el compilador. Los comentarios no se consideran (son invisibles) en la fase de compilación y ejecución, pero es de
gran importancia en la fase de análisis, y mantenimiento. Los comentarios son una parte importante de la documentación de un programa
ya que ayuda al programador a entender y comprender el programa.
El formato más común para la especificación de un comentario es: /* esto es un comentario*/
11.- Diagramas de flujo
Un diagrama de flujo (flowchart) es una representación grafica del algoritmo y muestra como fluye este de principio a fin. Los símbolos
utilizados han sido normalizados por el Instituto Norteamericano de Normalización (ANSI).
Símbolos más usados para los diagramas de flujo
Para indicar el inicio y fin de un algoritmo
Para indicar un proceso (cualquier operación)
Para entradas o salidas
14
Para unir un diagrama de flujo en la misma página (primero), o en otra página (segundo). Se les conoce como
conectores
Llamada a un procedimiento o función
Para la toma de decisiones
12.- Metodología de la programación
Ciclo de vida del desarrollo de un programa
15
Fase de solución.- En base a los requerimientos de un usuario se crea o se busca un método computacional de solución
Inicio.- Todo problema surge debido a las necesidades de un usuario de automatizar procesos que involucran el manejo masivo de
información.
Planteamiento del problema.- Consiste en plantear formalmente el problema a través de una especificación detallada de las entradas a
procesar, las principales funciones de procesamiento a efectuar y las salidas a producir. Definir además las condiciones de excepción que
deberán satisfacer las entradas y como serán tratadas dichas excepciones.
Desarrollo del algoritmo de solución.- Se deben tener tres aspectos en cuenta:
 Obtener un método computacional que permita resolver el problema
 Obtener la especificación jerárquica funcional del problema mediante la definición de módulos y refinamientos sucesivos
 Obtener las estructuras de datos a utilizar para resolver el problema
Pruebas del algoritmo.- Permiten determinar el grado de corrección del algoritmo y verificar la satisfacción de las necesidades del
usuario.
Fase de Implantación.- Una vez definido el método computacional de solución, se determina el lenguaje de programación a utilizar de
acuerdo al mecanismo en el que será resuelto el problema
Codificación del algoritmo.- Es la traducción del algoritmo escrito en lenguaje informal a su equivalente en lenguaje de programación.
Consiste en capturar la codificación y guardarla en algún medio de almacenamiento de la computadora generándose el programa fuente
Pruebas del programa.- Es una actividad computarizada iterativa de revisión sintáctica del programa fuente, que involucra su entrada al
compilador y la corrección de errores hasta que el programa sea sintácticamente valido generándose el programa objeto o ejecutable
equivalente.
16
Programa en operación.- Consiste en instalar el programa y sus archivos en la institución representada por el usuario que solicitó la
aplicación.
Retroalimentación.- Una vez evaluado el funcionamiento del programa mediante el cumplimento de objetivos, utilidad, consumo de
recursos y oportunidad de servicio el usuario manifiesta nuevas necesidades.
13.- Tipos de datos
Cuando se declara una variable se especifica tanto su nombre como el tipo al que pertenece. El nombre sirve para distinguirla de
cualquier otra variable y el tipo indica la forma en que debe almacenarse el valor de la variable en la computadora, de la cual dependerá el
rango de valores que ésta podrá tomar así como su precisión.
Ejemplo de la declaración de una variable:
Lenguaje in formal
nombre_variable : <tipo de dato> variable1 : entero , variable2 : float , variable3 : char
17
14.- Estructuras de control
Las estructuras de control de un lenguaje de programación son métodos de especificar el orden en que las instrucciones de un algoritmo
se ejecutarán. El orden de ejecución de las sentencias (lenguaje) o instrucciones determinan el flujo de control. Las estructuras de
control básicas son:
 Secuenciación
 Selección (simple y doble)
 Iteración
15.- Programación modular
Es uno de los métodos más flexibles y potentes para mejorar la productividad de un programa. En esta programación el programa se
divide en módulos, en donde cada uno de ellos se ejecuta una tarea en específico y se programan de forma independiente de otros
módulos.
Cada programa contiene un módulo llamado programa principal que es el que controla todo lo que sucede, este transfiere el control a los
diferentes submódulos para que estos puedan ejecutar sus tareas correspondientes, y habiendo terminado regresar el control al
programa principal, puede darse el caso de que un módulo contenga a otro modulo sin embargo cada módulo debe eventualmente devolver
al módulo del cual se recibe originalmente el control.
Ejemplo de la programación modular (estructura):
18
16.- Programación estructurada
La programación estructurada significa escribir un programa de a cuerdo a las siguientes reglas:
 El programa tiene un sentido modular
 Los módulos son diseñados de modo descendente
 Cada modulo se codifica utilizando las tres estructuras de control básicas: secuencia, selección e iteración.
19
UNIDAD II
ESTRUCTURAS DE CONTROL
1.- Secuenciación
Se refiere a la capacidad de agrupar una secuencia de sentencias básicas formando una estructura compuesta. Esta estructura justifica
y garantiza que el flujo de control dentro de los módulos sea de arriba hacia abajo. Sus representaciones son:
Diagrama de flujo Pseudocódigo
comienza
sentencia 1
sentencia 2
…
sentencia n
termina
20
Ejemplo 1: Calcular el área de un polígono en forma de L c
Entradas: Tamaño de cada uno de los lados del polígono
Salidas: El área total del polígono
Diagrama de flujo
21
Pseudocódigo
a,b,c,area1,area2,area3 : entero (int) /* indica que son variables de tipo entero*/
comienza /*se recomienda dejar sangría para tener una mayor legibilidad del programa */
escribe “Dame el valor de a, b y c”
lee a,b,c
area1← b * c /*en este caso la base es diferente a la altura*/
area2 ←a * a /* en este caso la base es igual a la altura*/
area3 ←area1 + area2 /*El resultado es la suma de las áreas obtenidas y se guarda en la variable area3 */
escribe “El área total es : ”, area3
termina
Prueba de escritorio
22
Ejemplo 2.- Elaborara un algoritmo que sume dos números
Entradas: Los dos números enteros a y b
Salidas: El resultado de la suma de los números introducidos
Diagrama de flujo
23
Pseudocódigo
a,b,sum: entero (int)
comienza
escribe “Dame 2 numeros”
lee a,b
sum ← a+b
escribe a , “+” , b , ”=”, sum
termina
Prueba de escritorio
24
Ejemplo 3.- Escribir el algoritmo que calcule el volumen de una esfera dando un valor para el radio
Entradas: El radio de la esfera
Salidas: El volumen de la esfera
Diagrama de flujo
Pseudocódigo
r,v : Real (float)
comienza
escribe “Introduce el valor del radio”
lee r
v ← 4 / 3 * 3.1416 * r ^ 3
escribe “El volumen de la esfera es : ”, v
termina
25
2.- Selección
Es la especificación de la transferencia de control hacia una de las 2 localizaciones de una o mas sentencias dependiendo de la veracidad
o falsedad de una expresión booleana
a). Selección simple: Solo se definen sentencias para cuando la expresión booleana es verdadera, es decir, su falsedad no importa
Diagrama de flujo Pseudocódigo
comienza
si (expresión= Verdad) entonces
sentencia 1
sentencia 2
…
sentencia n
fin si
termina
26
Ejemplo 1.- Elaborar un algoritmo que obtenga el promedio de 3 calificaciones y muestre “APROBADO” si el promedio es
mayor o igual a 7
Entradas: Calificaciones (3)
Salidas: Promedio y la frase APROBADO si el promedio es mayor o igual a 7
Diagrama de flujo
27
Pseudocódigo
c1,c2,c3,prom : Real (float)
comienza
escribe “Introduce las tres calificaciones”
lee c1,c2,c3
prom ← (c1+c2+c3) / 3
escribe “Promedio = ”, prom
si ( prom >= 7.0 ) entonces
escribe “APROBADO”
fin si
termina
Prueba de escritorio
28
Ejemplo 2.- Elaborar un algoritmo que muestre el máximo de dos números dados, es decir, si los números introducidos son:
125 , 158 se muestre en la pantalla el número 158
Entradas: Los dos números introducidos por el usuario
Salidas: El mayor de los dos números
Diagrama de flujo
29
Pseudocódigo
num1, num2, max : Entero (int)
comienza
escribe “Introduce los dos números”
lee num1,num2
max ← num1
si (num2 > max) entonces
max ← num2
fin si
escribe “El máximo es:”, max
termina
Prueba de escritorio
30
Ejemplo 3.- Elaborar un algoritmo convierta de °C a °F solo si los °C están entre 0 y 100
Entradas: Los °C introducidos por el usuario
Salidas: Su respectivo valor en °F
Diagrama de flujo
31
Pseudocódigo
grados, gf : Real (float)
comienza
escribe “Introduce los grados centígrados”
lee grados
si (grados >= 0 Y grados <=100) entonces
gf ← 9/5 * grados +32
escribe “ °F = ”, gf
fin si
termina
Prueba de escritorio
32
b). Selección doble: En este caso se definen sentencias para cuando la expresión booleana es verdadera y también para cuando es falsa
Diagrama de flujo Pseudocódigo
comienza
si (expresión= v) entonces
sentencia 1a
sentencia 1a
sentencia na
otro
sentencia 1b
sentencia 1b
sentencia nb
finsi
termina
33
Ejemplo 1.- Elaborar un algoritmo que obtenga el pago por hora de un trabajador que si es mayor o igual a 40 recibe
doble pago por hora.
Entradas: Pago por hora, horas trabajadas
Salidas: Pago total
Diagrama de flujo
34
Pseudocódigo
horas, ph, total : Entero(int)
comienza
escribe “Introduce el total de horas trabajadas y el pago por hora”
lee horas, ph
si (horas >= 40)entonces
total ← (horas * ph)*2
otro
total ← horas * ph
finsi
escribe “El total a pagar es : ” , total
termina
Prueba de escritorio
35
Ejemplo 2.- Diseñar un algoritmo que valide si la situación de un alumno es: EXCELENTE, REGULAR, MALO, tomando en
cuenta la siguiente escala: Excelente > = 8.5 , 7.0 <= Regular < 8.5, Malo <7.0
Entrada: Promedio
Salida: Situación del alumno
Diagrama de flujo
36
Pseudocódigo
promedio : Real (float)
comienza
escribe “Introduce el promedio”
lee promedio
si (promedio >= 8.5) entonces
escribe “EXCELENTE”
otro
si (promedio<=7.0)
escribe “REGULAR”
otro
escribe “MALO”
finsi
finsi
termina
Prueba de escritorio
37
Ejemplo 3.- Diseñar un algoritmo que determine si un número es mayor menor o igual a 0, si es menor que mande el
mensaje de NEGATIVO, si es mayor a cero que escriba POSITIVO, y si es igual a cero que escriba CERO
Entradas: Número
Salidas: Mensaje POSITIVO NEGATIVO o CERO
Diagrama de flujo
38
Pseudocódigo
num : Entero(int)
comienza
escribe “Ingresa un numero”
lee num
si (num > 0) entonces
escribe “POSITIVO”
otro
si (num < 0) entonces
escribe “NEGATIVO”
otro
escribe “CERO”
finsi
finsi
termina
Prueba de escritorio
39
c). Selección múltiple: En este tipo de selección se pueden realizar diferentes tareas dependiendo de la selección que se realiza
Diagrama de flujo Pseudocódigo
comienza
caso (expresion)
valor 1: sentencia 1A
sentencia 2A
sentencia nA
valor 2: sentencia 2B
sentencia 2B
sentencia nB
valor n: sentencia 1N
sentencia 2N
sentencia nN
fincaso
termina
40
Ejemplo 1.- Diseñe un algoritmo que muestre en pantalla el día de la semana según un número introducido por el usuario
(1-7)
Entradas: Número introducido por el usuario
Salidas: Día de la semana
Diagrama de flujo
41
Pseudocódigo
numero: Entero(int)
comienza
escribe “Introduce un numero”
lee numero
caso (numero)
1: escribe “DOMINGO”
2: escribe “LUNES”
3: escribe “MARTES”
4: escribe “MIERCOLES”
5: escribe “JUEVES”
6: escribe “VIERNES”
7: escribe “SABADO”
fincaso
termina
Prueba de escritorio
42
3.- Iteración
Es la especificación de la ejecución de una(s) sentencia(s) en forma repetida dependiendo de la veracidad o falsedad de una expresión
booleana
I. Mientras (No se ejecuta ninguna sentencia si la expresión no es verdadera)
Diagrama de flujo Pseudocódigo
comienza
mientras (expresión = V)
Sentencia 1
Sentencia 2
Sentencia n
finmientras
termina
43
II. Repite (Por lo menos se ejecuta una vez la sentencia no importando la expresión)
Diagrama de flujo Pseudocódigo
comienza
repite
sentencia 1
sentencia 2
sentencia n
hasta (expresión = V)
termina
44
III. Para
Diagrama de flujo Pseudocódigo
comienza
para ( i ←Vi , Vf , Inc/Dec)
sentencia 1
sentencia 2
sentencia n
finpara
termina
Incremento o decremento
45
Ejemplo 1.- Diseñar un algoritmo que valide un número introducido por el usuario, es decir, si es menor a cero o mayor a
7 se le vuelva a pedir el número al usuario, en otro caso despliegue el mensaje de bienvenida
Entradas: Número introducido por el usuario
Salidas: Mensaje de bienvenida
Diagrama de flujo
46
Pseudocódigo
num: Entero(int)
comienza
escribe “Introduce un numero”
lee num
mientras (num < 0 O num >7)
escribe “Solo entre 1 y 7”
lee num
finmientras
escribe “BIENVENIDO”
termina
Prueba de escritorio
Ejemplo 2.- Realizar un algoritmo que sume una serie de números enteros introducidos por el usuario
47
Entradas: Números introducidos por el usuario
Salidas: Suma total
Diagrama de flujo
48
Pseudocódigo
Contador , Suma , Numero , Total : Entero (int)
comienza
escribe “¿Cuantos números deseas sumar?”
lee Total
Contador ← 0
Suma ← 0
mientras (Contador < Total)
escribe “Introduce el numero ”, Contador+1
lee Numero
Suma ← Suma + Numero
Contador ← Contador+1
finmientras
escribe “La suma es ”, Suma
termina
Prueba de escritorio
49
Ejemplo 3.- Realice el ejemplo anterior con la estructura de control REPITE
Diagrama de flujo
50
Pseudocódigo
contador , suma , numero , total : entero (int)
comienza
escribe “¿cuántos números deseas sumar?”
lee total
contador ← 0
suma ← 0
repite
escribe “introduce el numero”, contador+1
suma ← suma+1
contador ← contador+1
hasta (contador = total)
escribe “la suma es:”, suma
termina
51
Ejemplo 4.- Realice el ejemplo 2 con la estructura de control PARA
Diagrama de flujo
52
Pseudocódigo
contador, suma , numero , total : entero (int)
comienza
escribe “¿cuántos números deseas sumar?”
lee total
para (contador ← 0, contador < total, 1) /* el numero 1 significa que se incrementa i de uno en uno */
lee numero
suma ← suma + numero
finpara
termina
53
Precauciones al hacer uso de la
estructura de control MIENTRAS
La condición lógica en un bucle
mientras debe tener un valor la
primera vez que se evalúa, en caso
contrario el programa abortara (se
detendrá) al ejecutarse mientras.
La condición lógica en un bucle
mientras debe ser modificada por
una sentencia en el cuerpo del
bucle, en caso contrario el bucle es
infinito.
Es posible que el cuerpo del
bucle no se ejecute nunca. Esto
sucederá si la condición lógica es
falsa la primera vez que se evalúa.
Reglas de funcionamiento al hacer
uso de la estructura de control
REPITE
La condición se evalúa al final
del bucle después de ejecutarse
todas las sentencias.
Si la expresión lógica es falsa
se vuelve a repetir el bucle y se
ejecutan todas las sentencias.
Si la expresión lógica es falsa
se sale del bucle y se ejecuta la
siguiente sentencia después de la
instrucción hasta.
54
REGLAS DE SELECCIÓN DE LAS ESTRUCTURAS DE CONTROL
1. Si el número de iteraciones se conoce por adelantado se debe utilizar la estructura de control
PARA
2. Si el número de iteraciones es indeterminado y el bucle no se debe ejecutar cuando la condición
es falsa la primera vez se debe utilizar MIENTRAS
3. Si el número de iteraciones es indeterminado y el bucle se debe ejecutar siempre al menos una
vez se debe utilizar REPITE
55
UNIDAD III
VECTORES Y MATRICES
En la resolución informática de algoritmos, a veces surge la necesidad de expresar las relaciones que existen entre distintas variables y
bien almacenarlas o hacer referencia a ellas.
Una estructura de datos es un conjunto de componentes cuya organización se caracteriza por las funciones de acceso que se usan para
almacenar y suprimir elementos individuales del grupo. Por ejemplo suponga que se disponen de un ente llamado ladrillo que permite
formar una estructura con ellos llamada pared, por lo tanto pared es un conjunto de ladrillos colocados en filas en posición vertical, esta
estructura tiene sus propias funciones de acceso:
Almacenar: Poner un elemento
Eliminar: Quitar un elemento
Abstracción de datos
Los datos se representan físicamente en memoria de distintas formas, dependiendo en primer lugar del tipo de datos, pero aun
tratándose del mismo tipo pueden representarse también con distintos métodos.
56
La abstracción entonces puede definirse como la separación que existe entre la representación interna de los datos y sus funciones de
acceso además de las aplicaciones que utilizan estos datos a nivel lógico.
Clasificación de las estructuras de datos
La estructuras de datos se dividen en dos tipos en función de cómo utilizan la memoria.
Estructuras de datos Estáticas
Ocupan una cantidad fija de memoria en tiempo de compilación, a este grupo pertenecen todas las estructuras de datos
suministradas en C.
Estructuras de datos Dinámicas
Son aquellas que utilizan una cantidad variable de memoria en función de los requerimientos en tiempo de ejecución, en C no se
facilitan estas estructuras sin embargo el lenguaje proporciona las herramientas necesarias para que sean incorporadas por el
programador (tipo y funciones para su manipulación).
ARRAYS UNIDIMENSIONALES (VECTORES)
Un array es una estructura de datos incorporada en C y en la mayoría de los lenguajes de propósito general. Considerando las distintas
formas de observar una estructura de datos se analizaran en tres perspectivas.
Nivel Lógico
Desde el punto de vista abstracto se defina un array unidimensional como una estructura de datos formada por una colección finita de
de elementos homogéneos (elementos del mismo tipo), ordenados (indica que hay un primer elemento, segundo elemento, etc), finito
(significa que hay un último elemento) que se referencian con un nombre común, esta colección de elementos forma una estructura
estática, lo que supone que el tamaño del array deberá ser conocido.
57
Función de acceso: El acceso es directo es decir puede accederse a cualquier elemento sin necesidad de acceder primero a los
elementos que lo preceden, el acceso a un elemento en especifico se realiza mediante el nombre del array y un índice que permite
especificar cuál es el elemento deseado.
SINTAXIS DE LA FUNCIÓN DE ACCESO
Nombre_Vector[indice]
 Nombre_Vector: Es un identificador que representa la colección de objetos.
 índice: Es un valor comprendido entre 0 y n-1
Para referenciar a cada uno de los elementos del vector se usa el operador [ ] escribiendo el nombre del vector seguidos del índice entre
los corchetes
58
DECLARACIÓN
Tipo Nombre_Vector [tamaño];
Tipo. Tipo de datos de los elementos
Ejemplo de declaración
int vector_enteros[20];
Se tiene un vector de 20 enteros referidos como vector_enteros[0], vector_enteros[1],.., vector_enteros[20] sabremos la dirección de
memoria donde se encuentra cada elemento.
Ejemplo
# include <stdio.h>
main()
{
int vector[10];
int i ;
int suma;
for (i=0; i<10; i++)
vector[i]=i;
for (i=0; i<10; i++)
suma=suma+vector[i];
}
59
En este programa se declara un vector de enteros, el primer for rellena cada uno de los 10 elementos con números del 0 al 9 y
posteriormente calcula su suma.
Se puede definir el tamaño del vector como una constante de substitución simbólica.
# include <stdio.h>
# define TAM 10;
main()
{
int vector[TAM];
int i
int suma;
for (i=0; i<TAM; i++)
vector[i]=i;
for (i=0; i<TAM; i++)
suma=suma+vector[i];
}
Cuando en una declaración se especifican los valores de los elementos de un vector no es necesario indicar el tamaño del vector entre
corchetes
float datos [] = {1.0, 2.0, 6.0, 4.0, 3.0}; // datos será un vector de 5 elementos.
60
Sentencias en las que se puede usar un vector:
 Entrada: lee datos [i]
 Salida: escribe datos [i]
 Asignación: datos [i]←116
datos [i]← datos [i+1]
numero← datos [i+1]
 Control: si(datos datos [i]>=0) entonces
EJEMPLOS
Elabore un algoritmo que pida un número al usuario y después llene un vector con datos dados por el usuario.
Entradas: Tamaño del vector, elementos del vector.
Salidas: Ninguna
61
Diagrama de flujo
62
Pseudocódigo
comienza
entero : tam, i
escribe “introduce tamaño del vector”
lee tam
i ← 1
mientras (i<=tam)
escribe “Dame elemento ”, i
lee vector[i]
i←i+1
finmientras
termina
Prueba de escritorio
63
Ejemplo 2 .Elabore un algoritmo que sume dos vectores y coloque en el resultado en un 3 vector, se asume que los
vectores ya existen y son de tamaño N. se debe mostrar en pantalla la siguiente salida:
Vector 1 __ __ __ __ __
Vector 2 __ __ __ __ __
Suma __ __ __ __ __
Entradas: Ninguna
Salidas:
Vector 1 __ __ __ __ __
Vector 2 __ __ __ __ __
Suma __ __ __ __ __
Diagrama de flujo
64
65
Pseudocódigo
comienza
i←1
repite
SUMA[i]←V1[]+V1[]
i←i+1
hasta (i>n)
escribe “Vector 1 ”
para (i=1,i<=n,1++)
escribe V1[i] /*sin cambio de linea*/
finpara
/* cambio de linea*/
escribe “Vector 2”
para (i=1,i<=n,1++)
escribe V2[i] /*sin cambio de linea*/
finpara
/*sin cambio de linea*/
escribe “Suma ”
para (i=1,i<=n,1++)
escribe SUMA[i] /*sin cambio de linea*/
finpara
termina
66
Prueba de escritorio
67
Ejemplo 3.- Elabore un algoritmo que ordene los elemento de menor a mayor y muestre el vector ordenado, el vector
debe estar inicializado con valores cualesquiera.
Entradas: Ninguna
Salidas: Vector ordenado
Diagrama de flujo
68
Pseudocódigo
i, j, N, aux : entero (int)
comienza
/*iniciaizacion del vector*/
vec [] = {6,4,2,1,8}
para (i←1, i<N, i++)
para (j←i+1, j<=N, j++)
si (vec[i]>=vec[j]) entonces
aux ← vec[i]
vec[i]← vec[j]
vec[j]←aux
finsi
finpara
finpara
escribe “Vector ordenado ”
para (k←1, k<N, k++)
escribe vec[k]
finpara
termina
Prueba de escritorio
69
ARRAYS BIDIMENSIONALES (MATRICES)
Un arreglo bidimensional es una estructura natural para almacenar la información que se puede representar de manera lógica como una
matriz, visualizándose de forma abstracta como una rejilla con filas y columnas, de manera que cada elemento se referencía por el
numero de fila y columna donde se encuentra.
Un arreglo bidimensional tiene dos dimensiones y es un caso particular de los arreglos multidimensionales. En C#, las dimensiones se
manejan por medio de un par de corchetes, dentro de los que se escriben, separados por comas, los valores de las dos dimensiones.
70
Operaciones.
Para manejar un arreglo, las operaciones a efectuarse son:
 Declaración del arreglo,
 Creación del arreglo,
 Inicialización de de los elementos del arreglo, y
 Acceso a los elementos del arreglo.
Función de Acceso
El mecanismo para acceder a un determinado componente es directo es decir, no hay necesidad de visitar a los elementos que lo
preceden. Cada elemento esta ordenado en dos dimensiones por lo tanto el acceso se realiza mediante el nombre del array y usando un
par de índices que indican que el elemento de la colección se desea acceder, el primer índice referencia la posición del elemento en la
primera dimensión llamada fila y el segundo indica la posición del elemento en la segunda dimensión llamada columna.
Representación grafica
71
Sintaxis de la función de acceso
Nombre _Matriz [indice1][indice2]
Nombre _Matriz: Es un indicador que representa el nombre asociado a la colección de elementos de la estructura.
indice1: Es un valor comprendido entre 0 y n-1 siendo n el numero de filas de la estructura
indice2: Es un valor comprendido entre 0 y n-1 siendo n el numero de columnas de la estructura
Así bien el número de elementos vendrá dado por el producto de filas por columnas.
Ejemplo
MaxMin [15][1]=10 /*MaxMin es el nombre de la colección, 15 y 1 es la referencia al
elemento 16 de la 2º columna del array para almacenar el
entero 10*/
lee MaxMin [15][1] /*Se almacena en el elemento 16 el valor leído por el
teclado*/
var = MaxMin [15][1] /*Asignar el valor del elemento 15,1 de la estructura a la
variable var*/
Declaración
En pseudocódigo se agrega a la lista de variables el tipo, nombre y tamaño del array según el siguiente formato.
tipo Nombre_Matriz [filas][columnas]
tipo Nombre_Matriz [filas][columnas]={lista de elementos}
72
tipo: Puede ser cualquier tipo de datos básico o definidos por el usuario
nombre_Matriz: Identificador que hace referencia a la estructura matriz
filas: Cantidad de filas de la colección
columnas: Cantidad de columnas de la colección
lista de elementos: Elementos que contendrá la matriz , cara valor deberá estar separado por una coma.
Recorrido un arreglo bidimensional
El recorrido se hace principalmente para leer, escribir, inicializar o procesar todos los elementos del array, el recorrido se puede hacer
por filas o columnas, el hecho de hacer el recorrido de una u otra forma no influye en el proceso que en ese momento se realiza con los
elementos.
Pseudocódigo
para (i←0 mientras i<filas, i++) /*i es el índice de filas*/
para (j←0 mientras j<columnas, i++) /*i es el índice de columnas*/
lee matriz[i][j]
finpara
finpara
73
para (i←0 mientras i<columnas, i++) /*i es el índice de filas*/
para (j←0 mientras j<filas, i++) /*i es el índice de columnas*/
lee matriz[i][j]
finpara
finpara
*Usando ambas formas de recorrido se ha accedido para su proceso al mismo elemento*
Ejemplo 1.- Dadas las matrices A y B elabore un programa que calcule la suma de ambas matrices y al final muestre en
pantalla las matrices A y B y la suma de ambas, el programa deberá seguir el siguiente formato:
Matriz A
8 9 5
6 3 2
Matriz B
7 1 4
5 0 3
Matriz Resultante
15 10 9
11 3 2
Entradas: Elementos de la matriz A y B
Salida: Elementos de la matriz A, B y Matriz resultante
74
Pseudocódigo
comienza
i,j, col, ren: enteros (int)
/*en esta parte se ingresan lso datos de la matriz a*/
/*limpia pantalla*/
para (i←0,i<ren, i++)
para (j←0,j<col, j++)
escribe “dame elemento”, i ,”,”,j
lee matrizA[i][j] /*se lee dato del teclado y se almacena en la posición i,j*/
finpara
finpara
/* en esta parte se ingresan los datos de la matriz b*/
/*limpia pantalla*/
para (i←0,i<ren, i++)
para (j←0,j<col, j++)
escribe “dame elemento”, i ,”,”,j
lee matrizB[i][j]
finpara
finpara
/* calcular la suma entre a y b y guardarlo en la matriz r*/
para (i←0,i<ren, i++)
para (j←0,j<col, j++)
matrizR[i][j] ← matrizA[i][j] + matrizB[i][j]
finpara
finpara
75
/*mostrar en pantalla el contenido de las 3 matrices*/
escribe “matriz a”
para (i←0,i<ren, i++)
para (j←0,j<col, j++)
escribe matriza[i][j]
finpara
/*Cambio de linea*/
finpara
escribe “Matriz B”
para (i←0,i<ren, i++)
para (j←0,j<col, j++)
escribe matrizb[i][j]
finpara
/*Cambio de linea*/
finpara
escribe “Matriz Resultante”
para (i←0,i<ren, i++)
para (j←0,j<col, j++)
escribe matrizari][j]
finpara
/*Cambio de linea*/
finpara
termina
76
UNIDAD IV
MODULARIDAD
Diseño modular
El diseño modular es una metodología del desarrollo de programas que surge de la necesidad de abordar un problema complejo
dividiéndolo en otros más sencillos, que se pueden llamar subproblemas, consiguiendo así comprender y abordar mejor el problema
completo , de esta forma después de resolver todos los problemas se obtiene la solución del problema global.
Módulos. Diagramas Jerárquicos
Consiste en comenzar dividiendo el problema en un conjunto de subproblemas, a continuación se dividen estos en otros más sencillos y así
sucesivamente, de esta forma se crea una estructura jerárquica de problemas y subproblemas llamados módulos funcionales, la
representación grafica se muestra a continuación.
Diagrama de estructura de módulos
77
Ventajas de la programación modular.
 Facilita que la resolución del problema la lleven a cabo diferentes programadores, gracias a la división del problema en distintos
módulos.
 Eleva el grado de legibilidad de los algoritmos
 Favorece el mantenimiento y modificación de los módulos ya diseñados, en consecuencia de los programas.
¿Cómo dividir un programa en módulos?
Se afronta la división de la misma forma en que se afronta la resolución de grandes problemas en la vida cotidiana.
 Pasar un tiempo pensando en el problema globalmente
 Escribir los pasos principales, especificando tanto la estructura principal del programa como los módulos que requiera.
 Examinar cada uno de los pasos anteriores completando los detalles.
 Si no se sabe realizar una determinada tarea, se da un nombre y se pasa a la realización de la tarea siguiente, teniendo en cuenta
que habrá que ocuparse de ella más adelante para resolverla
 El proceso continua tantas veces como sea necesario, hasta completar el diseño.
Conceptos básicos de la programación modular
Variable global: Es aquella variable cuyo valor puede ser usado o modificado en el programa principal y en cualquier módulo.
Variable local: Su valor solo puede usado o modificado sólo dentro del módulo en que se declara.
Argumento formal
Representan la forma en que se comunican el subprograma y el módulo que los llama, los parámetros formales son variables.
78
Aparecen declarados en la cabecera del subprograma entre los paréntesis que siguen al nombre y son fijos para cada programa.
Ejemplo:
/* num es la variable de enlace del subprograma suma y se comporta como variable local del subprograma*/
suma (num) comienza
…
fin
Argumento actual
Son variables enviadas en cada llamada a un subprograma desde el programa o subprograma que los llama
Estos parámetros aparecen listados (escritos) en la llamada a un subprograma.
Ejemplo
/*El programa principal llama a un subprograma*/
PROGRAMA PRINCIPAL
inicio
…
sum (num)
…
fin
/*subprograma que llama a otro subprograma*/
/* llamada al subprograma potencia donde base y 3 son los parámetros actuales*/
modulo_m (…)
inicio
…
potencia(base,3)
…
Fin
79
Paso de parámetros por valor y por referencia
Paso por valor
Se utiliza para suministrar datos de entrada a un subprograma desde el programa principal o subprograma que lo llama de modo que el
valor del parámetro actual se copie en el parámetro formal correspondiente.
El programa al que se le pasa un parámetro por valor trabaja con una copia de este por lo tanto el parámetro real no podrá ser
modificado por el subprograma, si el parámetro modifica el parámetro pasado se cambiara tan solo la copia pero no el parámetro real de
la llamada.
Paso por referencia
Se usa indistintamente para suministrar datos de entrada y recibir datos de salida. El programa principal manda al subprograma la
referencia en memoria del parámetro actual al correspondiente parámetro formal.
El subprograma que utiliza la variable pasada por referencia lo hace como si fuese propiamente suya por lo tanto puede modificarla a
conveniencia.
Cuando un parámetro es pasado por referencia se debe especificar en el programa o subprograma que este parámetro será pasado de
esta forma (ref).
80
FUNCIONES Y PROCEDIMIENTOS
Según el valor de retorno los subprogramas se pueden dividir en PROCEDIMIENTOS Y FUNCIONES
Un Procedimiento no tiene valor asociado al nombre o lo que es lo mismo no devuelve ningún valor al programa o subprograma que lo llama.
Una función tiene un valor asociado a su nombre es decir devuelven un valor al programa que lo llama.
Para hacer uso de una función es se requieren de dos cosas
 Definir a la función
 Llamar a la función
DECLARACION
tipo Nombre_Funcion(tipos _datos_parametros)
Nombre_Funcion: Identificador que referencia a la función.
tipo: Es el tipo de valor que devuelve la función y que puede ser cualquier tipo de datos básico definidos por el usuario.
tipos_datos_parametros: Son los tipos de datos de los parámetros formales, si hay más de uno se separan con comas indicando el tipo de
dato de cada uno.
81
Modalidades de una función.
1.- Función que No regresa un valor y No tiene argumentos, la forma para llamar a este tipo de función es:
Nombre_Funcion( )
2.-Función que No regresa un valor y Si tiene argumentos, la forma general de llamar a la función de este modo es:
Nombre_Funcion (var1 var2,…, varN)
3.- Función que Si regresa un valor y No tiene argumentos, la forma de llamada es:
Variable1← Nombre_Funcion()
4.- Función que Si regresa un valor y Si tiene argumentos
Variable1← Nombre_Funcion(var2 , var3,.., var4)
82
DISEÑO DEL ALGORITMO
Programa principal generalizado: Dará una visión clara de la estructura general del programa, si es iterativo, si contiene distintas
opciones, si estas también son iterativas, etc. El pseudocódigo generalizado incluye básicamente las llamadas a los módulos de primer
nivel.
Forma general de un programa modular
ENTORNO
constantes
variables
/*declaración de las funciones*/
funciones
tipoa nombre_funcion(lista tipos)
/*programa principal*/
comienza
....……..…
/*declaracion de variables locales del programa principal*/
tipoA var
var ← nombre _funcion(lista_parametros_actuales)
……………
Termina
83
DECLARACIONES DE SUBPROGRAMAS
/*cabecera del subprograma función*/
nombre_funcion(lista_declaracion_parametros_formales)
comienza
/*declaración de variables u objetos locales*/
tipoA nombre_variable
regresa (nombre_variable) /*valor devuelto al programa principal*/
termina
Ejemplo
*Función que no regresa un valor y no tiene parámetros
Elabore un algoritmo que sume dos números y tenga una función que muestre en pantalla el resultado.
Entradas: primer número (num1), segundo número (num2).
Salida: num1, num2, suma.
Pseudocódigo
comienza
num2,num2 , suma : enteros (int)
presenta() /*llamada al subprograma*/
escribe ”introduce dos numeros”
lee num 1, num2
suma← num1+num2
escribe num1, ”+”, num2, ”=”, suma
termina
84
funcion presenta() /* encabezado de la función o subprograma*/
comienza
escribe”**programa que suma dos números**”
termina
*Función que no regresa un valor y no tiene parámetros
Elaborar un algoritmo que tenga una función que muestre el resultado y que utilice la función de presentación anterior.
comienza
num1,num2 , suma : enteros (int)
presenta()
escribe ”introduce dos numeros”
lee num 1, num2
suma← num1+num2
muestra (num1,num2,suma) /*llamada al subprograma*/
termina
funcion muestra(a,b,c: enteros) /* encabezado de la función o subprograma*/
comienza
escribe a, ”+”, b, ”=”, c
termina
85
*Función que si regresa un valor y no tiene parámetros
Elaborar una función para leer el numero y regresar el numero leído, utilizar las funciones hechas anteriormente
comienza
num1,num2 , suma : enteros (int)
presenta()
num1← lee_dato( ) /*llamada al subprograma*/
num2← lee_dato ( )
suma← num1+num2
muestra (num1,num2,suma)
termina
entero lee_dato( ) /* encabezado de la función o subprograma*/
comienza
escribe “Introduce numero”
lee num
regresa(num) /*regresa el valor leído*/
termina
86
*Función que si regresa un valor y si tiene parámetros
Elabore una función que reciba los números leídos y regrese la suma de estos
comienza
num1,num2 , suma : enteros (int)
presenta()
num1← lee_dato( )
num2← lee_dato ( )
suma← sumar_numeros(num1,num2) /*llamada al subprograma*/
muestra (num1,num2,suma)
termina
entero sumar_numeros ( a,b: enteros) /*encabezado de la función o subprograma*/
comienza
c: entero (int)
c←a+b
regresa(c) /*regresa el resultado de la suma entre a y b*/
termina
87
BIBLIOGRAFÍA

1. Cairó Battistuti O. (2006), Fundamentos de Programación, Piensa en C. 1ª. Edición. Pearson.
2. Corona Nakamura A. y Ancona Valdez María de los Ángeles. (2011), Diseño de Algoritmos y su Codificación en Lenguaje C. 1ª.
Edición. México. McGrawHill.
3. Criado, Ma.A . (2006). Programación en lenguajes estructurados. RaMa: Madrid España
4. Gallego, I. y Medina, M. (2000). Algorítmica y programación para ingenieros. Edición UPC.
5. Joyánes Aguilar L. y Zahonero Martínez I. (2003), Programación Orientada a Objetos. 2ª. Edición. Madrid. McGrawHill.
6. Joyánes Aguilar L. y Zahonero Martínez I. (2010), Programación en C, C++, Java y UML. 1ª. Edición. México. McGrawHill.
7. Joyánes, Aguilar L. (1993). Programación en turbo Pascal. 2ª. Edición. MacGraw-Hill.

Más contenido relacionado

La actualidad más candente

taller de tecnologia .pdf
taller de tecnologia .pdftaller de tecnologia .pdf
taller de tecnologia .pdfpaulamurillo19
 
Instrucciones basicas c_(2)
Instrucciones basicas c_(2)Instrucciones basicas c_(2)
Instrucciones basicas c_(2)Efren Pacheco
 
Resolución de problemas y algoritmo
Resolución de problemas y algoritmoResolución de problemas y algoritmo
Resolución de problemas y algoritmoNombre Apellidos
 
Estructuras de control c++
Estructuras de control c++Estructuras de control c++
Estructuras de control c++Jesús Navarro
 
Programacion Logica
Programacion LogicaProgramacion Logica
Programacion LogicaNatalia
 
Estructuras condicionales
Estructuras condicionalesEstructuras condicionales
Estructuras condicionalesAndreina Trejo
 
Lenguaje Borland C - Estructuras Secuenciales y No Secuenciales
Lenguaje Borland C - Estructuras Secuenciales y No SecuencialesLenguaje Borland C - Estructuras Secuenciales y No Secuenciales
Lenguaje Borland C - Estructuras Secuenciales y No SecuencialesKarina Arguedas Ruelas
 
Instrucciones basicas-para-c (1)
Instrucciones basicas-para-c (1)Instrucciones basicas-para-c (1)
Instrucciones basicas-para-c (1)luis_ocampo27
 
Programación modular
Programación modularProgramación modular
Programación modularMenfy Morales
 

La actualidad más candente (18)

taller de tecnologia .pdf
taller de tecnologia .pdftaller de tecnologia .pdf
taller de tecnologia .pdf
 
Instrucciones basicas c_(2)
Instrucciones basicas c_(2)Instrucciones basicas c_(2)
Instrucciones basicas c_(2)
 
computacion I
computacion Icomputacion I
computacion I
 
Informe de pseint
Informe de pseintInforme de pseint
Informe de pseint
 
Resolución de problemas y algoritmo
Resolución de problemas y algoritmoResolución de problemas y algoritmo
Resolución de problemas y algoritmo
 
01 algoritmos
01 algoritmos01 algoritmos
01 algoritmos
 
Estructuras de control c++
Estructuras de control c++Estructuras de control c++
Estructuras de control c++
 
Pseudocdigo
PseudocdigoPseudocdigo
Pseudocdigo
 
Programacion Logica
Programacion LogicaProgramacion Logica
Programacion Logica
 
Anexo1
Anexo1Anexo1
Anexo1
 
Estructuras condicionales
Estructuras condicionalesEstructuras condicionales
Estructuras condicionales
 
Lenguaje Borland C - Estructuras Secuenciales y No Secuenciales
Lenguaje Borland C - Estructuras Secuenciales y No SecuencialesLenguaje Borland C - Estructuras Secuenciales y No Secuenciales
Lenguaje Borland C - Estructuras Secuenciales y No Secuenciales
 
manual dfd
manual dfdmanual dfd
manual dfd
 
Diagrama secuencial
Diagrama secuencialDiagrama secuencial
Diagrama secuencial
 
Instrucciones basicas-para-c (1)
Instrucciones basicas-para-c (1)Instrucciones basicas-para-c (1)
Instrucciones basicas-para-c (1)
 
Programación modular
Programación modularProgramación modular
Programación modular
 
Estructuras básicas
Estructuras básicas Estructuras básicas
Estructuras básicas
 
algoritmo
algoritmoalgoritmo
algoritmo
 

Destacado

Algoritmos y diagramas completos1
Algoritmos y diagramas completos1Algoritmos y diagramas completos1
Algoritmos y diagramas completos1Rodrigo Oropeza
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujograchika
 
Hacer un programa que calcule la suma de dos números y su producto
Hacer un programa que calcule la suma de dos números y su productoHacer un programa que calcule la suma de dos números y su producto
Hacer un programa que calcule la suma de dos números y su productoLeobardo Montalvo
 
Reglas Para Diagramas
Reglas Para DiagramasReglas Para Diagramas
Reglas Para Diagramasfrancisco3011
 
Problemas,algoritmos y diagramas de flujo.
Problemas,algoritmos y diagramas de flujo.Problemas,algoritmos y diagramas de flujo.
Problemas,algoritmos y diagramas de flujo.Arturo Perez Murrieta
 
Perimetro y area de poligonos regulares
Perimetro y area de poligonos regularesPerimetro y area de poligonos regulares
Perimetro y area de poligonos regularesFalquezita
 

Destacado (11)

Estructuras iterativas
Estructuras iterativasEstructuras iterativas
Estructuras iterativas
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Diagramas d flujo
Diagramas d flujoDiagramas d flujo
Diagramas d flujo
 
Algoritmos y diagramas completos1
Algoritmos y diagramas completos1Algoritmos y diagramas completos1
Algoritmos y diagramas completos1
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
Diagrama de flujo;3
Diagrama de flujo;3Diagrama de flujo;3
Diagrama de flujo;3
 
Hacer un programa que calcule la suma de dos números y su producto
Hacer un programa que calcule la suma de dos números y su productoHacer un programa que calcule la suma de dos números y su producto
Hacer un programa que calcule la suma de dos números y su producto
 
Reglas Para Diagramas
Reglas Para DiagramasReglas Para Diagramas
Reglas Para Diagramas
 
Algoritmo 1
Algoritmo 1Algoritmo 1
Algoritmo 1
 
Problemas,algoritmos y diagramas de flujo.
Problemas,algoritmos y diagramas de flujo.Problemas,algoritmos y diagramas de flujo.
Problemas,algoritmos y diagramas de flujo.
 
Perimetro y area de poligonos regulares
Perimetro y area de poligonos regularesPerimetro y area de poligonos regulares
Perimetro y area de poligonos regulares
 

Similar a Apuntes programacion basica

GuiaAlgoritmosyProgramacionI.pdf
GuiaAlgoritmosyProgramacionI.pdfGuiaAlgoritmosyProgramacionI.pdf
GuiaAlgoritmosyProgramacionI.pdfDavidOrtega737036
 
Trabajo de jhon piyo
Trabajo de jhon piyoTrabajo de jhon piyo
Trabajo de jhon piyojhonarias
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]Jalil Segura
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]Jalil Segura
 
Fpr Tema 1 www.fresymetal.com
Fpr Tema 1 www.fresymetal.comFpr Tema 1 www.fresymetal.com
Fpr Tema 1 www.fresymetal.comFresyMetal
 
Programación tic
Programación ticProgramación tic
Programación ticlunanogales
 
Presentacion de informatica
Presentacion de informaticaPresentacion de informatica
Presentacion de informaticaEduardo_jose
 
LENGUAJE DE PROGRAMACION C++ INTRODUCCION
LENGUAJE DE PROGRAMACION C++ INTRODUCCIONLENGUAJE DE PROGRAMACION C++ INTRODUCCION
LENGUAJE DE PROGRAMACION C++ INTRODUCCIONSol López
 
Clase 1 de introduccion a la programacion
Clase 1 de introduccion a la programacionClase 1 de introduccion a la programacion
Clase 1 de introduccion a la programacionjoel210696
 
Glosario de conceptos de la creación de los programas
Glosario de conceptos de la creación de los programasGlosario de conceptos de la creación de los programas
Glosario de conceptos de la creación de los programasGabriel Méndez
 
Compiladores y analizador lexicos
Compiladores y analizador lexicosCompiladores y analizador lexicos
Compiladores y analizador lexicosdiana8320
 
Introduccion a la programación I Parte
Introduccion a la programación I Parte Introduccion a la programación I Parte
Introduccion a la programación I Parte Yelixa Araque Angulo
 
Introduccion a la Programación I parte
Introduccion a la Programación I parte Introduccion a la Programación I parte
Introduccion a la Programación I parte Yelixa Araque Angulo
 
Introducción a la Programación
Introducción a la Programación Introducción a la Programación
Introducción a la Programación henser
 

Similar a Apuntes programacion basica (20)

GuiaAlgoritmosyProgramacionI.pdf
GuiaAlgoritmosyProgramacionI.pdfGuiaAlgoritmosyProgramacionI.pdf
GuiaAlgoritmosyProgramacionI.pdf
 
Trabajo de jhon piyo
Trabajo de jhon piyoTrabajo de jhon piyo
Trabajo de jhon piyo
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]
 
Fpr Tema 1 www.fresymetal.com
Fpr Tema 1 www.fresymetal.comFpr Tema 1 www.fresymetal.com
Fpr Tema 1 www.fresymetal.com
 
Programación tic
Programación ticProgramación tic
Programación tic
 
Programación tic
Programación ticProgramación tic
Programación tic
 
Presentacion de informatica
Presentacion de informaticaPresentacion de informatica
Presentacion de informatica
 
Programación.pptx
Programación.pptxProgramación.pptx
Programación.pptx
 
LENGUAJE DE PROGRAMACION C++ INTRODUCCION
LENGUAJE DE PROGRAMACION C++ INTRODUCCIONLENGUAJE DE PROGRAMACION C++ INTRODUCCION
LENGUAJE DE PROGRAMACION C++ INTRODUCCION
 
Clase 1 de introduccion a la programacion
Clase 1 de introduccion a la programacionClase 1 de introduccion a la programacion
Clase 1 de introduccion a la programacion
 
Glosario de conceptos de la creación de los programas
Glosario de conceptos de la creación de los programasGlosario de conceptos de la creación de los programas
Glosario de conceptos de la creación de los programas
 
Proyecto fernando compiladores 1
Proyecto fernando compiladores 1Proyecto fernando compiladores 1
Proyecto fernando compiladores 1
 
Diap 01
Diap 01Diap 01
Diap 01
 
Compiladores y analizador lexicos
Compiladores y analizador lexicosCompiladores y analizador lexicos
Compiladores y analizador lexicos
 
Act26
Act26Act26
Act26
 
Introduccion a la programación I Parte
Introduccion a la programación I Parte Introduccion a la programación I Parte
Introduccion a la programación I Parte
 
Introduccion a la Programación I parte
Introduccion a la Programación I parte Introduccion a la Programación I parte
Introduccion a la Programación I parte
 
Introducción a la Programación
Introducción a la Programación Introducción a la Programación
Introducción a la Programación
 
Lenguajes de desarrollo (programación)
Lenguajes de desarrollo (programación)Lenguajes de desarrollo (programación)
Lenguajes de desarrollo (programación)
 

Más de marigelcontreras

Estructuras de control selectivas
Estructuras de control selectivasEstructuras de control selectivas
Estructuras de control selectivasmarigelcontreras
 
Estructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosEstructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosmarigelcontreras
 
Estructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosEstructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosmarigelcontreras
 
Aplicación de arreglos bidimensionales
Aplicación de arreglos bidimensionalesAplicación de arreglos bidimensionales
Aplicación de arreglos bidimensionalesmarigelcontreras
 

Más de marigelcontreras (6)

Estructuras de control selectivas
Estructuras de control selectivasEstructuras de control selectivas
Estructuras de control selectivas
 
Estructuras iterativas
Estructuras iterativasEstructuras iterativas
Estructuras iterativas
 
Estructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosEstructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestos
 
Estructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosEstructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestos
 
Arreglos unidimensionales
Arreglos unidimensionalesArreglos unidimensionales
Arreglos unidimensionales
 
Aplicación de arreglos bidimensionales
Aplicación de arreglos bidimensionalesAplicación de arreglos bidimensionales
Aplicación de arreglos bidimensionales
 

Apuntes programacion basica

  • 1. UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO FACULTAD DE INGENIERÍA DIVISIÓN DE MATERIAS PROPEDÉUTICAS PROGRAMACIÓN BÁSICA Notas de complementación para el curso INGENIERÍA CIVIL PLAN F2 Créditos: 8 Docentes: M. en I. MARIA DE LOS ÁNGELES CONTRERAS FLORES Mtra. LETICIA PALMA ROSALES
  • 2. 2 ÍNDICE Contenido I.- Introducción II.- Unidad I (Definiciones) …………………………………………………………………………………………………………………………………………………………………………….. 4 III.- Unidad II (Estructuras de control) ……………………………………………………………………………………………………………………………………………………… 19 III.I.- Secuenciación …………………………………………………………………………………………………………………………………………………………………………………………. 19 III.II.- Selección (Simple, compuesta y múltiple) ……………………………………………………………………………………………………………………………………….. 26 III.III.- Iteración ……………………………………………………………………………………………………………………………………………………………………………………………… 43 IV.- Unidad III Vectores y Matrices ………………………………………………………….……………………………………………………………………………………..……….. 55 V.- Unidad IV Funciones (Modularidad) ……………………………………………………………………………………………………………………………………..………………… 76 VI.- Bibliografía …………………………………………………………………………………………………………………………………………………………………………………………….. 87
  • 3. 3 INTRODUCCIÓN El presente trabajo tiene como objetivo apoyar a los alumnos de la materia de programación básica proporcionando los conocimientos básicos en el área de programación, de la misma forma se busca que el alumno refuerce los conocimientos que han sido adquiridos en clase. El contenido del trabajo está dividido en cuatro unidades principales en las cuales se abordan desde los fundamentos teóricos hasta su aplicación en la elaboración de algoritmos para su implementación en los sistemas, la primera unidad define los conceptos básicos de la programación y su correspondiente uso, por otra parte en la segunda unidad se da una descripción general de lo que son las estructuras de control utilizadas al momento de realizar un programa; esta sección cuenta con una serie de ejemplos que hacen que el funcionamiento de estas estructuras sea entendido de una mejor forma, además se dan algunas recomendaciones al querer hacer uso de estas estructuras. En la tercera unidad se aborda el tema de las estructuras estáticas más utilizadas al momento de realizar un programa, su funcionamiento es descrito con el desarrollo ejemplos y recomendaciones útiles. Finalmente en la cuarta unidad se describe de forma general el uso de la programación modular, especificando y detallando el manejo e implementación de cada uno de sus componentes, utilizando para ello un ejemplo que permite esquematizar su funcionamiento.
  • 4. 4 UNIDAD I DEFINICIONES 1.- Algoritmo Es una manera formal y sistemática de representar la descripción de un proceso se caracteriza por hacerlo mediante una serie de pasos. Características de un algoritmo Definido: Todas las acciones deberán estar rigurosamente especificadas por medio de un lenguaje formalmente definido. Finito: Un algoritmo debe de terminar después de una serie de pasos Preciso: siempre debe de tener el mismo orden en la ejecución de cada uno de los pasos Eficiente: Todas las operaciones a ejecutar deberán ser ejecutadas por cualquier persona en cualquier tiempo finito. Tiene entradas: Un algoritmo tiene cero o más entradas que son usadas mediante la ejecución. Tiene salidas: Un algoritmo tiene una o más salidas que son producidas como resultado de su ejecución. 2.- Pseudocódigo Es la descripción del algoritmo realizada en un lenguaje informal es decir un lenguaje que sea neutro (independiente del mecanismo en el que se solucionara el problema) y completo (que cuente con la capacidad de representar cualquier idea).
  • 5. 5 3.- Programa Es la descripción de un algoritmo en un lenguaje de programación, que sea capaz de optimizar cada uno de los pasos del algoritmo para que sea entendido por la computadora. Existen diversos tipos de programas, dependiendo del objetivo y del lenguaje que se utilice para realizar un programa:  Fuente: Es el programa escrito por el programador tomando como base el algoritmo realizado, es el primero que se introduce en la computadora para que realice las instrucciones deseadas, además de ser independiente de la computadora donde lo ingresemos ya que se introduce en un programa “editor”, o IDE.  Objeto: Es el producido desde el programa fuente por medio de un proceso que se denomina compilación, en este proceso cada uno de los pasos (instrucciones) que el programador introduce en el programa fuente son traducidos a operaciones que la computadora interpreta directamente.  Ejecutable (binario): Es el producido mediante el programa objeto que se genera en un proceso llamado “montaje”, este proceso es realizado en un programa montador o linker, en este proceso se realiza una especie de liga que une al programa objeto con código que se encuentra dentro de la biblioteca del sistema (System Library) y que ayuda para la realización de las operaciones que son necesarias para que el programa funcione correctamente algunas de estas funciones son: la lectura del teclado, escritura en la pantalla, la realización de operaciones aritméticas entre otras.  De utilidad: Son programas que son utilizados por cualquier aplicación (programa), son de uso general, algunos ejemplos de estos programas son: compiladores, editores, montadores, etc.
  • 6. 6 4.- Lenguaje de programación Es el lenguaje utilizado por el programador para ingresar las instrucciones a la computadora para la ejecución correcta del algoritmo, y que a su vez genera el código fuente. Existen diversos lenguajes de programación que se clasifican de acuerdo a las instrucciones y gramática que servirá para la codificación del algoritmo. Los lenguajes se clasifican en tres grandes grupos:  Lenguaje maquina: Son los lenguajes entendibles directamente por la computadora, las instrucciones en este lenguaje son expresados en términos de la unidad más pequeña (bit) es decir en ceros y unos, algunos ejemplos de instrucciones de este lenguaje son: 0011 0110 0001 1010 1111 0101 Este lenguaje es muy complicado para entenderse por un programador pero muy fácil para una computadora. Lenguajes de bajo nivel (ensambladores): Son lenguajes generalmente dependientes de la maquina, este tipo de lenguajes simplifica en gran manera la interpretación del lenguaje maquina ya que asocia a cada grupo de bits una instrucción a ser realizada por la computadora estas instrucciones son conocidas como nemónicos o nemotécnicos algunos ejemplos son: ADD (suma), SUB (resta), MPY (multiplicar), etc. Un ejemplo más completo seria:
  • 7. 7 Después que el programa ha sido escrito en un lenguaje ensamblador se necesita de un programa llamado ensamblador que lo traduzca a código máquina. Lenguajes de alto nivel: Son lenguajes en donde las instrucciones son escritas en lenguaje parecido al de los humanos, en general al lenguaje inglés, esto facilita mucho la lectura y escritura de programas. Algunos ejemplos de instrucciones son: IF, ELSE, THEN, WHILE, REPEAT, etc. ADA, BASIC, COBOL, FORTRAN, C, PASCAL entre otros, son ejemplos de algunos de estos lenguajes. En general se puede ver la acción de un programador en la siguiente imagen
  • 8. 8 5.- Sentencia Es la unidad mínima o elemental de un lenguaje e indica una norma procesal, para la forma específica de trato de un elemento en una operación. La precisión de las sentencias determina la precisión de la ejecución del programa y para conseguirla deben ajustarse a una sintaxis muy concreta. En general, las sentencias se clasifican en ejecutables (especifican operaciones de cálculos aritméticos y entrada/salida de datos) y no ejecutables (no realizan acciones concretas, ayudan a la legibilidad del programa, pero no afecta en la ejecución del programa).  Sentencia de entrada.- Es aquella que permite el ingreso de datos, para el caso del lenguaje informal su sintaxis es: lee nombre_variable  Sentencia de salida.- Es aquella que permite mostrar en un dispositivo de salida un mensaje y/o un valor de una variable, para el caso de lenguaje informal su sintaxis es: escribe [“texto”] ó [“texto” , variable] ó [variable , “texto”]  Sentencia de asignación.- Es aquella que permite guardar un valor constante o el resultado de una expresión en un identificador de variable, para el lenguaje informal la sintaxis es: variable ← constante ó expresión (la variable toma el valor de la constante o expresión)  Sentencia de control.- Es aquella que define el flujo de acciones a ser realizadas por el procesador 6.- Identificador El nombre de un elemento dentro de un programa, si el nombre hace referencia a una variable se le conoce como identificador de variable, los identificadores representan los objetos de un programa (constantes, variables, tipos de datos, procedimientos, funciones, unidades, programas, etc.). Un identificador se caracteriza por estas reglas: Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no puede contener espacios en blanco Letras, dígitos y caracteres subrayados ( _ ) están permitidos después del primer carácter
  • 9. 9  No se puede utilizar una palabra reservada Identificadores válidos (ejemplos) nombre letras CONT A_B_C nombre_apellido Identificadores no válidos (ejemplos) Fox&Horas contiene un carácter no válido (&) F Bar contiene un espacio en blanco 7Cont contiene un número al inicio Año contiene un carácter no válido (ñ) único contiene un acento 7.- Constantes y Variables Una constante es un valor que no puede cambiar durante la ejecución del programa, recibe un valor en el momento de la compilación del programa y este valor no puede ser modificado Las variables son objetos de un programa cuyo valor puede cambiar durante la ejecución del programa. El cambio se produce mediante sentencias ejecutables.
  • 10. 10 8.- Contador y Acumulador Contador: Un contador es un variable que se incrementa, cuando se ejecuta, en una unidad o en una unidad constante. Ejemplo: contador ←25 contador ←Contador + 1 (el valor final de contador será 26) Acumulador: Es una variable que se incrementa en una cantidad variable. Ejemplo: suma ←suma + x (si x vale 7 y Suma 40, el nuevo valor de Suma será 47) 9.- Expresiones Se denomina expresión a toda combinación de símbolos, números y signos operatorios. Según la naturaleza de estos signos operatorios las expresiones se clasifican en: algebraicas, relacionales y lógicas. La mayoría de los signos operatorios son binarios esto es requieren de 2 operandos. Las expresiones se evalúan de izquierda a derecha y de acuerdo a la precedencia de los signos operatorios. La precedencia de un signo operatorio es la que indica el orden de realización de cada operación dentro de una expresión.    
  • 12. 12 Signos operatorios lógicos Reglas básicas de precedencia Las expresiones se evalúan de izquierda a derecha 1. Un operando entre dos signos operatorios de diferente precedencia es afectado por el de mayor precedencia 2. Un operando entre dos signos operatorios de igual precedencia es afectado por el que está a la izquierda 3. Las expresiones entre paréntesis son evaluadas antes que cualquier expresión Nota: El valor de precedencia que tiene cada uno de los signos se muestra en los rectángulos que están en la parte izquierda de cada tabla
  • 13. 13 10.- Comentarios La legibilidad de los programas aumenta considerablemente utilizando comentarios. Los comentarios es un texto explicativo, situado en el programa e ignorado por el compilador. Los comentarios no se consideran (son invisibles) en la fase de compilación y ejecución, pero es de gran importancia en la fase de análisis, y mantenimiento. Los comentarios son una parte importante de la documentación de un programa ya que ayuda al programador a entender y comprender el programa. El formato más común para la especificación de un comentario es: /* esto es un comentario*/ 11.- Diagramas de flujo Un diagrama de flujo (flowchart) es una representación grafica del algoritmo y muestra como fluye este de principio a fin. Los símbolos utilizados han sido normalizados por el Instituto Norteamericano de Normalización (ANSI). Símbolos más usados para los diagramas de flujo Para indicar el inicio y fin de un algoritmo Para indicar un proceso (cualquier operación) Para entradas o salidas
  • 14. 14 Para unir un diagrama de flujo en la misma página (primero), o en otra página (segundo). Se les conoce como conectores Llamada a un procedimiento o función Para la toma de decisiones 12.- Metodología de la programación Ciclo de vida del desarrollo de un programa
  • 15. 15 Fase de solución.- En base a los requerimientos de un usuario se crea o se busca un método computacional de solución Inicio.- Todo problema surge debido a las necesidades de un usuario de automatizar procesos que involucran el manejo masivo de información. Planteamiento del problema.- Consiste en plantear formalmente el problema a través de una especificación detallada de las entradas a procesar, las principales funciones de procesamiento a efectuar y las salidas a producir. Definir además las condiciones de excepción que deberán satisfacer las entradas y como serán tratadas dichas excepciones. Desarrollo del algoritmo de solución.- Se deben tener tres aspectos en cuenta:  Obtener un método computacional que permita resolver el problema  Obtener la especificación jerárquica funcional del problema mediante la definición de módulos y refinamientos sucesivos  Obtener las estructuras de datos a utilizar para resolver el problema Pruebas del algoritmo.- Permiten determinar el grado de corrección del algoritmo y verificar la satisfacción de las necesidades del usuario. Fase de Implantación.- Una vez definido el método computacional de solución, se determina el lenguaje de programación a utilizar de acuerdo al mecanismo en el que será resuelto el problema Codificación del algoritmo.- Es la traducción del algoritmo escrito en lenguaje informal a su equivalente en lenguaje de programación. Consiste en capturar la codificación y guardarla en algún medio de almacenamiento de la computadora generándose el programa fuente Pruebas del programa.- Es una actividad computarizada iterativa de revisión sintáctica del programa fuente, que involucra su entrada al compilador y la corrección de errores hasta que el programa sea sintácticamente valido generándose el programa objeto o ejecutable equivalente.
  • 16. 16 Programa en operación.- Consiste en instalar el programa y sus archivos en la institución representada por el usuario que solicitó la aplicación. Retroalimentación.- Una vez evaluado el funcionamiento del programa mediante el cumplimento de objetivos, utilidad, consumo de recursos y oportunidad de servicio el usuario manifiesta nuevas necesidades. 13.- Tipos de datos Cuando se declara una variable se especifica tanto su nombre como el tipo al que pertenece. El nombre sirve para distinguirla de cualquier otra variable y el tipo indica la forma en que debe almacenarse el valor de la variable en la computadora, de la cual dependerá el rango de valores que ésta podrá tomar así como su precisión. Ejemplo de la declaración de una variable: Lenguaje in formal nombre_variable : <tipo de dato> variable1 : entero , variable2 : float , variable3 : char
  • 17. 17 14.- Estructuras de control Las estructuras de control de un lenguaje de programación son métodos de especificar el orden en que las instrucciones de un algoritmo se ejecutarán. El orden de ejecución de las sentencias (lenguaje) o instrucciones determinan el flujo de control. Las estructuras de control básicas son:  Secuenciación  Selección (simple y doble)  Iteración 15.- Programación modular Es uno de los métodos más flexibles y potentes para mejorar la productividad de un programa. En esta programación el programa se divide en módulos, en donde cada uno de ellos se ejecuta una tarea en específico y se programan de forma independiente de otros módulos. Cada programa contiene un módulo llamado programa principal que es el que controla todo lo que sucede, este transfiere el control a los diferentes submódulos para que estos puedan ejecutar sus tareas correspondientes, y habiendo terminado regresar el control al programa principal, puede darse el caso de que un módulo contenga a otro modulo sin embargo cada módulo debe eventualmente devolver al módulo del cual se recibe originalmente el control. Ejemplo de la programación modular (estructura):
  • 18. 18 16.- Programación estructurada La programación estructurada significa escribir un programa de a cuerdo a las siguientes reglas:  El programa tiene un sentido modular  Los módulos son diseñados de modo descendente  Cada modulo se codifica utilizando las tres estructuras de control básicas: secuencia, selección e iteración.
  • 19. 19 UNIDAD II ESTRUCTURAS DE CONTROL 1.- Secuenciación Se refiere a la capacidad de agrupar una secuencia de sentencias básicas formando una estructura compuesta. Esta estructura justifica y garantiza que el flujo de control dentro de los módulos sea de arriba hacia abajo. Sus representaciones son: Diagrama de flujo Pseudocódigo comienza sentencia 1 sentencia 2 … sentencia n termina
  • 20. 20 Ejemplo 1: Calcular el área de un polígono en forma de L c Entradas: Tamaño de cada uno de los lados del polígono Salidas: El área total del polígono Diagrama de flujo
  • 21. 21 Pseudocódigo a,b,c,area1,area2,area3 : entero (int) /* indica que son variables de tipo entero*/ comienza /*se recomienda dejar sangría para tener una mayor legibilidad del programa */ escribe “Dame el valor de a, b y c” lee a,b,c area1← b * c /*en este caso la base es diferente a la altura*/ area2 ←a * a /* en este caso la base es igual a la altura*/ area3 ←area1 + area2 /*El resultado es la suma de las áreas obtenidas y se guarda en la variable area3 */ escribe “El área total es : ”, area3 termina Prueba de escritorio
  • 22. 22 Ejemplo 2.- Elaborara un algoritmo que sume dos números Entradas: Los dos números enteros a y b Salidas: El resultado de la suma de los números introducidos Diagrama de flujo
  • 23. 23 Pseudocódigo a,b,sum: entero (int) comienza escribe “Dame 2 numeros” lee a,b sum ← a+b escribe a , “+” , b , ”=”, sum termina Prueba de escritorio
  • 24. 24 Ejemplo 3.- Escribir el algoritmo que calcule el volumen de una esfera dando un valor para el radio Entradas: El radio de la esfera Salidas: El volumen de la esfera Diagrama de flujo Pseudocódigo r,v : Real (float) comienza escribe “Introduce el valor del radio” lee r v ← 4 / 3 * 3.1416 * r ^ 3 escribe “El volumen de la esfera es : ”, v termina
  • 25. 25 2.- Selección Es la especificación de la transferencia de control hacia una de las 2 localizaciones de una o mas sentencias dependiendo de la veracidad o falsedad de una expresión booleana a). Selección simple: Solo se definen sentencias para cuando la expresión booleana es verdadera, es decir, su falsedad no importa Diagrama de flujo Pseudocódigo comienza si (expresión= Verdad) entonces sentencia 1 sentencia 2 … sentencia n fin si termina
  • 26. 26 Ejemplo 1.- Elaborar un algoritmo que obtenga el promedio de 3 calificaciones y muestre “APROBADO” si el promedio es mayor o igual a 7 Entradas: Calificaciones (3) Salidas: Promedio y la frase APROBADO si el promedio es mayor o igual a 7 Diagrama de flujo
  • 27. 27 Pseudocódigo c1,c2,c3,prom : Real (float) comienza escribe “Introduce las tres calificaciones” lee c1,c2,c3 prom ← (c1+c2+c3) / 3 escribe “Promedio = ”, prom si ( prom >= 7.0 ) entonces escribe “APROBADO” fin si termina Prueba de escritorio
  • 28. 28 Ejemplo 2.- Elaborar un algoritmo que muestre el máximo de dos números dados, es decir, si los números introducidos son: 125 , 158 se muestre en la pantalla el número 158 Entradas: Los dos números introducidos por el usuario Salidas: El mayor de los dos números Diagrama de flujo
  • 29. 29 Pseudocódigo num1, num2, max : Entero (int) comienza escribe “Introduce los dos números” lee num1,num2 max ← num1 si (num2 > max) entonces max ← num2 fin si escribe “El máximo es:”, max termina Prueba de escritorio
  • 30. 30 Ejemplo 3.- Elaborar un algoritmo convierta de °C a °F solo si los °C están entre 0 y 100 Entradas: Los °C introducidos por el usuario Salidas: Su respectivo valor en °F Diagrama de flujo
  • 31. 31 Pseudocódigo grados, gf : Real (float) comienza escribe “Introduce los grados centígrados” lee grados si (grados >= 0 Y grados <=100) entonces gf ← 9/5 * grados +32 escribe “ °F = ”, gf fin si termina Prueba de escritorio
  • 32. 32 b). Selección doble: En este caso se definen sentencias para cuando la expresión booleana es verdadera y también para cuando es falsa Diagrama de flujo Pseudocódigo comienza si (expresión= v) entonces sentencia 1a sentencia 1a sentencia na otro sentencia 1b sentencia 1b sentencia nb finsi termina
  • 33. 33 Ejemplo 1.- Elaborar un algoritmo que obtenga el pago por hora de un trabajador que si es mayor o igual a 40 recibe doble pago por hora. Entradas: Pago por hora, horas trabajadas Salidas: Pago total Diagrama de flujo
  • 34. 34 Pseudocódigo horas, ph, total : Entero(int) comienza escribe “Introduce el total de horas trabajadas y el pago por hora” lee horas, ph si (horas >= 40)entonces total ← (horas * ph)*2 otro total ← horas * ph finsi escribe “El total a pagar es : ” , total termina Prueba de escritorio
  • 35. 35 Ejemplo 2.- Diseñar un algoritmo que valide si la situación de un alumno es: EXCELENTE, REGULAR, MALO, tomando en cuenta la siguiente escala: Excelente > = 8.5 , 7.0 <= Regular < 8.5, Malo <7.0 Entrada: Promedio Salida: Situación del alumno Diagrama de flujo
  • 36. 36 Pseudocódigo promedio : Real (float) comienza escribe “Introduce el promedio” lee promedio si (promedio >= 8.5) entonces escribe “EXCELENTE” otro si (promedio<=7.0) escribe “REGULAR” otro escribe “MALO” finsi finsi termina Prueba de escritorio
  • 37. 37 Ejemplo 3.- Diseñar un algoritmo que determine si un número es mayor menor o igual a 0, si es menor que mande el mensaje de NEGATIVO, si es mayor a cero que escriba POSITIVO, y si es igual a cero que escriba CERO Entradas: Número Salidas: Mensaje POSITIVO NEGATIVO o CERO Diagrama de flujo
  • 38. 38 Pseudocódigo num : Entero(int) comienza escribe “Ingresa un numero” lee num si (num > 0) entonces escribe “POSITIVO” otro si (num < 0) entonces escribe “NEGATIVO” otro escribe “CERO” finsi finsi termina Prueba de escritorio
  • 39. 39 c). Selección múltiple: En este tipo de selección se pueden realizar diferentes tareas dependiendo de la selección que se realiza Diagrama de flujo Pseudocódigo comienza caso (expresion) valor 1: sentencia 1A sentencia 2A sentencia nA valor 2: sentencia 2B sentencia 2B sentencia nB valor n: sentencia 1N sentencia 2N sentencia nN fincaso termina
  • 40. 40 Ejemplo 1.- Diseñe un algoritmo que muestre en pantalla el día de la semana según un número introducido por el usuario (1-7) Entradas: Número introducido por el usuario Salidas: Día de la semana Diagrama de flujo
  • 41. 41 Pseudocódigo numero: Entero(int) comienza escribe “Introduce un numero” lee numero caso (numero) 1: escribe “DOMINGO” 2: escribe “LUNES” 3: escribe “MARTES” 4: escribe “MIERCOLES” 5: escribe “JUEVES” 6: escribe “VIERNES” 7: escribe “SABADO” fincaso termina Prueba de escritorio
  • 42. 42 3.- Iteración Es la especificación de la ejecución de una(s) sentencia(s) en forma repetida dependiendo de la veracidad o falsedad de una expresión booleana I. Mientras (No se ejecuta ninguna sentencia si la expresión no es verdadera) Diagrama de flujo Pseudocódigo comienza mientras (expresión = V) Sentencia 1 Sentencia 2 Sentencia n finmientras termina
  • 43. 43 II. Repite (Por lo menos se ejecuta una vez la sentencia no importando la expresión) Diagrama de flujo Pseudocódigo comienza repite sentencia 1 sentencia 2 sentencia n hasta (expresión = V) termina
  • 44. 44 III. Para Diagrama de flujo Pseudocódigo comienza para ( i ←Vi , Vf , Inc/Dec) sentencia 1 sentencia 2 sentencia n finpara termina Incremento o decremento
  • 45. 45 Ejemplo 1.- Diseñar un algoritmo que valide un número introducido por el usuario, es decir, si es menor a cero o mayor a 7 se le vuelva a pedir el número al usuario, en otro caso despliegue el mensaje de bienvenida Entradas: Número introducido por el usuario Salidas: Mensaje de bienvenida Diagrama de flujo
  • 46. 46 Pseudocódigo num: Entero(int) comienza escribe “Introduce un numero” lee num mientras (num < 0 O num >7) escribe “Solo entre 1 y 7” lee num finmientras escribe “BIENVENIDO” termina Prueba de escritorio Ejemplo 2.- Realizar un algoritmo que sume una serie de números enteros introducidos por el usuario
  • 47. 47 Entradas: Números introducidos por el usuario Salidas: Suma total Diagrama de flujo
  • 48. 48 Pseudocódigo Contador , Suma , Numero , Total : Entero (int) comienza escribe “¿Cuantos números deseas sumar?” lee Total Contador ← 0 Suma ← 0 mientras (Contador < Total) escribe “Introduce el numero ”, Contador+1 lee Numero Suma ← Suma + Numero Contador ← Contador+1 finmientras escribe “La suma es ”, Suma termina Prueba de escritorio
  • 49. 49 Ejemplo 3.- Realice el ejemplo anterior con la estructura de control REPITE Diagrama de flujo
  • 50. 50 Pseudocódigo contador , suma , numero , total : entero (int) comienza escribe “¿cuántos números deseas sumar?” lee total contador ← 0 suma ← 0 repite escribe “introduce el numero”, contador+1 suma ← suma+1 contador ← contador+1 hasta (contador = total) escribe “la suma es:”, suma termina
  • 51. 51 Ejemplo 4.- Realice el ejemplo 2 con la estructura de control PARA Diagrama de flujo
  • 52. 52 Pseudocódigo contador, suma , numero , total : entero (int) comienza escribe “¿cuántos números deseas sumar?” lee total para (contador ← 0, contador < total, 1) /* el numero 1 significa que se incrementa i de uno en uno */ lee numero suma ← suma + numero finpara termina
  • 53. 53 Precauciones al hacer uso de la estructura de control MIENTRAS La condición lógica en un bucle mientras debe tener un valor la primera vez que se evalúa, en caso contrario el programa abortara (se detendrá) al ejecutarse mientras. La condición lógica en un bucle mientras debe ser modificada por una sentencia en el cuerpo del bucle, en caso contrario el bucle es infinito. Es posible que el cuerpo del bucle no se ejecute nunca. Esto sucederá si la condición lógica es falsa la primera vez que se evalúa. Reglas de funcionamiento al hacer uso de la estructura de control REPITE La condición se evalúa al final del bucle después de ejecutarse todas las sentencias. Si la expresión lógica es falsa se vuelve a repetir el bucle y se ejecutan todas las sentencias. Si la expresión lógica es falsa se sale del bucle y se ejecuta la siguiente sentencia después de la instrucción hasta.
  • 54. 54 REGLAS DE SELECCIÓN DE LAS ESTRUCTURAS DE CONTROL 1. Si el número de iteraciones se conoce por adelantado se debe utilizar la estructura de control PARA 2. Si el número de iteraciones es indeterminado y el bucle no se debe ejecutar cuando la condición es falsa la primera vez se debe utilizar MIENTRAS 3. Si el número de iteraciones es indeterminado y el bucle se debe ejecutar siempre al menos una vez se debe utilizar REPITE
  • 55. 55 UNIDAD III VECTORES Y MATRICES En la resolución informática de algoritmos, a veces surge la necesidad de expresar las relaciones que existen entre distintas variables y bien almacenarlas o hacer referencia a ellas. Una estructura de datos es un conjunto de componentes cuya organización se caracteriza por las funciones de acceso que se usan para almacenar y suprimir elementos individuales del grupo. Por ejemplo suponga que se disponen de un ente llamado ladrillo que permite formar una estructura con ellos llamada pared, por lo tanto pared es un conjunto de ladrillos colocados en filas en posición vertical, esta estructura tiene sus propias funciones de acceso: Almacenar: Poner un elemento Eliminar: Quitar un elemento Abstracción de datos Los datos se representan físicamente en memoria de distintas formas, dependiendo en primer lugar del tipo de datos, pero aun tratándose del mismo tipo pueden representarse también con distintos métodos.
  • 56. 56 La abstracción entonces puede definirse como la separación que existe entre la representación interna de los datos y sus funciones de acceso además de las aplicaciones que utilizan estos datos a nivel lógico. Clasificación de las estructuras de datos La estructuras de datos se dividen en dos tipos en función de cómo utilizan la memoria. Estructuras de datos Estáticas Ocupan una cantidad fija de memoria en tiempo de compilación, a este grupo pertenecen todas las estructuras de datos suministradas en C. Estructuras de datos Dinámicas Son aquellas que utilizan una cantidad variable de memoria en función de los requerimientos en tiempo de ejecución, en C no se facilitan estas estructuras sin embargo el lenguaje proporciona las herramientas necesarias para que sean incorporadas por el programador (tipo y funciones para su manipulación). ARRAYS UNIDIMENSIONALES (VECTORES) Un array es una estructura de datos incorporada en C y en la mayoría de los lenguajes de propósito general. Considerando las distintas formas de observar una estructura de datos se analizaran en tres perspectivas. Nivel Lógico Desde el punto de vista abstracto se defina un array unidimensional como una estructura de datos formada por una colección finita de de elementos homogéneos (elementos del mismo tipo), ordenados (indica que hay un primer elemento, segundo elemento, etc), finito (significa que hay un último elemento) que se referencian con un nombre común, esta colección de elementos forma una estructura estática, lo que supone que el tamaño del array deberá ser conocido.
  • 57. 57 Función de acceso: El acceso es directo es decir puede accederse a cualquier elemento sin necesidad de acceder primero a los elementos que lo preceden, el acceso a un elemento en especifico se realiza mediante el nombre del array y un índice que permite especificar cuál es el elemento deseado. SINTAXIS DE LA FUNCIÓN DE ACCESO Nombre_Vector[indice]  Nombre_Vector: Es un identificador que representa la colección de objetos.  índice: Es un valor comprendido entre 0 y n-1 Para referenciar a cada uno de los elementos del vector se usa el operador [ ] escribiendo el nombre del vector seguidos del índice entre los corchetes
  • 58. 58 DECLARACIÓN Tipo Nombre_Vector [tamaño]; Tipo. Tipo de datos de los elementos Ejemplo de declaración int vector_enteros[20]; Se tiene un vector de 20 enteros referidos como vector_enteros[0], vector_enteros[1],.., vector_enteros[20] sabremos la dirección de memoria donde se encuentra cada elemento. Ejemplo # include <stdio.h> main() { int vector[10]; int i ; int suma; for (i=0; i<10; i++) vector[i]=i; for (i=0; i<10; i++) suma=suma+vector[i]; }
  • 59. 59 En este programa se declara un vector de enteros, el primer for rellena cada uno de los 10 elementos con números del 0 al 9 y posteriormente calcula su suma. Se puede definir el tamaño del vector como una constante de substitución simbólica. # include <stdio.h> # define TAM 10; main() { int vector[TAM]; int i int suma; for (i=0; i<TAM; i++) vector[i]=i; for (i=0; i<TAM; i++) suma=suma+vector[i]; } Cuando en una declaración se especifican los valores de los elementos de un vector no es necesario indicar el tamaño del vector entre corchetes float datos [] = {1.0, 2.0, 6.0, 4.0, 3.0}; // datos será un vector de 5 elementos.
  • 60. 60 Sentencias en las que se puede usar un vector:  Entrada: lee datos [i]  Salida: escribe datos [i]  Asignación: datos [i]←116 datos [i]← datos [i+1] numero← datos [i+1]  Control: si(datos datos [i]>=0) entonces EJEMPLOS Elabore un algoritmo que pida un número al usuario y después llene un vector con datos dados por el usuario. Entradas: Tamaño del vector, elementos del vector. Salidas: Ninguna
  • 62. 62 Pseudocódigo comienza entero : tam, i escribe “introduce tamaño del vector” lee tam i ← 1 mientras (i<=tam) escribe “Dame elemento ”, i lee vector[i] i←i+1 finmientras termina Prueba de escritorio
  • 63. 63 Ejemplo 2 .Elabore un algoritmo que sume dos vectores y coloque en el resultado en un 3 vector, se asume que los vectores ya existen y son de tamaño N. se debe mostrar en pantalla la siguiente salida: Vector 1 __ __ __ __ __ Vector 2 __ __ __ __ __ Suma __ __ __ __ __ Entradas: Ninguna Salidas: Vector 1 __ __ __ __ __ Vector 2 __ __ __ __ __ Suma __ __ __ __ __ Diagrama de flujo
  • 64. 64
  • 65. 65 Pseudocódigo comienza i←1 repite SUMA[i]←V1[]+V1[] i←i+1 hasta (i>n) escribe “Vector 1 ” para (i=1,i<=n,1++) escribe V1[i] /*sin cambio de linea*/ finpara /* cambio de linea*/ escribe “Vector 2” para (i=1,i<=n,1++) escribe V2[i] /*sin cambio de linea*/ finpara /*sin cambio de linea*/ escribe “Suma ” para (i=1,i<=n,1++) escribe SUMA[i] /*sin cambio de linea*/ finpara termina
  • 67. 67 Ejemplo 3.- Elabore un algoritmo que ordene los elemento de menor a mayor y muestre el vector ordenado, el vector debe estar inicializado con valores cualesquiera. Entradas: Ninguna Salidas: Vector ordenado Diagrama de flujo
  • 68. 68 Pseudocódigo i, j, N, aux : entero (int) comienza /*iniciaizacion del vector*/ vec [] = {6,4,2,1,8} para (i←1, i<N, i++) para (j←i+1, j<=N, j++) si (vec[i]>=vec[j]) entonces aux ← vec[i] vec[i]← vec[j] vec[j]←aux finsi finpara finpara escribe “Vector ordenado ” para (k←1, k<N, k++) escribe vec[k] finpara termina Prueba de escritorio
  • 69. 69 ARRAYS BIDIMENSIONALES (MATRICES) Un arreglo bidimensional es una estructura natural para almacenar la información que se puede representar de manera lógica como una matriz, visualizándose de forma abstracta como una rejilla con filas y columnas, de manera que cada elemento se referencía por el numero de fila y columna donde se encuentra. Un arreglo bidimensional tiene dos dimensiones y es un caso particular de los arreglos multidimensionales. En C#, las dimensiones se manejan por medio de un par de corchetes, dentro de los que se escriben, separados por comas, los valores de las dos dimensiones.
  • 70. 70 Operaciones. Para manejar un arreglo, las operaciones a efectuarse son:  Declaración del arreglo,  Creación del arreglo,  Inicialización de de los elementos del arreglo, y  Acceso a los elementos del arreglo. Función de Acceso El mecanismo para acceder a un determinado componente es directo es decir, no hay necesidad de visitar a los elementos que lo preceden. Cada elemento esta ordenado en dos dimensiones por lo tanto el acceso se realiza mediante el nombre del array y usando un par de índices que indican que el elemento de la colección se desea acceder, el primer índice referencia la posición del elemento en la primera dimensión llamada fila y el segundo indica la posición del elemento en la segunda dimensión llamada columna. Representación grafica
  • 71. 71 Sintaxis de la función de acceso Nombre _Matriz [indice1][indice2] Nombre _Matriz: Es un indicador que representa el nombre asociado a la colección de elementos de la estructura. indice1: Es un valor comprendido entre 0 y n-1 siendo n el numero de filas de la estructura indice2: Es un valor comprendido entre 0 y n-1 siendo n el numero de columnas de la estructura Así bien el número de elementos vendrá dado por el producto de filas por columnas. Ejemplo MaxMin [15][1]=10 /*MaxMin es el nombre de la colección, 15 y 1 es la referencia al elemento 16 de la 2º columna del array para almacenar el entero 10*/ lee MaxMin [15][1] /*Se almacena en el elemento 16 el valor leído por el teclado*/ var = MaxMin [15][1] /*Asignar el valor del elemento 15,1 de la estructura a la variable var*/ Declaración En pseudocódigo se agrega a la lista de variables el tipo, nombre y tamaño del array según el siguiente formato. tipo Nombre_Matriz [filas][columnas] tipo Nombre_Matriz [filas][columnas]={lista de elementos}
  • 72. 72 tipo: Puede ser cualquier tipo de datos básico o definidos por el usuario nombre_Matriz: Identificador que hace referencia a la estructura matriz filas: Cantidad de filas de la colección columnas: Cantidad de columnas de la colección lista de elementos: Elementos que contendrá la matriz , cara valor deberá estar separado por una coma. Recorrido un arreglo bidimensional El recorrido se hace principalmente para leer, escribir, inicializar o procesar todos los elementos del array, el recorrido se puede hacer por filas o columnas, el hecho de hacer el recorrido de una u otra forma no influye en el proceso que en ese momento se realiza con los elementos. Pseudocódigo para (i←0 mientras i<filas, i++) /*i es el índice de filas*/ para (j←0 mientras j<columnas, i++) /*i es el índice de columnas*/ lee matriz[i][j] finpara finpara
  • 73. 73 para (i←0 mientras i<columnas, i++) /*i es el índice de filas*/ para (j←0 mientras j<filas, i++) /*i es el índice de columnas*/ lee matriz[i][j] finpara finpara *Usando ambas formas de recorrido se ha accedido para su proceso al mismo elemento* Ejemplo 1.- Dadas las matrices A y B elabore un programa que calcule la suma de ambas matrices y al final muestre en pantalla las matrices A y B y la suma de ambas, el programa deberá seguir el siguiente formato: Matriz A 8 9 5 6 3 2 Matriz B 7 1 4 5 0 3 Matriz Resultante 15 10 9 11 3 2 Entradas: Elementos de la matriz A y B Salida: Elementos de la matriz A, B y Matriz resultante
  • 74. 74 Pseudocódigo comienza i,j, col, ren: enteros (int) /*en esta parte se ingresan lso datos de la matriz a*/ /*limpia pantalla*/ para (i←0,i<ren, i++) para (j←0,j<col, j++) escribe “dame elemento”, i ,”,”,j lee matrizA[i][j] /*se lee dato del teclado y se almacena en la posición i,j*/ finpara finpara /* en esta parte se ingresan los datos de la matriz b*/ /*limpia pantalla*/ para (i←0,i<ren, i++) para (j←0,j<col, j++) escribe “dame elemento”, i ,”,”,j lee matrizB[i][j] finpara finpara /* calcular la suma entre a y b y guardarlo en la matriz r*/ para (i←0,i<ren, i++) para (j←0,j<col, j++) matrizR[i][j] ← matrizA[i][j] + matrizB[i][j] finpara finpara
  • 75. 75 /*mostrar en pantalla el contenido de las 3 matrices*/ escribe “matriz a” para (i←0,i<ren, i++) para (j←0,j<col, j++) escribe matriza[i][j] finpara /*Cambio de linea*/ finpara escribe “Matriz B” para (i←0,i<ren, i++) para (j←0,j<col, j++) escribe matrizb[i][j] finpara /*Cambio de linea*/ finpara escribe “Matriz Resultante” para (i←0,i<ren, i++) para (j←0,j<col, j++) escribe matrizari][j] finpara /*Cambio de linea*/ finpara termina
  • 76. 76 UNIDAD IV MODULARIDAD Diseño modular El diseño modular es una metodología del desarrollo de programas que surge de la necesidad de abordar un problema complejo dividiéndolo en otros más sencillos, que se pueden llamar subproblemas, consiguiendo así comprender y abordar mejor el problema completo , de esta forma después de resolver todos los problemas se obtiene la solución del problema global. Módulos. Diagramas Jerárquicos Consiste en comenzar dividiendo el problema en un conjunto de subproblemas, a continuación se dividen estos en otros más sencillos y así sucesivamente, de esta forma se crea una estructura jerárquica de problemas y subproblemas llamados módulos funcionales, la representación grafica se muestra a continuación. Diagrama de estructura de módulos
  • 77. 77 Ventajas de la programación modular.  Facilita que la resolución del problema la lleven a cabo diferentes programadores, gracias a la división del problema en distintos módulos.  Eleva el grado de legibilidad de los algoritmos  Favorece el mantenimiento y modificación de los módulos ya diseñados, en consecuencia de los programas. ¿Cómo dividir un programa en módulos? Se afronta la división de la misma forma en que se afronta la resolución de grandes problemas en la vida cotidiana.  Pasar un tiempo pensando en el problema globalmente  Escribir los pasos principales, especificando tanto la estructura principal del programa como los módulos que requiera.  Examinar cada uno de los pasos anteriores completando los detalles.  Si no se sabe realizar una determinada tarea, se da un nombre y se pasa a la realización de la tarea siguiente, teniendo en cuenta que habrá que ocuparse de ella más adelante para resolverla  El proceso continua tantas veces como sea necesario, hasta completar el diseño. Conceptos básicos de la programación modular Variable global: Es aquella variable cuyo valor puede ser usado o modificado en el programa principal y en cualquier módulo. Variable local: Su valor solo puede usado o modificado sólo dentro del módulo en que se declara. Argumento formal Representan la forma en que se comunican el subprograma y el módulo que los llama, los parámetros formales son variables.
  • 78. 78 Aparecen declarados en la cabecera del subprograma entre los paréntesis que siguen al nombre y son fijos para cada programa. Ejemplo: /* num es la variable de enlace del subprograma suma y se comporta como variable local del subprograma*/ suma (num) comienza … fin Argumento actual Son variables enviadas en cada llamada a un subprograma desde el programa o subprograma que los llama Estos parámetros aparecen listados (escritos) en la llamada a un subprograma. Ejemplo /*El programa principal llama a un subprograma*/ PROGRAMA PRINCIPAL inicio … sum (num) … fin /*subprograma que llama a otro subprograma*/ /* llamada al subprograma potencia donde base y 3 son los parámetros actuales*/ modulo_m (…) inicio … potencia(base,3) … Fin
  • 79. 79 Paso de parámetros por valor y por referencia Paso por valor Se utiliza para suministrar datos de entrada a un subprograma desde el programa principal o subprograma que lo llama de modo que el valor del parámetro actual se copie en el parámetro formal correspondiente. El programa al que se le pasa un parámetro por valor trabaja con una copia de este por lo tanto el parámetro real no podrá ser modificado por el subprograma, si el parámetro modifica el parámetro pasado se cambiara tan solo la copia pero no el parámetro real de la llamada. Paso por referencia Se usa indistintamente para suministrar datos de entrada y recibir datos de salida. El programa principal manda al subprograma la referencia en memoria del parámetro actual al correspondiente parámetro formal. El subprograma que utiliza la variable pasada por referencia lo hace como si fuese propiamente suya por lo tanto puede modificarla a conveniencia. Cuando un parámetro es pasado por referencia se debe especificar en el programa o subprograma que este parámetro será pasado de esta forma (ref).
  • 80. 80 FUNCIONES Y PROCEDIMIENTOS Según el valor de retorno los subprogramas se pueden dividir en PROCEDIMIENTOS Y FUNCIONES Un Procedimiento no tiene valor asociado al nombre o lo que es lo mismo no devuelve ningún valor al programa o subprograma que lo llama. Una función tiene un valor asociado a su nombre es decir devuelven un valor al programa que lo llama. Para hacer uso de una función es se requieren de dos cosas  Definir a la función  Llamar a la función DECLARACION tipo Nombre_Funcion(tipos _datos_parametros) Nombre_Funcion: Identificador que referencia a la función. tipo: Es el tipo de valor que devuelve la función y que puede ser cualquier tipo de datos básico definidos por el usuario. tipos_datos_parametros: Son los tipos de datos de los parámetros formales, si hay más de uno se separan con comas indicando el tipo de dato de cada uno.
  • 81. 81 Modalidades de una función. 1.- Función que No regresa un valor y No tiene argumentos, la forma para llamar a este tipo de función es: Nombre_Funcion( ) 2.-Función que No regresa un valor y Si tiene argumentos, la forma general de llamar a la función de este modo es: Nombre_Funcion (var1 var2,…, varN) 3.- Función que Si regresa un valor y No tiene argumentos, la forma de llamada es: Variable1← Nombre_Funcion() 4.- Función que Si regresa un valor y Si tiene argumentos Variable1← Nombre_Funcion(var2 , var3,.., var4)
  • 82. 82 DISEÑO DEL ALGORITMO Programa principal generalizado: Dará una visión clara de la estructura general del programa, si es iterativo, si contiene distintas opciones, si estas también son iterativas, etc. El pseudocódigo generalizado incluye básicamente las llamadas a los módulos de primer nivel. Forma general de un programa modular ENTORNO constantes variables /*declaración de las funciones*/ funciones tipoa nombre_funcion(lista tipos) /*programa principal*/ comienza ....……..… /*declaracion de variables locales del programa principal*/ tipoA var var ← nombre _funcion(lista_parametros_actuales) …………… Termina
  • 83. 83 DECLARACIONES DE SUBPROGRAMAS /*cabecera del subprograma función*/ nombre_funcion(lista_declaracion_parametros_formales) comienza /*declaración de variables u objetos locales*/ tipoA nombre_variable regresa (nombre_variable) /*valor devuelto al programa principal*/ termina Ejemplo *Función que no regresa un valor y no tiene parámetros Elabore un algoritmo que sume dos números y tenga una función que muestre en pantalla el resultado. Entradas: primer número (num1), segundo número (num2). Salida: num1, num2, suma. Pseudocódigo comienza num2,num2 , suma : enteros (int) presenta() /*llamada al subprograma*/ escribe ”introduce dos numeros” lee num 1, num2 suma← num1+num2 escribe num1, ”+”, num2, ”=”, suma termina
  • 84. 84 funcion presenta() /* encabezado de la función o subprograma*/ comienza escribe”**programa que suma dos números**” termina *Función que no regresa un valor y no tiene parámetros Elaborar un algoritmo que tenga una función que muestre el resultado y que utilice la función de presentación anterior. comienza num1,num2 , suma : enteros (int) presenta() escribe ”introduce dos numeros” lee num 1, num2 suma← num1+num2 muestra (num1,num2,suma) /*llamada al subprograma*/ termina funcion muestra(a,b,c: enteros) /* encabezado de la función o subprograma*/ comienza escribe a, ”+”, b, ”=”, c termina
  • 85. 85 *Función que si regresa un valor y no tiene parámetros Elaborar una función para leer el numero y regresar el numero leído, utilizar las funciones hechas anteriormente comienza num1,num2 , suma : enteros (int) presenta() num1← lee_dato( ) /*llamada al subprograma*/ num2← lee_dato ( ) suma← num1+num2 muestra (num1,num2,suma) termina entero lee_dato( ) /* encabezado de la función o subprograma*/ comienza escribe “Introduce numero” lee num regresa(num) /*regresa el valor leído*/ termina
  • 86. 86 *Función que si regresa un valor y si tiene parámetros Elabore una función que reciba los números leídos y regrese la suma de estos comienza num1,num2 , suma : enteros (int) presenta() num1← lee_dato( ) num2← lee_dato ( ) suma← sumar_numeros(num1,num2) /*llamada al subprograma*/ muestra (num1,num2,suma) termina entero sumar_numeros ( a,b: enteros) /*encabezado de la función o subprograma*/ comienza c: entero (int) c←a+b regresa(c) /*regresa el resultado de la suma entre a y b*/ termina
  • 87. 87 BIBLIOGRAFÍA  1. Cairó Battistuti O. (2006), Fundamentos de Programación, Piensa en C. 1ª. Edición. Pearson. 2. Corona Nakamura A. y Ancona Valdez María de los Ángeles. (2011), Diseño de Algoritmos y su Codificación en Lenguaje C. 1ª. Edición. México. McGrawHill. 3. Criado, Ma.A . (2006). Programación en lenguajes estructurados. RaMa: Madrid España 4. Gallego, I. y Medina, M. (2000). Algorítmica y programación para ingenieros. Edición UPC. 5. Joyánes Aguilar L. y Zahonero Martínez I. (2003), Programación Orientada a Objetos. 2ª. Edición. Madrid. McGrawHill. 6. Joyánes Aguilar L. y Zahonero Martínez I. (2010), Programación en C, C++, Java y UML. 1ª. Edición. México. McGrawHill. 7. Joyánes, Aguilar L. (1993). Programación en turbo Pascal. 2ª. Edición. MacGraw-Hill.