1/141
ASDFASDF
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai | Chat |
|---|
No analytics yet
Send a link to your students to track their progress
Algoritmo
Una secuencia de pasos lógicos y ordenados con las cuales le damos solución a un problema determinado.
Características de los algoritmos
Un algoritmo debe ser preciso e indicar el orden de realización de cada paso, debe estar definido, debe ser finito con un número determinado de pasos.
Etapas de un algoritmo
Entrada, proceso y salida.
Ejemplo de algoritmo cotidiano
Preparar maicena: entrada (ingredientes), proceso (pasos para preparar), salida (atole listo).
Pasos para resolución de problemas con computadoras
Definición o análisis del problema, 2. Diseño del algoritmo, 3. Transformación del algoritmo en un programa, 4. Ejecución y validación del programa.
Análisis del problema
Preguntas clave: ¿Qué entradas se requieren? (tipo y cantidad de datos), ¿Cuál es la salida deseada? (tipo y cantidad de resultados), ¿Qué método produce la salida deseada?, Requisitos adicionales y restricciones.
Desglose y Pruebas de Escritorio
Proceso de refinamiento de la solución de elementos generales a particulares en distintos niveles, conocido como diseño descendente.
Ejemplo de problema para desglose
Calcular el sueldo neto de un obrero que trabaja por horas, con horas extras pagadas al doble, deducción por Seguro Social y pago de vivienda.
Estrategia de solución para desglose
Salidas: Ingreso bruto, deducción del seguro social, sueldo neto. Entradas: Pago por hora, horas trabajadas, horas extras, pago de vivienda.
Pasos principales en desglose
Lectura de datos, 2. Cálculos, 3. Impresión de resultados.
Fórmulas para cálculos en desglose
INGBRUTO = HTRABAJ * PHORA + HEXTRAS * PHORA * 2, DIHSS = INGBRUTO * 0.035, TDEDUC = DIHSS + VIVIENDA, SNETO = INGBRUTO - TDEDUC.
Diccionario de variables
PHORA (Pago base por hora), HTRABAJ (Horas ordinarias trabajadas), HEXTRAS (Horas extras trabajadas), DIHSS (Deducción para el IHSS), VIVIENDA (Pago de vivienda), INGBRUTO (Ingreso total bruto), TDEDUC (Total de deducciones), SNETO (Sueldo Neto).
Prueba de escritorio
Componentes: Datos (entrada como 2.50, 147, 25, 190), Memoria (variables y valores), Salida (resultados impresos como ingreso bruto, total deducciones, sueldo neto).
Bibliografía para desglose
Joyanes, Luis. Fundamentos Generales de Programación. Mc Graw Hill, 2012; Pacheco, Rosbinda; Tábora, Alex. Metodología de la Programación. Segunda Edición. Honduras, 2007.
Software
Conjunto de programas, instrucciones y reglas informáticas que permiten ejecutar distintas tareas en una computadora; es el equipamiento lógico intangible de un ordenador.
Concepto de software
Abarca todas las aplicaciones informáticas como procesadores de textos, planillas de cálculo y editores de imágenes; desarrollado mediante lenguajes de programación.
Clasificación del software
Software de sistema o de base (control sobre hardware y soporte a programas), software de aplicación (tareas específicas).
Software de sistema
Permite al usuario control sobre el hardware y da soporte a otros programas; incluye sistemas operativos que comienzan al encender la computadora.
Sistemas operativos más usados
Windows (creado por Microsoft en 1982, versiones como NT, 95, 98, 2000, XP, Vista, 7, 8; domina >90% del mercado), Unix (portable, multitarea, multiusuario, desarrollado en 1969), Linux (similar a Unix, multitarea, multiusuario), Ubuntu (basado en Linux, software libre), Mac OS X (basado en Unix, para computadoras Macintosh desde 2002).
Sistemas operativos para móviles
Android (basado en kernel Linux, para dispositivos táctiles), iOS (para iPhone, iPod Touch, iPad, Apple TV), Windows Phone (para smartphones).
Software de aplicación
Encargado de tareas específicas como procesadores de textos, hojas de cálculo, reproductores multimedia; diseñado para simplificar trabajos, automatizar tareas como contabilidad o redacción.
Ejemplos de software de aplicación
Microsoft Word (procesador de textos para creación, diseño e impresión de documentos), Microsoft Excel (hojas de cálculo para labores contables y financieras), Access (bases de datos para tablas, consultas, formularios, informes).
Rivales de Microsoft Office
OpenOffice (suite libre): Writer (procesador de textos), Calc (hojas de cálculo), Base (bases de datos).
Paquetes integrados de software
Paquetes que solucionan problemas generales e incluyen múltiples aplicaciones, e.g. paquete de oficina como Microsoft Office.
Lenguaje de programación
Estructura con base sintáctica y semántica que imparte instrucciones a un programa de computadora; permite especificar datos, cómo conservarlos/transferirlos y acciones ante circunstancias.
Origen de lenguajes de programación
Referencia a Ada Lovelace como la primera programadora conocida.
Clasificación de lenguajes de programación
Según nivel de abstracción: lenguaje de máquina (cadenas binarias legibles por computadora), bajo nivel (cercano al funcionamiento de la computadora, e.g. ensamblador), medio nivel (comparte características de bajo y alto), alto nivel (elementos del lenguaje humano).
Herramientas para lenguajes
Intérpretes (adaptan instrucciones de otro lenguaje), compiladores (traducen de un lenguaje a otro).
Ejemplos de lenguajes de programación
Pascal, Visual Basic, SQL, Delphi, Lingo, Cobol, HTML (para páginas web), Java.
Algoritmo
Serie de pasos o instrucciones finitas y ordenadas que sirven para darle solución a una situación; creado antes de programar para pensar en pasos.
Características de un algoritmo
Preciso, sin ambigüedades, congruente, funciona ante cualquier situación.
Estructura de un algoritmo
Inicio, instrucciones/pasos, fin.
Tipos de algoritmos
Cualitativo (describe situaciones de la vida cotidiana), cuantitativo (hace operaciones matemáticas, con entrada, proceso y salida).
Ejemplo de algoritmo cualitativo
Pasos para hacer un emparedado: buscar ingredientes, untar panes, poner jamón y queso, tapar.
Ejemplo de algoritmo cuantitativo
Promedio de tres números: leer n1, n2, n3 (entrada), sumar y dividir entre 3 (proceso), mostrar resultado (salida).
Importancia de algoritmos
Desarrolla capacidad lógica, análisis previo al código; no olvidar al programar para facilitar comprensión y mantenimiento.
Ejercicio propuesto
Pensar en pasos para ir a dormir y crear algoritmo.
Programación
Proceso de planeación y creación de un programa; secuencia de sentencias para ejecutar una tarea.
Lenguajes de programación
Conjunto de reglas, instrucciones y normas para transmitir órdenes a la computadora.
Proceso de transformación de algoritmo
De problema a algoritmo en pseudocódigo o diagrama de flujo, a código fuente (e.g. C++), edición, traducción/ejecución a código máquina.
Clasificación de instrucciones en lenguajes
Entrada/salida (transferencia de info), cálculo (operaciones aritméticas), control (modifican secuencia de ejecución).
Lenguaje máquina
Instrucciones en cadenas binarias que especifican operación y direcciones de memoria; desventajas: dificultad en codificación, poca fiabilidad, solo ejecutable en mismo procesador.
Lenguaje de bajo nivel
E.g. ensamblador; usa nemotécnicos como ADD, SUB; más fácil que máquina pero depende de la máquina.
Lenguaje de alto nivel
Utilizados por programadores; fáciles de escribir/entender; ventajas: corto tiempo de formación, sintaxis similar a lenguajes humanos, fáciles modificaciones, reducción de costes, transportabilidad.
Traductores de lenguaje
Interprete (traduce y ejecuta en línea), compilador (traduce a código máquina, genera programa objeto).
Fases de compilación
Traducción de programa fuente a objeto (código máquina), ejecución.
Historia de lenguajes de programación
Década 1950: Fortran, ALGOL 58, LISP, COBOL; 1960: BASIC, LOGO, Simula 67, Smalltalk; 1970: PASCAL, C, Modula 2; 1980: C++, Eiffel, Ada, Perl; 1990: JAVA, JavaScript; 2000: C#, XML.
Bibliografía para lenguajes
Joyanes, Luis. Fundamentos Generales Programación. Mc Graw Hill, 2013 (páginas 25-40).
Programación
Proceso de creación de un programa de computadora mediante aplicación de procedimiento lógico; construye sistemas como conjunto de objetos relacionados.
Algoritmo
Conjunto de pasos o reglas lógicas para resolver problema determinado, finito, sin confusión; expresado en lenguaje natural, técnico o diagramas.
Herramientas gráficas para algoritmos
Diagramas de flujo.
Lenguaje natural para algoritmos
Desgloses.
Lenguaje técnico para algoritmos
Pseudocódigo o Nolae.
Desglose
Desarrolla lógica del algoritmo de manera descendente, de general a particular hasta instrucciones atómicas; usa lenguaje natural.
Ventajas y desventajas del desglose
Ventaja: expresión personal; desventaja: no siempre preciso, traducción no inmediata, flujo no evidente.
Pseudocódigo
Preciso, cada palabra/instrucción con significado específico; asemeja código de programación.
Ventajas y desventajas del pseudocódigo
Ventaja: traducción casi directa, revisión lógica por pruebas de escritorio; desventaja: flujo no evidente, no siempre simplificaciones.
Diagramas de flujo
Representación gráfica para visualización completa de estructuración; flujo indicado por flechas.
Ventajas y desventajas de diagramas de flujo
Ventaja: fácil seguimiento; desventaja: no práctico para muchos detalles o diseño descendente, puede fomentar mala estructuración.
Simbología de diagramas de flujo
Símbolo para operación (rectángulo), flujo (flecha), decisión (rombo), inicio/fin (óvalo).
Clasificación de aplicaciones
Científicas (cálculos matemáticos), procesamiento de datos (creación/mantenimiento de datos), procesamiento de texto (manipulación de lenguaje natural), inteligencia artificial, programación de sistemas.
Clasificación de lenguajes según estilo
Imperativos, declarativos (lógicos como Prolog, algebraicos como Maude/SQL, funcionales como Haskell).
Clasificación según paradigma
Procedural, orientada a objetos, funcional, lógica.
Clasificación según generación
1GL (código máquina), 2GL (ensamblador), 3GL (e.g. C/C++, Java), 4GL (e.g. NATURAL, Mathematica), 5GL (e.g. Prolog).
Constantes
Espacios de memoria con valores no cambiables durante ejecución.
Palabras reservadas
Palabras con significado especial en el lenguaje, no usables como identificadores.
Comentarios
Texto ignorado en compilación, útil para explicar elementos o lógica.
Ciclo de vida del software
Marco con actividades para desarrollo, explotación y mantenimiento (ISO 12207); etapas: análisis, diseño, implementación, pruebas, validación, evolución y mantenimiento.
Análisis en ciclo de vida
Expresión de necesidades, especificaciones; determina elementos, estructura, funcionalidades.
Diseño en ciclo de vida
Establece bases de construcción: lenguaje programación, modelo BD, SGBD, plataforma; elaboración de modelos.
Implementación en ciclo de vida
Codificación, construcción BD, codificación objetos/estructuras; revisiones periódicas.
Pruebas en ciclo de vida
Garantiza calidad: validación entradas/salidas, conectividad BD, tiempos respuesta, rendimiento.
Validación en ciclo de vida
Verifica cumplimiento de requerimientos iniciales; a menudo en paralelo con pruebas.
Evolución y mantenimiento en ciclo de vida
Agregado de funcionalidades y corrección de errores; errores pueden filtrarse pese a pruebas.
Lenguajes interpretados
Conversión a lenguaje máquina línea por línea, ejecuta inmediatamente; e.g. Matlab, Python, Javascript.
Lenguajes compilados
Conversión de todo el código a máquina, genera archivo binario ejecutable; e.g. C++, Pascal, Fortran, BASIC.
Lenguajes compilados e interpretados
Técnica mixta: compilador a lenguaje intermedio, interpretado por máquina virtual; e.g. Java, familia .NET.
Editor de texto para codificación
Notepad (básico), Notepad++ (amigable, potente, gratuito).
Convertidor a lenguaje máquina
Compilador, intérprete o técnica mixta para generar programa ejecutable.
IDEs o EDIs
Entornos de desarrollo integrado; facilitan codificación y compilación; e.g. Codeblocks (C++), Netbeans (Java), Xcode (Mac C++), Visual Studio (.NET).
Diagrama de flujo
Diagrama que utiliza símbolos estándar con pasos de algoritmo en cajas unidas por flechas que indican secuencia.
Símbolos principales de diagrama de flujo
Terminal (inicio/fin), entrada/salida, proceso, decisión, decisión múltiple, conector, línea de flujo, línea conectora, llamada a subrutina, pantalla, teclado.
Ejemplo de diagrama de flujo
Calcular salario neto: leer nombre/horas/precio, calcular bruto/impuestos/neto, escribir resultados.
Características de diagramas de flujo
Caja "inicio" y "fin" elípticas, otras cajas rectangulares/rombo/paralelogramo; más de un paso por caja posible, pero abusar complica.
Ejemplo problema en diagrama
Tres números, determinar si suma de pareja igual al tercero, escribir "iguales" o "distintas".
Diagramas Nassi-Schneiderman (N-S)
Como diagrama de flujo sin flechas, cajas contiguas; acciones sucesivas en cajas sucesivas.
Bibliografía para diagramas de flujo
Luis Joyanes Aguilar, Fundamentos Generales de Programación, Mc Graw Hill, 2013.
Software
Parte lógica de una computadora, comprende componentes lógicos para realizar tareas; conjunto de programas, procedimientos, reglas, documentación y datos.
Clasificación del software
Software de sistema (maneja hardware, plataforma para aplicaciones), software de programación (herramientas para desarrollar), software de aplicación (ayuda tareas específicas).
Software de sistema
Diseñado para manejar hardware y proveer/mantener plataforma; desvincula usuario de detalles internos como memoria, discos, puertos.
Ejemplos de software de sistema
Sistemas operativos, cargadores de programas, controladores de dispositivos (drivers), programas utilitarios, entornos de escritorio, firmware (e.g. BIOS), terminales, gestores de arranque (bootloaders).
Sistemas operativos
Actúa como interfaz entre hardware y programas usuario; gestiona actividades, intercambio de recursos.
Cargadores de programas
Parte del SO responsable de cargar programas en memoria desde disco; cargado al inicio, permanece en memoria.
Controladores de dispositivos (drivers)
Permiten SO interactuar con dispositivo, abstracción de hardware, interfaz para usarlo; como manual de instrucciones.
Programas utilitarios
Herramientas para mantenimiento, soporte ejecución, tareas sistema; e.g. bibliotecas, limpiadores registro, compresión archivos, defragmentadores, respaldos, utilidades red.
Software de programación
Conjunto de herramientas para desarrollar programas usando alternativas y lenguajes de manera práctica.
Ejemplos de software de programación
Compiladores, ensambladores, enlazadores, intérpretes, depuradores, entornos integrados de desarrollo (IDEs).
Compiladores
Traducen programa en lenguaje alto nivel a otro (usualmente máquina); proceso llamado compilación.
Ensambladores
Traducen programa en lenguaje ensamblador a código máquina.
Enlazadores
Toman código objeto, bibliotecas, quitan innecesarios, enlazan para generar ejecutable o biblioteca.