El primer curso de programacin de un currculo de ciencias e informtica, es
probablemente el ms importante para la mayora de los estudiantes ,el conocimiento inicial eficiente de conceptos bsicos tales como algoritmo y estructura de datos ,as como el modo de aprender a resolver problemas mediante computadora ,suele ser vital debido a la trascendencia que un aprendizaje gradual y correcto supone su carrera y sobre todo para los primeros curso en la universidad.
El lenguaje bajo el cual se implementan las soluciones de problemas es C++ por su idoneidad para las aplicaciones cientficas. Este lenguaje permite que el estudiante se discipline en el manejo de sintaxis y estructura de un programa y se fundamente para el manejo de otros lenguajes. DEFINICIN DE ALGORITMO En programacin, un algoritmo establece, de manera genrica e informal, la secuencia de pasos o acciones que resuelve un determinado problema. Los algoritmos constituyen la documentacin principal que se necesita para poder iniciar la fase de codificacin y, para representarlos, se utiliza, fundamentalmente, dos tipos de notacin: pseudocdigo y diagramas de flujo. El diseo de un algoritmo es independiente del lenguaje que despus se vaya a utilizar para codificarlo.
CARACTERISTICAS DE UN ALGORITMO.
Un algoritmo tiene tres caractersticas esenciales a saber: a. Preciso. Debe indicar el orden de realizacin de cada paso. b. Definido. Se deben obtener los mismos resultados siempre que se ejecute. c. Finito. Debe terminar en algn punto.
Ejercicio.1. Hacer un algo que permita sacar dinero de un cajero electrnico.
2. Hacer un algoritmo que te permita matricular en u.( para cada caso solo escribe el conjunto de pasos en orden sucesivo para terminar cada accin).
TIPOS DE DATOS.
Datos de Tipo Real. Qu es un dato de tipo real? Un dato de tipo real es aquel que puede tomar por valor un nmero perteneciente al conjunto de los nmeros reales (R), el cual est formado por los nmeros racionales e irracionales.
Ejemplo: El peso de una persona (en kilogramos) y su altura (en centmetros), son datos que pueden considerarse de tipo real.
Peso.....: 75,3 Altura...: 172,7
R es un conjunto infinito de nmeros reales, y como el ordenador no puede representarlos todos, un dato de tipo real slo puede tomar por valor un nmero perteneciente a un subconjunto de R. Los valores de dicho subconjunto varan segn las caractersticas de cada ordenador y del compilador que se utilice. En pseudocdigo, para indicar que un dato es de tipo real se utiliza la palabra reservada: Tambin se les conoce como tipos de datos primitivos, bsicos o fundamentales.
Qu es un dato de tipo lgico?En programacin, un dato de tipo lgico es aquel que puede tomar por valor slo uno de los dos siguientes:
{Verdadero, falso}
Los valores "verdadero" y "falso" son contrapuestos, de manera que, un dato de tipo lgico siempre est asociado a que algo se cumpla o no se cumpla.
Ejemplo: El estado de una barrera de paso de trenes es un dato que puede considerarse de tipo lgico, por ejemplo, asociando "verdadero" a que est subida y "falso" a que est bajada.
Estado...: falso (indica que la barrera est bajada)
En pseudocdigo, para indicar que un dato es de tipo lgico se utiliza la palabra reservada: lgico.
Datos de Tipo Carcter Qu es un dato de tipo carcter?
Un dato de tipo carcter es aquel que puede tomar por valor un carcter perteneciente al conjunto de los caracteres que puede representar el ordenador.
En pseudocdigo, el valor de un dato de tipo carcter se puede representar entre comillas simples (') o dobles ("). Pero, en este curso de diseo de algoritmos, se van a utilizar solamente las comillas simples (al igual que se hace en lenguaje C).
Ejemplo: En un examen con preguntas en las que hay que seleccionar la respuesta correcta entre varias opciones dadas (a, b, c, d, e), la respuesta correcta de cada una de las preguntas es un dato de tipo carcter.
Respuesta correcta a la pregunta 3...: 'c'
Datos de Tipo Cadena Qu es un dato de tipo cadena?.
Un dato de tipo cadena es aquel que puede tomar por valor una secuencia de caracteres. En pseudocdigo, el valor de un dato de tipo cadena se puede representar entre comillas simples (') o dobles ("). Sin embargo, en este curso de diseo de algoritmos, se van a utilizar solamente las comillas dobles (al igual que se hace en lenguaje C).
Ejemplo: El ttulo de un libro y el nombre de su autor, son datos de tipo cadena.
Ttulo...: "La Odisea" (cadena de 9 caracteres) Autor....: "Homero" (cadena de 6 caracteres)
Obsrvese que, en la cadena "La Odisea", el carcter espacio en blanco tambin se cuenta. En pseudocdigo, para indicar que un dato es de tipo cadena se utiliza la palabra reservada: cadena.
IDENTIFICADORES.
Qu son los identificadores?
Palabras Reservadas La mayora de los elementos de un algoritmo escrito en pseudocdigo se diferencian entre s por su nombre. Por ejemplo, los tipos de datos bsicos se nombran como:
entero, real, lgico y caracter
Cada uno de ellos es un identificador. Un identificador es el nombre que se le da a un elemento de un algoritmo (o programa). Por ejemplo, el tipo de dato entero hace referencia a un tipo de dato que es distinto a todos los dems tipos de datos, es decir, los valores que puede tomar un dato de tipo entero, no son los mismos que los que puede tomar un dato de otro tipo.
Los identificadores entero, real, lgico y carcter estn predefinidos, forman parte del lenguaje algortmico. No obstante, en un algoritmo tambin pueden existir identificadores definidos por el programador. Por ejemplo, un algoritmo puede utilizar variables y constantes definidas por el programador. Adems, los algoritmos tambin se deben nombrar mediante un identificador.
En pseudocdigo, a la hora de asignar un nombre a un elemento de un algoritmo, se debe de tener en cuenta que todo identificador debe cumplir unas reglas de sintaxis. Para ello, en nuestro pseudocdigo CEE (C en Espaol), vamos a seguir las mismas reglas de sintaxis que existen en lenguaje C:
1. Consta de uno o ms caracteres. 2. El primer carcter debe ser una letra, mientras que, todos los dems pueden ser letras, dgitos . Las letras pueden ser minsculas o maysculas del alfabeto. As pues, no est permitido el uso de las letras '' y ''.
3. No pueden existir dos identificadores iguales, es decir, dos elementos de un algoritmo no pueden nombrarse de la misma forma. Lo cual no quiere decir que un identificador no pueda aparecer ms de una vez en un algoritmo. De la segunda regla se deduce que un identificador no puede contener caracteres especiales. Es importante resaltar que las vocales no pueden llevar tilde ni diresis.
Ejemplo 1: Algunos identificadores vlidos que pueden ser definidos por el programador son:
Numero dia_del_mes PINGUINO1 ciudad Z
Ejemplo 2: Los siguientes identificadores no son vlidos por incumplir la segunda regla:
numero123 _DA numero* lugar de nacimiento ao
Ejemplo 3: Los siguientes identificadores no pueden ser definidos por el programador:
entero caracter
entero y caracter son identificadores predefinidos (ya existen), por tanto, no pueden ser definidos por el programador, en cumplimiento de la tercera regla.
Los identificadores son sensibles a minsculas y maysculas.
Ejemplo 4: Mes y mes son considerados identificadores distintos.
Por ltimo, hay que decir que, es aconsejable que los identificadores tengan un significado afn a lo que representan.
Palabras Reservadas (en programacin)
Qu son las palabras reservadas? Las palabras reservadas son identificadores predefinidos (tienen un significado especial). En todos los lenguajes de programacin existe un conjunto de palabras reservadas. Por el momento, en pseudocdigo, se han estudiado las siguientes:
cadena, carcter, entero, falso, lgico, real y verdadero
Constantes de Tipo Entero.
Qu es una constante de tipo entero? En programacin, una constante de tipo entero es aquella que representa a un valor (dato) perteneciente al subconjunto de los Z representable por el ordenador.
Ejemplo 1: Suponiendo que el ordenador (utilizando diecisis bits) pueda representar, en Complemento a 2, el siguiente conjunto de valores enteros:
Algunos ejemplos de constantes de tipo entero son:
-32000 0 000077 (Los ceros a la izquierda no son significativos) +1111
Obsrvese que, adems de los caracteres numricos, dgitos del (0) al (9), tambin se puede hacer uso de los caracteres especiales (+) y (-) para indicar el signo de un nmero entero, el cual es positivo por omisin. Sin embargo, por ejemplo en lenguaje C, es incorrecto usar los caracteres coma (,) y/o punto (.) para expresar constantes de tipo entero.
Ejemplo 2: Por tanto, es incorrecto escribir:
-32.000 0,0 +1,111.00
Ejemplo 3: Otros ejemplos incorrectos de constantes de tipo entero son:
++111 (No se puede duplicar el signo)
38000 (No pertenece al subconjunto de Z representable por el ordenador)
Constantes de Tipo Real Qu es una constante de tipo real? En programacin, una constante de tipo real es aquella que representa a un valor (dato) perteneciente al subconjunto de R representable por el ordenador.
Ejemplo 1: Algunos ejemplos son:
8.12 000.333 (Los ceros a la izquierda no son significativos) +1111.809 -3200. (Tambin se puede escribir -3200.0) .56 (Tambin se puede escribir 0.56)
Obsrvese que, adems de los caracteres numricos, dgitos del (0) al (9), tambin se puede hacer uso de los caracteres especiales (+) y (-) para indicar el signo de un nmero real. Adems, en lenguaje C y, por tanto, tambin en nuestro pseudocdigo CEE, obligatoriamente debe aparecer el carcter punto (.), o el carcter (e) o (E) seguido del exponente, del cual tambin puede indicarse su signo con los caracteres (+) y (-). Los signos del exponente y del nmero en s, por omisin, son positivos.
Ejemplo 2: Las siguientes constantes de tipo real estn expresadas correctamente:
-77e-3 +1111e+2 2000E+2 3040e2
Una constante de tipo real tambin se puede expresar con el carcter punto (.) y el exponente al mismo tiempo.
Ejemplo 3: Algunos ejemplos son:
-50.50e-4 400.e-3 +65.65E+2 .7e2
El exponente tiene la funcin de desplazar la posicin del punto decimal hacia la derecha si es positivo o, hacia la izquierda si es negativo.
Ejemplo 4: As pues, las siguientes constantes de tipo real representan al mismo valor:
0.004E+3 4. .4e1 +400.00e-2 4000E-3
Ejemplo 5: Algunos ejemplos de constantes de tipo real incorrectas son:
-200 (No aparece el punto ni el exponente) -20,0 (No puede aparecer la coma) --111. (No se puede duplicar el signo) -111.. (No se puede duplicar el punto) -111.11. (No puede aparecer ms de un punto) +22e (Despus del carcter (e) o (E) se debe escribir el exponente) +22ee6 (No se puede duplicar el carcter (e) o (E)) +22e 6 (No se puede escribir el carcter espacio en blanco) 38E-2.2 (El exponente debe ser una cantidad entera)
Constantes de Tipo Lgico Qu es una constante de tipo lgico? En programacin, una constante de tipo lgico es aquella que representa a un valor (dato) perteneciente al conjunto:
{ verdadero, falso }
verdadero y falso son palabras reservadas (identificadores) que, en s mismas, representan a constantes de tipo lgico. En consecuencia, aunque se pueden definir constantes de tipo lgico, no suele ser habitual declarar constantes de este tipo de dato.
Ejemplo:
ESTADO = verdadero INTERRUPTOR = falso
Constantes de Tipo Carcter Qu es una constante de tipo carcter? En programacin, una constante de tipo carcter es aquella que representa a un valor (dato) perteneciente al conjunto de caracteres que puede representar el ordenador.
Ejemplo 1: Las siguientes constantes de tipo carcter estn expresadas por su valor:
'a' 'T' '5' '+' '.'
Ejemplo 2: Algunos ejemplos de declaracin de constantes de tipo carcter son:
LETRA = 's' NUMERO = '9' SIGNO = '-' ESPACIO_EN_BLANCO = ' '
Ejemplo 3: En lenguaje C, y en nuestro pseudocdigo CEE, para representar el carcter comilla simple ('), se debe anteponer el carcter barra invertida (\).
COMILLA_SIMPLE = '\''
Constantes de Tipo Cadena Qu es una constante de tipo cadena? Una constante de tipo cadena es aquella que representa a un valor (dato) de tipo cadena, es decir, representa a una secuencia de caracteres.
Ejemplo 1: Las siguientes constantes de tipo cadena estn expresadas por su valor:
"Alejandro" "Lucerna" "Barcelona 2000"
Ejemplo 2: Algunos ejemplos de declaracin de constantes de tipo cadena son:
NOMBRE = "Alejandro" CIUDAD = "Lucerna" OLIMPIADAS = "Barcelona 2000"
Ejemplo 3: En lenguaje C, y en nuestro pseudocdigo CEE, para representar el carcter comilla doble (") dentro de una cadena, se debe anteponer el carcter barra invertida (\).
CIUDAD = "7 de julio \"San Fermn\""
Expresiones Aritmticas Qu tipos de expresiones aritmticas existen en programacin?
Prioridad de los Operadores Aritmticos De la evaluacin de una expresin aritmtica siempre se obtiene un valor de tipo entero o real. En las expresiones aritmticas se pueden utilizar los siguientes operadores aritmticos:
Clasificacin de los operadores aritmticos en pseudocdigo.
Ejemplo 1: El operador multiplicacin (*) realiza la multiplicacin de dos operandos numricos.
5 * 2 3.1 * 2.5
Los resultados son:
10 (valor entero) 7.75 (valor real)
Ejemplo 2: El operador potencia (**) eleva el operando de la izquierda (nmero base) al operando de la derecha (potencia o exponente).
5 ** 2 3.1 ** 2.5
De estas expresiones, se obtienen los valores:
25 (valor entero) 16.920151 (valor real)
Ejemplo 3: El operador divisin real (/) realiza la divisin real entre dos operandos numricos.
5 / 2 3.1 / 2.5
Sus resultados son:
2.5 (valor real) 1.24 (valor real)
Ejemplo 4: El operador divisin entera (div) realiza la divisin entera entre dos operandos numricos enteros.
5 div 2 3.1 div 2.5
El operador divisin entera (div) no puede operar con operandos numricos reales. Por tanto, al evaluar las expresiones de este ejemplo se obtienen los valores:
2 (valor entero) ERROR (no se puede evaluar; ambos operandos deben ser valores enteros)
Ejemplo 5: El operador mdulo (mod) realiza la divisin entera entre dos operandos numricos enteros, devolviendo el resto de la misma.
5 mod 2 3.1 mod 2.5
Al igual que el operador divisin entera (div), el operador mdulo (mod) tampoco puede operar con operandos numricos reales. De modo que, en este caso, los resultados son:
1 (valor entero) ERROR (no se puede evaluar; ambos operandos deben ser valores enteros)
Ejemplo 6: El operador signo menos (-) cambia el signo de un operando numrico. As, de las expresiones
Prioridad de los Operadores Aritmticos. Qu prioridad tienen los operadores aritmticos en programacin?.
En programacin, la prioridad de los operadores puede variar de unos lenguajes de programacin a otros, pero, en pseudocdigo, en este curso, vamos a establecer una prioridad de operadores muy similar a la que se aplica en lenguaje C. La prioridad no puede ser exactamente la misma, ya que, en C existen algunos operadores que no existen en pseudocdigo, y al revs.
Ejemplo 1: En una expresin aritmtica puede aparecer ms de un operador aritmtico.
Para poder evaluar correctamente las expresiones aritmticas del ejemplo, es necesario seguir un criterio de prioridad de operadores. En nuestro pseudocdigo CEE, la prioridad de los operadores aritmticos es:
Prioridad de los Operadores Aritmticos en Pseudocdigo. A excepcin de los operadores de signo, que se evalan de derecha a izquierda en una expresin, todos los dems operadores aritmticos con la misma prioridad, por ejemplo, el operador multiplicacin (*) y el operador mdulo (mod), se evalan de izquierda a derecha. En consecuencia, los valores que proporcionan las expresiones del ejemplo son:
12 (actan en orden los operadores: (div) y suma (+)) -2 (actan en orden los operadores: signo menos (-), (*) y (mod)) -0.6 (actan en orden los operadores: signo menos (-), (*) y suma (+)) 26 (actan en orden los operadores: (**) y resta (-)) -24 (actan en orden los operadores: signo menos (-), signo ms (+) y (*))
Para modificar la prioridad de los operadores en las expresiones, se debe hacer uso de los caracteres abrir parntesis "(" y cerrar parntesis ")".
En las expresiones aritmticas hay que tener la precaucin de no dividir entre cero (0).
Ejemplo 2: Por tanto, las siguientes expresiones son incorrectas:
11 / 0 5 div 0 -3 mod 0
De la evaluacin de cada una de estas expresiones se obtiene:
ERROR (no se puede evaluar; no se puede dividir entre cero)
PARE: resuelva los siguientes ejercicios teniendo en cuenta la prioridad de los operadores.
Cmo se escribe una instruccin de asignacin en pseudocdigo? En programacin, una instruccin de asignacin (o simplemente asignacin) consiste en asignar el resultado de la evaluacin de una expresin a una variable.
En pseudocdigo, la sintaxis para escribir una asignacin es: <nombre_de_la_variable> <expresin> El valor (dato) que se obtiene al evaluar la <expresin> es almacenado en la variable que se indique.
Ejemplo 1: Dadas las declaraciones
PI = 3.141592 realarea, longitud, radio = 5.78
Algunas instrucciones de asignacin son:
area PI * radio ** 2 longitud 2 * PI * radio
Por consiguiente, las variables area y longitud almacenarn los valores:
57.046290 (se obtiene de 3.141592 * 5.78 ** 2) 36.316804 (se obtiene de 2 * 3.141592 * 5.78)
En una asignacin, la variable debe ser del mismo tipo que la expresin asignada.
Ejemplo 2: Por tanto, partiendo de
Cadenatelefono entero numero
las siguientes instrucciones son incorrectas:
telefono 948347788 numero "5"
Sin embargo, entre valores numricos (enteros y reales) se puede realizar una conversin de tipos.
Ejemplo 3: Habiendo declarado las variables
real a = 6.4, b = 3.1, c, d entero e = 5, f = 2, g, h, i
despus de las instrucciones
c e / f d a / f g e / f h a / f i b / a
las variables c, d, g, h e i contendrn, respectivamente, los valores:
2.5 (se obtiene de 5 / 2) 3.2 (se obtiene de 6.4 / 2) 2 (se produce un truncamiento de la parte decimal del nmero 2.5) 3 (se produce un truncamiento de la parte decimal del nmero 3.2) 0 (se produce un truncamiento de la parte decimal del nmero 0.484375)
Una asignacin permite cambiar el valor (dato) almacenado en una variable.
Ejemplo 4: Si se ha definido la variable
entero numero = 6
tras la instruccin
numero numero * -3
el valor (dato) almacenado en la variable numero ha pasado a ser el:
-18 (se obtiene de 6 * -3)
Como se puede observar, en esta ocasin, a la variable numero se le asigna el resultado de evaluar una expresin, en donde la propia variable tambin aparece.
Un error frecuente que suelen cometer programadores principiantes, es incluir en una expresin, una variable que no tenga ningn valor (dato) almacenado, es decir, una variable a la que previamente no se le haya asignado ningn valor.
Ejemplo 5: A partir de la declaracin
real n1, n2
en la siguiente instruccin
n1 n2 * 72
la expresin n2 * 72 no se puede evaluar, ya que, cul es valor de n2? Tiene un valor indeterminado y, en consecuencia, la instruccin se ejecutar mal.
Ejemplo 6: Dadas las declaraciones
entero n1 = -7, n2 = 8, n3 logico negativo
Las siguientes asignaciones tambin son incorrectas:
n1 + 1 n2 (ERROR de sintaxis) negativo n3 < 0 (cul es el valor de n3?) Instruccin de Salida Cmo se escribe una instruccin de salida en pseudocdigo?
En programacin, una instruccin de salida (o simplemente salida) consiste en llevar hacia el exterior los valores (datos) obtenidos de la evaluacin de una lista de expresiones. Normalmente, los datos son enviados a la salida estndar (la pantalla), pero, tambin existen otros dispositivos de salida (la impresora, el plotter,...).
En pseudocdigo, la sintaxis de una instruccin de salida es:
escribir( <expresin_1>, ..., <expresin_n> ) Tambin se puede escribir como: escribir( <lista_de_expresiones> ) Ejemplo: Partiendo de las variables
escribir( nombre, " tiene ", edad, " aos." ) escribir( nombre, " tiene ", hijos, " hijos." )
por pantalla aparecer:
Instruccin de Entrada.
Cmo se escribe una instruccin de entrada en pseudocdigo? Una instruccin de entrada (o simplemente entrada) consiste en asignar a una o ms variables, uno o ms valores (datos) recibidos desde el exterior. Normalmente, los datos son recogidos desde la entrada estndar (el teclado), pero, tambin existen otros dispositivos de entrada (el ratn, el escner,...).
En pseudocdigo, la sintaxis de una instruccin de entrada es: leer( <nombre_de_la_variable_1>, <nombre_de_la_variable_2>, ..., <nombre_de_la_variable_n> ) Tambin se puede escribir como: leer( <lista_de_variables> ) Ejemplo 1: Partiendo de las variables
cadena nombre, apellidos entero edad
para cada una de ellas se puede recoger un valor (dato) desde el teclado, escribiendo:
leer( nombre ) leer( apellidos ) leer( edad )
Otra posibilidad es
leer( nombre, apellidos, edad )
Ejemplo 2: Si se han declarado
cadena nombre real numero
al escribir
escribir( "Introduzca su nombre: " ) leer( nombre ) escribir( "Introduzca un nmero real: " ) leer( numero ) escribir( nombre, ", el doble de ", numero, " es: ", numero * 2 )
por pantalla se ver algo parecido a:
Juan y 31.4 son valores (datos) ledos desde el teclado, es decir, introducidos por el usuario, y almacenados en lasen las variables nombre y numero, respectivamente.
ESTRUCTURA DE UN ALGORITMO.
Un algoritmo escrito en pseudocdigo siempre se suele organizar en tres secciones: cabecera, declaraciones y cuerpo. En la seccin de cabecera se escribe el nombre del algoritmo. En la seccin de declaraciones se declaran algunos objetos (variables, constantes,...) que va a utilizar el programa. En el cuerpo estn descritas todas las acciones que se tienen que llevar a cabo en el programa, y siempre se escriben entre las palabras inicio y fin. Por ejemplo, el algoritmo de un programa que va a calcular la suma de dos nmeros enteros cualesquiera introducidos por el usuario y, despus, va a mostrar por pantalla el resultado obtenido, puede ser el siguiente:
algoritmo Sumar variables entero a, b, c inicio escribir( "Introduzca el primer nmero (entero): " ) leer( a ) escribir( "Introduzca el segundo nmero (entero): " ) leer( b ) c a + b escribir( "La suma es: ", c ) fin
DECLARACIN DE VARIABLES (en programacin) Cmo se declaran las variables de un programa o algoritmo? Para que un programa pueda hacer uso de una o ms variables, stas deben ser declaradas previamente. Todas las variables de un programa se declaran de la misma forma, indicando de cada una de ellas: El tipo de dato que puede almacenar (mediante un identificador). Su nombre (mediante otro identificador). Ejemplo 1: La declaracin de una variable para almacenar la edad de una persona se escribe: entero edad Por tanto, en la memoria de la computadora se reservar un espacio para almacenar la edad: En un programa no se pueden declarar varias variables con el mismo nombre (salvo excepciones que estudiaremos ms adelante), sin embargo, s pueden existir varias variables del mismo tipo de dato. Siguiendo con el ejemplo, si tambin se quiere declarar una variable para almacenar su nmero de hijos, se debe escribir: entero edad enteronumero_de_hijos Las variables de un programa no tienen por qu estar contiguas en la memoria del ordenador: Puesto que las dos variables son del mismo tipo de dato, se pueden declarar en la misma lnea separndolas por medio de una coma (,). entero edad, numero_de_hijos
Opcionalmente, cuando se declara una variable, a sta se le puede asignar un valor inicial. Ejemplo 2: Si se desea declarar una variable para almacenar un nmero entero y que, inicialmente, contenga el valor 35, se debe escribir:
entero numero = 35 Por consiguiente, para declarar una variable, en pseudocdigo CEE utilizaremos la sintaxis: <tipo_de_dato><variable>[ =<expresin> ] Y para declarar ms de una variable del mismo tipo: <tipo_de_dato><variable_1> [= <expresin_1>], <variable_2> [= <expresin_2>], ..., <variable_n> [= <expresin_n>] Los caracteres abrir corchete ([) y cerrar corchete (]) se utilizan para indicar que lo que contienen es opcional. Una expresin representa a un valor de un tipo de dato. En el ejemplo 2, el valor 35 es de tipo entero. Durante la ejecucin de un programa, para hacer uso del espacio de memoria representado por una variable, se utiliza su identificador. Una variable puede ser declarada de cualquier tipo de dato (simple o compuesto). El tipo de dato de una variable determina su tamao en memoria, o dicho de otro modo, establece el tamao del espacio de memoria que se reserva para ella. Los datos que utilizan los programas (o algoritmos) se pueden clasificar en base a diferentes criterios. Uno de los ms significativos es aquel que dice que todos los datos que utilizan los programas son simples o compuestos. Un dato simple es indivisible (atmico), es decir, no se puede descomponer. Ejemplo 1: Un ao es un dato simple. Ao...: 2006 Un ao se expresa con un nmero entero, el cual no se puede descomponer. Sin embargo, un dato compuesto est formado por otros datos. Ejemplo 2: Una fecha es un dato compuesto por tres datos simples (da, mes, ao).
Fecha: Da...: 30 Mes...: 11 Ao...: 2006 Ejemplo 3: Otro ejemplo de dato simple es una letra. Letra...: t Una letra se representa con un carcter del alfabeto. Pero, cuando varias letras se agrupan, entonces se obtiene un dato compuesto por varios caracteres.
Ejemplo 4: Para formar un nombre de persona se utilizan varios caracteres. Nombre...: Ana (dato compuesto por tres caracteres) EJERCICIOS. Hacer los siguientes algoritmos: 1. un algoritmo que calcule el rea y permetro de rectngulo. 2. un algoritmo que calcule el rea, hipotenusa y permetro de un tringulo rectngulo.
ESTRUCTURAS SELECTIVAS. Como Tomas de decisin. Estas tomas de decisin tienen la siguiente forma: Las estructuras condicionales comparan una variable contra otro(s) valor (es), para que en base al resultado de esta comparacin, se siga un curso de accin dentro del programa. Cabe mencionar que la comparacin se puede hacer contra otra variable o contra una constante, segn se necesite. Existen tres tipos bsicos, las simples,las dobles y lasmltiples.
Simples:
Sintaxis. Pseudocdigo: Diagrama de flujo:
Dobles:
Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en funcin del cumplimiento o no de una determinada condicin. Se representa de la siguiente forma: Pseudocdigo: Diagrama de flujo:
Donde: Si:Indica el comando de comparacin Condicin : Indica la condicin a evaluar Entonces: Precede a las acciones a realizar cuando se cumple la condicin Instruccin(es):Son las acciones a realizar cuando se cumple o no la condicin si no :Precede a las acciones a realizar cuando no se cumple la condicin Dependiendo de si la comparacin es cierta o falsa, se pueden realizar una o ms acciones.
Mltiples:
Las estructuras de comparacin mltiples, son tomas de decisin especializada que permiten comparar una variable contra distinta posibles resultados, ejecutando para cada caso una serie de instrucciones especficas. La forma comn es la siguiente: Pseudocdigo: Diagrama de flujo:
Mltiples (En caso de):
Las estructuras de comparacin mltiples, es una toma de decisin especializada que permiten evaluar una variable con distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especficas. La forma es la siguiente: Pseudocdigo: Diagrama de flujo:
Veamos algunos ejemplos donde se aplique todo lo anterior y realizando el algoritmo en pseudocdigo y haciendo su representacin e un diagrama de flujo:
ejemplo. Realizar un algoritmo en donde se pide la edad del usuario; si es mayor de edad debe aparecer un mensaje indicndolo. Expresarlo en Pseudocdigo y Diagrama de flujos.
Pseudocdigo: Diagrama de flujo:
Ejemplo. Se pide leer tres notas del alumno, calcular su definitiva en un rango de 0-5 y enviar un mensaje donde diga si el alumno aprob o reprob el curso. Exprese el algoritmo usando Pseudocdigo y diagrama de flujos.
Pseudocdigo:
INICIO Not1, Not2, Not3: REAL Def: REAL LEA Nota1, Nota2, Nota3 Def (Not1 + Not2 + Not3) /3 Si Def< 3 entonces Escriba Reprob el curso Sino Escriba Aprob el curso Fin-Si FIN
Diagrama de flujo:
Se desea escribir un algoritmo que pida la altura de una persona, si la altura es menor o igual a 150 cm enve el mensaje: Persona de altura baja; si la altura est entre 151 y 170 escriba el mensaje: Persona de altura media y si la altura es mayor al 171 escriba el mensaje: Persona alta. Exprese el algoritmo usando Pseudocdigo y diagrama de flujos.
Pseudocdigo:
INICIO Altura: ENTERO ESCRIBA Cul es tu altura? LEA Altura Si Altura <=150 entonces ESCRIBA persona de altura baja Sino Si Altura <=170 entonces ESCRIBA persona de altura media Sino Si Altura>170 ENTONCES ESCRIBA persona alta Fin-Si Fin-Si Fin-Si FIN
Es importante ser ordenado en el cdigo que se escribe!
Diagrama de flujo:
PARE. Hacer un algoritmo que resuelva el siguiente problema( incluya anlisis, pseudocdigo y diagrama de flujo): Los empleados de una empresa trabajan dos turnos: diurnos o nocturnos (no se puede trabajar turnos mixtos, es decir un trabajador solo puede trabajar una de los dos) a dems, si el turno es de noche se seala con 1 y si es diurno con 2. Se desea calcular el jornal diario neto de acuerdo a los siguientes puntos: a. La tarifa de las horas diurnas se paga a una tarifa especificada por hora. b. La tarifa de las horas nocturnas es de 30% por encima de la hora diurna. c. Si el jornal es menor de 96.000 pesos se le hace un obsequio correspondiente al 5% de su jornal bruto y en caso contrario el trabajador se le hace un descuento del 10%. (Nota un jornal es la paga que recibe un trabajador por un da de trabajo).
INSTRUCCIN REPETITIVA MIENTRAS EN PSEUDOCDIGO
Qu es una instruccin de control repetitiva mientras?
En pseudocdigo, para escribir una instruccin repetitiva mientras se utiliza la sintaxis:
mientras ( <expresin_lgica> ) <bloque_de_instrucciones> fin_mientras
Igual que en las instrucciones alternativas doble y simple, a la <expresin_lgica> de una instruccin repetitiva mientras, tambin se le llama condicin. Para que se ejecute el <bloque_de_instrucciones>, la condicin tiene que ser verdadera. Por el contrario, si la condicin es falsa, el <bloque_de_instrucciones> no se ejecuta. Por tanto, cuando el flujo de un algoritmo llega a un bucle mientras, existen dos posibilidades: 1. Si la condicin se evala a falsa, el bloque de instrucciones no se ejecuta, y el bucle mientras finaliza sin realizar ninguna iteracin. 2. Si la condicin se evala a verdadera, el bloque de instrucciones s que se ejecuta y, despus, se vuelve a evaluar la condicin, para decidir, de nuevo, si el bloque de instrucciones se vuelve a ejecutar o no. Y as sucesivamente, hasta que, la condicin sea falsa. El <bloque_de_instrucciones> de un bucle mientras puede ejecutarse cero o ms veces (iteraciones). Si el <bloque_de_instrucciones> se ejecuta al menos una vez, seguir ejecutndose repetidamente, mientras que, la condicin sea verdadera. Pero, hay que tener cuidado de que el bucle no sea infinito. Cuando la condicin de un bucle mientras se evala siempre a verdadera, se dice que se ha producido un bucle infinito, ya que, el algoritmo nunca termina. Un bucle infinito es un error_ lgico. Es importante hacer hincapi en el hecho de que, en un bucle mientras, primero se evala la condicin y, en el caso de que sta sea verdadera, entonces se ejecuta el bloque de instrucciones. Veremos que, en el bucle hacer...mientras, el procedimiento es al revs. En l, primero se ejecuta el bloque de instrucciones y, despus, se evala la condicin.
Para que un bucle mientras no sea infinito, en el bloque de instrucciones debe ocurrir algo para que la condicin deje de ser verdadera. En la mayora de los casos, la condicin se hace falsa al cambiar el valor de una variable.
En resumen, una instruccin repetitiva mientras permite ejecutar, repetidamente, (cero o ms veces) un bloque de instrucciones, mientras que, una determinada condicin sea verdadera. Variable Contador Qu es una variable contador? En programacin, para comprender qu es una variable contador, estdiese el siguiente ejemplo.
Ejemplo: Se quiere disear el algoritmo de un programa que muestre por pantalla los primeros diez nmeros naturales:
El problema se puede resolver con el algoritmo: algoritmo Numeros_del_1_al_10
variables entero contador
inicio contador 1 /* Inicializacin del contador */ mientras ( contador <= 10 ) /* Condicin */ escribir( contador ) /* Salida */ contador contador + 1 /* Incremento */ fin_mientras fin Para comprender el funcionamiento de este algoritmo, se va explicar:
Explicacin de la traza: Primeramente, se le asigna el valor 1 a contador (accin 1). En segundo lugar, se evala la condicin ( contador<= 10 ) (accin 2) y, puesto que es verdadera, se ejecuta el bloque de instrucciones del bucle mientras. As que, por pantalla se muestra el valor de contador (accin 3) y, despus, se incrementa en 1 el valor de la variable contador (accin 4). Terminada la ejecucin del bloque de instrucciones, se vuelve a evaluar la condicin ( contador<= 10 ) (accin 5) y, puesto que es verdadera, se ejecuta de nuevo el bloque de instrucciones. Y as sucesivamente, mientras que, la condicin sea verdadera, o dicho de otro modo, hasta que, la condicin sea falsa. En este algoritmo, el bloque de instrucciones del bucle mientras se ejecuta diez veces (iteraciones). Fjese que, en el algoritmo del ejemplo se ha utilizado un contador. Adems, en este caso, el valor de la variable contador se ha visualizado en cada itera
INSTRUCCIN REPETITIVA HACER...MIENTRAS EN PSEUDOCDIGO Qu es una instruccin de control repetitiva hacer...mientras? En pseudocdigo, para escribir una instruccin repetitiva hacer...mientras se utiliza la sintaxis: hacer <bloque_de_instrucciones> mientras ( <expresin_lgica> ) Como se puede apreciar, la instruccin repetitiva hacer...mientras, tambin hace uso de una condicin. En un bucle hacer...mientras, primero se ejecuta el bloque de instrucciones y, despus, se evala la condicin. En el caso de que sta sea verdadera, se vuelve a ejecutar el bloque de instrucciones. Y as sucesivamente, hasta que, la condicin sea falsa.
Por consiguiente, cuando el flujo de un algoritmo llega a un bucle hacer...mientras, existen dos posibilidades: 1. Se ejecuta el bloque de instrucciones y, despus, si la condicin se evala a falsa, el bloque de instrucciones no se vuelve a ejecutar, de manera que, el bucle hacer...mientras finaliza, habiendo realizado una sola iteracin. 2. Se ejecuta el bloque de instrucciones y, a continuacin, si la condicin se evala a verdadera, el bloque de instrucciones se vuelve a ejecutar. Y as sucesivamente, hasta que la condicin sea falsa. El <bloque_de_instrucciones> de un bucle hacer...mientras puede ejecutarse una o ms veces (iteraciones). Tambin hay que prevenir que el bucle no sea infinito.
En resumen, una instruccin repetitiva hacer...mientras permite ejecutar repetidamente (una o ms veces) un bloque de instrucciones, mientras que, una determinada condicin sea verdadera.
Ejemplo 1: De modo que, utilizando un bucle hacer...mientras, el problema del ejemplo del apartado "VariableContador",se puede resolver con el cdigo: algoritmo Numeros_del_1_al_10
variables entero contador
inicio contador 1 /* Inicializacin del contador */ hacer escribir( contador ) /* Salida */ contador contador + 1 /* Incremento */ mientras ( contador <= 10 ) /* Condicin */ fin La traza del algoritmo es: Explicacin de la traza: En primer lugar, se le asigna el valor 1 a contador (accin 1). A continuacin, se ejecuta el bloque de instrucciones del bucle hacer... mientras, mostrndose por pantalla el valor de contador (accin 2) y, despus, se incrementa en 1 el valor de la variable contador (accin 3). Una vez ejecutado el bloque de instrucciones, se evala la condicin de salida del bucle ( contador<= 10 ) (accin 4) y, puesto que, es verdadera, se ejecuta, de nuevo, el bloque de instrucciones. Y as sucesivamente, mientras que, la condicin sea verdadera, o dicho de otro modo, hasta que, la condicin sea falsa. En este algoritmo, el bloque de instrucciones del bucle se ejecuta diez veces (iteraciones). Al igual que ocurre con la instruccin repetitiva mientras, cualquier pequeo descuido o error al escribir el cdigo del algoritmo, puede dar lugar a que la instruccin repetitiva hacer...mientras no funcione correctamente.
Como ya se ha dicho, el bucle hacer...mientras puede iterar una o ms veces, por tanto, cuando un bloque de instrucciones debe iterar al menos una vez, generalmente, es mejor utilizar un bucle hacer...mientras que un bucle mientras, como por ejemplo, en el siguiente problema.
Ejemplo 2: Se quiere disear el algoritmo de un programa que:
1) Pida por teclado un nmero (dato entero). 2) Pregunte al usuario si desea introducir otro o no. 3) Repita los pasos 1 y 2, mientras que, el usuario no responda 'n' de (no). 4) Muestre por pantalla la suma de los nmeros introducidos por el usuario.
variables caracter seguir entero acumulador, numero
inicio /* En acumulador se va a guardar la suma de los nmeros introducidos por el usuario. */
acumulador 0 hacer escribir( "Introduzca un nmero entero: " ) leer( numero ) acumulador acumulador + numero escribir( "Desea introducir otro nmero (s/n)?: " ) leer( seguir ) mientras ( seguir <> 'n' ) /* Mientras que el usuario desee introducir ms nmeros, el bucle iterar. */
escribir( "La suma de los nmeros introducidos es: ", acumulador ) fin
VARIABLE ACUMULADOR Qu es una variable acumulador? Como ya se ha dicho en el partado anterior "RepetitivaHacer...mientrasenPseudocdigo", el bucle hacer...mientras puede iterar una o ms veces, por tanto, cuando un bloque de instrucciones debe iterar al menos una vez, generalmente, es mejor utilizar un bucle hacer...mientras que un bucle mientras, como por ejemplo, en el siguiente problema (en el cual, al mismo tiempo, vamos a ver un ejemplo de variable acumulador).
Ejemplo:Se quiere disear el algoritmo de un programa que:
1)Pida por teclado un nmero (dato entero).
2) Pregunte al usuario si desea introducir otro o no.
3) Repita los pasos 1 y 2, mientras que, el usuario no responda 'n' de (no).
4) Muestre por pantalla la suma de los nmeros introducidos por el usuario.
variables caracter seguir entero acumulador, numero
inicio /* En acumulador se va a guardar la suma de los nmeros introducidos por el usuario. */
acumulador 0 hacer escribir( "Introduzca un nmero entero: " ) leer( numero ) acumulador acumulador + numero escribir( "Desea introducir otro nmero (s/n)?: " ) leer( seguir ) mientras ( seguir <> 'n' ) /* Mientras que el usuario desee introducir ms nmeros, el bucle iterar. */
escribir( "La suma de los nmeros introducidos es: ", acumulador ) fin
LA ESTRUCTURA DESDE O PARA
Esta estructura se utiliza cuando sabemos de antema cuantas iteraciones emoe de hacer. Sitaxis: para<variable> <valor_inicial> hasta <valor_final> [ incremento<valor_incremento> | decremento<valor_decremento> ] hacer <bloque_de_instrucciones> fin_para.
Ejemplo. algoritmoTabla_de_multiplicar_de_un_numero variables caracter seguir entero i, numero inicio hacer escribir( "Introduzca un nmero entero: " ) leer( numero ) escribir( "La tabla de multiplicar del ", numero, " es: " ) /* Inicio del anidamiento */ para i 1 hasta 10 hacer escribir( numero, " * ", i, " = ", i * numero ) fin_para /* Fin del anidamiento */
escribir( "Desea ver otra tabla (s/n)?: " ) leer( seguir ) mientras ( seguir <> 'n' ) fin
Una explicacin de los resultados.
PARE: Hacer un algoritmo que calcule la media de n nmeros. Hacer el programa utilizando las estructuras desde, mientras y hacer mientras que. Hacer un algoritmo que calcule simultneamente el mayor y el menor de una lista de 50 nmeros. Hacer un algoritmo que calcule de una lista de 20 nmeros enteros, la media de los nmeros pares y la media de los impares.