37
PROF. JAIME SOTO SECCIÓN (001) MATERIAL ORIGINAL DE PROF. AURELY LEAL Algoritmos y Programación I Parte I

Parte I - MSc. Jaime Soto (Ing.) | Sitio Personal · En Computación es un profesional que se encarga de ... diseñado y organizado para aceptar y almacenar automáticamente datos

  • Upload
    ngophuc

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

PROF. JAIME SOTO

SECCIÓN (001)

M A T E R I A L O R I G I N A L D E P R O F . A U R E L Y L E A L

Algoritmos y Programación IParte I

Contenido Programático

Unidad I: Fundamentos de Programación.

Unidad II: Introducción a la Programación Estructurada.

Unidad III: Tipos de Datos Estructurados.

Unidad IV: Introducción al Manejo de Archivos y Estructuras.

Referencias Bibliográficas

Luis Joyanes Aguilar, “FUNDAMENTOS DE PROGRAMACIÓN, Algoritmos, estructura de datos y objetos”, McGraw-Hill, 3era.ra Edición.

Wirth, N., “ALGORITMOS + ESTRUCTURAS DE DATOS = PROGRAMAS” Editoriales del Castillo S.A.

Cualquier libro de Lenguaje C.

Cualquier libro de Lenguaje Java.

Evaluaciones

Teoría

Unidad I: 15%1er. Parcial Unidad II: 20%2do. Parcial Unidad III: 15%3er. Parcial

Total: 50%

Bono: 5% Tareas, Intervenciones, entre otros.

Práctica

Unidad II: 20%1er. Proyecto Unidad III: 20%2do. Proyecto Unidad IV: 10%Práctica

Total: 50%

Bono: 5% Tarea extra

NOTA IMPORTANTE: Es obligatorio aprobar la teoría y la práctica para aprobar la materia. Los Trabajos son estrictamente individuales.

¿Porqué Algoritmo y Programación I?

El Lic. En Computación es un profesional que se encarga dediseñar y desarrollar soluciones de software que denrespuestas a necesidades específicas en su entorno de trabajo.

Una de las principales actividades de un Lic. En Computaciónes la programación, cuyas bases deben ser adquiridas en suformación.

Esta materia tiene como finalidad introducir al alumno alámbito de la programación en sus elementos básicos yproporcionarle conocimientos necesarios y suficientes paraque utilice estructuras de datos básicas en la programaciónpara la solución de problemas.

Dato: Los datos son representaciones abstractas de hechos (eventos,ocurrencias, transacciones) u objetos (entidades, personas, etc.). Un conjuntode datos procesados adquieren significado y proporcionan conocimientos sobrelos hechos u objetos que los originan, transformándose en lo que se conocecomo información.

Información: Es un conjunto de datos analizados y organizados para un finespecífico. La información son palabras, números, dibujos, etc. Símbolos quenos proporcionan conocimiento sobre alguna realidad.

Informática: La ciencia de la informática se ocupa del análisis de lainformación, vista como un recurso de la organización.

Conceptos Básicos

Conceptos Básicos

Computación: Disciplina integrante de las ciencias exactas, especializada en el cálculo

y aplicada al uso de las computadoras.

Computadora: (o computador) es un sistema electrónico manipulador de símbolos

diseñado y organizado para aceptar y almacenar automáticamente datos de entrada,

procesarlos y producir resultados de salida bajo la dirección de un programa de

instrucciones almacenados, en su memoria, que detalla todos los pasos que se han de

seguir.

Hardware: Se denomina Hardware a todos aquellos componentes electrónicos,

magnéticos y mecánicos que forman parte integrante de un equipo de computación;

como característica resaltante tenemos que el hardware es tangible, medible, pesable,

movible y ocupa un volumen determinado.

Como ejemplo tenemos: El monitor o pantalla, la impresora, los diskettes (discos),

teclado, UCP (Unidad Central de Procesamiento), etc.

Sistema: Es una agrupación de métodos y procesamientos integrados para formar unente organizado.

Para los usuarios de computadoras, un sistema se define como una agrupaciónorganizada de personas, métodos, máquinas y materiales reunidos para lograr unconjunto de objetivos específicos.

