Fundamentos de Programación - Algoritmos JB

download Fundamentos de Programación - Algoritmos JB

of 128

Transcript of Fundamentos de Programación - Algoritmos JB

Fundamentos de Programacin Algoritmos

Universidad Central del Ecuador

FUNDAMENTOS DE PROGRAMACIN ALGORITMOSOBJETIVO. Mostrar los fundamentos de la programacin, de modo que al final del curso, el estudiante ser capaz de disear algoritmos mediante ejercicios prcticos utilizados cotidianamente en el desarrollo de aplicaciones de software, con ayuda de las diferentes tcnicas algortmicas, con la finalidad de formarse una mentalidad de programador. INTRODUCCIN. Todos tenemos conciencia de que el xito de una empresa depende de la rapidez, calidad, control de los recursos, exactitud y otros muchos factores. Hace tiempo, las empresas ya sean grandes o pequeas, tenan que hacer sus procesos manualmente o con ayuda de mquinas. Pero a raz de la aparicin de las primeras computadoras, las grandes empresas obtuvieron unas de estas y comenzaron a tener mayor ventaja sobre las dems organizaciones. Con el paso del tiempo, se crearon computadoras ms pequeas, de menos costo, ms rpidas, lo cual ha provocado que cualquier persona o empresa pueda adquirir una o ms de estas computadoras. En la actualidad, muchas empresas realizan sus operaciones por medio de computadoras, por ejemplo en las fbricas ensambladoras de autos se utilizan robots programados, los cuales se encargan de montar y soldar las partes que forman el carro; en los supermercados, se utilizan las computadoras junto con un programa para registrar rpidamente las compras de los clientes, adems de que les ayuda para llevar el control de su inventario y de sus ingresos entre otras cosas; en los hospitales, se estn utilizando pequeos robots programados, los cuales se introducen en el cuerpo del paciente para realizar incisiones, cauterizar, saturar, etc.; este manual, fue elaborado en un editor de textos llamado Microsoft Word, el cual es un programa de aplicacin diseado especficamente para poder crear y dar formato a documentos de texto. En fin, podramos continuar enumerando en donde se utilizan las computadoras y nunca terminaramos, lo cual da un amplio campo de trabajo para los programadores. Este manual, tiene la finalidad de mostrarte los fundamentos de la programacin y formarte una mentalidad de programador, mediante la elaboracin de algoritmos utilizando diferentes tcnicas algortmicas y herramientas de software para escribir y entender de manera ms sencilla el fascinante mundo de la programacin. Ya que un programador es decir, la persona que disea sistemas computacionales oIng. Jfferson Beltrn M. Msc. 1

Fundamentos de Programacin Algoritmos

Universidad Central del Ecuador

aplicaciones de software, antes de comenzar a interactuar con la computadora tiene que tener una manera de pensar diferente a las dems personas para poder analizar y resolver problemas mediante aplicaciones de software, los cuales primero debe plasmarlos en papel o en alguna herramienta de software especfica para ello y luego en un lenguaje de programacin. NDICE. El ordenador. El software. Sistema binario y representacin binaria de datos. Algoritmos y elementos que lo conforman. Conceptos bsicos de programacin. Resolucin de problemas con computadora Desarrollo de Software Tipos y Paradigmas de Programacin. Lenguajes de programacin. La lgica como aspecto fundamental de la programacin. Representacin grfica de los algoritmos. Entorno de programacin integrado (IDE). Programacin Estructurada. Estructura de datos y Arreglos. Modularidad. Recursividad. Estilos de Programacin

Ing. Jfferson Beltrn M. Msc.

2

Fundamentos de Programacin Algoritmos

Universidad Central del Ecuador

