You are on page 1of 57

DIAGRAMAS DE FLUJO

Un diagrama de flujo (flowchar) es una de las tcnicas de representacin de algoritmo ms antigua y a la vez ms utilizada, aunque su empleo ha disminuido considerablemente, sobre todo desde la aparicin de lenguajes de programacin estructurados. Un diagrama de flujo es un diagrama que utiliza los smbolos (cajas) estndar mostrados, y que tiene los pasos de algoritmo escrito en esas cajas unidas por flechas, denominadas lneas de flujo, que indican la secuencia en que se debe ejecutar. Smbolos de diagramas de flujos Caja smbolos visto anteriormente indica el tipo de operacin y el diagrama de flujo ilustra grficamente la secuencia en la que se ejecuta las operaciones. Smbolos principales Funcin Termina (representa el comienzo, inicio, y el final, fin de un programa. Puede representar tambin una parada o interrupcin programada que sea necesario realizar en un programa. Entrada/Salida (cualquier tipo de introduccin de datos en la memoria desde los perifricos, entrada. O registro de la informacin procesada en un perifrico salida. Proceso (cualquier tipo de operacin que queda originar cambio de valor, formato o posicin de la informacin almacenada en memoria, operaciones aritmticas, de transferencia etc.) Decisin (indica operaciones lgica o de comparacin entre datos normalmente dos y en funcin del resultado de la misma determina cul de los distintos caminos alternativos del programa se debe seguir; normalmente tiene dos salidas respuesta SI o NO pero puede tener tres o ms, segn los casos). Decisin mltiple (en funcin del resultado de la comparacin se seguir uno de los diferentes caminos de acuerdo con dicho resultado).

NO SI

Conector (sirve para enlazar dos partes cualquiera de un ordinograma a travs de un conector en la salida y otro conector en la entrada. Se refiere a la conexin en la misma pgina del diagrama. Indicador de direccin o lnea de flujo (indica el sentido de ejecucin de las operaciones). Lnea conectora (sirve de unin entre dos smbolos).

Conector (conexin entre dos puntos del organigrama situado en pgina diferentes). Llamada subrutina o a un proceso predeterminado (una subrutina en un mdulo independiente del programa principal, que recibe una entrada procedente de dicho programa, realiza una tarea determinada y regresa, al terminar, al programa principal. Pantalla (se utiliza en ocasiones en lugar del smbolo de E/S).

Impresora (se utiliza en ocasiones en lugar de smbolo de E/S)

Teclado (se utiliza en ocasiones en lugar del smbolo de E/S)

Comentarios (se utiliza para aadir comentarios clasificadores a otros smbolos del diagrama de flujo. Se pueden dibujar a cualquier lado del smbolo)

INICIO

Leer nombre, horas, precio

Bruto Horas precio

tasas 0,25 bruto

neto bruto - tasas

Leer nombre, horas, precio

fin

Cada diagrama de flujo comienza y termina con un smbolo termina:

Terminal
NO

Subprograma

SI

Entrada Salida Proceso

El finamiento del algoritmo conduce a los pasos sucesivos necesarios para realizar las operaciones de lectura, verificacin del ltimo dato, suma y media de los datos.

Si el primer dato ledo es 0, la divisin S/C producira un error si se ejecutara el algoritmo en una computadora, ya que no est permitida en ella divisin por cero.

inicio

C0 S0

C- contador de nmeros S sumador de nmeros

Leer datos

Datos <> 0

NO

CC+1 S S + dato

Media s/c

Si el primer dato ledo es 0 la divisin S/C producir un error si se ejecutara el algoritmo en una computadora, ya que no esta permitida en ella la divisin por cero

Imprimir media

fin

Ejemplo

Suma de los nmeros pares comprendido entre 2 y 100

inicio

SUMA 2 NUMERO 4

SUMA SUMA + NUMERO

NUMERO NUMERO + 2

Numero = < 100

SI

Escribe suma

fin

Ejemplo

Se desea realizar el algoritmo que resuelve el siguiente problema: Clculo de los salarios mensuales de los empleados de una empresa sabiendo que stos se calculan en base a las horas semanales trabajadas y de acuerdo a un precio especificado por horas. Si se pasan de cuarenta horas semanales, las horas extraordinarias se pagarn a razn de 1,5 veces la hora ordinaria.

Los clculos son:

1. Leer datos del archivo de la empresa, hasta que se encuentre la ficha final del archivo HORAS, PRECIO-HORA, HOMBRE?. 2. Si HORAS <= 40, entonces SALARIO es el producto de horas por PRECIO-HORA. 3. Si HORAS > 40, entonces SALARIO es la suma de 40 veces PRECIO-HORA mas 1,5 veces PRECIO-HORA por (HORAS 40)

inicio

Escribe suma

SI

Hora = < 40

NO

SALARIO = HORAS PRECIO-HORA

SALARIO = 40 PRECIOHORAS+1,5 PRECIO-HORA (HORAS-40!

Escribe SALARIO

MAS DATOS

NO

fin

Una variante tambin vlida al diagrama de flujo anterior es:

inicio

MAS DATOS

Leer Hora, precio hora nombre

SI

Hora = < 40

NO

SALARIO = HORAS PRECIO-HORA

SALARIO = 40 PRECIOHORAS+1,5 PRECIO-HORA (HORAS-40!

Escribe SALARIO

fin

EJEMPLO:

La escritura de algoritmos para realizar operaciones sencillas de conteo es una de las primeras cosas que un ordenador puede aprender. Supongamos que se proporciona una secuencia de nmeros, tales como

5302440023602

Y desea contar e imprimir el nmero de ceros de la secuencia.

El algoritmo es muy sencillo, ya que slo basta leer los nmeros de izquierda a derecha, mientras se cuentan los ceros. Utiliza como variable la palabra NUMERO para nmeros que se examinan y TOTAL para el nmero de ceros encontrados. Los pasos a seguir son:

1. 2. 3. 4. 5. 6. 7. 8. 9.

Establecer TOTAL a cero Quedan ms nmeros a examinar? Si no quedan nmeros imprir el valor de total y fin: Si existen mas nmeros, ejecutar los pasos 5 a 8. Leer el siguiente numero y dar su valor a la variable numero. Si numero= o, incrementar total en 1. Si numero > o, no modificar total. Retornar al paso. El diagrama del flujo correspondiente es:2

INICIO

TOTAL 0

MS
NMEROS?

NO

SI

Leer NUMERO NUMEROre, horas, precio


SI
NMEROS = 0

SI

TOTAL TOTAL + 1

ESCRIBIR TOTAL

fin
Ejemplo

Dados tres nmeros, determinar si la suma de cualquier pareja de ellos es igual al tercer nmero. Si se cumple esta condicin, escribir>> igual>> y, en caso contrario, escribir, distintas. En el caso de que los nmeros sean: 3 9 6, la respuesta es iguales, ya que 3 + 6 =9. Sin embargo, si los nmeros fueran: 2 3 4, el resultado sera Distintas.

Para resolver este problema, se puede comparar la suma de cada pareja al tercer nmero. Con tres nmeros solamente existen tres parejas distintas y el algoritmo de resolucin del problema ser fcil. 1. 2. 3. 4. 5. Leer los tres valores, A, B y C Si A + B = C escribir Iguales y parar Si A + C = B escribir Iguales y parar Si A + C = A escribir Iguales y parar Escribir Distintas y parar

El diagrama de flujo correspondiente es:

INICIO

Leer A, B, C NUMEROre, horas, precio


si

A+B=C

no

A+B=C

si

no
B+C=A

si

no

ESCRIBIR distinta

ESCRIBIR iguales

fin
PSEUDOCDIGO El pseudocdigo es un lenguaje de especificacin (descripcin) de algoritmo. El uso de tal lenguaje hace el paso de codificacin final (esto es, la traduccin a un lenguaje de programacin) relativamente fcil. Los lenguaje APL Pascal y Ada se utilizan a veces como lenguajes de especificacin de algoritmos. El pseudocdigo naci como un lenguaje similar al ingls y era medio de representar bsicamente las estructuras de control de programacin estructurada que se vern en captulos posteriores. Se considera un primer borrador, dado que el pseudocdigo tiene que traducirse posteriormente a un lenguaje de programacin. El pseudocdigo no puede ser ejecutado por una computadora. La ventaja del pseudocdigo es que en su uso, en la planificacin de un programa, el programador se puede concentrar en la lgica y en las estructuras de control y no preocuparse de las reglas de un lenguaje especfico. Es tambin fcil modificar el pseudocdigo si se descubren errores o anomalas en la lgica del programa, mientras que en muchas ocasiones suele ser difcil el cambio en la lgica, una vez que est codificado en un lenguaje estructurado como Pascal. La representacin pseudocdigo del diagrama de flujo es:

Start //clculo de impuesto y salarios read nombre, horas, precio_hora salario_bruto horas * precio_hora tasas 0,25 * salario_bruto salario_neto salario_bruto tasas write nombre, salario_bruto, tasas, salario_neto end

El algoritmo comienza con la palabra start y finaliza con la palabra end, en ingls (en espaol) inicio o fin. Entre estas palabras, slo se escribe una instruccin o accin por lnea.

La lnea precedida por // se denomina comentario. Es una informacin al lector del programa y no realiza ninguna instruccin ejecutable, slo tiene efecto de documentacin interna del programa. Algunos autores suelen utilizar corhetes o llaves.

No es recomendable el uso de apstrofos o simples comillas como representan en BASIC de Microsoft los comentarios, ya que este carcter es representativo de apertura o cierre de cadena de caracteres en lenguajes como Pascal o FORTRAN, y dara lugar a confusin. Otro ejemplo aclaratorio en el uso del pseudocdigo podra ser un sencillo algoritmo del arranque matinal de un coche.

Inicio //arranque matinal de un coche introducir la llave de contacto tirar del estrangulador del aire girar la llave de contacto pisar el acelerador oir el ruido del motor pisar de nuevo el acelerador esperar unos instantes a que se calienta el motor llevar el estrangulador de aire a su posicin fin

DIAGRAMAS DE NASSI-SCHNEIDERMAN (N-S)

El diagrama N-S de Nassi-Schneiderman tambin conocido como diagrama de Chapin es como un diagrama de flujo en el que se omiten las flechas de unin y las cajas son contiguas. Las acciones sucesivas se escriben en cajas sucesivas y, como en los diagramas de flujos, se pueden escribir diferentes acciones en una caja.

Un algoritmo se representa como un rectngulo en el que cada banda es una accin a realizar:

leer nombre, hora, precio calcular salario horas * precio

calcular impuestos 2.25 * salario calcular neto salario impuestos escribir nombre, salario, impuestos, neto

Nombre del algoritmo

<accin 1>

< accin 2>

< accin 3>

..

Fin

Otro ejemplo es la representacin de la estructura condicional

a) si

condicin?

no

Accin 1

Accin 2

b)

condicin?

Si

no

<acciones>

<acciones>

Actividades de Programacin Resueltas Desarrolle los algoritmos que resuelven los siguientes problemas 1. Ir al cine Anlisis del problema Datos de Salida: Datos de entrada: Datos auxiliares: Ver la pelcula nombre de la pelcula, direccin de la sala, hora de proyeccin. entrada, nmero de asiento.

Para solucionar el problema se debe seleccionar una pelcula de la cartelera del peridico, ir a la sala y comparar entrada para, finalmente, poder ver la pelcula. Diseo del algoritmo inicio

<seleccionar la pelcula> tomar el peridico mientras no lleguemos a la cartelera pasar la hoja mientras no se acabe la cartelera leer la pelcula si no gusta, recordarla fin mientras

elegir una de las pelculas seleccionada leer la direccin de la sala y la hora de proyeccin <comprar la entrada> trasladarse a la sala si no hay entradas, ir a fin si hay cola entonces ponerse el ltimo mientras no lleguemos a la taquilla avanzar si no hay entradas, ir a fin fin mientras compra la entrada < ver la pelcula > leer el nmero de asiento de la entrada buscar el asiento sentarse ver la pelcula fin

2. Comprar una entrada para ir a los toros Anlisis del problema Datos de Salida: Datos de entrada: Datos auxiliares: la entrada tipo de entrada (sol, sombra, tendido, andanada) entrada, nmero de asiento.

Hay que ir a la taquilla y elegir la entrada deseada. Si hay entradas se compra (en taquilla o a los reventas). Si no la hay, se puede seleccionar otro tipo de entrada o desistir, repitiendo esta accin hasta que se ha conseguido la entrada o el posible comprador ha desistido. Diseo del algoritmo Inicio Ia a la taquilla Si no hay entradas en taquilla Si nos interesa comprarla en la reventa Ir a comprar la entrada Si no ir a fin < comprar la entrada > Seleccionar sol o sombra Seleccionar barrera, tendido, andanada o palco Seleccionar nmero de asiento Solicitar la entrada Si la tienen disponible entonces Adquirir la entrada

Si no Si queremos otro tipo de entrada entonces Ir a comprar la entrada Fin 3. Averiguar si una palabra es un palndromo. Un palndromo es una palabra que se lee igual de izquierda a derecha que de derecha a izquierda, como por ejemplo, radar Anlisis del problema

DATOS DE SALIDAD DATOS DE ENTRADA DATOS AUXILIARES

: el mensaje que nos dice si es o no un palndromo : palabra : cada caracteres de la palabra al revs.

Para comprobar si una palabra es un palndromo, se puede ir formando una palabra con los caracteres invertidos con respecto a la original y comprobar si la palabra al revs es igual a la original. Para obtener esa palabra al revs, se leern en sentido inverso los caracteres de la palabra inicial y se irn juntando sucesivamente hasta llegar al primer carcter.

Diseo del algoritmo

inicio

Leer palabra

Leer ultimo carcter

LEER CARCTER ANTERIOR

Leer carcter anterior

si

,ms carcter?

,palabras iguales?

No es Un palndromo

Es Un palndromo

fin

4. Realizar un algoritmo que calcule la suma de los enteros enre 1 y 10, es decir, 1 + 2+ 3+. + 10 Anlisis del problema Datos de Salid : suma (contiene la suma requerida) Datos Auxiliares nm (ser una variable que vaya tomando valores entre 1 y 10 y se acumular en suma). Hay que ejecutar un bucle que se realice diez veces. En l se ir incrementando en 1 la variable nm, y se acumular su valor en la variable suma. Una vez salgamos del bucle se visualizar el valor de la variable suma. Diseo del algoritmo Tabla de variables Entero: suma, nm

Inicio

Suma 0 nm 0

Nm nm + 1Escribir suma suma + nm

no

Escribir suma

si
Escribir suma

fin

5. Realizar un algoritmo que calcule y visualice los potencias de 2 entre 0 y 10 Diseo del algoritmo Tabla de variables Entero: nm.

inicio

Nm 0

Escribir 2^nm

Nm nm + 1

no

Nm > 10

si

fin

6. Se desea obtener el salario neto de un trabajador conociendo el nmero de horas trabajadas, el salario hora y la tasa de impuestos que se ha de aplicar como deducciones. Las entradas del algoritmo son: horas trabajas, salario_hora, tasas Las salida del algoritmo son: Paga bruta, total de impuestos y paga neta El algoritmo general es: 1. Obtener valores de horas trabajadas, salario_hora y tasas. 2. Calcular salario_bruto, total de impuestos y salario_neto 3. Visualizar salario_bruto, total de impuestos y salario_neto

El refinamiento del algoritmo en pasos de nivel inferior es: 1. Obtener valores de horas trabajadas, salario bruto y tasas 2. Calcular salario bruto, total de impuestos y paga neta. 2.1. Calcular salario bruto multiplicando las horas trabajadas por el salario hora. 2.2. Calcular el total de impuestos multiplicando salario bruto por tasa (tanto por ciento de impuestos) 2.3. Calcular el salario neto restando el total de impuestos de la paga bruta. 3. Visualizar salario bruto, total de impuestos, salario neto.

El diagrama de flujo siguientes representa este algoritmo. Diagrama de flujo

Inicio

Introducir Horas Salario_hora tasas

Calcular Salario_bruto Horas*salario_hora

Calcular Total_impuestos Salario_bruto*tasas

Calcular Salario_neto Salario_bruto-total_impuestos

Visualizar Salario_bruto Total_impustos Salario_neto

fin

7. Definir el algoritmo necesario para intercambiar los valores de dos variables numricas.

Anlisis del problema Para realizar este anlisis se utiliza variables denominada auxiliar que de modo temporal toma uno de los valores dados. Variables: A B AUX El mtodo consiste en asignar una de las variables a la variable auxiliar: AUX A A continuacin se asina el valor de la otra variable B a la primera: AB Por ltimo, se asigna el valor de la variable auxiliar a la segunda variable A: B AUX Variables: A B AUX

primer valor segundo valor, variable auxiliar

Diseo del algoritmo Inicio Leer (A, B) AUX A AB B AUX Escribir (A, B) Fin Diagrama de flujo

Inicio

Leer A, B

AUX A AB B AUX

Escribir A, B

fin

ESTRUCTURA GENERAL DE UN PROGRAMA

EL concepto de programas como un conjunto de instrucciones y sus tipos constituye la parte fundamental del captulo. La descripcin de los elementos bsicos de programacin, que se encontrarn en casi todos los programas: interruptores, contadores, totalizadores, etc. Junto con las normas elementales para la escritura de algoritmos y programas, conforman el resto de captulo.

En el captulo se examinan los importantes conceptos de datos, constantes y variables, expresiones, operaciones de asignacin y la manipulacin de las entradas y salida de informacin, as como la realizacin de las funciones internas como elemento clave en el manejo de datos. Por ltimo se describen reglas de escritura y de estilo para la realizacin de algoritmos y su posterior conversin en programas.

CONCEPTO DE PROGRAMA

Un programa de computadora es un conjunto de instrucciones rdenes dadas a la maquina que producirn la ejecucin de una determinada tarea. En esencia, un programa es un medio para conseguir un fin. El fin ser probablemente definido como la informacin necesaria para solucionar un problema.

En el desarrollo de un programa requiere las siguientes fases:

1. Definicin y anlisis del problema 2. Diseo de algoritmos: Diagrama de flujo Diagrama N-S pseudocdigo

3. 4. 5. 6.

Codificacin del programa; Depuracin y verificacin del programa; Documentacin; Mantenimiento.

Definicin del problema

Diseo del algoritmo

Codificacin del programa Depuracin y verificacin

D O C U M E N T A C I O N

M A N T E N I M I E N T O

PARTES CONSTITUTIVAS DE UN PROGRAMA

Tras la decisin de desarrollar un programa, el programador debe establecer el conjunto de especificaciones que debe contener el programa: entrada, salida y algoritmos de resolucin, que incluirn las tcnicas para obtener las salida a partir de las entradas.

Conceptualmente un programa puede ser considerado como una caja negra. La caja negra o el algoritmo de resolucin, en realidad, es el conjunto de cdigos que transforman las entradas del programa (datos) en salidas (resultados).

El programador debe establecer de donde provienen las entradas al programa. Las entradas, en cualquier caso, procedern de un dispositivo de entrada teclado, disco ..- EL proceso de introducir la informacin de entrada datos en la memoria de la computadora se denomina entrada de datos, operacin de lectura o accin de leer.

La salidas de datos se deben presentar en dispositivos perifricos de salida: pantalla, impresoras, discos, etc. La operacin de salida de datos se conoce tambin como escritura o accin de escribir.

INSTRUCCIONES Y TIPOS DE INSTRUCCIONES

El proceso de diseo del algoritmo o posteriormente de codificacin del programa consiste en definir las acciones o instrucciones que resolver el programa.

Las acciones o instrucciones se deben escribir y posteriormente almacenar en memoria en el mismo orden en que han de ejecutarse, es decir, en secuencia.

Un programa puede ser lineal o no lineal. Un programa es lineal si las instrucciones se ejecutan secuencialmente, sin bifurcaciones, decisin ni comparaciones.

Instruccin 1 Instruccin 2 .. Instruccin n

En el caso del algoritmo las instrucciones se suelen conocer como acciones, y se tendr:

accin 1 accin 2 .. accin n

Un programa es no lineal cuando se interrumpe la secuencia mediante instrucciones de bifurcacin

accin 1 accin 2 .. accin x accin n accin n + i

Las clasificaciones ms usual, desde el punto de vista anterior, es:

1. 2. 3. 4. 5.

Instrucciones de inicio/fin Instrucciones de asignacin Instruccin de lectura Instruccin de escritura Instruccin de bifurcacin.

INSTRUCCIONES DE ASIGNACION

Como ya son conocidas del lector, repasaremos su funcionamiento con ejemplos:

a) A 80 la variable A toma el valor de 80 b) Cul ser el valor que tomar la variable C tras la ejecucin de las siguientes instrucciones: A 12 BA CB A contiene 12, B contiene 12 y C contiene 12.

Nota:

Antes de la ejecucin de las tres instrucciones, el valor de A, B y C, es indeterminado. Si se desea darles un valor inicial, habr que hacerlo explcitamente, incluso cuando este valor sea 0, es decir, habr que definir e inicializar las instrucciones.

A0 B0 C0

c)

Cul es el valor de la variable AUX al ejecutarse la instruccin 5? 1. 2. 3. 4. 5. A 10 B 20 AUX A A B B AUX

d) Cul es el significado de N N + 5 si N tiene el valor actual de 2?

