























Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Investigación profunda sobre los conceptos e información fundamental de lógica de programación
Tipo: Guías, Proyectos, Investigaciones
1 / 31
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
























Investigación de conceptos básicos
Lógica de programación
Julio Cesar Hernández Méndez
15 de octubre del 2020
Un algoritmo constituye una lista bien definida, ordenada y finita de operaciones, que permite encontrar la solución a un problema determinado. Dado un estado inicial y una entrada, es a través de pasos sucesivos y bien definidos que se llega a un estado final, en el que se obtiene una solución (si hay varias) o la solución (si es única). Un algoritmo puede ser expresado en: Lenguaje natural Pseudocódigo Diagramas de flujo Programas Es evidente que el lenguaje natural es de mayor utilidad para transmitir las ideas del algoritmo. Al contrario, un programa es difícil de entender por simple lectura, aun por una persona que conoce el lenguaje del programa, e imposible para aquellas que no lo conocen El pseudocódigo y los diagramas de flujo, en cambio, se sitúan en un punto intermedio de comprensión, entre el lenguaje natural y un programa. Estas dos herramientas poseen un poder de expresión equivalente; no obstante, los diagramas de flujo tienen la ventaja de ser más gráficos y visuales. La lógica de programación tiene tres elementos primordiales: creatividad, lógica y razonamiento. Con ello, cualquiera de nosotros puede ser capaz de programar. El ser humano por naturaleza es creativo, puede encontrar más de una solución a un problema que se le presente, a su vez tenemos una lógica; es decir, es el orden en que llevamos a cabo cualquier actividad mental, y el razonamiento que es la capacidad que tenemos para resolver problemas, extraer conclusiones y aprender de manera consciente. Un programa informático se define como un conjunto de instrucciones que, una vez ejecutado, realiza una o varias tareas en una computadora. De esta forma, sin programas, una computadora no puede realizar las actividades para las que fue diseñada y creada. Un programa se escribe con instrucciones en un lenguaje de programación, el cual, a su vez, está definido por su sintaxis, que establece e indica las reglas de escritura (la gramática), y por la semántica de los tipos de datos, instrucciones, definiciones, y todos los otros elementos que constituyen un programa. Los programas suelen subdividirse en partes menores denominadas módulos , de forma que la complejidad algorítmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al desarrollo del problema. Los programas deben contener variables. La ventaja de las variables es que almacenan datos de entrada, de salida o intermedios. No obstante, existen lenguajes que no implementan la noción de variable. Una variable tiene un tipo y un nombre que debe ser único. Según los paradigmas el lenguaje, la
asignación de una zona de memoria para la variable se hace en la memoria (memoria central, en la mayoría de los lenguajes) de manera estática o dinámica. Un lenguaje de programación es un caso particular del lenguaje informático; este último permite hacer programas, pero también describir datos, configuraciones físicas y protocolos de comunicación entre equipos y programas Un lenguaje de programación es una herramienta que permite desarrollar software o programas para computadora. Los lenguajes de programación son empleados para diseñar e implementar programas encargados de definir y administrar el comportamiento de los dispositivos físicos y lógicos de una computadora. Lo anterior se logra mediante la creación e implementación de algoritmos de precisión que se utilizan como una forma de comunicación humana con la computadora. Aunque existen muchos lenguajes de programación y muchos tipos diferentes de computadoras, el primer paso es la necesidad de tener una solución. Sin un algoritmo no puede haber un programa. La programación es a menudo la manera en la que creamos una representación para nuestras soluciones. Por tanto, esta representación en un lenguaje y el proceso de crearla se convierte en una parte fundamental de la disciplina. La función principal de los lenguajes de programación es escribir programas que permiten la comunicación usuario-máquina. Unos programas especiales ( compiladores o intérpretes ) convierten las instrucciones escritas en código fuente , en instrucciones escritas en lenguaje máquina (0 y 1). A su vez, un paradigma de programación provee (y determina) la visión y los métodos de un programador en la construcción de un programa o subprograma. Dependiendo del lenguaje que se elija, se puede hablar del tipo de programación que se va a realizar. Algunos de ellos son: Programación secuencial : son aquellos programas que se diseñan con directrices que van en secuencia una detrás de la otra. Programación estructurada : se considera así, cuando la programación es diseñada por módulos. Cada módulo realiza una tarea en especial, y cuando se requiera de esa tarea, sencillamente se le hace el llamado a ese módulo. Programación orientada a objetos : son aquellos lenguajes que permiten la implementación de objetos dentro del diseño del mismo y el usuario podrá pegar a cada objeto un código de programa. Programación lógica o de lenguaje natural: son aquellos programas que se diseñan con interfaces, de tal manera que el usuario pueda darle órdenes a la máquina utilizando un lenguaje simple.
Ejemplos:
iostream: Parte del a STL que contiene los algoritmos estándar, es quizá la más usada e importante (aunque no indispensable). La biblioteca list: Parte de la STL relativa a contenedores tipo list; listas doblemente enlazadas math: Contiene los prototipos de las funciones y otras definiciones para el uso y manipulación de funciones matemáticas. memory: Utilidades relativas a la gestión de memoria, incluyendo asignadores y punteros inteligentes ( auto_ptr ). "auto_ptr" es una clase que conforma la librería memory y permite un fácil manejo de punteros y su destrucción automaticamente. Biblioteca new: Manejo de memoria dinámica numeric: Parte de la librería numérica de la STL relativa a operaciones numéricas. ostream: Algoritmos estándar para los flujos de salida. queue: Parte de la STL relativa a contenedores tipo queue (colas de objetos). Librería stdio: Contiene los prototipos de las funciones, macros, y tipos para manipular datos de entrada y salida. Librería stdlib: Contiene los prototipos de las funciones, macros, y tipos para utilidades de uso general. string: Parte de la STL relativa a contenedores tipo string; una generalización de las cadenas alfanuméricas para albergar cadenas de objetos. Muy útil para el fácil uso de las cadenas de caracteres, pues elimina muchas d elas dificultades que generan los char typeinfo: Mecanismo de identificación de tipos en tiempo de ejecución vector: Parte de la STL relativa a los contenedores tipo vector; una generalización de las matrices unidimensionales C/C++
forward_list Esta librería es útil para implementar con gran facilidad listas enlazadas simples. list Permite implementar listas doblemente enlzadas (listas enlazadas dobles) facilmente. iterator Proporciona un conjunto de clases para iterar elementos. regex Proporciona fácil acceso al uso de expresiones regulares para la comparación de patrones. thread Útil para trabajar programación multihilos y crear múltiples hilos en nuestra aplicación. 1.2.3 Entrada y salida de datos (cout y cin) La entrada y salida de datos en C++ es simple (al menos para los casos más comunes). Con esto hago una comparación entre C++ y Java, pues leer una entrada del usuario por teclado en C++ es bastante simple mientras que en Java implica una serie de conceptos adicionales que la hacen un tanto más complicada. Salida de texto por pantalla en C++ Mostrar texto por pantalla en C++ es muy simple. Para imprimir una salida de texto en C++ se hace uso de la instrucción cout , junto con <<. Es importante tener en cuenta que la instrucción cout siempre va acompañada de << para controlar el flujo de datos que sale. No te fijes mucho en ellos, solo ten siempre presente que cout viene acompañado de << para tener cout << como resultado. Entrada o lectura de datos en C++
Las funciones declaradas en stdio.h por lo general se pueden dividir en dos categorías: las funciones para la manipulación de archivos y las funciones para la manipulación de insumo-producto Nombre Notas funciones de manipulación de archivos Fclose: se cierra un archivo asociado con el valor FILE * que se le pasa Fopen: abre un archivo para ciertos tipos de lectura o escritura eliminar: elimina un archivo ( lo elimina ) cambiar el nombre de: cambia el nombre de un archivo rebobinar: actúa como si fseek (flujo, 0L, SEEK_SET ) fue llamado para el flujo pasado , y luego su indicador de error despejado tmpfile: crea y abre un archivo temporal , que se elimina cuando se cierra con fclose () La manipulación de entradas y salidas funciones clearerr: borra al final de su archivo e indicadores de error para un flujo dado feof: comprueba si un al final de su archivo indicador se ha fijado para un flujo dado ferror: comprueba si un indicador de error se ha fijado para un flujo dado fflush: fuerzas en espera de cualquier buffer salida que se escriben en el archivo asociado a un flujo dado fgetpos: almacena el indicador de posición de archivo de la secuencia correspondiente de su primer argumento ( un FILE * ) a su segundo argumento (a * fpos_t ) fgetc: devuelve un carácter de un archivo fgets: (^) obtiene una cadena desde el archivo ( que termina en nueva línea o de fin de archivo de - ) fputc: (^) escribe un carácter en un archivo fputs: escribe una cadena en un archivo ftell: devuelve un indicador de posición de archivo que luego pueden pasar a fseek fseek: busca a través de un archivo fsetpos: establece el indicador de posición de archivo de una secuencia correspondiente de su primer argumento (a * FILE) como se almacena en su segundo argumento (a * fpos_t ) fread: (^) lee los datos de un archivo fwrite: escribe datos en un archivo getc: lee y devuelve un personaje de un flujo dado y avanza el indicador de posición del archivo , sino que se permite ser una macro con los mismos efectos que fgetc, Excepto que se puede evaluar el flujo de más de una vez
getchar: tiene los mismos efectos que getc ( stdin) se: lee los caracteres de la entrada estándar hasta una nueva línea se encuentra y los almacena en su único argumento printf, vprintf: se utiliza para imprimir en la secuencia de salida estándar fprintf , vfprintf utilizado para imprimir en un archivo 1.3 DEFINICIÓN DE LENGUAJE El lenguaje de programación es un lenguaje formal que, mediante una serie de instrucciones, le permite a un programador escribir un conjunto de órdenes, acciones consecutivas, datos y algoritmos para, de esa forma, crear programas que controlen el comportamiento físico y lógico de una máquina. Los lenguajes de programación son empleados para diseñar e implementar programas encargados de definir y administrar el comportamiento de los dispositivos físicos y lógicos de una computadora. Lo anterior se logra mediante la creación e implementación de algoritmos de precisión que se utilizan como una forma de comunicación humana con la computadora. A grandes rasgos, un lenguaje de programación se conforma de una serie de símbolos y reglas de sintaxis y semántica que definen la estructura principal del lenguaje y le dan un significado a sus elementos y expresiones. La definición de un lenguaje de programación cubre tres aspectos:
Los lenguajes de programación de alto nivel se caracterizan porque su estructura semántica es muy similar a la forma como escriben los humanos, lo que permite codificar los algoritmos de manera más natural, en lugar de codificarlos en el lenguaje binario de las máquinas, o a nivel de lenguaje ensamblador. Traductor Traducen programas escritos en un lenguaje de programación al lenguaje máquina de la computadora y a medida que va siendo traducida, se ejecuta. Compilador Permite traducir todo un programa de una sola vez, haciendo una ejecución más rápida y puede almacenarse para usarse luego sin volver a hacer la traducción. Ejemplos de lenguajes de alto nivel: C++ Fue diseñado a mediados de la década de 1980 por Bjarne Stroustrup. Abarca dos paradigmas de la programación: la estructurada y la orientada a objetos. Fortran Fue desarrollado en la década de 1950 y es empleado activamente desde entonces. Acrónimo de formula translator, Fortran se utiliza principalmente en aplicaciones científicas y análisis numérico. Java Lenguaje de programación orientado a objetos desarrollado por Sun Microsystems a principios de 1990. Las aplicaciones Java están típicamente compiladas en un bytecode, aunque la compilación en código máquina nativo también es posible. Perl El lenguaje práctico para la extracción e informe es este lenguaje de programación diseñado por Larry Wall en 1987. Perl toma características del C, del lenguaje interpretado shell sh, AWK, sed, Lisp y, en grado inferior, de muchos otros lenguajes de programación. PHP Es empleado frecuentemente para la creación de contenido para sitios web con los cuales se pueden programar las páginas HTML y los códigos de fuente. PHP es un acrónimo que significa PHP hypertext pre-processor
(inicialmente, PHP tools o personal home page tools), y se trata de un lenguaje interpretado que se aprovecha para la creación de aplicaciones para servidores o contenidos dinámicos de sitios web. Últimamente también sirve para crear otro tipo de programas que incluyen aplicaciones con interfaz gráfica, librerías Qt o GTK+. Python Fue hecho por Guido van Rossum en 1990. En la actualidad se desarrolla como un proyecto de código abierto administrado por la Python Software Foundation. La última versión estable del lenguaje es la 2.5 (septiembre 2006). Principales características de los siguientes lenguajes: Lenguajes imperativos Emplean instrucciones como unidad de trabajo de los programas (Cobol, Pascal, C, Ada). Lenguajes declarativos Los programas se construyen mediante descripciones de funciones o expresiones lógicas (Lisp, Prolog). Lenguajes orientados a objetos El diseño de los programas se basa más en los datos y su estructura. La unidad de proceso es el objeto y en él se incluyen los datos (variables) y operaciones que actúan sobre ellos (Smalltalk, C++). Lenguajes orientados al problema Están diseñados para problemas específicos, principalmente de gestión; suelen ser generadores de aplicaciones. Lenguajes naturales Están desarrollándose nuevos lenguajes con el objetivo de aproximar el diseño y construcción de programas al lenguaje de las personas. Otra clasificación se da con base en el desarrollo de los lenguajes desde la aparición de las computadoras, que sigue un cierto paralelismo con las generaciones establecidas en la evolución de las aquéllas.
Control de flujo Se refiere a la secuencia de acciones de un programa. En ocasiones, dentro de la secuencia de instrucciones, hay puntos donde el programa debe tomar decisiones con base en el valor de una variable o el cumplimiento de una cierta condición. El tipo de instrucciones que posibilitan dichas acciones son, precisamente, las de control de flujo: condicionales (if-then-else), de bucle (for o while) o selección (case). Es importante mencionar que los lenguajes de programación son una herramienta principal para el desarrollo de software o sistema. Una de las funciones de la programación es llevar a cabo una comunicación entre la máquina y el usuario por medio de un software. Por ello es importante saber los tipos de lenguaje, características y, sobre todo, el tipo de plataforma que utilizan, ya que dependiendo del tipo de trabajo que se vaya a realizar, ya sea el usuario o empresa, se deberá elegir el lenguaje de programación más adecuado para agilizar y realizar tales actividades. 1.4 DEFINICIÓN DE ALGORITMO La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX. Un algoritmo es una secuencia de instrucciones finita. Esta serie de instrucciones resuelven un problema o dan un paso más para resolver el problema que intenta resolver el algoritmo. Los algoritmos son independientes de los lenguajes de programación. En cada problema el algoritmo puede escribirse y luego ejecutarse en un lenguaje de diferente programación. El algoritmo es la infraestructura de cualquier solución, escrita luego en cualquier lenguaje de programación. Programa : Un programa es una serie de instrucciones ordenadas, codificadas en lenguaje de programación que expresa un algoritmo y que puede ser ejecutado en un computador. 1.4.1 CLASIFICACIÓN: Los algoritmos se pueden clasificar en cuatro tipos: Algoritmo computacional: Es un algoritmo que puede ser ejecutado en una computadora.
Ejemplo: Fórmula aplicada para un cálculo de la raíz cuadrada de un valor x. Algoritmo no computacional: Es un algoritmo que no requiere de una computadora para ser ejecutado. Ejemplo: Instalación de un equipo de sonido. Existen dos que son llamados así por su naturaleza: Algoritmo cualitativo : Un algoritmo es cualitativo cuando en sus pasos o instrucciones no están involucrados cálculos numéricos, sino que son aquellos en los que se describen los pasos utilizando palabras. Ejemplos: Las instrucciones para desarrollar una actividad física, encontrar un tesoro.