1. EL ORDENADOR. Un ordenador es una mquina programable. Las dos caractersticas principales de un ordenador son: Responde a un sistema especfico de instrucciones de una manera bien definida. Puede ejecutar una lista de instrucciones pregrabadas (un programa). Los ordenadores modernos son electrnicos y digitales. La maquinaria real, cables, transistores, y circuitos, se llaman hardware; las instrucciones y los datos se llaman software. Todos los ordenadores de uso general requieren los siguientes componentes de hardware: Dispositivos de Entrada: Como su nombre lo indica, sirven para introducir datos (informacin) en el ordenador para su proceso. Ejemplo: teclado, ratn, scanner, etc. Dispositivos de Salida: Regresan los datos procesados que sirven de informacin al usuario. Los ms comunes son el monitor y la impresora. La Unidad Central de Procesamiento (CPU). Aunque generalmente al gabinete se le denomina CPU, el CPU es el microprocesador del ordenador y es el encargado de hacer todos los clculos y operaciones (es cerebro del ordenador). El CPU a su vez se divide en las siguientes partes: Unidad de Control: Coordina las actividades del ordenador y determina que operaciones se deben realizar y en qu orden; as mismo controla todo el proceso del ordenador. Unidad Aritmtica - Lgica: Realiza operaciones aritmticas y lgicas, tales como suma, resta, multiplicacin, divisin y comparaciones. La Memoria. Es una parte del ordenador en donde se almacenan los datos a procesar y la informacin resultante. Esta puede ser de dos tipos: Memoria Primaria: Es el espacio en que se almacenan los datos a procesar o calcular en este momento. Memoria Secundaria: Es el espacio en el que se almacena la informacin resultante para su futura consulta o manejo. Por ejemplo: discos duros, unidades de almacenamiento magntico (CD-DVD), etc.Ing. Jfferson Beltrn M. Msc. 3

Fundamentos de Programacin Algoritmos

Universidad Central del Ecuador

C.P.U. UNIDAD DE CONTROL DISPOSITIVOS DE ENTRADA UNIDAD DE ARITMTICA Y LGICA DISPOSITIVOS DE SALIDA

MEMORIA

Adems de estos componentes, muchos otros hacen posible que los componentes bsicos trabajen juntos eficientemente. Por ejemplo, cada ordenador requiere un bus que transmita datos de una parte del ordenador a otra. Generalmente, los ordenadores se pueden clasificar por tamao y potencia de la siguiente forma, aunque hoy un solapamiento considerable: Ordenador personal (personal computer): Un ordenador pequeo, para un slo usuario basado en un microprocesador. Adems del microprocesador, un ordenador personal tiene un teclado para introducir datos, un monitor para mostrar la informacin, y un dispositivo de almacenamiento para guardar datos. Estacin de trabajo (workstation): Una computadora de gran potencia para un slo usuario. Una estacin de trabajo es como un ordenador personal, pero tiene un microprocesador ms potente y un monitor de mejor calidad. Miniordenador (minicomputer): Un ordenador para varios usuarios capaz de soportar centenares de usuarios simultneamente. Chasis (mainframe): Una computadora multiusuario de gran potencia capaz de soportar miles de usuarios simultneamente. Superordenador (supercomputer): Un ordenador extremadamente rpido que puede realizar cientos de millones de instrucciones por segundo.

Ing. Jfferson Beltrn M. Msc.

4

Fundamentos de Programacin Algoritmos

Universidad Central del Ecuador

Nota: No se dar ms detalle sobre los ordenadores pues nos tomara todo el semestre y no es el objetivo del curso.

2. EL SOFTWARE. Las operaciones que debe realizar el hardware son especificadas con una lista de instrucciones, llamadas programas, o software. El software se divide en dos grandes grupos: Software del sistema, y Software de aplicaciones. El software del sistema es el conjunto de programas indispensables para que la mquina funcione. Estos programas son, bsicamente, el Sistema Operativo, los editores de texto (Word, Writer, etc), los compiladores de lenguajes de programacin y los utilitarios (Microsoft Office, OpenOffice, antivirus, navegadores, correo electrnico, etc). o El Sistema Operativo es el software bsico de una computadora, que provee una interfaz entre el resto de programas del ordenador, los dispositivos de hardware y el usuario. Dirige las operaciones globales de la computadora, instruye a la computadora para ejecutar otros programas, administra los recursos de la mquina, coordina el hardware y organiza archivos y directorios en dispositivos de almacenamiento de una forma sencilla y transparente para el usuario. Los principales sistemas operativos son: MS-DOS, Microsoft Windows, Unix, Mac OS, Solaris, Linux, Android, iOS, etc.

Ing. Jfferson Beltrn M. Msc.

5

Fundamentos de Programacin Algoritmos

Universidad Central del Ecuador

Los programas que realizan tareas concretas (por ejemplo facturacin, contabilidad, anlisis estadstico, gestin de negocios, sistemas bancarios, etc.) se denominan programas de aplicacin o software de aplicaciones.