N N+5

Se realiza el clculo de la expresin N + 5 y su resultado 2 + 5 = 7 se asigna a la variable situada a la izquierda, es decir, N tomar un nuevo valor 7.

Se debe pensar en la variable como en una posicin de memoria, cuyo contenido puede variar mediante instrucciones de asignacin (un smil suele ser un buzn de correos, donde el nmero de cartas depositadas en l variar segn el movimiento diario del cartero de introduccin de cartas o del dueo del buzn de extraccin de dichas cartas).

INSTRUCCIONES DE LECTURA DE DATOS (ENTRADA)

Esta instruccin lee datos de un dispositivo de entrada. Cul ser el significado de las instrucciones siguientes?

a) Leer (nmero, horas,. Tasa) Leer del terminal los valores nmero, horas y tasas, archivndolos en la memoria; si los tres nmero se teclean en respuesta a la instruccin son 12345, 32 1200, significara que se han asignado a las variables esos valores y equivaldra a la ejecucin de las instrucciones. Nmero 12345 Horas 32 Tasa 1200

b) Leer (a, b , c) Si se leen del terminal 100, 200, 300, se asignaran a las variables los siguientes valores: A B C = = = 100 200 300

Instrucciones de escritura de resultados (salida)

Estas instrucciones se escriben en dispositivo de salida. Explicar el resultado de la ejecucin de la siguientes instrucciones.