Componentes de un Sistema de Computo

Conceptos Básicos

Componentes de un Sistema de Computo

Conceptos Básicos

Dispositivos de Entrada: Son máquinas diseñadas para la captura de datos. Algunosdispositivos de entrada permiten la comunicación directa entre los humanos y lasmáquinas, mientras que otros requieren la grabación de los datos en un medio deentrada, como por ejemplo en algún medio magnetizable.

Ejemplos: disco flexible (diskettes) cinta magnética, discos ópticos, CD-ROM, teclado,ratón (mouse), lápiz de entrada, pantalla sensible al tacto, micrófono, lectora decaracteres ópticos, lectora de caracteres de tinta magnética, documentos con bandamagnética, teléfono de transacciones, estaciones de trabajo o terminales inteligentes, etc.

Conceptos Básicos

Unidad de Procesamiento: El corazón de todo sistemade cómputo es la Unidad de Procesamiento, que contienelos elementos de memoria principal, aritmética-lógica ycontrol, y se encuentran presentes en procesadores decualquier tamaño.

Sección de Memoria Principal: La sección de Memoria Principal oalmacenamiento primario, se utiliza para cuatro funciones, las cuales son:

Los datos se introducen en un área de almacenamiento de entrada ypermanecen en ese lugar hasta el momento que se vayan a procesar.

Un espacio de memoria de trabajo es como una hoja de papel para hacercuentas y contendrá los datos que se están procesando, así como losresultados intermedios de dicho procesamiento.

Un área de almacenamiento de salida guarda los resultados finales delprocesamiento hasta que pueden ser liberados.

Un área de almacenamiento de programas guarda las instrucciones deprocesamiento.

Conceptos Básicos

Memoria RAM: Es la Memoria de Acceso Aleatorio o memoria de Lectura /Escritura (por sus siglas en inglés: Random Access Memory), se puede leer oescribir información indistintamente, pudiendo el usuario modificar o sustituirinformación en cualquier momento. Todas las operaciones relacionadas con lamemoria están controladas por la UCP.

La memoria RAM se caracteriza por ser volátil, es decir, la falta dealimentación eléctrica hace desaparecer toda la información que estuvieraalmacenada en ella. Esto no debe ser un grave problema siempre y cuando elusuario tenga almacenados sus programas en una memoria de tipo auxiliar novolátil (diskettes, cintas magnéticas, etc.). Así, el riesgo ante una falla deenergía eléctrica se reduce a la pérdida de las modificaciones efectuadasdurante la sesión en curso, razón por la cual se recomienda salvar (regrabar) lainformación en forma continua.

Conceptos Básicos

Memoria ROM: La Memoria de Sólo Lectura (por sus siglas en inglés: Read OnlyMemory), permite únicamente la operación de lectura, de forma que los programasgrabados en ella por el fabricante (Sistema Operativo, Lenguajes de Alto Nivel,Programas de Utilidad, etc.) pueden ser utilizados, pero nunca modificados ya quepermanecen inalterables durante el funcionamiento normal de la memoria.

Las memorias de este tipo no son volátiles, ya que su contenido es fijo y no puedenreprogramarse.

Sección Aritmética-Lógica : Esta sección, junto con la sección de Control y lamemoria de registros internos, constituye la Unidad Central de Procesamiento (UCP,o también conocida por sus siglas en inglés: CPU, Central Procesing Unit). Estaejecuta sumas, restas y otras operaciones sobre el contenido de sus registros deentrada, colocando el resultado en el de salida, el cual a su vez puede ser almacenadoen uno de los registros y de ahí, si se desea a la memoria.

Conceptos Básicos

Sección de Control: Al seleccionar, interpretar y ordenar la ejecución de lasinstrucciones del programa, la sección de control de la UCP mantiene el orden ydirige la operación de todo el sistema.

Dispositivos de Almacenamiento Secundario: Se emplean paracomplementar la limitada capacidad de almacenamiento de la sección deMemoria Principal. Están en línea con el computador, es decir, estánconectados directamente a el computador.

