Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Generalidades de la materia
Hola, esta asignatura aporta al perfil del Ingeniero la capacidad para desarrollar
aplicaciones de software de baja complejidad, sensibilidad y conocimientos básicos
para hacer uso
eficiente de las herramientas de programación de alto nivel.
Es una materia que se enfoca en profundizar los conceptos de algorítmica y procesos
de tal forma que la programación se constituya en una herramienta transversal en el
quehacer del futuro Ingeniero.
En esta Unidad podrás encontrar, a nivel de recursos, el Plan Global de la Materia que
te permitirá tener una visión general de lo que veremos este semestre en la materia.
Te sugiero descargar el archivo y tenerlo siempre presente.
Debo aclarar que el espacio oficial para el registro de Notas es el SIAA por lo que en
esta plataforma solo trabajaremos el contenido de la materia y no así la evaluación.
I. Datos Generales
Sigla y Código: SIS-111 Nivel 1er Semestre 5 hrs./Semana, en tres sesiones
1
II. Justificación
Vivimos en un mundo digitalizado, computarizado, programable y para poder entender esa realidad
necesitamos la ciencia de la computación. El ingeniero que usa un computador para diseñar soluciones
debe entender cómo operan estos sistemas.
Aquellas empresas que tomen la decisión de conformar un equipo de desarrollo de software interno a la
organización, requieren ingenieros capaces de abstraer las soluciones a sus problemas en términos de
manejo y organización de información; de esta manera, son capaces de analizar, diseñar, implementar y
personalizar sus soluciones aplicando paradigmas de programación y adecuando las mismas a los planes
estratégicos de desarrollo.
Los estudiantes de ingeniera aprenden razonamiento lógico, pensamiento algorítmico y solución de
problemas, además toman conciencia de los recursos requeridos para implementar y desplegar una
solución, aprenden a manejar las restricciones impuestas por el mundo real. Estas habilidades pueden
aplicarse en muchos contextos, desde ciencia e ingeniería hasta humanidades y negocios.
III. Competencias previas
2
Cuadro No. 1
Competencia, elementos, saberes de aprendizaje y unidades
3
VI. Planificación didáctica
Cuadro No. 2
Planificación didáctica
Entorno de
Estrategias didácticas, técnicas y aprendizaje y Evidencias
Elementos de competencia Duración Recursos
actividades Alianzas Estratégicas Esperadas
Elaborar algoritmos estructurados que Aprendizaje Basado en Problemas ABP Práctica con
problemas para
permitan sistematizar un procedimiento 25 horas Pizarra Aula
Prácticas individuales y grupales elaborar las
correcto de solución. donde se diseñan algoritmos académicas soluciones utilizando
algoritmos de tipo
Exposición magistral y dialogada Papel y lápiz grupal y/o individual
Solución de
Juegos virtuales que permiten ejercicios propuestos
entender la lógica de programación PC e internet durante la clase
Prueba individual
escrita.
Codificar algoritmos en un lenguaje de Aprendizaje Basado en Mini Proyectos Laboratorio Práctica con
Programación problemas para
75 horas PC e internet implementar las
Desarrollo de tutoriales en laboratorio
académicas Empresas de soluciones en un
lenguaje de
Asignación de prácticas y mini Cañón de desarrollo de software programación del
proyectos tipo grupal y/o
proyección
individual
Solución de
Pizarra ejercicios propuestos
durante la clase
Prueba individual
Papel y lápiz escrita.
3
Fundamentación metodológica de la planificación didáctica
La clase trata de seguir la teoría CONSTRUCTIVISTA, ya que permite al alumno construir sus propios procedimientos para resolver
varias situaciones problemáticas, lo cual implica que las ideas se modifiquen y se siga aprendiendo de manera activa sobre estructuras
mentales previas.
El aprendizaje basado en problemas trata de que el alumno se sienta motivado y desarrolle habilidades de razonamiento perdurables,
mediante la implementación de algoritmos en la solución de varios problemas durante todo el semestre.
El aprendizaje basado en mini proyectos da muy buenos resultados en cuanto a la motivación y a la resolución de problemas de
mediana envergadura.
4
VII. Planificación de la Evaluación del aprendizaje
A continuación, el plan de evaluación del aprendizaje que se realizará en la asignatura.
Cuadro Nº 3
Plan de evaluación
Técnicas
Elementos de Criterios de Momento de Instrumento y
Cronograma Puntaje
competencia desempeño Evaluación tipo de
Evaluación
Sigue instrucciones
simples
Diagnóstica Dinámicas Primera semana -
Comprende lo que Primera semana grupales
lee
Juegos en PC
Identifica Portafolio de Cada clase en dos 16
correctamente
evidencias presentaciones (8,8)
Entradas y Salidas
Elaborar de un algoritmo (validada por la
algoritmos asistencia a
Emplea las
estructurados que estructuras clases)
condicionales y
permitan Pruebas 3 pruebas 54
ciclos al elaborar
sistematizar un algoritmos Formativa (10 16, 28)
procedimiento Durante todo el
Emplea en C los Mini Proyecto 1 mini Proyectos en 20
correcto de tipos de datos y semestre
estructuras de dos presentaciones
solución.
programación más (10,10)
adecuados a la
resolución de un Análisis de 1 presentación 10
problema. Artículos
Divide y reutiliza
Codificar
mediante funciones
algoritmos en un
lenguaje de Adquirió la
programación Final
competencia de la Prueba 1 prueba 100
Fin del semestre
asignatura
10 10 8 16 10 28 10 8
5
VIII. Bibliografía
Obligatoria
JOYANES AGUILAR, Luis,
Algoritmos y Estructuras de datos
Editorial: McGraw-Hill 2002
JOYANES AGUILAR, Luis
Programación en C
Editorial: McGraw-Hill 2002
Opcional
6
IX. Anexos
Los instrumentos de evaluación concerniente a la evaluación diagnóstica, formativa y final se
encuentran detallados a continuación.
Mini Proyectos: Se presenta un problema que requiere de las habilidades y competencias de
la asignatura para su resolución, los alumnos presentan varias propuestas, se analiza y se
ven las ventajas y desventajas de cada posible solución. Finalmente se trabaja en equipos
para obtener un producto final.
Prueba: Permite verificar al docente que el alumno está incorporando los elementos de
competencia durante el semestre
Desarrollo de tutoriales en laboratorio: Esta técnica permite al docente que todos los
estudiantes tengan acceso a guías detalladas para resolver los problemas que se presentan
en laboratorio.
Asignación de prácticas: Permite que el alumno resuelva problemas o que investigue,
dependiendo del caso se puede trabajar en grupo o no, la clase siguiente se elige al azar a uno
o más alumnos para explicar lo que aprendieron o para mostrar las soluciones encontradas.
Prueba diagnóstica
1. Presentaciones
Aquí están tus últimas respuestas:
2. Pregunta 1
Si Ángela habla más bajo que Rosa y Celia habla más alto que Rosa, ¿habla Ángela más
alto o más bajo que Celia?
Respuesta: Más bajo
Respuesta correcta: Más bajo
Puntuación: 1 de cada 1 Sí
3. Pregunta 2
Son los datos iniciales que posee un algoritmo
Respuesta: Entradas
Respuesta correcta: Entradas
Puntuación: 1 de cada 1 Sí
4. Pregunta 3
Es una declaración clara y concisa que describe los síntomas del problema que se
desea abordar.
7
Respuesta: Planteamiento
Respuesta correcta: Planteamiento
Puntuación: 1 de cada 1 Sí
5. Pregunta 4
Son algunas de las características de un algoritmo.
Respuesta: Entrada, Proceso, Salida
Respuesta correcta: Validez, Eficiencia, Óptimo
Puntuación: 0 de cada 1 No
6. Pregunta 5
Es un conjunto ordenado y finito de operaciones que permite encontrar la solución de
un problema.
Respuesta: Algoritmo
Respuesta correcta: Algoritmo
Puntuación: 1 de cada 1 Sí
7. Pregunta 6
Es la fase en la cuál se determina exactamente el problema que se quiere resolver.
Respuesta: Pruebas
Respuesta correcta: Análisis
Puntuación: 0 de cada 1 No
8. Pregunta 7
Es una situación que se debe resolver para llegar a una solución.
Respuesta: Análisis
Respuesta correcta: Problema
Puntuación: 0 de cada 1
Unidad 1
9. Conceptos generales
Algunas definiciones importantes
Algorítmica o Algorítmia
8
La algorítmica estudia los algoritmos, sus propiedades y su eficiencia. La algorítmica tiene como objetivo
el desarrollo de métodos y técnicas para el diseño de algoritmos y estructuras de datos (EDs) eficientes y
su análisis, así como el desarrollo de algoritmos y EDs que resuelvan problemas concretos.
Algoritmo
En matemáticas, lógica, ciencias de la computación y disciplinas relacionadas, un algoritmo es un
conjunto de instrucciones o reglas definidas y no-ambiguas, ordenadas y finitas que permite, típicamente,
solucionar un problema, realizar un cómputo, procesar datos y llevar a cabo otras tareas o actividades. ?
Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene
una solución. Los algoritmos son el objeto de estudio de la algoritmia.
Medios de expresión de un algoritmo
Los algoritmos pueden ser expresados de muchas maneras, entre estas están:
• lenguaje natural,
• pseudocódigo,
• diagramas de flujo y
• lenguajes de programación entre otros.
Programación estructurada
Surgió en la década de 1960, particularmente del trabajo Böhm y Jacopini, y una famosa carta, La
sentencia goto considerada perjudicial, de Edsger Dijkstra en 1968 y fue reforzado teóricamente por
el teorema del programa estructurado, y prácticamente por la aparición de lenguajes de programación
con adecuadas y ricas estructuras de control.
Es comúnmente utilizado por los programadores para omitir secciones de Código o para dar una
explicación del paradigma que tomó el mismo programador para hacer sus códigos, esto quiere decir
que el pseudocódigo no es programable sino facilita la programación.
Caja Negra
9
10. Programación Estructurada
Definición de Programación Estructurada
Es una técnica en la cual la estructura de un programa, la escritura de sus partes se realiza tan claramente
como es posible mediante el uso de tres estructuras lógicas de control:
• Secuencia: Sucesión simple de dos o más operaciones.
• Selección: División condicional de una o más operaciones.
• Interacción: Repetición de una operación mientras se cumple una condición.
Estos tres tipos de estructuras lógicas de control pueden ser combinados para producir programas que
manejen cualquier tarea de procesamiento de información.
Un programa estructurado esta compuesto de segmentos, los cuales puedan estar constituidos por unas
pocas instrucciones o por una pagina o más de codificación. Cada segmento tiene solamente una entrada
y una salida, estos segmentos, asumiendo que no poseen lazos infinitos y no tienen instrucciones que
jamás se ejecuten, se denominan programas propios. Cuando varios programas propios se combinan
utilizando las tres estructuras básicas de control mencionadas anteriormente, el resultado es también un
programa propio.
La Programación Estructurada esta basada en el Teorema de la Estructura*, el cual establece que
cualquier programa propio (un programa con una entrada y una salida exclusivamente) es equivalente a
un programa que contiene solamente las estructuras lógicas mencionadas anteriormente.
Una característica importante en un programa estructurado es que puede ser leído en secuencia, desde
el comienzo hasta el final sin perder la continuidad de la tarea que cumple el programa, lo contrario de lo
que ocurre con otros estilos de programación.
Esto es importante debido a que, es mucho más fácil comprender completamente el trabajo que realiza
una función determinada, si todas las instrucciones que influyen en su acción están físicamente cerca y
encerradas por un bloque. La facilidad de lectura, de comienzo a fin, es una consecuencia de utilizar
solamente tres estructuras de control y de eliminar la instrucción de desvío de flujo de control, excepto en
circunstancias muy especiales tales como la simulación de una estructura lógica de control en un lenguaje
de programación que no la posea.
VENTAJAS POTENCIALES
Un programa escrito de acuerdo a estos principios no solamente tendrá una estructura, sino también una
excelente presentación.
Un programa escrito de esta forma tiende a ser mucho más fácil de comprender que programas escritos
en otros estilos.
La facilidad de comprensión del contenido de un programa puede facilitar el chequeo de la codificación y
reducir el tiempo de prueba y depuración de programas. Esto ultimo es cierto parcialmente, debido a que
la programación estructurada concentra los errores en uno de los factores más generador de fallas en
programación: la lógica.
Un programa que es fácil para leer y el cual esta compuesto de segmentos bien definidos tiende a ser
simple, rápido y menos expuesto a mantenimiento. Estos beneficios derivan en parte del hecho que,
aunque el programa tenga una extensión significativa, en documentación tiende siempre a estar al día,
esto no suele suceder con los métodos convencionales de programación.
La programación estructurada ofrece estos beneficios, pero no se la debe considerar como una panacea
ya que el desarrollo de programas es, principalmente, una tarea de dedicación, esfuerzo y creatividad.
TEOREMA DE LA ESTRUCTURA
El teorema de la estructura establece que un programa propio puede ser escrito utilizando solamente las
siguientes estructuras lógicas de control: secuencia, selección e iteración.
10
Un programa de define como propio si cumple con los dos requerimientos siguientes:
• Tiene exactamente una entrada y una salida para control del programa.
• Existen caminos seguibles desde la entrada hasta la salida que conducen por cada parte
del programa, es decir, no existen lazos infinitos ni instrucciones que no se ejecutan.
VENTAJAS DE LA PROGRAMACIÓN ESTRUCTURADA:
Con la programación estructurada elaborar programas de computador sigue siendo un albor que demanda
esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este nuevo estilo podemos obtener las
siguientes ventajas:
1. Los programas son más fáciles de entender. Un programa estructurado puede ser leído
en secuencia, de arriba hacia abajo, sin necesidad de estar saltando de un sitio a otro en la lógica,
lo cual es típico de otros estilos de programación. La estructura del programa es más clara puesto
que las instrucciones están más relacionadas entre sí, por lo que es más fácil comprender lo que
hace cada función.
2. Reducción del esfuerzo en las pruebas. El programa se puede tener listo para producción
normal en un tiempo menor del tradicional; por otro lado, el seguimiento de las fallas("debugging")
se facilita debido a la lógica más visible, de tal forma que los errores se pueden detectar y corregir
mas fácilmente.
3. Programas más sencillos y más rápidos.
4. Aumento de la productividad del programador.
5. Se facilita la utilización de las otras técnicas para el mejoramiento de la productividad en
programación.
6. Los programas quedan mejor documentados internamente.
DEFINICIÓN DE SISTEMA
Un sistema informático es un conjunto de partes que funcionan relacionándose entre sí con un objetivo
preciso. Sus partes son: hardware, software y las personas que lo usan. Por ejemplo, una computadora,
sus dispositivos periféricos y la persona que la maneja, pueden constituir un sistema informático. Un
sistema informático puede formar parte de un sistema de información; en este último la información, uso y
acceso a la misma, no necesariamente está informatizada. Por ejemplo, el sistema de archivo de libros de
una biblioteca y su actividad en general es un sistema de información. Si dentro del sistema de información
hay computadoras que ayudan en la tarea de organizar la biblioteca, estonces ese es un sistema
informático. Diferencia entre sistema informático y sistema de información * En un sistema informático
se utilizan computadoras para almacenar, procesar y/o acceder a información. * En un sistema de
información se pueden utilizar computadoras, pero no es necesario. El acceso a la información puede ser
físico (por ejemplo, una persona se encarga de buscar en un archivador). * Tanto el sistema informático
como el sistema de información, incluyen a las personas que acceden o producen información dentro del
sistema. Las personas tienen que capacitarse para entender el funcionamiento y procedimientos que
soporta sistema. * Ambos sistemas tienen un propósito. Por ejemplo, gestionar el acceso y distribución de
libros una biblioteca, administrar la entrada/salida de mercadería, personal y otros recursos de un
comercio, etc.
1. PSEUDOCÓDIGO
Introducción
La importancia de sistematizar procesos y crear programas de cómputo radica esencialmente en que
estos se puedan utilizar como resolución de problemas similares en muchos casos, dicho de otra forma:
la resolución del problema por medio de un programa informático debe funcionar para el uso de distintas
variables y en diferentes lenguajes de cómputo. Esa es principalmente la función de un pseudocódigo.
La resolución de problemas es una tarea únicamente humana comprobable en todos los casos con los
mismos resultados.
Definición
11
El pseudocódigo (o falso lenguaje) es comúnmente utilizado por los programadores para omitir secciones
de código o para dar una explicación del paradigma que tomó el mismo programador para hacer sus
códigos, esto quiere decir que el pseudocódigo no es programable sino facilita la programación.
El principal objetivo del pseudocódigo es el de representar la solución a un algoritmo de la forma más
detallada posible, y a su vez lo más parecida posible al lenguaje que posteriormente se utilizará para la
codificación del mismo
El pseudocódigo utiliza para representar las acciones sucesivas palabras reservadas al lenguaje natural
del idioma de desarrollo (similares a sus homónimos en los lenguajes de programación), tales como
inicio, fin, mientras, si, ….etc.
Es un lenguaje de especificación de algoritmos. El uso de tal lenguaje hace el paso de codificación final
(esto es, la traducción a un lenguaje de programación) relativamente fácil.
El pseudocódigo nació como un lenguaje similar al inglés (y luego adaptada al lenguaje de quien lo
desarrolla) y era un medio representar básicamente las estructuras de control de programación
estructurada. Se considera un primer borrador, dado que el pseudocódigo tiene que traducirse
posteriormente a un lenguaje de programación. Cabe señalar que el pseudocódigo no puede ser
ejecutado por una computadora.
Según Analía Lanzillotta: "Considerado como un lenguaje falso, el pseudocódigo es un lenguaje
intermedio entre nuestro lenguaje y el de programación, debido a que quien lo utiliza se guía por una
serie de normas pero sin llegar a usar una estructura tan rígida como la del lenguaje de programación. El
objetivo al que apunta es que quien lo pone en práctica se centre más en la solución del algoritmo o el
diseño de un software que en el programa que utiliza para crearlo. Y esto es posible porque es más fácil
de manipular ya que no tiene que tener en mente el lenguaje en sí y además, más fácil de codificar. Por
ejemplo, si alguien tiene que hacer un software con un fin determinado, utiliza un pseudocódigo propio
en donde confluyen frases del lenguaje coloquial y algunas palabras de programación, y una vez que se
logra concretar el software, se puede pasar al escalón siguiente que es el de la transformación al
lenguaje de programación formal que se vaya a utilizar. De esta manera, al ser un lenguaje intermedio,
no tiene una composición estandarizada por lo que no todos los programadores utilizan la misma sintaxis
con exactitud. Pero a la vez, como es una herramienta que está un paso previo al lenguaje formal de
programación, es fácil de transformar al que será ejecutado en la computadora.
Reglas de construcción
CARACTERÍSTICAS Y PARTES:
Las principales características de este lenguaje son:
•
o Se puede ejecutar en un ordenador
o Es una forma de representación sencilla de utilizar y de manipular.
o Facilita el paso del programa al lenguaje de programación.
o Es independiente del lenguaje de programación que se vaya a utilizar.
o Es un método que facilita la programación y solución al algoritmo del programa.
Todo documento en pseudocódigo debe permitir la descripción de:
•
o Instrucciones primitivas.
o Instrucciones de proceso.
o Instrucciones de control.
o Instrucciones compuestas.
o Instrucciones de descripción.
o Cabecera.
o Modulo.
12
o Tipos de datos.
o Constantes.
o Variables.
o Cuerpo.
o Inicio.
o Instrucciones.
o Fin.
LISTA DE PALABRAS RESERVADAS Y SU SIGNIFICADO
Instrucción Significado
si (condición) entonces
acción 1
Instrucción condicional simple. El ordenador evaluará la condición, que
acción 2 debe ser una expresión lógica. Si es verdadera, realiza las acciones. Si la
..... expresión de falsa, no se realiza ninguna acción y la ejecución continúa por
la siguiente instrucción.
acción n
fin si
13
si (condición) entonces
acción 1
acción 2
.....
acción n Instrucción condicional doble. El ordenador evaluará la condición, que debe
si no (c/c) ser una expresión lógica. Si es verdadera, realiza las acciones propias del
si, y, si es falsa, las acciones propias del si no o caso contrario.
acción 1
acción 2
.....
acción n
fin si
11. Identificadores
Un identificador es un nombre con el que se hace referencia a una entidad. para este efecto se debe
respetar lo siguiente:
14
1. Un identificador se forma con una secuencia de letras (minúsculas de la a a la z; mayúsculas de
la A a la Z; y dígitos del 0 al 9).
2. El carácter subrayado o underscore (_) se considera como una letra más.
3. Un identificador no puede contener espacios en blanco, ni otros caracteres distintos de los
citados, como por ejemplo (*,;.:-+, etc.).
4. El primer carácter de un identificador debe ser siempre una letra o un (_). No puede ser un dígito.
5. Se hace distinción entre letras mayúsculas y minúsculas.
Operando:
Referente al identificador que designa la dirección de los datos con los que se debe operar.
Operadores:
Un operador es el símbolo que determina el tipo de operación o relación que habrá que establecerse
entre los operandos de una expresión para alcanzar un resultado.
Expresión:
Una expresión es una secuencia de operadores y operandos que describe un cálculo. Normalmente una
expresión se evalúa en tiempo de ejecución.
Expresiones aritméticas
De la evaluación de una expresión aritmética siempre se obtiene un valor de tipo entero o real. En las
expresiones aritméticas se pueden utilizar los siguientes operadores aritméticos:
• + Suma
• - Resta
• * Multiplicación
• ^ Potencia (también se utiliza el doble asterisco **)
• / División real
• div División entera
• mod Módulo (resto de la división entera)
• + - Signos más y menos
• = asignación
Prioridad de los operadores aritméticos
15
Expresiones lógicas
De la evaluación de una expresión lógica siempre se obtiene un valor de tipo lógico (verdadero o falso).
En las expresiones lógicas se pueden utilizar dos tipos de operadores:
• Relacionales.
• Lógicos.
Un operador relacional se utiliza para comparar los valores de dos expresiones. Estas deben ser del
mismo tipo (aritméticas, lógicas, de carácter o de cadena).
Los operadores relacionales son:
• < Menor que
• <= Menor o igual que
• > Mayor que
• >= Mayor o igual que
• = Igual que
• <> Distinto que
Los operadores lógicos son:
• y Conjunción
• o Disyunción
• no Negación
Prioridad de los operadores relacionales y lógicos
16
12. Modularización
Uso de Módulos (subprogramas)
Qué es lo que se busca
• Reducir la complejidad del programa (“divide y vencerás”).
• Eliminar código duplicado.
• Limitar los efectos de los cambios (aislar aspectos concretos).
• Ocultar detalles de implementación (p.ej. algoritmos complejos).
• Promover la reutilización de código (p.ej. familias de productos).
• Mejorar la legibilidad del código.
• Facilitar la portabilidad del código.
CARACTERÍSTICAS
Cohesión
• Medida del grado de identificación de un módulo con una función concreta.
18
UNIDAD 2
PROGRAMACIÓN
CODIFICACIÓN
ALGORITMICA
Lenguaje de programación en c
Lenguaje C
• Compilador
• Enlazador
• No tiene un entorno que nos permita escribir código y generar un programa de computadora.
• IDE (Entorno de desarrollo Integrado) => CodeBlocks
• ANSI C = Estructurada
• C++ =Orientada a objetos (también me deja programar en estructurado)
COMPILACIÓN
ENLAZADO
Archivo intermedio
Archivo tipo texto COMPILADOR entre el código fuente y ENLAZADOR
.c o .cpp
el código fuente y el programa
ejecutable.
Solo se crea SI EL CODIGO
FUENTE NO TIENE ERRORES.
.o o .obj
19
ARCHIVO EJECUTABLE.- Ejecutar la solución a través de un programa de
computadora .exe
Objetivo:
A. Recomendaciones
Caratula
Índice
Introducción
Definición del problema
Análisis
Diseño (algoritmos)
Implementación en lenguaje de programación ANSI C.
Pruebas
20
Conclusiones y recomendaciones
Bibliografía
Anexos
C. La propuesta
21