A B C

= = =

100 200 300

Escribir (A, B, C )

Se visualizaran en la pantalla o imprimiran en la impresora los valores 100, 200 y 300 que contienen las variables A, B y C.

INSTRUCCIONES DE BIFURCACIN

El desarrollo lineal de un programa se interrumpe cuando se ejecuta una bifurcacin. Las bifurcaciones pueden ser, segn el punto del programa a donde se bifurca, hacan adelante o hacia atrs.

Las bifurcacin en el flujo de un programa se realizarn de modo condicional en funcin del resultado de la evaluacin de la condicin.

Bifurcacin incondicional: la bifurcacin se realiza siempre que el flujo del programa pase por la instruccin sin necesidad del cumplimiento de ninguna condicin.

Bifurcacin condicional: la bifurcacin depende del cumplimiento de una determinada condicin. Si se cumple la condicin, el flujo sigue ejecutando la accin F. si no se cumple, se ejecuta la accin F1.

ELEMENTOS BSICOS DE UN PROGRAMA

En programacin se debe separar la diferencia entre el diseo del algoritmo y su implementacin en un lenguaje especfico. Por ello, se debe distinguir claramente entre los conceptos de programacin y el medio en que ellos se implementan en un lenguaje especfico. Sin embargo, una vez que se comprendan los concepto de programacin cmo utilizarlos, la enseanza de un nuevo lenguaje es relativamente fcil.