Ejemplos: diskettes, cintas magnéticas, discos ópticos, CD-ROM, DVD-ROMetc.

Conceptos Básicos

Dispositivos de Salida: Son instrumentos que interpretan información y permiten lacomunicación entre los seres humanos y las computadoras. Estos dispositivos conviertenlos resultados que produce el procesador y que están en el código máquina en una formasusceptible de ser empleada por las personas o como entrada para otras máquinas queformen parte de un ciclo de procesamiento distinto.

Ejemplos: disco flexible (diskettes de 3” ó 5”), impresora (impacto, matriz de puntos,laser, inyección de tinta, térmicas, etc.), monitor, graficadores, microfichas, microfilms,unidades de respuesta audibles, CD-ROM, etc.

Componentes.ppt

Conceptos Básicos

DIFERENCIAS ENTRE LAS COMPUTADORAS

1.- Diferencias de propósito.

2.- Diferencias según el área de Aplicación.

Según el fin, las computadoras se clasifican en:

Computadora Digital: dispositivo que manipula datos discretos y realiza operacionesaritméticas y lógicas sobre datos.

Computadora Analógica: dispositivo que opera datos que tienen la forma decantidades físicas de variación uniforme.

Computadora Híbrida: dispositivo de proceso de datos que emplea representacióntanto analógica como discreta de los datos.

Conceptos Básicos

DIFERENCIAS ENTRE LAS COMPUTADORAS

2.- Diferencias según el área de aplicación: En la actualidad, las computadoras se puedendividir en cinco categorías según el tamaño físico, el desempeño y en las áreas deaplicación:

Microcomputadoras (micros): también llamadas computadoras personales y puedentener el tamaño de una libreta o de un equipo de escritorio con procesador de una solapastilla y dedicadas por lo general a una sola persona. Se usan generalmente en oficinas,en educación y en aplicaciones domésticas o personales.

Minicomputadoras: También son sistemas de aplicación general, pero a diferencia dela mayor parte de los micros, generalmente atienden a varios usuarios como servidoresde red de archivos. En tamaño físico, las minis van desde modelos de escritorio hastaunidades del tamaño de archiveros pequeños.

Son muy usadas para aplicaciones de tiempo real, tiempo compartido y muchas otrasaplicaciones.

Conceptos Básicos

DIFERENCIAS ENTRE LAS COMPUTADORAS

Macrocomputadoras: ofrecen velocidades de procesamiento y capacidades dealmacenamiento mayores que una mini común y además son capaces de manejar muchosdispositivos periféricos poderosos. Se destina muchas veces para manejar grandesprocesos en lote.

Supercomputadoras: caracterizadas por su gran tamaño y enorme velocidad deprocesamiento. Para alcanzar tales velocidades tienen arquitecturas en paralelo y soneficientes tan sólo para un rango reducido de problemas. Normalmente se utilizan enaplicaciones científicas complejas.

Microcomputador Minicomputador Macrocomputador Supercomputador

Conceptos Básicos

Software: Se denomina Software al conjunto de datos e información que puede poseerun computador; es almacenado en un dispositivo (hardware) y por lo tanto no puede serpesado, pero sí medido, ya que ocupa un espacio determinado de ese dispositivo. Tambiénse conoce como software al conjunto de programas, documentos, procedimientos yrutinas asociados con la operación de un sistema de cómputo.

Si bien es cierto, el computador no puede realizar ninguna función por sí solo;se requiere de alguna instrucción que le dirija y organice todas las operaciones a cumplir.Estas son las instrucciones que el programador escribe. Estas instrucciones, agrupadas enforma de programas que serán depositados en la memoria del computador, forman lo quese denomina software.

Por lo tanto, es un componente creado por el humano, y es lo que permite que elcomputador pueda desempeñar tareas inteligentes; dirigirá en forma adecuada a loselementos físicos o hardware. Es el software lo que indica al hardware en qué secuenciay bajo qué lógica hay que hacer los cálculos y las manipulaciones de datos.

Conceptos Básicos

Como ejemplo tenemos: los Programas del Sistema Operativo, los Procesadores dePalabras, las Hojas de Cálculo, los Graficadores, etc.