3. SISTEMA BINARIO Y REPRESENTACIN BINARIA DE DATOS. 3.1. SISTEMAS DE NUMERACIN. Sistema de Numeracin es el conjunto de elementos o smbolos, operaciones y relaciones que, a travs de reglas propias, permite establecer el papel de tales relaciones y operaciones. El ms conocido y usado es el sistema de numeracin decimal, no es el nico y por el contrario los ms utilizados en los circuitos digitales son el octal, el hexadecimal y sobre todo el binario. Las computadoras suelen efectuar las operaciones aritmticas utilizando una representacin para los datos numricos basada en el sistema de numeracin de base dos conocido como binario natural o simplemente binario. Se utilizan los sistemas octal y hexadecimal (bases 8 y 16) respectivamente para obtener cdigos intermedios. A nivel electrnico, utilizar cdigos intermedios resulta ms favorable que transformar directamente decimales en binarios y al revs.

3.2. El SISTEMA BINARIO. El sistema de numeracin binario es el conjunto de elementos {0, 1} con las operaciones aritmticas (suma, resta, multiplicacin) y lgicas (OR, AND y NOT). Los elementos del conjunto o alfabeto binario se denominan cifras binarias o bits. El bit del extremo de la derecha es el bit menos significativo o de menor peso.Ing. Jfferson Beltrn M. Msc. 6

Fundamentos de Programacin Algoritmos

Universidad Central del Ecuador

El bit del extremo de la izquierda es el bit ms significativo o de mayor peso. 3.2.1. TRANSFORMACIN DE BINARIO A DECIMAL (ENTEROS). Consiste en multiplicar cada uno de los trminos por potencias crecientes de 2 a partir de la coma decimal y hacia la izquierda, y realizar la suma de las operaciones. Ejemplo: convertir a decimal 101011102

3.2.2. TRANSFORMACIN DE DECIMAL (ENTEROS) A BINARIO. Se va dividiendo la cantidad decimal por 2, apuntando los restos, hasta obtener cociente cero. El ltimo resto obtenido es el bit ms significativo (MSB) y el primero es el bit menos significativo (LSB).

Ing. Jfferson Beltrn M. Msc.

7

Fundamentos de Programacin Algoritmos

Universidad Central del Ecuador

3.2.3. OPERACIONES BSICAS Y LGICAS. Las operaciones ms bsicas con el sistema binario son la suma, la resta, la multiplicacin y la divisin. Estas operaciones son similares a las del sistema decimal, ya que el sistema binario tambin es un sistema posicional

Las operaciones binarias lgicas bsicas son OR, XOR, AND y NOT, de aqu surgen otras como la NOR, la NAND, la XOR y la XNOR.

Ing. Jfferson Beltrn M. Msc.

8

Fundamentos de Programacin Algoritmos

Universidad Central del Ecuador

La OR responde a la unin entre conjuntos, La AND a la interseccin y la NOT al complemento. A continuacin se muestra la tabla de verdad de las principales operaciones lgicas binarias.

3.3.

REPRESENTACIN BINARIA DE DATOS.

El bit es la unidad mnima de almacenamiento empleado en informtica, en cualquier dispositivo digital o en la teora de la informacin; con l podemos represe4ntar dos valores (0 y 1), los ordenadores trabajan internamente con dos niveles de voltaje: apagado (0) y encendido (1), por los que su sistema de numeracin natural es el sistema binario. Cuando se almacena la informacin no se trabaja a nivel de bit, sino que se trabaja a nivel de carcter (letras, caracteres especiales, nmeros, etc), que ocupa un byte, que se compone de 8 bits. El ordenador trabaja con agrupaciones de bits fciles de manipular y suelen ser mltiplos de 2, la base del sistema binario. Los tamaos ms comunes son: Octeto, carcter o byte. Es la agrupacin de 8 bits, es el tamao ms comn de informacin; con l se puede codificar un alfabeto completo (ASCII estndar). Palabra. Es el tamao de informacin manejada en paralelo por los componentes del sistema, como la memoria y los buses. Son comunes palabras de 8, 32, 64, 128, 256 y 512 bits, es decir, 1 byte, 4, 8, 16, 32 y 64 bytes. A mayor tamao de palabra, mayor es la precisin y la potencia de clculo del ordenador. Lo normal es utilizar los mltiplos del byte: kilobyte (kb), megabyte (Mb), gigabyte (Gb), etc.Ing. Jfferson Beltrn M. Msc. 9