Los elementos bsicos constitutivos de un programa o algoritmo son:

Palabras reservadas (inicio, fin si entonces etc) Identificadores (nombres de variables esencialmente, procedimientos, funciones, nombres del programa etc) Caracteres especiales (coma, apstrofo, etc.) Constantes, Variables Expresiones Instrucciones.

datos programa ejecutable

Computadora

Programa fuente

Compilador

si

Existen errores en la compilacin

Programa

montador

Programa ejecutable Ejecucin

Adems de estos elementos bsicos, existen otros elementos que forman parte de los programas, cuyas comprensin y funcionamiento ser vital para el correcto diseo de un algoritmo y naturalmente la codificacin del programa. Estos elementos son:

Bucles Contadores Acumuladores Interruptores Estructuras: 1. Secuenciales 2. Selectivas 3. repetitivas

El amplio conocimiento de todos los elementos de programacin y el modo de su integracin en los programas constituyen las tcnicas de programacin que todo buen programador debe conocer.

DATOS, TIPOS DE DATOS Y OPERACIONES PRIMITIVAS

El primer objetivo de toda computadora es el manejo de la informacin de datos. Estos datos pueden ser las cifras de ventas de su supermercado o las calificaciones de una clase. Un dato es la expresin general que describe los objetos con los cuales opera una computadora. La mayora de las computadoras pueden trabajar con varios tipos (modos) de datos. Los algoritmos y los programas correspondientes operan sobre esos tipos de datos.

En el proceso de resolucin de problemas el diseo de la estructura de datos tan importante como el diseo del algoritmo y del programa que se basa en el mismo.

Existen dos tipos de datos: simples (sin estructura) y compuesto (estructurados). Los datos estructurados se estudian a partir del Captulo 6 y son conjuntos de partidas de datos simples con relaciones definidas entre ellos.

Los tipos de datos simples son los siguientes:

Numricos (integer, real) Lgico (boolean) Carcter (char, string)

Existen algunos, lenguajes de programacin FORTRAN esencialmente que admiten otros tipos de datos; complejos, que permiten tratar los nmeros complejos, y otros lenguajes Pascal que tambin permiten declarar y definir sus propios tipos de datos: enumerados (enumerated) y subrango (subrange)

DATOS NUMRICOS

El tipo numrico es el conjunto de los valores numricos. Estos pueden representarse en dos formas distintas:

tipo numrico entero (integer) tipo numrico real (real).

Enteros: el tipo entero es un subconjunto finito de los nmeros enteros. Los enteros son nmeros completos, no tienen componentes fraccionarios o decimales y pueden ser negativos o positivos. Ejemplos de nmeros enteros son:

5 -15 20 1340

6 4 17 26

Los enteros se denominan en ocasiones nmeros de punto o coma fija. Los nmeros enteros mximos y mnimos de una computadora suelen ser 32768 a + 32767 Los nmeros enteros fuera de este rango no se suelen representar como entero, sino como reales, aunque existen excepciones entero largos: FORTRAN, Turbo BASIC, etc.

Reales: el tipo real consistente en un subconjunto de los nmeros reales. Los nmeros reales siempre tienen un punto decimal y pueden ser positivos o negativos. Un nmero real consta de un entero y una parte decimal. Los siguientes son nmeros reales:

Este lmite provocar problemas para representar y almacenar nmeros muy grandes o muy pequeos como son los ya citado o los siguientes:

4867213432 0 00000000387

Existen un tipo de representacin denominado notacin exponencial o cientfica y que se utiliza para nmeros muy grandes o muy pequeos As.

3675201000000000000

Se representa en notacin cientfica descomponindose en grupos de tres dgitos

367

520

100

000

000

000

000

Y posteriormente en forma de potencias de 10

3 . 675201 x 10

Y de modo similar

.0000000000302579

Se representa como

3.2579

x 10

DATOS LGICOS (BOOLEANOS)

El tipo lgico tambin denominado booleano es aquel dato que slo tomar uno de dos valores:

Cierto o verdadero (true) y falso (false)

Este tipo de datos se utiliza para representar las alternativas (si/no) a determinadas condiciones tipo carcter contiene un solo carcter. Los caracteres que reconocen las diferentes computadoras no son estndar, sin embargo, la mayora reconoce los siguientes caracteres alfabticos y numricos:

caracteres alfabticos ( A, B, C, Z) ( a, b , ,,,, z) caracteres numricos ( 1, 2, 9, 0) caracteres especiales ( +, -, *, /, .; <, >, $ )

Una cadena (string) de caracteres es una sucesin de caracteres que se encuentran delimitados por una comilla (Apstrofo) o dobles comillas, segn el tipo de lenguaje de programacin. La longitud de una cadena de caracteres es el nmero de ellos comprendidos entre los separadores o limitadores. Algunos lenguajes tiene datos tipos cadena.

. hola mortimer . 12 de octubre de 1592 . sr. . Mckoy

CONSTANTES Y VARIABLES

Los programas de computadora contiene cierto valores que ejecucin del programa. Tales valores se llaman constantes. valores que cambiarn durante la ejecucin del programa; variables. Una constante es una partida de datos (objetos) durante todo el desarrollo del algoritmo o durante la ejecucin

no deben cambiar durante la De igual forma, existen otros a estos valores se les llama que permanecen sin cambios del programa.

La mayora de los lenguajes de programacin permiten diferentes tipos de constantes: enteras, reales, caracteres y boolean o lgicas, y representan datos de esos tipos.