Definición de Sistema Operativo.

Un Sistema Operativo sobre discos organiza, dirige y crea un ambiente de trabajo que elusuario encuentra a partir del momento en que se enciende su computador, y determinalas características lógicas que la máquina tiene para el usuario y la manera decomunicarse con ella.

El Sistema Operativo es el programa maestro que controla todo el trabajo delmicrocomputador, como conjunto, y la ejecución de los programas de aplicación.

El Sistema Operativo es el gran administrador de los recursos del sistema, es el quecontrola la comunicación entre éstos y los programas de aplicación, y por tanto, el quedetermina el ambiente general en que se realiza la actividad de programación. Se trata deun programa cuyo núcleo está cargado siempre en memoria y que trabaja en los tiemposen que no se ejecuta ninguna otra tarea, atendiendo los requerimientos de usuario.

Conceptos Básicos

Acción: Es un suceso o acontecimiento producido por un actor (ejecutante). tiene lacaracterística de una duración limitada y produce un resultado bien definido y previsto.

Instrucciones: Conjunto de caracteres que se usan para guiar a un sistema de procesode datos durante la ejecución de una operación (p.ej., se indica una operación y seespecifican los operandos de la instrucción).

Programa: Plan a seguir para obtener la solución de un problema. Conjunto deinstrucciones en secuencia que hacen que la computadora lleve a cabo determinadasoperaciones.

Programación: Es el proceso de escribir un programa o un software.

Conceptos Básicos

El proceso de ejecución de un programa escrito en un lenguaje de programación ymediante un compilador tiene los siguientes pasos:

1. Escritura del programa fuente con un editor (programa que permite a unacomputadora actuar de modo similar a una máquina de escribir electrónica) y guardarloen un dispositivo de almacenamiento (por ejemplo, un disco).

2. Introducir el programa fuente en memoria.

3. Compilar el programa con el compilador.

4. Verificar y corregir errores de compilación (listado de errores).

5. Obtención del programa objeto.

6. El enlazador (linker) obtiene el programa ejecutable.

7. Se ejecuta el programa y, si no existen errores, se tendrá la salida del programa.

¿Conceptos Básicos?

Etapas de la Compilación

Conceptos Básicos

Un lenguaje de programación es un lenguaje que puede ser utilizado para controlarel comportamiento de una máquina, particularmente una computadora. Consiste en unconjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y elsignificado de sus elementos y expresiones.

Aunque muchas veces se usa lenguaje de programación y lenguaje informático como sifuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban alos lenguajes de programación y a otros más, como, por ejemplo, el HTML (lenguaje parael marcado de páginas web).

Conceptos Básicos

Un lenguaje de programación permite a uno o más programadores especificar de maneraprecisa: sobre qué datos una computadora debe operar, cómo deben ser estosalmacenados, transmitidos y qué acciones debe tomar bajo una variada gama decircunstancias. Todo esto, a través de un lenguaje que intenta estar relativamentepróximo al lenguaje humano o natural, tal como sucede con el lenguaje Léxico. Unacaracterística relevante de los lenguajes de programación es precisamente que más de unprogramador puedan tener un conjunto común de instrucciones que puedan sercomprendidas entre ellos para realizar la construcción del programa de formacolaborativa.

Conceptos Básicos

Los procesadores usados en las computadoras son capaces de entendery actuar según lo indican programas escritos en un lenguaje fijollamado lenguaje de máquina. Todo programa escrito en otro lenguajepuede ser ejecutado de dos maneras:

Mediante un programa que va adaptando las instrucciones conformeson encontradas. A este proceso se lo llama interpretar y a losprogramas que lo hacen se los conoce como intérpretes.

Traduciendo este programa al programa equivalente escrito en lenguajede máquina. A ese proceso se lo llama compilar y al traductor se loconoce como un malhecho compilador.

Conceptos Básicos

