11 - Fundamentos Básicos de Programación I - EEGG-UNMSM 2018-Ia
11 - Fundamentos Básicos de Programación I - EEGG-UNMSM 2018-Ia
Profesor
John Ledgard Trujillo Trejo
Correo-e: [email protected]
Tema 1
Introducción a
lenguajes de
programación
Definición de
Algoritmos
Estructura de
un programa
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.2
Introducción
Tema 1
Introducción a
lenguajes de
programación
Definición de
Algoritmos
Estructura de
un programa
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.3
Introducción
Tema 1
Introducción a
lenguajes de
programación
Definición de
Algoritmos
Estructura de
un programa
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.4
Introducción
Tema 1
Introducción a
lenguajes de
programación
Definición de
Algoritmos
Estructura de
un programa
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.5
Introducción
Tema 1
Introducción a
lenguajes de
programación
Definición de
Algoritmos
Estructura de
un programa
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.6
Introducción
Tema 1
Introducción a
lenguajes de
programación
Definición de
Algoritmos
Estructura de
un programa
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.7
Qué es la Informática
Definición de
Algoritmos ordenadores.
Estructura de (Extraído del Diccionario de la RAE, 2016)
un programa
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.8
Qué es una computadora
Tema 1
Introducción a
lenguajes de
programación Hardware (Voz ingl.).1. m. Software (Voz ingl.).1. m.
Definición de
Inform. Conjunto de los Conjunto de programas,
Algoritmos
componentes que integran la instrucciones y reglas
Estructura de parte material de una informáticas para ejecutar
un programa
computadora. ciertas tareas en una
computadora.
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.9
Qué es un Sistema Informático
Tema 1
SOFTWARE
Introducción a
lenguajes de
programación
ALGORITMOS
Definición de
Algoritmos SISTEMA ORDENADOR
INFORMATICO
Estructura de
un programa
SOFTWARE
DATOS
INFORMACIÓN
HARDWARE
PROGRAMAS
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.10
Qué es un Sistema Informático
Definición de
Algoritmos
Estructura de
un programa
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018
Qué es un Sistema Informático
Tema 1
Introducción a
lenguajes de
programación
Definición de
Algoritmos
Estructura de
un programa
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018
Qué es un Sistema Informático
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018
Qué es un Sistema Informático
Tema 1
Introducción a
lenguajes de
programación
Definición de
Algoritmos
Estructura de
un programa Sistema de Banca Electrónica
Reservas de pasajes
Sistemas Hospitalarios
Sistemas Bibliográficos
Lectura remota de datos
Procesos industriales en tiempo real
Control de inventarios en tiempo real
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018
¿Qué entiende la computadora?
Tema 1
Introducción a
lenguajes de
programación La computadora manipula únicamente información digital:
Definición de
Algoritmos
Datos e instrucciones se codifican como
Estructura de
un programa dígitos binarios (0’s y 1’s)
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.15
Lenguajes
Tema 1
Introducción a
Lenguaje es el empleo de notaciones, señales y vocales
lenguajes de
programación
(voz, palabras) para expresar ideas, comunicarse, y
Definición de
establecer relaciones entre los seres humanos.
Algoritmos
Un lenguaje no sólo consta de “palabras”, sino también de su
Estructura de pronunciación y los métodos para combinar las palabras en
un programa
frases y oraciones; los lenguajes se forman mediante
combinaciones de palabras definidas en un diccionario
terminológico previamente establecido. Las combinaciones
posibles deben respetar un conjunto de reglas sintácticas
establecidas, a ello se le conoce con el nombre de Sintaxis.
Además, las palabras deben tener determinado sentido, deben
ser comprendidas por un grupo humano en un contexto dado,
a ello se le denomina Semántica.
Aunque existen muchas clasificaciones, en general se puede
distinguir entre dos clases de lenguajes: los lenguajes
naturales (ingles, alemán, español, etc.) y los lenguajes
artificiales o formales (matemático, lógico, computacional,
etc.).
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018
Lenguaje máquina
Tema 1 a = (b + c)/(d + e)
y
Introducción a
lenguajes de x
programación
Pasos
Definición de sumar b y c, y guardar el resultado en una dirección de memoria
Algoritmos
temporal X
Estructura de sumar d y e, y guardar el resultado en una dirección de memoria
un programa temporal Y
dividir el contenido de X por el de Y y guardar el resultado en la
dirección de memoria de a
Tema 1 Inconvenientes
Introducción a
lenguajes de
programación
Grandes posibilidades de error
Portabilidad: máquina-dependiente
Definición de
Algoritmos No se puede llevar el programa a otra máquina porque,
Estructura de entre otras cosas, el repertorio de instrucciones es distinto
un programa
Tedioso
Nula capacidad de abstracción
Es muy complicado formular una solución a problemas del
mundo real con ese lenguaje tan específico
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.18
Lenguaje ensamblador
Definición de
Algoritmos
Ejemplo de instrucción de código ensamblador
Estructura de
un programa
codigoSimbOp direccSimbOp1, direccSimbOp2, direccSimbRes
a = (b + c)/(d + e)
SUM B, C, X
SUM D, E, Y
DIV X, Y, A
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.19
Lenguaje ensamblador (cont.)
Tema 1 Cuestiones
Introducción a
lenguajes de
programación
¿Cómo entiende la máquina el lenguaje ensamblador?
Si las direcciones de memoria son simbólicas ¿en qué
direcciones de memoria se colocan los datos?
Definición de
Algoritmos
Estructura de
un programa
Programa ensamblador
Traducción a código binario de códigos simbólicos de operación
Traducción de las direcciones simbólicas a direcciones reales de
memoria
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.20
Lenguajes de alto nivel
Tema 1
Lenguaje que permite representar el mecanismo de
Introducción a
lenguajes de
resolución de los problemas usando instrucciones
programación
independientemente de la computadora
Definición de Cercanía conceptual al programador
Algoritmos
Pascal, C, Java, etc. son lenguajes de alto nivel
Estructura de
Capacidad de abstracción
un programa
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.21
Abstracción
Tema 1
Abstracción de datos
Introducción a
lenguajes de Tipos de datos
programación
Elementales (HW)
Definición de
Algoritmos
• Enteros
Estructura de
un programa • Reales
• Booleanos
• Caracteres
Nivel: de la máquina
Primitivos
Tipo básico
Proporcionados por el Hw
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.22
Abstracción
Tema 1
Abstracción de datos
Introducción a
lenguajes de Tipos de datos
programación
Estructurados (LP)
Definición de
Algoritmos
• Arreglos
Estructura de
un programa • Registros
Abstractos (U)
• Stacks
• Colas, etc
Tema 1
Abstracción de control
Introducción a
lenguajes de
Definición de
Algoritmos
Sentencias: Constructores de código que facilitan la programación
Estructura de estructurada
un programa
• Asignación
• Decisión
• Iteración
Unidades de Programas
Permiten programación modular
Generalizan la noción de operador
Permiten encapsular parte de un algoritmo
Tienen una única definición
Tienen múltiples activaciones
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.24
Clasificación de los Lenguajes de Programación
Tema 1
Introducción a
lenguajes de
programación
Definición de
Algoritmos
Estructura de
un programa
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.25
Evolución de los Lenguajes de Programación
Tema 1
Introducción a
lenguajes de
programación
Definición de
Algoritmos
Estructura de
un programa
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.26
Lenguajes interpretados vs Lenguajes Compilados
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.27
Lenguajes interpretados vs Lenguajes Compilados
Wikipedia)
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.28
Lenguajes de Programación
Tema 1
Introducción a
lenguajes de
programación
Definición de
Algoritmos
Estructura de
un programa
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.29
Ranking de los lenguajes de programación más utilizados en 2011
Definición de
Algoritmos
Estructura de
un programa
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.30
¿Qué es algoritmo?
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.31
Características de los Algoritmos
Tema 1
El científico de computación Donald Knuth ofreció una lista de
Introducción a
lenguajes de
cinco propiedades, que son ampliamente aceptadas como
programación
requisitos para un algoritmo:
Definición de
Algoritmos Carácter finito. "Un algoritmo siempre debe terminar después de
un número finito de pasos".
Estructura de
un programa
Precisión. "Cada paso de un algoritmo debe estar precisamente
definido; las operaciones a llevar a cabo deben ser especificadas de
manera rigurosa y no ambigua para cada caso".
Entrada. "Un algoritmo tiene cero o más entradas: cantidades que
le son dadas antes de que el algoritmo comience, o dinámicamente
mientras el algoritmo corre. Estas entradas son tomadas de
conjuntos específicos de objetos".
Salida. "Un algoritmo tiene una o más salidas: cantidades que
tienen una relación específica con las entradas".
Eficacia. "También se espera que un algoritmo sea eficaz, en el
sentido de que todas las operaciones a realizar en un algoritmo
deben ser suficientemente básicas como para que en principio
puedan ser hechas de manera exacta y en un tiempo finito por un
hombre usando lápiz y papel".
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.32
Tipos de Algoritmos
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.33
Medios de expresión de un algoritmo
Tema 1
Las técnicas para la formulación de algoritmos más populares son:
Introducción a
lenguajes de
Diagramas de flujo
programación Pseudocódigo
Definición de
Diagrama estructurado (N-S)
Algoritmos
Diagramas de Flujo
Estructura de
un programa Ejemplo: Cruzar la calle sin peligro de ser atropellado por un automóvil.
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.34
Medios de expresión de un algoritmo
Tema 1
Pseudocódigo
Introducción a
lenguajes de
programación
Un pseudocódigo (falso lenguaje), es una serie de normas léxicas
y gramaticales parecidas a la mayoría de los lenguajes de
Definición de
Algoritmos
programación, pero sin llegar a la rigidez de sintaxis de estos ni a la
fluidez del lenguaje coloquial.
Estructura de
un programa
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.35
Medios de expresión de un algoritmo
Tema 1
Diagrama estructurado (Nassi - Schneiderman)
Introducción a
lenguajes de
El diagrama estructurado N-S es una técnica hibrida (una mezcla) entre
programación Diagramas de Flujo y Pseudocódigo.
Definición de Esta técnica, también conocida como Diagrama de Chapín, utiliza una
Algoritmos
serie de cajas, similar a los diagramas de flujos, pero no requiere la
Estructura de utilización de flechas, debido a que su flujo siempre es descendente.
un programa
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.36
Resolución de Problemas con Computadoras
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.37
Etapas en la solución de problemas
siguientes:
programación
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.38
Etapas en la solución de problemas
Tema 1
Análisis del problema
Introducción a
lenguajes de Diseño del algoritmo
programación
Programación
Definición de
Algoritmos
Ejecución y pruebas.
Estructura de
un programa
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.39
Etapas en la solución de problemas
Tema 1
Análisis del problema
Introducción a
lenguajes de Diseño del algoritmo
programación
Programación
Definición de
Algoritmos
Ejecución y pruebas.
Estructura de
un programa
Tema 1
Análisis del problema
Introducción a
lenguajes de Diseño del algoritmo
programación
Programación
Definición de
Algoritmos
Ejecución y pruebas.
Estructura de
un programa
Ejemplo
Sin entrar en el campo de la informática, para hacer la nómina
de los mejores alumnos de una carrera, se necesita saber:
ENTRADA: Los datos de cada uno de los alumnos y si
estos datos están en papel o en un fichero donde
está toda la información de los alumnos.
PROCESO: La fórmula matemática para calcular el
promedio de notas es:
(nota 1 + nota 2 + nota 3 + .....+ nota n) / cantidad
de notas
SALIDA: El modelo del informe donde se desean
imprimir el promedio de los alumnos.
Tema 1
Análisis del problema
Introducción a
lenguajes de Diseño del algoritmo
programación
Programación
Definición de
Algoritmos
Ejecución y pruebas.
Estructura de
un programa
Teniendo en cuenta que un algoritmo es un método para resolver
problemas, una vez analizado el mismo se precisa diseñar un
algoritmo que indique claramente los pasos a seguir para resolverlo.
Para realizar un determinado proceso, se le debe suministrar al
ordenador una fórmula para la resolución de un problema
(algoritmo), cuyo diseño debe ser independiente de la computadora
que resuelve el problema.
Dada la importancia del algoritmo en la ciencia de la computación,
un aspecto muy importante será el diseño del algoritmo.
En esta etapa se realizará una representación de la secuencia.
Estas representaciones son las herramientas de: diagramas de
flujo, pseudocódigos y/o tablas de decisión.
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.42
Etapas en la solución de problemas
Tema 1
Análisis del problema
Introducción a
lenguajes de Diseño del algoritmo
programación
Programación
Definición de
Algoritmos
Ejecución y pruebas.
Estructura de Una vez que el diagrama de flujo o el algoritmo de resolución del
un programa
problema está definido se pasa a la fase de codificación del
programa en cualquier lenguaje (C, basic, cobol, pascal, etc.) cuyo
resultado será el programa fuente, el cual sigue las reglas de
sintaxis que el lenguaje escogido exija.
Después de codificado el programa, se introduce en el ordenador
mediante unos programas especiales llamados editores.
Una vez dentro del ordenador, el programa deber ser traducido al
único lenguaje que éste entiende: Lenguaje de máquina. Dicha
operación se realiza mediante el correspondiente programa
traductor o compilador del lenguaje en el que está escrito el
programa.
Tema 1
Análisis del problema
Introducción a
lenguajes de Diseño del algoritmo
programación
Programación
Definición de
Algoritmos
Ejecución y pruebas.
Estructura de El hecho de haber diseñado un buen algoritmo y luego haberlo
un programa
codificado en algún lenguaje de programación no significa que el
programa resuelva correctamente el problema en cuestión.
Por eso, antes de dar por finalizada cualquier labor de
programación, es fundamental preparar un conjunto de datos lo más
representativo posible del problema, que permitan probar el
programa cuando se ejecute y así verificar los resultados.
Cuanto más exhaustivas sean las pruebas de un programa, mayor
seguridad se tendrá de que éste funcione correctamente y, por lo
tanto, menor posibilidad de errores.
El programa se considera terminado cuando se han realizado
pruebas y ensayo de su fiabilidad con el conjunto de datos
seleccionados y otros nuevos, hasta incluso con datos reales, y no
se encuentren errores de ningún tipo.
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.44
Estructura general de un programa
Algorítmica I
John Ledgard Trujillo Trejo
17 de julio de 2018 1.45
Partes principales de un programa
Los archivos M
Tipos de archivos M
Tipos de archivos M
El Comando input
El Comando disp()
El Comando fprintf
El Comando fprintf
Bibliografía
1. A. Quarteroni, F. Saleri. Cálculo Científico con MATLAB y Octave. Springer-Verlag
Italia, Milano 2006
2. Sandeep Nagar. Introduction to Octave: For Engineers and Scientists. Library of
Congress Control Number: 2017960430. New York, USA. 2018.
3. Amos Gilat. Matlab Una introducción con ejemplos prácticos. Editorial Reverte, S.A.
Barcelona. ESPAÑA . 2006.
4. Moore Holly. Matlab para ingenieros. PEARSON Prentice Hall . 2008.
5. César Pérez. Matlab a través de ejemplos. IBERGARCETA PUBLICACIONES, S.L.,
Madrid 2011