Una variable es un objeto o partida de datos cuyo valor puede cambiar durante el desarrollo del algoritmo o ejecucin del programa. Dependiendo del lenguaje, hay diferentes tipos de variables, tales como enteras, reales, carcter, lgicas y de cadena.

Una variable que es de un cierto tipo puede tomar nicamente valores de ese tipo. Una variable de carcter por ejemplo, puede tomar como valor slo caracteres, mientras que una variable entera puede tomar slo valores enteros.

Los nombres de las variables, a veces conocidos como identificadores, suelen constar varios caracteres alfanumricos, de los cuales el primero normalmente es una letra. No deben utilizar aunque lo permitan el lenguaje, caso de FORTRAN como nombre identificadores palabras reservadas del lenguaje de programacin. Nombres vlidos variables son.

de se de de

A5 NOMBRES NOTAS NOMBRES_APELLIDOS

Los nombres de las variables elegidas para el algoritmo o el programa deben ser significativos y tener relacin con el objeto que representan, como pueden ser los casos siguientes:

NOMBRES PRECIOS

para representar nombres de personas para representar los precios de diferentes artculos

NOTAS para representar las notas de una clase.

EXPRESIONES

Las expresiones son combinaciones de constantes, variables, smbolos de operacin, parntesis y nombres de funciones especiales. Las mismas ideas son utilizadas en notacin matemtica tradicional; por ejemplo,

A + (b + 3) + c

Aqu los parntesis indican el orden de clculo y representa la funcin raz cuadrada. Cada expresin toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecucin de las operaciones indicadas. Una expresin consta de operando y operadores. Segn sea el tipo de objetos que manipulan, las expresiones se clasifican en.

Aritmticas Relacionales Lgicas Carcter

El resultado de la expresin aritmtica es de tipo numrico; el resultado de la expresin relacional y de una expresin lgica es de tipo lgico; el resultado de una expresin carcter es de tipo carcter.

EXPRESIONES ARITMTICAS

Las expresiones aritmticas son anlogas a las formulas matemticas, las variables y constantes son numricas (real o entera) y las operaciones son las aritmticas

+ -. * / .*-*, ^ div. mod.

suma Resta multiplicacin divisin exponenciacin divisin entera Mdulo (resto)

Los smbolos +, -, * ,^( 0 **) y las palabras clave div y mod se conocen como operadores aritmticos. En la expresin. 5+3 Los valores 5 y 3 se denomina operando. El valor de la expresin 5 + 3 se conoce resultado de la expresin. Los operadores se utilizan de igual forma que en matemticas. Por consiguiente, A . BV se escribe en un algoritmo como A * B y . C como C/4. Al igual que en matemticas el signo menos juega un doble papel, como resta en A B y como negacin en A. Todos los operadores aritmticos no existen en todos los lenguaje de programacin; por ejemplo, en FORTRAN no existe div y mod. El operador exponenciacin es diferente segn el tipo de lenguaje de programacin elegido (^, en BASIC, ** en FORTRAN)

Los clculos que implican tipos de datos reales y enteros suelen dar normalmente resultados del mismo tipo si los operandos lo son tambin. Por ejemplo, el producto de operando reales produce un real. OPERADORES DIV Y MOD El smbolo / se utiliza para la divisin real y el operador div en algunos lenguajes, por ejemplo BASIC se suele utilizar el smbolo representa la divisin entera. El operador mod representa el resto de la divisin entera, aunque hay lenguaje que utiliza otros smbolos como %. A div B Slo se puede utilizar si A y B son expresiones enteras y obtiene la parte de A/B. por consiguientes. 19 div 6 Toma el valor 3. Otro ejemplo puede ser la divisin 15/6 15 3 Resto /6 2 cociente

En forma de operadores resultar la operacin anterior 15 div 6 = 3 Otros ejemplos son: 19 div 3 19 mod 6 equivale a 6 equivale a 1 15 mod 6 = 3

REGLAS DE PRIORIDAD

Las expresiones que tienen dos o ms operandos requieren una reglas matemticas que permitan determinar el orden de las operaciones se denomina reglas de prioridad o precedencia y son:

1. Las operaciones que estn encerradas entre parntesis se evalan primero. Si existen diferentes parntesis anidados (interiores uno a otros), las expresiones ms internas se evalan primero. 2. Las operaciones aritmticas dentro de una expresin suelen seguir el siguientes orden de prioridad: Operador exponencial (^, Operadores *, /, Operadores div y mod Operadores +, -. o bien **)

En caso de coincidir varios operadores de igual prioridad en una expresin o subexpresin encerrada entre parntesis, el orden de prioridad en este caso es de izquierda a derecha.

Ejemplo

Los parntesis tienen prioridad sobre el resto de las operaciones

A * (B + 3)

la constante 3 se suma primero al valor de B, despus este resultado se multiplica por el valor de A.

(A * B) + 3

A y B se multiplican primero y a continuacin se suma 3

A + (B + C) + D

esta exprsin equivale a A +B + C+ D

(A + B/C) + D equivale a A + B/C + D

A * b/c * d

equivale A ( (A * B) / C) * D y no a (A * B) / (C * D)

EXPRESIONES LGICA (BOOLEANAS)

Un segundo tipo de expresiones es la expresin lgica o booleana, cuya valor es siempre verdadero o falso. Recuerde que existen dos constantes lgicas, verdadera (true) y falsa (false) y que las variables lgicas pueden tomar slo estos dos valores.

En esencia, una expresin lgica es una expresin que slo puede tomar estos dos valores, verdadero y falso. Se denominan tambin expresiones booleanas en honor del matemtico britnico George Boole, que desarroll lgebra lgica del Boole.

Las expresiones lgicas se forman combinando constantes lgicas, variables lgicas y otras expresiones lgicas, utilizando los operadores lgicas not, and y por y los operadores relaconales (de relacin o comparacin) =, <, >, <=, >=, <>.

Operadores de relacin

Los operadores relacionales o de relacin permiten realizar comparaciones de valores de tipo numricos o carcter. Los operadores de relacin sirven para expresar las condiciones en los

algoritmos. El formato general para las comparaciones y el resultado de la operacin ser verdadero o falso. As por ejemplo, si A = 4 y B = 3, entonces

A>B

es verdadero

Mientras que

(A 2) < (B 4)

es falso

Los operadores de relacin se pueden aplicar a cualquier de los cuatro tipo de datos estndar enteros, real, lgico, carcter. La aplicacin a valores numricos es evidente. Los ejemplos siguientes son significativos:

N1

N2

Expresin lgica

Resultado

3<6

verdadero

0>1

falso

4=2

falso

8 <= 5

falso

9 >= 9

verdadero

5 <> 5

falso

Para realizar comparaciones de datos tipo carcter se requiere una secuencia de ordenadores de los caracteres similar al orden creciente o decreciente. Esta ordenacin suele ser alfabtica, tanto maysculas como minsculas, y numrica, considerndolas de modo independiente.

Pero si se consideran caracteres mixtos, se debe recurrir a un cdigo normalizado como es el ASCII. Aunque no todas las computadoras siguen el cdigo normalizado en su juego completo de caracteres, si son prcticamente estndar los cdigos de los caracteres alfanumricos ms usuales.

Cuando se utiliza los operadores de relacin, con valores lgicos, la constante flase (falso) es menor que la constante true (verdadero)

False

<

true

True

>

false

OPERADORES LGICOS

Los operadores lgicos o booleanos bsicos son not (no), and (y) y or (0).

Operador lgico

Expresin lgica

significado