Cada máquina reconoce un lenguaje propio, denominado lenguajemáquina o ensamblador, que consta de unas instrucciones muy a bajo nivel, enlas cuales se accede directamente a los elementos físicos de la máquina comopor ejemplo los registros. Por ejemplo son del tipo: suma lo que hay en dosregistros o copia lo que hay en un registro a otra posición de memoria. Launidad de control (o la unidad central de proceso o CPU) es quien es capaz deentender estas instrucciones sencillas y controlar su ejecución. Como ya sesabe, cada máquina tiene una configuración física diferente, y también unlenguaje ensamblador diferente. Por ejemplo, es diferente el ensamblador deun PC que el de un Mac.

En la primera etapa de la informática todos los programas se hacíanutilizando el código máquina, pero aparte de que es muy complicado deprogramar y muy difícil de leer, una vez tenemos el programa sólo lo podemosejecutar en un tipo de máquina concreto. Si cambiamos de máquina perdemostodos nuestros programas

Conceptos Básicos

Clasificación de los lenguajes de programación: Los lenguajes de programación sedeterminan según el nivel de abstracción, Según la forma de ejecución y Según elparadigma de programación que poseen cada uno de ellos y esos pueden ser:

Según su nivel de abstracción:

Lenguajes de bajo nivel: Los lenguajes de bajo nivel son lenguajes de programaciónque se acercan al funcionamiento de una computadora. El lenguaje de más bajo nivel es,por excelencia, el código máquina. A éste le sigue el lenguaje ensamblador, ya que alprogramar en ensamblador se trabajan con los registros de memoria de la computadorade forma directa.

Lenguajes de medio nivel: Hay lenguajes de programación que son considerados poralgunos expertos como lenguajes de medio nivel (como es el caso del lenguaje C) al tenerciertas características que los acercan a los lenguajes de bajo nivel pero teniendo, almismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al humano y, portanto, de alto nivel.

Conceptos Básicos

Lenguajes de alto nivel: Los lenguajes de alto nivel son normalmente fáciles deaprender porque están formados por elementos de lenguajes naturales, como el inglés.En BASIC, el lenguaje de alto nivel más conocido, los comandos como "IF CONTADOR =10 THEN STOP" pueden utilizarse para pedir a la computadora que pare si CONTADORes igual a 10. Por desgracia para muchas personas esta forma de trabajar es un pocofrustrante, dado que a pesar de que las computadoras parecen comprender un lenguajenatural, lo hacen en realidad de una forma rígida y sistemática.

Conceptos Básicos

Según la forma de ejecución

Lenguajes Compilados: Naturalmente, un programa que se escribe en un lenguaje dealto nivel también tiene que traducirse a un código que pueda utilizar la máquina. Losprogramas traductores que pueden realizar esta operación se llaman compiladores. Éstos,como los programas ensambladores avanzados, pueden generar muchas líneas de códigode máquina por cada proposición del programa fuente. Se requiere una corrida decompilación antes de procesar los datos de un problema.

Los compiladores son aquellos cuya función es traducir un programa escrito en undeterminado lenguaje a un idioma que la computadora entienda (lenguaje máquina concódigo binario).

Al usar un lenguaje compilado (como lo son los lenguajes del popular Visual Studio deMicrosoft), el programa desarrollado nunca se ejecuta mientras haya errores, sino hastaque luego de haber compilado el programa, ya no aparecen errores en el código

Conceptos Básicos

Lenguajes interpretados: Se puede también utilizar una alternativadiferente de los compiladores para traducir lenguajes de alto nivel. En vez detraducir el programa fuente y grabar en forma permanente el código objeto quese produce durante la corrida de compilación para utilizarlo en una corrida deproducción futura, el programador sólo carga el programa fuente en lacomputadora junto con los datos que se van a procesar. A continuación, unprograma intérprete, almacenado en el sistema operativo del disco, o incluidode manera permanente dentro de la máquina, convierte cada proposición delprograma fuente en lenguaje de máquina conforme vaya siendo necesariodurante el proceso de los datos. No se graba el código objeto para utilizarloposteriormente.

Conceptos Básicos

Según el paradigma de programación:

Un paradigma de programación representa un enfoque particular o filosofíapara la construcción del software. No es mejor uno que otro sino que cada unotiene ventajas y desventajas. También hay situaciones donde un paradigmaresulta más apropiado que otro.