Fundamentos de Programacin Algoritmos

Universidad Central del Ecuador

Cualquier informacin escrita, cualquier texto se puede representar por medio de caracteres. Los caracteres utilizados en informtica se suelen clasificar en cinco categoras: Caracteres alfabticos: letras maysculas y minsculas del alfabeto Caracteres numricos: constituidos por las diez cifras decimales. Caracteres especiales: smbolos ortogrficos y matemticos no incluidos en los grupos anteriores. Caracteres geomtricos y grficos: smbolos con los que se representan formas geomtricas o iconos elementales: Caracteres de control: representan rdenes de control, como salto de lnea (NL), comienzo de lnea (CR), sincronizacin de una transmisin (SYN), pitido (BEL), etc. Cuando se introducen textos en un ordenador a travs del perifrico que corresponda, los caracteres se codifican con un cdigo de entrada/salida, asociando a cada carcter una determinada combinacin de n bits. Los elementos del conjunto de caracteres, as como su nmero m, dependern del cdigo de E/S utilizado por el programa que interprete el texto introducido as como del perifrico que lo codifique. Si utilizamos n bits para codificar m smbolos, el nmero mnimo de bits necesarios para codificar un conjunto de smbolos depende del cardinal de este conjunto: Con 2 bits (n=2) podemos hacer 2^2=4 combinaciones, es decir, se podran codificar 4 smbolos distintos (m=4).Ing. Jfferson Beltrn M. Msc. 10

Fundamentos de Programacin Algoritmos

Universidad Central del Ecuador

Con 3 bits (n=3) seran 2^3=8 combinaciones, 8 smbolos (m=8), y as sucesivamente. Con n bits se podran codificar m=2^n smbolos distintos. Dicho de otra forma, para codificar m smbolos distintos se necesitan n bits, siendo n el menor nmero natural que verifica:

Los principales cdigos de E/S son: El cdigo ASCII (American Standard Code for Information Interchange) bsico utiliza 7 bits y es uno de los ms utilizados actualmente. El cdigo ASCII extendido usa 8 bits por carcter por lo que se tienen 256 caracteres diferentes. El problema es que los smbolos codificados son insuficientes para representar caracteres especiales de idiomas de diversas culturas como china, japonesa, coreana, etc. Unicode es un cdigo de E/S propuesto por un consorcio de empresas y entidades que trata de crear aplicaciones capaces de procesar texto de muy diferentes sistemas de escritura. Las caractersticas principales son: o Est reconocido como estndar ISO/IEC 10646. o Cubre la mayora de los lenguajes actuales. o A cada carcter se le asigna un nico cdigo. Todos los smbolos se representan con un nmero fijo de bits, 16 concretamente. o Cada carcter est formado por una cadena de 16 bits, pudiendo codificarse en total 216 = 65356 smbolos diferentes. o No contempla la codificacin de caracteres de control. o Incluye caracteres combinados, smbolos como , , etc. o No determina la forma o imagen concreta de cada carcter (fuente). Se puede tambin representar tambin sonidos, imgenes, videos, etc., y cualquier informacin que se almacene en un computador.

4. ALGORITMOS Y ELEMENTOS QUE LO CONFORMAN. Un algoritmo es un mtodo para resolver un problema mediante una serie de pasos precisos, definidos y finitos. Es un conjunto de reglas para resolver determinado problema describiendo de forma lgica su solucin. Cada una de las acciones de que consta un algoritmo es denominada sentencia (o instrucciones) y stas deben ser escritas en trminos de cierto lenguaje comprensible para el computador, que es el lenguaje de programacin.Ing. Jfferson Beltrn M. Msc. 11

Fundamentos de Programacin Algoritmos

Universidad Central del Ecuador

4.1.

CARACTERSTICAS DE LOS ALGORITMOS.

Los criterios que debe satisfacer un algoritmo (caractersticas) son: o Entrada. Son cero o ms parmetros (datos) los cuales son externamente sustituidas. o Salida. Al menos un dato es producido. o Exactitud/precisin. Cada instruccin debe ser clara y sin ambigedad (hacen lo que deben hacer). o Finito. Terminar despus de un nmero finito de pasos. o Eficiente. Cada instruccin puede ser verificada por una persona con una prueba manual que satisfaga los requerimientos planteados por el problema. o Repetible. Dada una misma entrada, siempre debe dar la misma salida.