No (not)

no p (not p)

negacin de p

Y (and)

p y q (p and q)

conjuncin de p u q

O (o)

p o q (p o q)

disyuncin de p y q

Las definiciones de las operaciones no, y, o se resumen en unas tablas conocidas como tablas de verdad:

no a

Verdadero

falso

no (6 > 10) es verdadera

Falso

verdadero

ya que (6<10) es falso

ayb

Verdadero

verdadero

verdadero

a y b es verdadero solo

Verdadero

falso

falso

si a y b son verdadero

Falso

verdadero

falso

Falso

falso

falso

PRIORIDAD DE LOS OPERADORES LGICOS

Los operadores aritmticos seguan un orden especficos de prioridad cuando exista ms de un operador en las expresiones. De modo similar, los operadores lgicos y relaciones tienen un orden de prioridad.

Al igual que en las expresiones aritmticas, los parntesis se pueden utilizar y tendrn prioridad sobre cualquier operacin.

Ejemplo.

No 4 > 6

produce un error, ya que el operador no se aplica a 4

no (4 > 14)

produce un valor verdadero

(1.0<x) y (x <, z, + 7.0)

si x vale 7 y z vale 4, se obtiene un valor Verdadero

FUNCIONES INTERNAS

Las operaciones que se requieren en los programas exigen en numerosas ocasiones, adems de las operaciones de la operaciones aritmticas bsicas, ya tratadas, un nmero determinado de operadores especiales que se denominan funciones internas, incorporadas o estndar.

Por ejemplo, la funcin ln se puede utilizar para determinar el logaritmo neperanio de un nmero y la funcin raz 2 (sqrt) calcula la raz cuadrada de un nmero positivo. Existen otras funciones que se utilizan para determinar las funciones trigonomtricas.

Funcin

Descripcin

Tipos de argumento

Resultado

Abs (x) que arg.

valor absoluto de x

entero o real

igual

Arctan(x)

arco tangente de x

entero o real

real

Cos(x)

coseno de x

entero o real

real

Exp (x)

exponencial de x

entero o real

real

Ln(x)

logaritmo neperiano x entero real

real

Log10(x)

logaritmo decimal x

entero real

real

Redondeo(x) (roun (x))*

redondeo de x

entero real

entero

Seno (x) (sin (x))*

seno de x

entero o real

real

Cuadrado (x) (sgr (x) )*

cuadrado de x

entero o real

igual que arg.

