Académique Documents
Professionnel Documents
Culture Documents
FP
1Introduccin......................................................................................................................2 2Datos, Variables y Constantes..........................................................................................3 2.1Tipos de datos bsicos...............................................................................................4 2.2Expresiones y asignacin..........................................................................................4 2.2.1Operadores..........................................................................................................5 2.2.2Funciones............................................................................................................6 2.2.3Restricciones de asignacin................................................................................6 2.2.4Entrada y salida de datos....................................................................................7 3Paradigma de programacin estructurado........................................................................8 3.1Instrucciones..............................................................................................................8 3.1.1Instruccin nula..................................................................................................8 3.1.2Composicin de instrucciones............................................................................8 3.2Estructura secuencial.................................................................................................8 3.3Estructura de decisin................................................................................................8 3.4Estructura iterativa...................................................................................................11 3.4.1Composicin iterativa MIENTRAS.................................................................11 3.4.2Composicin iterativa REPETIR.....................................................................12 3.4.3Composicin iterativa DESDE.........................................................................12 3.4.4Equivalencia entre composiciones iterativas....................................................13 4Otras representaciones algortmicas...............................................................................13 4.1Diagramas N-S Nassi Schederman.......................................................................13 4.2Diagramas de flujo o flujogramas...........................................................................15 5Ejemplos de algoritmos tpicos......................................................................................17 5.1.1Clculo del mximo comn divisor de un nmero...........................................17 5.1.2Clculo del mximo comn mltiplo de un nmero........................................17 5.1.3Clculo de la potencia de un nmero elevado a otro........................................17 5.1.4Clculo de las areas de varias figuras...............................................................18 5.1.5Lectura de un nmero en una determinada base...............................................19
FP
1 Introduccin Los computadores han sido ideados para procesar informacin de diverso tipo de forma automatizada. La idea es que un computador similar a una mquina genrica. El programador simplemente cambia el programa o software y el computador empieza a hacer algo totalmente nuevo.
Figura 1: Esquema bsico de una computadora. Componentes: Hardware: parte tangible o visible. Software: conjunto de programas para procesar la informacin (es lo que permite cambiar el proceso de datos).
Programa: conjunto de instrucciones codificadas en un lenguaje entendible para la mquina (binario). Para realizar un programa se deben dar los siguientes pasos: 1. Entender el problema a resolver. 2. Idear un algoritmo y representarlo en notacin algortmica. 3. Codificar el algoritmo en un lenguaje de programacin para obtener el cdigo fuente del programa. 4. Mediante un proceso automtico con un Compilador y un Linkador se traduce al lenguaje que entiende el computador. Entre las definiciones de algoritmo se pueden encontrar las siguientes Conjunto de instrucciones para realizar una tarea que se expresan en notacin algortmica. Frmula para resolver un problema. Conjunto de acciones en secuencia que ejecutadas en un determinado orden resuelven un problema.
FP
Caractersticas de los algoritmos: Precisin: Es una secuencia de pasos que deben estar totalmente definidos. Bien definido: Debe contemplar todos los detalles. Tiene que ser finito (Es decir, en algn momento se termina).
Los algoritmos no se representan en lenguajes de programacin, se representan con notacin algortmica. Las notaciones algortmicas que se estudian en este curso son las siguientes: Pseudocdigo. Diagramas N-S o Nassi-Schederman. Diagramas de flujo o flujogramas.
2 Datos, Variables y Constantes Los ordenadores manejan la informacin en base a datos que se operan en sus circuitos. Segn la utilizacin de los datos, estos se dividen en: Variables: datos cuyo valor vara a lo largo de la ejecucin del algoritmo. Constantes: datos cuyo valor no cambia a lo largo de la ejecucin del programa.
Las variables y las constantes se definen por un identificador (un nombre que las identifica) y un tipo (descripcin de los valores que mantienen).
FP
ALGORITMO reaCrculo CONSTANTES PI: Real = 3,1416 VARIABLES radio: Real resultado: Real INICIO LEER( radio ) resultado PI * radio * radio ESCRIBIR( resultado ) FIN_ALGORITMO
Los lmites de los nmeros enteros que se pueden representar con este tipo de dato varan directamente segn el hardware, es decir, el tamao de palabra, del computador. En computadores de la dcada de los 90, con un tamao de palabra de 16 bits, se podan representar enteros de -32768 a 32767, mientras que en hardware de 32 bits el rango se ampla geomtricamente, abarcando desde los -2000 millones hasta los 2000 millones.
Los nmeros reales abarcan un gran abanico de posibilidades, estando ms limitados en cuanto a precisin que en cuanto a mrgenes totales.
Los caracteres forman las cadenas de texto, es decir texto que est formado por secuencias de caracteres. Internamente, un carcter bsico es un nmero que abarca desde 0 a 255.
Las cadenas de caracteres estn formadas por caracteres colocados secuencialmente en memoria, uno detrs de otro. Existen varias formas de indicar el nmero de caracteres almacenado: la que abander en su da el lenguaje de programacin Pascal, con una primera posicin que indicaba el tamao de la cadena, o la ms popular hoy en da, del lenguaje de programacin C, que cierra la secuencia de caracteres con un carcter de valor 0 ('\0').
Los valores lgicos son retornados por expresiones booleanas, de manera que puedan concatenarse todas juntas y formar expresiones booleanas complejas. Pero tambin es normalmente necesario almacenar estos valores para ser empleados ms tarde.
FP
La asignacin es la operacin por medio de la cual una variable toma el valor resultado de la evaluacin de una expresin. Se representa mediante el smbolo . Ejemplo:
a 3.14; a a + 5;
Toda la computacin y los lenguajes de programacin ms empleados (imperativos) giran en torno a esta operacin. 2.2.1 OPERADORES Los operadores permiten combinar los datos para realizar los clculos necesarios para llevar a cabo la accin que se desea. Los operadores pueden ser de dos tipos: Unarios: se aplican slo sobre un dato, por ejemplo: negacin lgica: a Binarios: se aplican sobre dos datos, por ejemplo: suma 5 + a siendo a Entero o Real. Operadores de valores lgicos: Negacin lgica: x, se indica como NOT( x ) NO( x ). Operador Y lgico: se indica como x AND y, o tambin x Y y. Esta expresin devuelve verdadero cuando x e y son verdaderos. Operador O lgico: se indica como x OR y, o tambin x O y. Esta expresin slo devuelve falso cuando ambas son falsas.
Operadores aritmticos: Se aplican sobre Enteros, y Reales, permitiendo obtener valores numricos como resultado. suma aritmtica: x + y resta aritmtica: x - y multiplicacin: x * y divisin real: x / y divisin entera: x / y (cuando x e y son de tipo Entero) x % y: resto de la divisin entera
Operadores relacionales: Relacionan valores numricos para obtener valores lgicos: x > y : x mayor que y. x < y : x menor que y. x >= y : x mayor o igual que y. x <= y : x menor o igual que y. x = y : x igual a y. x <> y : x distinto de y.
FP
2.2.2 FUNCIONES Las funciones son identificadores de operaciones que no se pueden representar con operadores. Para invocar a una funcin se coloca su nombre, y entre parntesis los datos sobre los que se aplica.
NOMBRE abs( x ) sen( x ) cos( x ) tan( x ) arcsen( x ) arccos( x ) arctan( x ) ln( x ) log( x ) sqrt(x)
SIGNIFICADO Valor absoluto Z N o R R Seno R R (Radianes) Coseno R R (Radianes) Tangente R R (Radianes) Arcoseno R R (Radianes) Arcoseno R R (Radianes) Arcotangente R R (Radianes) Logaritmo Neperiano Logaritmo decimal (base 10) Raiz cuadrada
En ciertas ocasiones puede ocurrir que no se disponga de una funcin que realice un determinado clculo necesario. En ese caso deben buscarse las propiedades matemticas que permitan realizar la funcionalidad deseada mediante la combinacin de funciones y operadores existentes. Un caso concreto es el caso del log 2 x que debe ser calculado mediante la propiedad siguiente: log b (a ) = 2.2.3 RESTRICCIONES DE ASIGNACIN En una asignacin hay una serie de reglas que rigen el clculo del efecto de la operacin. A continuacin se numeran las ms importantes: En la parte izquierda solo puede existir una variable. La variable pierde su antiguo valor. La ejecucin de una instruccin de asignacin comienza con la evaluacin de la expresin de la derecha, una vez evaluada se hace efectiva la asignacin. Esto implica que si la variable asignada aparece a la derecha se usar su antiguo valor para evaluar la expresin. log x ( a) log x (b)
FP
ALGORITMO EjecucinAsignacin CONSTANTES X: Entero = 2 Y: Entero = 5 VARIABLES Z: Entero INICIO Z y + x Z z + z ESCRIBIR( z ) FIN_ALGORITMO
El tipo de dato al que pertenece el resultado de la evaluacin de la expresin (parte derecha) debe ser el mismo que el de la derecha de la variable (parte izquierda).
2.2.4 ENTRADA Y SALIDA DE DATOS Se utilizan las siguientes instrucciones para publicar informacin en la pantalla, y obtener informacin por el teclado, respectivamente.
Ntese que, cuando se pide informacin por el teclado, es conveniente mostrar primero un mensaje que indique qu es lo que hay que introducir (sobre todo si se tiene en cuenta la alternativa, una pantalla vaca con un cursor parpadeante).
ALGORITMO reaCrculo CONSTANTES PI: Real = 3,1416 VARIABLES radio: Real resultado: Real INICIO ESCRIBIR( Introduzca el radio: ); LEER( radio ) resultado PI * radio * radio ESCRIBIR( El rea es: , resultado ) FIN_ALGORITMO
FP
3 Paradigma de programacin estructurado El paradigma de programacin estructurado naci en los aos 60, desde que en 1954 John Backus en IBM comenz el desarrollo de Fortran, un lenguaje de programacin que hoy est prcticamente en desuso. El testigo lo recogieron en su momento lenguajes de programacin como Ada, o Pascal, y despus lenguajes de programacin modernos como C.
3.1 INSTRUCCIONES
Una instruccin es cada uno de los pasos que da un algoritmo para llegar a un resultado. El programador debe tratar de reducir, siempre que sea posible, el nmero de INSTRUCCIONES y de DATOS empleado, buscando eficiencia. 3.1.1 INSTRUCCIN NULA Instruccin nula es aquella instruccin que no hace nada. Se denota por SEGUIR. Esta instruccin, no se colocar nunca en pseudocdigo pero ser empleada en especificacin de software para describir formalmente algunas construcciones algortmicas. 3.1.2 COMPOSICIN DE INSTRUCCIONES Composicin de instrucciones es la forma de agrupar o combinar instrucciones de tal manera que se obtenga el comportamiento deseado. As es la composicin para un autor de msica.
FP
ALGORITMO MayorEdad CONSTANTES MayoriaEdad: Entero = 18 VARIABLES edad: Natural INICIO ESCRIBIR( Introduzca una edad: );LEER( edad ) SI edad > MayoriaEdad ESCRIBIR( Mayor de edad ) FINSI FIN_ALGORITMO
5.2.2 Composicin alternativa Permite especificar la ejecucin de una composicin de instrucciones si se cumple la condicin u otra distinta si no se cumple la condicin. Su sintaxis es la siguiente:
SI SINO expresin_condicional composicin_de_instrucciones1 composicin_de_instrucciones2
FINSI
5.2.3 Composicin selectiva Instruccin que permite discriminar entre la ejecucin de varias composiciones de instrucciones en funcin del valor de una expresin generalmente numrica. Su sintaxis es la siguiente:
CASO expresin SEA valor1: composicin1 valor2: composicin2 valor3: INICIO composicin3 FIN .... valorN: composicinN [SINO:composicin_defecto] FIN_CASO
FP
ALGORITMO Mes VARIABLES mes: Entero INICIO ESCRIBIR( Introduzca nmero de mes: ); LEER( mes ) CASO mes SEA 1: ESCRIBIR( Enero. ) 2: ESCRIBIR( Febrero. ) 3: ESCRIBIR( Marzo. ) 4: ESCRIBIR( Abril. ) 5: ESCRIBIR( Mayo. ) 6: ESCRIBIR( Junio. ) 7: ESCRIBIR( Julio. ) 8: ESCRIBIR( Agosto. ) 9: ESCRIBIR( Septiembre. ) 10: ESCRIBIR( Octubre. ) 11: ESCRIBIR( Noviembre. ) 12: ESCRIBIR( Diciembre. ) SINO: ESCRIBIR( ERROR: No existe tal mes. ) FIN_CASO FIN_ALGORITMO
En caso de que se emplee una composicin secuencial para cada caso puede aplicarse el siguiente esquema;
CASO expresin SEA 1: INICIO instruccin1 instruccin2 ... FIN FIN_CASO
5.2.4 Equivalencias de estructuras de decisin Las estructuras de decisin tienen varias equivalencias, que es interesante tener en cuenta aunque finalmente nunca se usen en un algoritmo.
10
FP
SI C
I FIN_SI
SI C SINO
SI C SINO
I1
I2 FIN_SI
La ltima de ellas, sin embargo, s es posible que se utilice en la vida real. La gran mayora de lenguajes de programacin limitan el uso de la estructura de decisin alternativa o mltiple a que la expresin de control sea de tipo Entero, no permitindose el tipo Real ni Cadena, de manera que es necesario realizar la transformacin dada.
11
FP
FIN_ALGORITMO
3.4.2 COMPOSICIN ITERATIVA REPETIR Es muy similar a la anterior, con la salvedad de que la expresin lgica no es una condicin de permanencia sino una condicin de salida y adems el cuerpo se ejecuta como mnimo una vez. Su sintaxis es la siguiente:
REPETIR composicin HASTA expresin_condicional
3.4.3 COMPOSICIN ITERATIVA DESDE Permite ejecutar una composicin para un conjunto de valores conocido. Para ello incorpora una variable llamada vcb (variable controladora del bucle, de tipo entero), de la cual se puede conocer su valor durante la ejecucin del bucle y as saber el nmero de vuelta actual. Su sintaxis es la siguiente:
DESDE vcb Vi HASTA Vf [INCREMENTO delta] composicin FIN_DESDE
Donde: vcb: variable controladora del bucle vi: valor inicial vf: valor final delta: cuanto aumenta o disminuye vcb por pasada
ALGORITMO TablaMultiplicar VARIABLES i: Entero numero: Entero INICIO LEER( numero ); DESDE i 0 HASTA 10 ESCRIBIR( numero, x , i, =, numero * vcb ) FIN_DESDE FIN_ALGORITMO
Ejemplo:
12
FP
3.4.4 EQUIVALENCIA ENTRE COMPOSICIONES ITERATIVAS La composicin iterativa MIENTRAS puede representar a cualquier otra composicin iterativa. Por ejemplo, una composicin DESDE:
DESDE vcb Vi HASTA Vf INCREMENTO delta composicin FIN_DESDE
En el caso de contar hacia atrs, simplemente sera necesario cambiar el signo + y el operador relacional de la condicin de permanencia. En el caso de la composicin REPETIR,
REPETIR I HASTA expresin_condicional
4 Otras representaciones algortmicas Hasta aqu hemos visto la notacin algortmica conocida como pseudocdigo. Pero adems de, esta existen ms: Pseudocdigo Diagramas N-S o Nassi Schederman Diagramas de flujo o flujogramas. representacin algortmica no estructurada. representacin algortmica estructurada
2. CONDICIONAL
13
FP
3. MIENTRAS
LEER( x ) resultado 0 ix-1 MIENTRAS x > 1 resultado resultado * i ii-1
4. DESDE
LEER( x ) resultado 0 DESDE i x - 1 HASTA 1 resultado resultado * i
5. REPETIR
resultado resultado * i ii-1 REPETIR HASTA i = 0
FIN 14
FP
CONDICIN
EXPRESIN
INICIO
FIN
15
FP
Ejemplo:
INICIO
CUENTA 0
LEER (NUMERO)
NO
NUMERO = 0
SI
ESCRIBIR (CUENTA)
FIN
16
FP
5 Ejemplos de algoritmos tpicos 5.1.1 CLCULO DEL MXIMO COMN DIVISOR DE UN NMERO
ALGORITMO MCD { Este algoritmo permite calcular el MCD de dos nmeros } VARIABLES a, b: Entero INICIO LEER( a, b ) MIENTRAS a <> b SI a > b a a b ; SINO b b - a ; FIN_SI FIN_MIENTRAS ESCRIBIR( El mcd es: , a ) FIN_ALGORITMO
17
FP
FIN_ALGORITMO
18
FP
19