4.2.

PARTES DE UN ALGORITMO.

Los algoritmos se construyen utilizando elementos simples para que el lenguaje se parezca ms a los lenguajes de programacin de alto nivel. Entre ellos se tienen: 4.2.1. TIPOS DE DATOS. Las diferencias piezas de informacin con las que un programa trabaja se conocen colectivamente como datos. Todos los datos tienen un tipo asociado con ellos, que determina la naturaleza del conjunto de valores que aquel puede tomar. Por ejemplo, un dato puede ser un simple caracter, tal como B, un valor entero como 36, un nmero real como 5.75, una cadena de caracteres como Hola Mundo, un valor de verdad como Verdadero o Falso, entre otros. 4.2.2. CONSTANTES Y VARIABLES. Todos los programas necesitan almacenar datos temporalmente para poder procesarlos y generar as la salida esperada. Estos datos, a grandes rasgos, pueden clasificarse en dos grupos: A un dato cuyo valor no puede cambiar (se mantiene constante) durante la ejecucin de un programa se lo denomina Constante. Las constantes deben ser declaradas y asignadas un valor antes de su utilizacin. Por su parte, los datos de un programa cuyo valor puede cambiar durante la ejecucin del mismo se conocen como Variables. Una variable es, enIng. Jfferson Beltrn M. Msc. 12

Fundamentos de Programacin Algoritmos

Universidad Central del Ecuador

realidad, una posicin de memoria con nombre (Nombre de la Variable), y que contiene un valor (Valor de la Variable). Las variables se asemejan a cajas o buzones, donde cada una de las cuales tiene un nmero y contiene un valor. Existen tantos tipos de variables como tipos de datos diferentes. 4.2.3. SENTENCIAS O INSTRUCCIONES. Las sentencias describen acciones algortmicas que pueden ser ejecutadas. En general, las sentencias se clasifican en ejecutables (especifican, por ejemplo, operaciones de clculos aritmticos y entradas/salidas de datos) y no ejecutables (no realizan acciones concretas ni afectan a la ejecucin del programa, sino que ayudan a su legibilidad) como la declaracin de variables. Las sentencias se clasifican, segn su tipo y nmero, en: Sentencias Simples: Son sentencias que no contiene ninguna otra sentencia. El ejemplo ms tpico de sentencia simple es la sentencia de asignacin, la cual se utiliza para almacenar un valor en una variable. La operacin de asignacin se suele representar en pseudocdigo con el smbolo , para denotar que el valor situado a su derecha se almacena en la variable situada a la izquierda: o variable Valor o Ejemplo: suma0 (la asignacin slo ser vlida si el valor es vlido para el tipo de dato definido para la variable). Otros ejemplos de sentencias simples son las de entrada/salida. Sentencias estructuradas: Son sentencias compuestas de otras sentencias que se ejecutan en secuencia, condicionalmente o repetidamente. 4.2.4. OPERADORES Y EXPRESIONES. Las variables y constantes se pueden procesar utilizando operaciones y funciones adecuadas para sus tipos. Se denomina expresin a un conjunto de variables y / o constantes unidas por operadores. Un operador es un smbolo o palabra que significa que se ha de realizar cierta accin entre uno o dos valores que son llamados operandos.Ing. Jfferson Beltrn M. Msc. 13

Fundamentos de Programacin Algoritmos

Universidad Central del Ecuador

Si en una expresin existe ms de una operacin debe tenerse en cuenta que existen una serie de reglas para definir la prioridad en la que stas se realizarn. Por este motivo es que se suelen utilizar los parntesis para establecer la prioridad de aplicacin de los operandos. Existen diversos tipos de operadores, por ejemplo: Aritmticos: Son apropiados nicamente para tipos numricos. Ejemplos de operadores aritmticos son + , - , * y / , etc., los cuales permiten obtener el resultado de la suma, la resta, la multiplicacin y la divisin de dos datos respectivamente. Su resultado es un nmero. De relacin: Los operadores de relacin (o relacionales) se utilizan para expresar condiciones y describen una relacin entre dos valores. Ejemplos de operadores relacionales son < (Menor que), > (Mayor que), = (Igual a) y (Distinto a), etc. Su resultado es un valor de verdad. Los operadores aritmticos y los relacionales se utilizan de la siguiente forma: variable o constante operador variable o constante. Por ejemplo: a + b, c/d, a