Raz 2 (x) (sqrt (x) *

raz cuadrada de x

entero o real

real

Trunc(x)

truncamiento de x

real

entero

LA OPERACIN DE ASIGNACIN

La operacin de asignacin es el modo de almacenar valores a una variable. La operacin de asignacin se representa con el smbolo u operado La operacin de asignacin se conoce como instruccin o sentencia de asignacin cuando se refiere a un lenguaje de programacin. El formato general de una operacin de asignacin es:

Nombre de la variable expresin

Expresin >== expresin, variable o constante

La flecha (operador de asignacin) se sustituye en otros lenguajes por = (Visual basic, FORTRAN) := (Pascal) 0 == (Java, C++,C). sin embargo, es preferido el uso de la flecha en la redaccin del algoritmo para evitar ambigedades, dejando el uso del smbolo = exclusivamente para el operador de igualdad.

La operacin de asignacin:

A5

Significa que la variable A se le ha asignado el valor 5

La accin de asignar es destructiva, ya que el valor que tuviera la variable antes de la asignacin se pierde y se reemplaza por el nuevo valor. As, en la secuencia de operaciones.

A A A

25 134 5

Cuando stas se ejecutan, el valor ltimo que toma A ser 5 (los valores 25 y 134 han desaparecido).

La computadora ejecuta la sentencia de asignacin en dos pasos. En el primero de ellos, el valor de la expresin al lado derecho del operador se calcula, obtenindose un valor de un tipo especfico.

En el segundo caso, este valor se almacena en la variable cuyo nombre aparece a la izquierda del operador de asignacin, sustituyendo al valor que tena anteriormente.

El valor de la expresin Y + 2 se asigna a la variable x.

Es posible utilizar el mismo nombre de variable en ambos lados del operador de asignacin. Por ello, acciones como

Tiene sentido; se determina el valor actual de la variable N se incrementa en 1 y a continuacin el resultado se asigna a la misma variable N. sin embargo, desde el punto de vista matemtico no tiene sentido N N + 1.

Las acciones de asignacin se clasifican segn sea el tipo de expresiones en: aritmticas, lgicas y de caracteres.

ASIGNACIN ARITMTICA

Las expresiones en las operaciones de asignacin son aritmticas:

AMN 3 + 14 + 8

se evala la expresin 3 + 14 + 8 y se asigna la variable AMN. Es decir, 25 ser el valor que toma AMN

TER1 14.5 + 8

TER2 0.75 * 3.4

COCIENTE TER1/TER2

Se evalan las expresiones 14.5 + 8 y 0.75 * 3.4 y en la tercera accin se dividen los resultados de cada expresin y se asigna a la variable COCIENTE, es decir, las tres operaciones equivalen COCIENTE (14.5 + 8) / (0.75 * 34).

Otro ejemplo donde se pueden comprender las modificaciones de los valores almacenados en una variable es el siguientes:

A 0

la variable A toma el valor 0

N 0

la variable N toma el valor 0

A N

la variable A toma el valor 0

El ejemplo anterior se puede modificar para considerar la misma variable en ambos lados del operador de asignacin.

N 2

N N + 1

En la primera accin N toma el valor 2 y en la segunda se evala la expresin N + 1, que tomar el valor 2 + 1= 3 y se asignar nuevamente a N, que tomar el valor 3.

ASIGNACIN LGICA

La expresin que se evala en la operacin de asignacin es lgica. Supngase que M, N y P son variables de tipo lgico.

M8<5

N M o (7 <= 12)

P7>6

Tras evaluar las operaciones, las variables M, N y P tomarn los valores flaso, verdadero, verdadero.

ASIGNACIN DE CADENAS DE CARACTERES

Las expresin que se evala es de tipo cadena:

X 12 de octubre de 1942

La accin de asignacin anterior asigna la cadena de caracteres 12 de octubre de 1942a la variable tipo cadena x.

CONVERSIN DE TIPO

En las asignaciones no se pueden asignar valores a una variable de un tipo diferente del suyo. Se presentar un error si se trata de asignar valores de tipo carcter a una variable numrica o un valore numrico a una variable tipo carcter.

Ejemplo:

cules son los valores de A, B y C despus de la ejecucin de las siguientes operaciones?

A 3 B 4

C A+2*B C C+B B C + A A B * C

En las dos primeras acciones A y B toman los valores 3 y 4

C A+2 *B C 11

la expresin A + 2 *B tomar el valor 3 + 2 * 4 = 3 + 8 = 11

La siguiente accin

C C + B

Producir un valor de 11 + 4 = 15

C B *C

En la accin B C A se obtiene para B el valor 15 3 = 12 y por ltimo.

A B * C

A TOMAR EL VALOR B * C es decir, 12 * 15 = 180; por consiguiente, el ltimo valor que toma A ser 180.

Ejemplo:

Cul es el valor de x despus de las siguientes operaciones?

X 2 X cuadrado (x + x) X raiz2 (x + raiz2(x) + 5)

Los resultados de cada expresin son:

X 2

x toma el valor de 2 x toma el valor 4 al cuadrad, es decir 16

X cuadrado (2 + 2)

X raiz2(16 + raiz2(16) + 5)

En esta expresin se evala raiz2(16), que produce 4, por ltimo, raiz2 (16+4+5) proporciona raiz2(25), es decir, 5 los resultados de las expresiones sucesivas anteriores son:

X 2 X 16 X 5

ENTRADA Y SALIDAD DE INFORMACIN

Los clculos que realizan las computadoras requieren para ser tiles la entrada de los datos necesarios para ejecutar las operaciones que posteriormente se convertirn, es decir, salida.

Las operaciones de entrada permiten leer determinados valores y asignarlos a determinadas variables. Esta entrada se conoce como operacin de lectura (read). Los datos de entrada se introducen al procesador mediante dispositivos de entrada: Teclado Tarjetas perforadas Unidades de disco, etc.

La salida puede aparecer en un dispositivo de salida: Pantalla Impresora, etc.

Las operacin de salida se denomina escritura (write)

Leer (lista de variables de entrada) Escribir (lista de variables de salida)

As, por ejemplo:

Leer (A, B, C)

Representa la lectura de tres valores de entrada que se asignan a las variables A, B y C.

leer (hola Vargas)

visualiza en la pantalla o escribe en el dispositivo de salida el mensaje `hola Vargas

nota 1

Si se utilizaran las palabras reservadas en ingls, como suele ocurrir en los lenguajes de programacin, se deber sustituir.

Leer Por

escribir

Read

write o bien print

nota 2

Si no se especifica el tipo de dispositivo del cual se leen o escriben datos, los dispositivos de E/S por defecto son el teclado y la pantalla.

ESCRITURA DE ALGORITMOS/PROGRAMAS

La escritura de una algoritmo mediante una herramienta de programacin debe ser lo ms clara posible y estructurada, de modo que su lectura facilite considerablemente el entendimiento del algoritmo y su posterior codificacin en un lenguaje de programacin.

Los algoritmo deben ser escritos en lenguaje similares a los programas. En nuestro libro utilizaremos esencialmente el lenguaje algortmico, basado en pseudocdigo, y la estructura del algoritmo requerir la lgica de los programa escrito en el lenguaje de programacin estructurado; por ejemplo, Pascal

Las declaraciones definen o declaran las variables y constantes que tengan nombres. Las acciones ejecutables son las acciones que posteriormente deber realizar la computacin cuando el algoritmo convertido en programa se ejecute.

Algoritmo Cabecera del programa Seccin de declaracin Seccin de acciones

CABECERA DEL PROGRAMA O ALGORITMO

Todos los algoritmos y programas deben comenzar con una cabecera en la que se exprese el identificador o nombre correspondiente con la palabra reservada que seale el lenguaje. En

los lenguajes de programacin, la palabra reservada suele ser programa. En algortmica se denomina algoritmo.

Algoritmo DEMO1

DECLARACIN DE VARIABLES

En esta seccin se declaro o describen todas las variables utilizadas en el algoritmo, listndose sus nombres y especificando sus tipos. Esta seccin comienza con la palabra reservada var (abreviatura de variable) y tiene el formato.

Var Tipo-1 : lista de variable-1 Tipo-2 : lista de variables 2 .. .. Tipo-n : lista de variable-n

Donde cada lista de variables es una variable simple o una lista de variables separadas por comas y cada tipo es uno de los tipos de datos bsico (entero, real, char o boolean), por ejemplo, la seccin de declaracin de variables.

Var Entera : Real Real Real : : : numero-empleo horas impuesto salario

O de modo de equivalente

Var Entera : Real : numero_empleado horas, impuesto, salario

Declara que slo las tres variables hora, impuesto y salario son de tipo real.

Es una buena prctica e programacin utilizar nombres de variables significativos que surgieran lo que ellas representan, ya que eso har ms fcil y legible el programa.

Tambin es buena prctica incluir breves comentarios que indique cmo se utiliza la variable.

Var Entera : Real : numero_empleado horas Impuesto, Salario // nmero de empleado // horas trabajadas // impuesto a pagar // cantidad ganada

DECLARACIN DE CONSTANTES NUMRICAS

Es esta seccin se declaran todas las constantes que tengan nombres. Su formato es:

Const Pi Tamao Horas = = = 3.141592 43 6.50

Los valores de estas constantes ya no pueden variar en el transcurso del algoritmo.

DECLARACIN DE CONSTANTES Y VARIABLES CARCTER

Las constantes de carcter simple y cadenas de caracteres pueden ser declaradas en la seccin del programa const, al igual que las constantes numricas.

Const Estrella = Frase Mensaje * = = 12 de octubre hola mi nene

Las variables de caracteres se declaran de dos modos:

1. Almacenar un solo carcter Var carcter : nombre, inicial, nota, letra Se declaran nombres, inicial, nota y letra. Que almacenarn slo un carcter.

2. Almacenar mltiples caracteres (cadena). El almacenamiento de caracteres mltiples depender del lenguaje de programacin. As, en los lenguajes

VB 6.0/VB .NET

(VB, Visual Basic)

Pascal formato de tipo array

ESTILO DE ESCRITURA DE ALGORITMOS / PROGRAMAS

El mtodo que seguiremos normalmente a lo largo del libro para escribir algoritmo ser el descrito al comienzo del Apartado 3.11.

Algoritmo identificado // seccin de declaraciones

cabecera

Var tipo de datos : lista de identificadores Const lista de identificadores = valor Inicio <sentencia S1) <sentencia S2) . <sentencia Sn) cuerpo del algoritmo

Nota:

1. En ocasiones, la declaracin de constantes y variables las omitiremos o se describirn en una tabla de variables que hace sus misma funciones. 2. Las cadenas de caracteres se encerrarn entre comillas simples. 3. Utilizar siempre sangras en los bucles o en aquellas instrucciones que proporcionen legibilidad al programa, como inicio y fin.

Modelo propuesto de algoritmo

Algortimo races // resuelve una ecuacin de 2. grado Var Real : a, b, c Inicio Leer (a, b, c) D b ^2 * 4 * a * c Si d 0 entonces Escribir (raices comlejas)

Si_no Si d = 0 entonces Escribir (-b / (2 * a) Si/no Escribir ( ( -b raiz2(d) ) / (2 * a) Escribir ( (-b + raiz2(d) ) / (2 * a) Fin_si Fin_si fin

ACTIVIDADES DE PROGRAMACIN RESUELTAS

1. Disear un algoritmo para cambiar una rueda de un coche Solucin: Algoritmo pinchazo Inicio Si gato del coche est averiado Entonces llamar a la estacin de servicios Si_no levantar el coche con el gato Repetir Aflojar y sacar los tornillos de la ruedas Hasta_que todos los tornillos estn flojos y quitados Quitar la rueda Poner la rueda de repuesto Repetir Poner los tornillos y apretarlos Hasta_que estn puestos todos los tornillos Bajar el gato Fin_si Fin

2. Encontrar el valor de la variable VALOR despus de la ejecucin de las siguientes operaciones: (A) VALOR 4.0 * 5 (B) X 3.0 Y 2.0

VALOR X `Y Y (C) VALOR 5 X 3 VALOR VALOR * X

Solucin

(A) VALOR = 20.0 (B) X = 3.0 Y = 2.0 VALOR = 3 ^2 2 = 9 2 = 7 (C) VALOR = 5 X=3 VALOR = VALOR * X = 5 * 3 = 15

VALOR = 7

VALOR = 15

3. Deducir el resultado que se produce con las siguientes instrucciones: Var entero : X, Y X 1 Y 5 ESCRIBIR (X, Y)

Solucin

X e Y toman los valores 1 y 5. La instruccin de salida (escribir) presentar en el dispositivo de salida 1 y 5, con los formatos especficos del lenguaje de programacin; por ejemplo,

4. Se tienen tres variables A, B y C. escribir las instrucciones necesarias para intercambiar entre si sus valores del modo siguiente: B toma el valor de A C toma el valor de B A toma el valor de C

Nota: slo se debe utilizar una variable auxiliar

Solucin

Utilizaremos una variables AUX

Las instrucciones que resuelven el problema de intercambio son:

AUX A C B

A C B AUX

Comprobmoslo con los valores de A, B y C

Instruccin

AUX

Observaciones

(1) A 5 (2) B 10 (3) C 15 AUX A A C C B B AUX

15

5 --5 15 15 5

-10 -10 10 10 10

--15 15 15 10 5

---5 5 5

Obsrvese que al igual que en el ejercicio de intercambio de valores entre dos variables, la variable AUX no modifica su valor.

5. Deducir el valor que toma la variable tras la ejecucin de las instrucciones. A 4 B A B A+3 Solucin

Mediante una tabla se da un mtodo eficaz para obtener los sucesivos valores: A 4 4 4 B -4 7

(1) A A (2) B A (3) B A + 3

Despus de la instruccin la variable A contiene el valor de 4 La variable B no ha tomado todava ningn valor y se representa esa situacin con un guin. La instruccin (2) asigna el valor actual de A (4) a la variable B. la instruccin (3) efecta el clculo de la expresin A + 3 lo que produce un resultado de 7 (4 + 3) y este valor se asigna a la variable B, cuyos ltimo valor (4) se destruye. Por consiguiente, los valores finales que tienen las variables A y B son: A = 4 b=7

6. Qu se obtiene en las variables A y B, despus de la ejecucin de las siguientes instruccin) A B A B 5 A+6 A+1 A5