Lenguajes Imperativos: describen la programación en términos del estadodel programa y sentencias que cambian dicho estado. Los programasimperativos son un conjunto de instrucciones que le indican al computadorcómo realizar una tarea. Ejemplos: BASIC , C, C++, Java, C#, Perl.

Lenguajes Funcionales: declarativa basado en la utilización de funcionesmatemáticas. Ejemplos: Puros: Haskell, Miranda. Híbridos: Lisp, Scheme,Ocaml, Standard ML, ML, Scala.

Conceptos Básicos

Según el paradigma de programación:

Lenguajes Lógicos: consiste en la aplicación del corpus de conocimiento sobre lógicapara el diseño de lenguajes de programación; no debe confundirse con la disciplina de lalógica computacional.

La programación lógica comprende dos paradigmas de programación: la programacióndeclarativa y la programación funcional. La programación declarativa gira en torno alconcepto de predicado, o relación entre elementos. La programación funcional se basaen el concepto de función (que no es más que una evolución de los predicados), de cortemás matemático.Ejemplo: Prolog.

Lenguajes Orientados a Objetos: La Programación Orientada a Objetos (POOu OOP según sus siglas en inglés) es un paradigma de programación que usa objetos ysus interacciones para diseñar aplicaciones y programas de computadora. Está basado envarias técnicas, incluyendo herencia, modularidad, polimorfismo, y encapsulamiento.Ejemplos: Action Script, Ada, C++, C#, VB.NET, Visual FoxPro, Clarion, Delphi, Java,JavaScript, PHP (en su versión 5), Python, Ruby, Smalltalk.

Conceptos Básicos

El Lenguaje C. Historia y Características:

C es un lenguaje de programación creado en 1972 por Ken Thompson y Dennis M. Ritchieen los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL.Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos,concretamente Unix. C es apreciado por la eficiencia del código que produce y es ellenguaje de programación más popular para crear software de sistemas, aunque tambiénse utiliza para crear aplicaciones.

Se trata de un lenguaje débilmente tipificado de medio nivel pero con muchascaracterísticas de bajo nivel. Dispone de las estructuras típicas de los lenguajes de altonivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control amuy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitanmezclar código en ensamblador con código C o acceder directamente a memoria odispositivos periféricos.

Conceptos Básicos

El Lenguaje C. Historia y Características:

La primera estandarización del lenguaje C fue en ANSI, con el estándar X3.159-1989. El lenguaje que define este estándar fue conocido vulgarmente comoANSI C. Posteriormente, en 1990, fue ratificado como estándar ISO (ISO/IEC9899:1990). La adopción de este estándar es muy amplia por lo que, si losprogramas creados lo siguen, el código es portátil entre plataformas y/oarquitecturas. En la práctica, los programadores suelen usar elementos no-portátiles dependientes del compilador o del sistema operativo.

Conceptos Básicos

C tiene las siguientes características de importancia:

Un núcleo del lenguaje simple, con funcionalidades añadidas importantes,como funciones matemáticas y de manejo de ficheros, proporcionadas porbibliotecas.

Es un lenguaje muy flexible que permite programar con múltiples estilos. Unode los más empleados es el estructurado no llevado al extremo (permitiendociertas licencias rupturistas).

Un sistema de tipos que impide operaciones sin sentido.

Usa un lenguaje de preprocesado, el preprocesador de C, para tareas comodefinir macros e incluir múltiples ficheros de código fuente.

Acceso a memoria de bajo nivel mediante el uso de punteros.

Conceptos Básicos

C tiene las siguientes características de importancia:

Interrupciones al procesador con uniones.

Un conjunto reducido de palabras clave.

Los parámetros se pasan por valor. El paso por referencia se puede simularpasando explícitamente el valor de los punteros.

Punteros a funciones y variables estáticas, que permiten una formarudimentaria de encapsulado y polimorfismo.

Tipos de datos agregados (struct) que permiten que datos relacionados (comoun empleado, que tiene un id, un nombre y un salario) se combinen y semanipulen como un todo (en una única variable "empleado").

Conceptos Básicos