SOLUCIN Siguiendo las directrices del ejercicios anterior:

Instruccin

Observaciones

(1) A 5 (2) B A + 6 (3) A A + 1

5 5 6 11 11

(4) B A 5

-B no toma ningn valor Se evala A + 6(5 +6) y se asigna B Se evala A + 1(5 + 1) y se asigna A, borrndose el valor que tena (5) y tomando el nuevo valor (6). Se evala A 5(6 1) y se asigna a B

Los valores ltimos de A y B son: A = 6.8 = 1.

7. Qu se obtiene en las variables A, B y C despus de ejecutar las instrucciones siguientes? A B A B A 5 20 A+B A + B B - C

SOLUCIN Instruccin (1) (2) (3) A 3 B 20 C A+B A+B A 3 3 3 3 B 20 20 23 C -.. 23 Observaciones

(4) B

(5) A B C 0

23

23

B y C no toma ningn valor C sigue sin valor Se evala A + B(20 + 3) y se asigna a C 23 Se evala A + B(20 + 3) y se asigna a B; destruye el valor antiguo (20). Se evala B C(23 23) y se asigna a A.

Los valores finales de las variables son: A =0 B = 23 C = 23

8. Qu se obtiene e A y B tras la ejecucin de A 10 B 5 A B B A SOLUCIN Instruccin (6) (7) (8) (9) A B A B 10 5 B A 10 10 5 5 5 A -B Observaciones

B no toma valor 5 B recibe el valor inicial 5 5 A toma el valor de B (5) B toma el valor actual de A (5)

Los valores finales de A y B son %. En este caso se podra decir que la instruccin (4) B A es redundante respeto a la anteriores, ya que su ejecucin no afecta al valor de las variables. 9. Determinar el mayor de tres nmeros enteros Solucin Los pasos a seguir son: a. Comparar el primero y el segundo entero, deduciendo cul es el mayor. b. Comparar el mayor anterior con el tercero y deducir cul es el mayor. Este ser el resultado

Los pasos anteriores se pueden descomponer en otros pasos ms simples en lo que se denomina refinamiento del algoritmo:

1. 2. 3. 4. 5. 6. 7.

Obtener el primer nmero (entrada), denominarlo NM1 Obtener el segundo nmero (entrada), denominado NUM2 Comparar NUM1 con NUM2 y seleccionar el mayor, si los dos enteros son iguales, seleccionar NUM1. Llamar a este nmero MAYOR Obtener el tercer nmero (entrada) y denominado NUM3 Comparar MAYOR con NUM3 y seleccionar el mayor; si los dos son iguales, seleccionar el MAYOR. Determinar a este nmero MAYOR. Presentar el valor de MAYOR (salida) Fin

10. Determinar la cantidad total a pagar por una llamada telefnica, teniendo en cuanta lo siguiente: Toda llamada que dure menos de tres minutos (cinco pasos) tiene un coste de 10 cntimos. Cada minuto adicionales a partir de los tres primeros es un paso de contador y cuesta 5 cntimos.

Solucin

Anlisis El algoritmo de resolucin del problema entraa los siguientes pasos:

1. 2. 3.

4.

Inicio Leer el nmero se pasos (npasos) hablados por telfono Comprobar que el nmero de pasos es mayor que cero, ya que realmente se ha realizado la llamada si el nmero de pasos es distinto de cero (positivo). Si el nmero de pasos es menor a cero, se producir un error. Calcular el precio de la conferencia de acuerdo con los siguientes conceptos: Si el nmero de pasos es menor que 5, el precio es de 10 cntimos Si el numero de pasos es mayor que 5, es preciso calcular los pasos que exceden de 5, ya que stos importan 5 cntimos casa uno; al producto de los pasos sobrantes por cinco cntimos de le suma 10 peseras y se obtendr el precio total.

Variables: NPASOS N FACT Nmeros de pasos de la llamadas Nmero de pasos que exceden 5 Importe o precio de la llamada.

Diagrama d eflujo

inicio

Leer NPASOS

NPASOS <= 0

si

Escribir error

1
Hacer FACT 10 N NPASOS-5

N>0

si

HACER FACT FACT + N * 5

no

ESCRIBIR NPASOS FACT

fin

11. Calcular la suma de los cincuenta primero nmero enteros: SOLUCIN Anlisis El algoritmo expresado en lenguaje natural o en secuencia de pasos es el siguiente: 1. 2. 3. 4. 5. 6. Inicio Hacer el primer nmero 1 igual a una variable X que actuar de contador de 1 a 50 y 5 igual a 0 Hacer S = S + X para realizar las sumas parciales. Hacer X = X+1 para generar los nmeros enteros Repetir los pasos 3 y 4 hasta que x = 50,l en cuyo caso se debe visualizar la suma Fin

inicio

X1

S0

X <= 50

Escribir S

fin

SS+X

XX + 1

12. Escribir aun algoritmo que calcule el producto de los n primeros nmeros naturales Solucin El problema puede calcular el producto N * (N 1 * (n 2) * . * 3 *2 * 1, que en trmino matemticos se le conoce con el nombre de FACTORIAL de N. el algoritmo que resuelve el problema ser el siguiente: 1. 2. 3. 4. 5. Leer N Caso de que N = 0 visualizar Factorial de 0 igual 1 Comprobar que N > 0 (los nmeros negativos no se consideran). Hacer la variable P que va a contener el productor igual a 1. Realizar el producto P = P * N Disminuir en una unidad sucesivamente hasta llegar a N = 1, y de modo simultneo los productos P * N Visualizar P. fin

6. 7.

You might also like