Sie sind auf Seite 1von 97

LOGICA DE PROGRAMACION

INTRODUCCION

El Proceso de preparar soluciones para un computador tiene un atractivo especial, slo puede ser compensado econmicamente y cientficamente, sino tambin porque puede ser experiencia esttica como la poesa o la msica Donald Knuth Lgica. Habilidad creativa para hallar soluciones a los problemas. Se debe partir de un acervo de conocimientos, compuesto de principios, prcticas aceptadas, experiencias de problemas anteriores, etc. Programacin. Conjunto de procedimientos, mtodos a seguir en la solucin de un problema. La Lgica de Programacin se define como la manera de cultivar el ingenio y talento humano en la seleccin como en la aplicacin de los diversos procedimientos y mtodos a seguir en la solucin de un problema.

UNIDAD1. UNIDADES DE LA REALIDAD 1.1 Entidad. Toda Cosa Persona del que/quien se puede decir algo. Ejemplo. Alumno, Pantalla 1.2 Informacin. El Atributo o Caracterstica de la Entidad Ejemplo. Alumno={Cdigo, Nombre, Grupo} Pantalla={BackGround, ForeGround, Alto} 1.3 Dato. El valor asociado a la Informacin. Ejemplo. Alumno={12345, Jose, 11B} Pantalla={Azul, Verde, 1200} 1.4 Propiedad. Es la Unin de la Informacin y el Dato. Ejemplo. Alumno= { (Cdigo:12345), (Nombre:Jose), (Grupo:11B)} Pantalla={ (BackGround:Azul), (BackColor:Verde), (Alto:1200)} Ejercicio. Determinar la Informacin, Datos y Propiedades de la Entidad Materia.

UNIDAD 2. REPRESENTACION DE LA REALIDAD 2.1 Dominio de Valores. El Conjunto de Valores/Datos asociados a una Informacin. Ejemplo. BACKCOLOR AZUL VERDE BLANCO

NOMBRE JAIRO MARIO ADRIANA Tipo. Se determina por el conjunto de smbolos asociados a los valores/datos. Los siguientes son los formatos ms conocidos: Numrico. Expresan Enteros o Reales Cadena. Conformado por letras, letras y nmeros, caracteres Fecha. Expresado en Da/Mes/Ao Medio. Imagen, Sonido Booleano. Expresado en Presencia(Verdad) Ausencia(Falso) Especiales

Formato. Es la Unin del Tipo con su respectiva longitud. Ejemplo. Nombre: Cadena(20) Medio: Sonido Maximizado: Verdad

UNIDAD 3. ALMACENAMIENTO DE DATOS MUNDO Atributos Dato COMPUTADOR Direcciones de Memoria

Los Valores/Datos del Mundo Real deben ser almacenados en direcciones de Memoria del computador para ser posteriormente procesados. Las Direcciones de Memoria se denominan: Constantes y/o Variables. Regla. El nombre de estas direcciones debe estar de acuerdo con el objetivo que cumplen. Ejemplo. Nombre, Ancho, Color 3.1 Constante. Una vez asignado un valor inicial no cambia en el tiempo. Ejemplo. PI=3.1416 GRAVEDAD=9.80 3.2 Variable. Su valor Cambia de acuerdo a las necesidades Existen tres categoras de Variables: Contador/Indice. Cuenta/Indica el nmero de sucesos Ejemplo. Contador de Aciertos Acumulador. Acepta diversidad de valores Ejemplo. Acumulador de Puntos Estado. Indica ausencia o presencia de un suceso Ejemplo. Acierto Error

UNIDAD 4. OPERATIVIDAD DE LA INFORMACION

4.1 Operadores Aritmticos Suma: + Resta: Divisin; / Multiplicacin: * Residuo: %

4.2 Operadores de Relacin Mayor: > Menor: < Mayor Igual: >= Menor Igual: <= Igual: = Diferente: <>

4.3 Condicin. Es la Accin de Evaluar una variable contra un variable/valor. El Resultado es: Presencia(Verdad)/ Ausencia(Falso) Los tipos de Condicin son los siguientes: Igualdad. Variable = Valor Ejemplo. Sexo Masculino. Sexo=M Desigualdad. Variable<> Valor Cota Inferior. Variable > Valor Variable >= Valor Ejemplo. Los Mayores de Edad. Edad >= 18 Aos Cota Superior. Variable < Valor Variable <= Valor Ejemplo. Los Menores de Edad. Edad < 18 Aos Ejemplo. Origen Diferente de Bogot. Sede<>Bogot

4.4 Operadores Lgicos Evalan la obligatoriedad o exclusin de condiciones. 4.4.1 AND(Obligatoriedad) Condicin A Condicin B Resultado Verdad Verdad Verdad Verdad Falso Falso Falso Verdad Falso Falso Falso Falso Regla. Para cumplir la Evaluacin(Verdad) deben presentarse las dos condiciones, o sino, no se cumple(Falso) Ejemplo: Categora Juvenil . Edad >=10 AND Edad<=16 4.4.2 OR(Exclusin) Condicin A Condicin B Resultado Verdad Verdad Verdad Verdad Falso Verdad Falso Verdad Verdad Falso Falso Falso Regla. Para Cumplir con la Evaluacin (Verdad) debe presentarse una de las dos condiciones. Ejemplo. Hincha Caleo. Equipo=Cali OR Equipo=America

UNIDAD 5. ALGORITMO 5.1 DEFINICIN Un conjunto finito de pasos, los cuales dan una secuencia ordenada de operaciones, para resolver un tipo especifico de problema. En la construccin de un algoritmo se deben tener en cuenta las siguientes caractersticas: Finito. Un algoritmo debe terminar siempre despus de un nmero finito de pasos; no existiendo, restricciones en la cantidad de pasos( mnimos o mximos) Definido. Cada paso debe ser definido de una manera precisa ( antes o despus de), permitiendo ejecutarse de una manera rigurosamente especifica no permitiendo ambigedad Entrada. Son los valores necesarios para la solucin del problema. Salida. Es el resultado de la solucin del problema Efectividad. Que cumpla con el objetivo de resolver solucionar el problema

5.2 PROPOSICIONES BASICAS A cada uno de los pasos elementales con los que se construye un algoritmo se les llama proposiciones o primitivas. 5.2.1 De Comienzo Indica el principio del algoritmo mediante la palabra INICIO 5.2.2 Declaracin Parte para iniciar constantes o declarar variables Ejemplo. Pi=3.1416 Edad:Numero Nombre:Cadena 5.2.3 Finalizacin Con esta proposicin se da por terminado el algoritmo. Se utiliza la palabra FIN 5.2.4 Lectura Se usa para simular la lectura de valores desde el teclado. Estos valores son asignados a las respectivas variables. LEA variable Ejemplo. LEA Sexo 5.2.5 De escritura Escribe en la pantalla los contenidos de la variable ESCRIBA Variable Ejemplo. ESCRIBA Promedio

5.2.6 Asignacin. Significa que una variable va a recibir un valor cuyo origen puede ser una constante, otra variable u operacin aritmtica. Se pueden realizar de las siguientes maneras: Variable = Variable Variable = Constante Variable = Operacin Aritmtica Ejemplo. Algoritmo que promedia dos notas. INICIO Nota1: Numero Nota2: Numero Suma: Numero Promedio: Numero LEA Nota1 LEA Nota2 Suma = Nota1 + Nota2 Promedio = Suma / 2 ESCRIBA Nota1 ESCRIBA Nota2 ESCRIBA Promedio FIN

5.2.7 De Condicin Cuando es necesario evaluar la presencia no de una condicin Es ms sencillo entenderlo inicialmente como un rbol de condicin para determinar cual es el camino lgico cuando se presente o no esta condicin Una vez entendido este rbol de condicin, se declara la proposicin de condicin as: Presencia

Condicin

Ausencia Si Condicin ENT Proposicin SINO Proposicin FIN SI Donde el Termino ENT indica Presencia Donde el Termino SINO indica Ausencia

Ejemplo. Determinar cuando es mayor de edad. Arbol de Condicin ESCRIBA Mayor de Edad Edad>=18 Presencia

Ausencia ESCRIBA Menor de Edad

Algoritmo Si Edad>=18 ENT ESCRIBA Mayor de Edad SINO ESCRIBA Mayor de Edad FIN SI Ejemplo. Algoritmo de Puntos Mnimos INICIO Puntos: Numero LEA Puntos Si Puntos>=7 ENT ESCRIBA Paso La Prueba SINO ESCRIBA Realizar de Nuevo La Prueba FIN SI FINAL

5.2.8 De Seleccin De Acuerdo al valor de una y solamente una variable se realiza una accin. La Categora de Seleccin se da mediante: Atmico: Valor Unico. Conjunto de Valores: Valor1, Valor2, Valor3 Cota: >= Valor <= Valor < > Valor Valor

SINO: Cuando no se presenta los anteriores valores

Tambin se puede crear un rbol de seleccin as: Unico Valor1,Valor2 Variables Valor3 Hasta Valor4

Cota

La Estructura de Seleccin es la Siguiente: DEPENDIENDO DE Variable CASO Valor Unico: Accin CASO Conjunto de Valores: Accin CASO Cota: Accin SINO Accin FIN DD

INICIO Puntos: Numero LEA Puntos DEPENDIENDO DE Puntos CASO 10: ESCRIBA Excelente CASO 9: ESCRIBA Bueno CASO 6 HASTA 8: ESCRIBA Aceptable CASO <=5: ESCRIBA Debe Mejorar FINDD FINAL 5.2.9 De Repeticin Controlada MIENTRAS QUE Se realiza un bloque de proposiciones siempre y cuando se presente una condicin. Es muy importante, tener en cuenta que la condicin cambie de valor en algn instante. MIENTRAS QUE Condicin HAGA Bloque de Proposiciones FIN MQ Regla. Cuando no se presenta la condicin, se salta a la proposicin siguiente del FIN MQ

Ejemplo. Hacer el Diez veces la suma de las Variables A y B INICIO A: Numero B: Numero Conteo: Numero LEA A LEA B Conteo=1 MIENTRAS QUE Conteo<=10 HAGA B= B + A Conteo = Conteo + 1 FIN MQ ESCRIBA B FIN Anlisis. Mientras que el valor de la variable conteo sea menor o igual a 10 se suma B con A. Si conteo no es menor o igual a 10; se salta y escribe B.

5.2.10 De Repeticin Fijo PARA Se realiza un bloque de proposiciones un numero fijo de veces. PARA Indice= 1 HASTA Veces Bloque Preposiones FPARA Ejemplo. Hacer el Diez veces la suma de las Variables A y B INICIO A: Numero B: Numero I: Numero LEA A LEA B Conteo=1 PARA I= 1 HASTA 10 B= B + A FPARA ESCRIBA B FIN Anlisis. La Variable I cuenta el nmero de sumas de A con B.

UNIDAD 6. LOGICA DE PROGRMACION CON PSEINT CAPITULO 1. QUE ES PSEINT Tomado de: http://pseint.sourceforge.net/ PSeInt es una herramienta para aprender la lgica de programacin, orientada a estudiantes sin experiencia en dicha rea. Mediante la utilizacin de un simple y limitado pseudo-lenguaje intuitivo y en espaol, permite comenzar a comprender conceptos bsicos y fundamentales de un algoritmo computacional. Nacido originalmente como proyecto final para la materia Programacin I de la carrera Ingeniera en Informtica de la Facultad de Ingeniera y Ciencias Hdricas de la Universidad Nacional del Litoral, es en realidad un intrprete de pseudocdigo basado en los contenidos de la ctedra de Fundamentos de Programacin de dicha carrera. Para qu sirve PSeInt? PSeInt est pensado para asistir a los estudiantes que se inician en la construccin de programas o algoritmos computacionales. El pseudocdigo se suele utilizar como primer contacto para introducir conceptos bsicos como el uso de estructuras de control, expresiones, variables, etc, sin tener que lidiar con las particularidades de la sintaxis de un lenguaje real. Este software pretende facilitarle al principiante la tarea de escribir algoritmos en este pseudolenguaje presentando un conjunto de ayudas y asistencias, y brindarle adems algunas herramientas adicionales que le ayuden a encontrar errores y comprender la lgica de los algoritmos.

Caractersticas y Funcionalidades de PSeInt: * Presenta herramientas de edicin bsicas para escribir algoritmos en pseudocdigo en espaol * Permite la edicin simultnea de mltiple algoritmos * Presenta ayudas para la escritura o Autocompletado o Ayudas Emergentes o Plantillas de Comandos o Coloreado de Sintaxis o Indentado Inteligente * Puede ejecutar los algoritmos escritos * Permite ejecutar el algoritmo paso a paso controlando la velocidad e inspeccionando expresiones * Puede confeccionar automticamente la tabla de prueba de escritorio * Determina y marca los errores de sintaxis y en tiempo de ejecucion * Genera diagramas de flujo a partir del algoritmo escrito * Convierte el algoritmo de pseudocdigo a cdigo C++ * Incluye un conjunto de ejemplos de diferentes niveles de dificultad * Es multiplataforma (probado en Microsoft Windows y GNU/Linux) * Es totalmente libre y gratuito (licencia GPL)

CAPITULO 2. DESCRIPCION GRAMATICAL DEL PSEINT Para describir la gramtica del PseduloLenguaje Pseint se utilizara la Forma Backus Neur (BNF). Los Autores de este libro utilizan las siguientes formas: < > Elemento No Terminal Compuesto de define :Se Define como compuesto de Sucesin () Agrupa
max min

Indica cantidad Mnima y mxima de Elementos

1. NATURALEZA DE LOS SIMBOLOS Java define los smbolos de naturaleza: <smbolos>:- <letras> <dgitos> <operadores><blanco> <letras>:- <maysculas> <minsculas> <dgitos>:-09 <operadores>: - <aritmticos> <lgicos> <relacin> <bloques> <agrupacin> <puntuacin> <literal> SIMBOLOS NATURALEZA AZ az 09 + - * /% & | (Alt 124) ><= {} () [] ,;. <maysculas> <minsculas> <dgitos> <aritmticos > <lgicos> <relacin> <bloques> <agrupacin> <puntuacin> <literal> <blanco>

TOKENS: REGLAS (BNF) Token: Se define como una coleccin de smbolos de igual naturaleza. Los Token se pueden definir de naturaleza: <Token>:- <Operandos><Operadores> <operandos>:- <variable> < reservada> <numero><cadena> <todo minscula>:- < min usculas > Ejemplo: static
2

<titulada>:- <mayscula> <todo minscula> Ejemplo: String <nombre variable>: - <letra> < letra > Ejemplo: a
0

<reservada>: - < titulada > Ejemplo:Segun


1

<numero>:- <entero> <real> <numero entero>:256

< digito > Ejemplo: 9


1

<numero real>:- <numero entero> . <numero entero> Ejemplo: 3.1416 <cadena>:-

<smbolo>

Ejemplo: valor variable

OPERADORES El Pseint dispone de un conjunto bsico de operadores que pueden ser utilizados para la construccin de expresiones ms o menos complejas. Las siguientes tablas exhiben la totalidad de los operadores de este lenguaje reducido:
Operador Significado Ejemplo Relaciona les > Mayor que 3>2 < Menor que 'ABC'<'abc' = Igual que 4=3 Menor o igual <= que 'a'<='b' Mayor o igual >= que 4>=5 <> Diferente n<>5 Lgicos &Y Conjuncin (y). (7>4) & (2=1) //falso (1=1 | 2=1) |O Disyuncin (o). //verdadero ~ NO Negacin (no). ~(2<5) //falso Algebraic os total <- cant1 + + Suma cant2 Resta stock <- disp - venta * Multiplicacin area <- base * altura porc <- 100 * parte / / Divisin total sup <- 3.41 * radio ^ ^ Potenciacin 2 Mdulo resto <- num MOD % MOD (residuo) div

La jerarqua de los operadores matemticos es igual a la del lgebra, aunque puede alterarse mediante el uso de parntesis.

FUNCIONES Pseint proporciona funciones matemticas (retornan un resultado de tipo numrico) y reciben un slo parmetro de tipo numrico. A continuacin se listan las funciones integradas disponibles:
Funcin RC(X) ABS(X) LN(X) Significado Raz Cuadrada de X Valor Absoluto de X Logaritmo Natural de X Funcin Exponencial de X Seno de X Coseno de X Tangente de X Arcoseno de X Arcocoseno de X Arcotangente de X

EXP(X) SEN(X) COS(X) TAN(X) ASEN(X) ACOS(X) ATAN(X) TRUNC(X ) Parte entera de X REDON(X ) Entero ms cercano a X Entero aleatorio entre 0 AZAR(X) y x-1

CAPITULO 3. AMBIENTE PSEINT De donde se descarga Ingrese a: http://descargar.portalprogramas.com/PSeInt.html En el link

Se debe hacer clic sobre ejecutar en las siguientes ventanas:

Por defecto se instala en Archivos de Programa en la Carpeta Pseint

Como se ejecuta: Mediante el explorador o mi pc acceder a la carpeta PseInt de Archivos de programa Ejecutar o abrir wxPSeint

Pantalla PSeint

CAPITULO 4. FORMA GENERAL DE UN ALGORITMO EN PSEUDOCODIGO Todo algoritmo en pseudocgido tiene la siguiente estructura general: Proceso SinTitulo accion 1; accion 1; . accion n; FinProceso Comienza con la palabra clave Proceso seguida del nombre del programa, luego le sigue una secuencia de instrucciones y finaliza con la palabra FinProceso. Una secuencia de instrucciones es una lista de una o ms instrucciones, cada una terminada en punto y coma. Recomendacin 1. Se recomienda y se obliga a dar un nombre al programa; por ejemplo si estamos sumando edades entonces: Proceso sumaedad FinProceso Recomendacin 2. Se recomienda que el nombre del archivo se igual a nombre del programa, entonces se debe seleccionar la Opcin Guardar Como del Men Archivo

En la ventana Guardar se coloca el Nombre de archivo sumaedad

Los comandos incluyen operaciones de entrada y salida, asignaciones de variables, condicionales si-entonces o de seleccin mltiple y/o lazos mientras, repetir o para. Recomendacin 3. Se debe ubicar en la lnea de cdigo donde es necesario incluir un comando. Despus, se selecciona el comando de la barra de Comandos y se pulsa un clic

Recomendacin 4. Lo variable de un comando es lo que aparece entre { } por ejemplo: Proceso primos Escribir {lista_de_expresiones}; FinProceso Caso 0: Escribir {lista_de_expresiones}; Solucin. Escribir "Digite Edad"; Escribir "suma:",suma; Caso 1: Leer {lista_de_variables}; Solucin. Leer edad; Caso 2: Si {expresion_logica} Entonces {acciones_por_verdadero} Sino {acciones_por_falso} FinSi Solucin. Si edad>=18 Entonces Escribir "Es mayor de Edad"; Sino Escribir "Es menor de Edad"; FinSi Caso 3: {variable}<-{expresion}; Solucin. Suma<-0; suma<-suma+edad;

Caso 4. Para {variable_numerica}<-{valor_inicial} Hasta {valor_final} Con Paso {paso} Hacer {secuencia_de_acciones} FinPara Solucin. Para i<-1 Hasta 10 Con Paso 1 Hacer Escribir "Digite la Edad"; Leer edad; suma<-suma+edad; FinPara

Entonces, se puede ejecutar el programa Proceso sumaedad suma<-0; Para i<-1 Hasta 10 Con Paso 1 Hacer Escribir "Digite la Edad"; Leer edad; suma<-suma+edad; FinPara Escribir "suma:",suma; FinProceso

CAPITULO 5. TIPOS DE DATOS TIPOS DE DATOS SIMPLES Existen tres tipos de datos bsicos: Numero: enteros como decimales. Para separar decimales se utiliza el punto. Ejemplos: 12 23 0 -2.3 3.14 Lgico: solo puede tomar dos valores: VERDADERO o FALSO. Caracter: caracteres o cadenas de caracteres encerrados entre comillas (pueden ser dobles o simples). Ejemplos 'hola' "hola mundo" '123' 'FALSO' 'etc' Los tipos de datos simples se determinan automticamente cuando se crean las variables. Las dos acciones que pueden crear una variable son la lectura (LEER) y la asignacion(<-). Por ejemplo, la asignacin "A<-0;" est indicando implcitamente que la variable A ser una variable numrica. Una vez determinado el tipo de dato, deber permanecer constante durante toda la ejecucin del proceso; en caso contrario el proceso ser interrumpido. Ejemplo: La inicializacin de las variables serie de Fibonacci a<-0 b<-1 c<-0 A veces, se hace necesario declarar las variables a utilizar en el algoritmo para indicar al computador el nombre y de qu tipo es. Para eso, se utiliza la clausula definir como. Ejemplo: definir n como numero; definir t como caracter; definir x como logico;

ARREGLOS Los arreglos son estructuras de datos homogneas (todos sus datos son del mismo tipo) que permiten almacenar un determinado nmero de datos bajo un mismo identificador, para luego referirse a los mismo utilizando uno o ms subndices. Los arreglos pueden pensarse como vectores, matrices, etc. Para poder utilizar un arreglo, primero es obligatorio su dimensionamiento; es decir, definirlo declarando los rangos de sus subndices, lo cual determina cuantos elementos se almacenarn y como se acceder a los mismos. Dimensionamiento La instruccin Dimension permite definir un arreglo, indicando sus dimensiones. Dimesion <identificador> (<maxl>,...,<maxN>); Esta instruccin define un arreglo con el nombre indicado en <indentificador> y N dimensiones. Los N parmetros indican la cantidad de dimensiones y el valor mximo de cada una de ellas. La cantidad de dimensiones puede ser una o ms, y la mxima cantidad de elementos debe ser una expresin numrica positiva. Se pueden definir ms de un arreglo en una misma instruccin, separndolos con una coma (,). Dimension <ident1> (<max11>,...,<max1N>),..., <identM> (<maxM1>,...,<maxMN>) Ejemplo: La declaracin de un Vector Dimension A(5) La Declaracin de una Matriz Dimension B(5,5)

CAPITULO 6. PRIMITIVAS SECUENCIALES ASIGNACION La instruccin de asignacin permite almacenar una valor en una variable. <variable> <- <expresin> ; Al ejecutarse la asignacin, primero se evala la expresin de la derecha y luego se asigna el resultado a la variable de la izquierda. El tipo de la variable y el de la expresin deben coincidir.

Ejemplos: suma <- 0; Contador <- Contador + 1;

LECTURA Le permite ingresar datos o valores a una variable o lista de variables Leer lista_de_variables;

Las Variables a leer deben estar separadas por coma(,) Ejemplos: Leer n; Leer Codigo, Cantidad;

ESCRITURA Le permite publicar los valores de una variable o una lista de variables Escribir lista_de_expresiones;

Los Valores a publicar deben estar separados por coma(,) Ejemplo: Proceso sin_titulo Escribir "Digite el Valor de n:"; Leer n; Escribir "El valor de n: ",n; FinProceso

CAPITULO 7. RELACION AUTOMATAS CON ESTRUCTURAS DE PROGRAMACION PSEINT ARBOL DE CONDICION Cuando es necesario evaluar la presencia no de una condicin Es ms sencillo entenderlo inicialmente como un rbol de condicin para determinar cual es el camino lgico cuando se presente o no esta condicin

Condicin

Presencia

Ausencia Ejemplo. Determinar cuando es mayor de edad. rbol de Condicin

ESCRIBA Mayor de Edad Edad>=18 Presencia

Ausencia ESCRIBA Menor de Edad

Ejemplo. Puntos Mnimos rbol de Condicin

ESCRIBA Pasa la prueba Puntos>=6 Presencia

Ausencia ESCRIBA Repetir Prueba SINTAXIS PSEINT

Si expresion_logica Entonces acciones_por_verdadero Sino acciones_por_falso FinSi Donde: - La palabra reservada Si indica inicio de rbol - La palabra reservada Entonces indica Presencia - La palabra reservada Sino indica Ausencia - La palabra reservada FinSi indica terminacin de rbol

Las BNF son: <expresion_logica>: : - < condicionante > <operador lgico> <condicionante> <operador lgico>: : - & | <condicionante> : : - < variable > <operador de relacin> <operacin> <operador de relacin>:: - > < >= <= = <> <operacin> :: - <operando> <operador aritmtico> <operando> <operando>:: - <variable> | <numero> <operador aritmtico> :: - + / * -

PROGRAMA EN Pseint Proceso Edad Escribir "Digite Edad:"; Leer edad; Si edad>=18 Entonces Escribir "Es mayor de Edad"; Sino Escribir "Es menor de Edad"; FinSi FinProceso

PROGRAMA EN Pseint Proceso Puntos Escribir "Digite Puntos:"; Leer puntos; Si puntos>=6 Entonces Escribir "Paso la Prueba"; Sino Escribir "Perdio la Prueba"; FinSi FinProceso

AUTOMATA DE CICLO FINITO Se conoce el nmero de veces a realizar determinada(s) actividad(es) Se realiza en cuatro momentos: E0. Previo al Autmata a. Inicializar el ndice b. Comparar el ndice contra una cota o limite superior e inferior c. Actividad(es) a Realizar d. Incremento o decremento de ndice

b d

Existen dos clases de Autmata de Ciclo Finito: - Incremental - Decremental MOMENTOS a b c d INCREMENTAL INDICE=LIMITE INFERIOR INDICE <= LIMITE SUPERIOR SENTENCIA(S) INDICE=INDICE+1 IR AL MOMENTO b DECREMENTAL INDICE=LIMITE SUPERIOR INDICE >= LIMITE INFERIOR SENTENCIA(S) INDICE=INDICE-1 IR AL MOMENTO b

SINTAXIS:

Para {variable_numerica}<-{valor_inicial} Hasta {valor_final} Con Paso {paso} Hacer { secuencia_de_acciones } FinPara Donde: - La palabra reservada Para indica Inicio de Autmata Ciclo Finito - La palabra reservada Hasta indica Cota Superior Inferior - La palabra reservada Con Paso indica Incremento decremento - La palabra reservada Hacer indica entrada al autmata cuando se cumple que variable_numerica<=valor_final variable_numerica>=valor_final - La palabra reservada FinPara indica terminacin de Autmata Ciclo Finito - Las sentencias a realizar se dan por medio del bloque: { secuencia_de_acciones }

Relacin PSEINT con Autmata Finito MOMENTOS a b c d INCREMENTAL INDICE<- VALOR_INICIAL INDICE <= VALOR_FINAL SENTENCIA(S) INDICE<- INDICE+PASO IR AL MOMENTO b DECREMENTAL INDICE<-VALOR_INICIAL INDICE >=VALOR_FINAL SENTENCIA(S) INDICE<- INDICE-PASO IR AL MOMENTO b

Incremental Para indice<-valor_inicial Hasta valor_final Con Paso 1 Hacer { secuencia_de_acciones } FinPara Decremental Para indice<-valor_inicial Hasta valor_final Con Paso -1 Hacer { secuencia_de_acciones } FinPara

EJEMPLOS: 1. La Multiplicacin de A X B por medio de Suma. Esta suma se representa como la sumatoria de B en A Veces. A B=0+B+B+B i=1 A - Veces El ndice i va desde 1 hasta A sea i = 1 A Limite Inferior =1 Limite Superior = A E0. S=0 La Sumatoria se debe iniciar en 0 Lea A Lea B Autmata Ciclo Finito a. i=1 b. i <= A c. S=S+B d. i=i+1 ir al Momento b En PSEINT Proceso Sumas s<-0; Escribir " lea A:"; Leer A; Escribir " lea B:"; Leer B; Para i<-1 Hasta A Con Paso 1 Hacer s<-s+B; FinPara Escribir "El resultado de la multiplicacion de ",A," por ",B, " es: ",s ; FinProceso

2. El Factorial de un numero n. n i = 1*1*2*3*.n (Multiplicatoria de i n veces) i=1 n - Veces El ndice i va desde 1 hasta n sea i = 1 n Limite Inferior =1 Limite Superior = n E0. F=1 Lea n La Multiplicatoria se debe iniciar en 1

Autmata de Ciclo Finito a. i=1 b. i <= n c. F = F * i d. i=i+1 ir al Momento b En PSEINT Proceso Factorial f<-1; Escribir " lea n:"; Leer n; Para i<-1 Hasta n Con Paso 1 Hacer f<-f*i; FinPara Escribir "Factorial de ",n," es: ",f; FinProceso

3. Listar hasta el Termino n esimo de la serie de Fibonacci El ndice i va desde 1 hasta n sea i = 1 n Limite Inferior =1 Limite Superior = n E0. Padre=0 Abuelo= 1 Lea n Autmata de Ciclo Finito a. i=1 b. i <= n c. Nieto = Padre + Abuelo Escribir Nieto Abuelo = Padre Padre = Nieto d. i=i+1 ir al Momento b En PSEINT Proceso Fibonacci Padre<-0; Abuelo<-1 Escribir " lea termino n:"; Leer n; Escribir "Serie de Fibonacci"; Para i<-1 Hasta n Con Paso 1 Hacer Nieto<-Padre+Abuelo; Escribir Nieto; Abuelo<-Padre; Padre<-Nieto; FinPara FinProceso

4. Lectura y escritura de un vector Un vector es un Arreglo Unidimensional Se debe declarar un Vector de n posiciones. Las posiciones de un vector en este caso inician en 1 y llegan hasta la posicin n 1 A Entonces para recorrer un vector se requiere de un ndice que: indice = 1 n Limite Inferior = 1 Limite Superior = n E0: Constante Entera n = 10 Entera A [n] Se declara el Vector A de n posiciones Autmata de Lectura a. i = 1 b. i <= n c. Lea A[ i ] d. i =i + 1 ir al Momento b Autmata de Escritura a. i = 1 b. i <= n c. Escribir A[ i ] d. i =i + 1 ir al Momento b En PSEINT Proceso Vector n<-10; Dimension A(n); Escribir "Lectura Vector: "; Para i<-1 Hasta n Con Paso 1 Hacer Escribir "A[",i,"]:"; Leer A(i); FinPara Escribir "Escritura Vector: "; Para i<-1 Hasta n Con Paso 1 Hacer Escribir "A[",i,"]:",A(i); FinPara finProceso 2 3 4 5. . . n

5. Simular una Potencia Dado b: base y n: potencia realizar por medio de multiplicaciones la simulacin de b elevado a la n E0: k=1 Lea b Lea n Autmata de Ciclo Finito a. i=1 b. si i<=n c. k=k*b d. i=i+1 Ir al momento b Fin Autmata Escribir K

En PSEINT Proceso Potencia k<-1; Escribir "Lee base "; Leer b; Escribir "Lee exponente "; Leer n; Para i<-1 Hasta n Con Paso 1 Hacer k<-k*b; FinPara Escribir b," elevado a la ",n," es ",k; finProceso

CICLO ANIDADOS Se presenta cuando un Autmata hace parte del momento c de otro Autmata. Se representa de la siguiente manera:

b d

d
c

Entonces se habla de un Autmata Externo y un Autmata Interno. 6. A nivel de interpretacin, se va a ilustrar un Autmata de Horas y un Autmata de Minutos. El Autmata de Horas es el Externo y su ndice Hora va desde 0 hasta 23 El Autmata de Minutos es el interno y su ndice Minuto va desde 0 hasta 59

Autmata Externo a. Hora = 0 b. Hora < = 23 c. Autmata Interno a. Minuto = 0 b. Minuto < = 59 c. Mostrar Hora: Minuto d. Minuto = Minuto +1 Ir al Momento b del Autmata Interno Fin Autmata Interno d. Hora = Hora +1 Ir al Momento b del Autmata externo En PSEINT Proceso Reloj Para Hora<-0 Hasta 23 Con Paso 1 Hacer Para Minuto<-0 Hasta 59 Con Paso 1 Hacer Escribir "HH:",Hora," MM:",Minuto; FinPara FinPara finProceso

7. Lectura y Escritura de una matriz Una Matriz es un Arreglo Bidimensional. Se puede representar como un conjunto de Vectores, donde se estructura por filas y columnas Se debe declarar una Matriz de n posiciones por n - posiciones. Donde las primeras n Posiciones representan las Filas Las Segundas n Posiciones representan las Columnas 1 2 3 4. . . n 1 2 A n COLUMNAS Para recorrer una Matriz se requiere de un ndice para las filas y otro ndice para las columnas: Entonces, se necesita de dos Autmatas uno Externo para recorrer filas y un Interno para recorrer columna por columna de la fila activa (ndice autmata externo). indice Externo= 1 n. Se toma como el ndice i Indice Interno= 1 n Se toma como el ndice j Limite Inferior = 1 Limite Superior = n E0: Constante Entera n = 4 Entera A [n] [n] Se declara una Matriz A de n posiciones por n - posiciones Autmata de Lectura Autmata Externo a. i = 1 b. i <= n c. Autmata Interno a. j=1 b. j <= n c. Lea A[ i ] [ j ] d. j = j +1 ir al momento b del Autmata Interno Fin Autmata Interno d. i =i + 1 ir al Momento b del Autmata Externo FILAS

Autmata de Escritura Autmata Externo a. i =1 b. i <= n c. Salto de Lnea Autmata Interno a. j=1 b. j < =n c. Escriba A[ i ] [ j ] d. j = j +1 ir al momento b del Autmata Interno Fin Autmata Interno d. i =i + 1 ir al Momento b del Autmata Externo En PSEINT Proceso Matriz n<-4; Dimension A(n,n); Escribir "Lectura Matriz: "; Para i<-1 Hasta n Con Paso 1 Hacer Para j<-1 Hasta n Con Paso 1 Hacer A(i,j)<-azar(100); // Se asigna numeros aleatorios de 1 a 100 FinPara FinPara Escribir "Escritura matriz: "; Para i<-1 Hasta n Con Paso 1 Hacer Para j<-1 Hasta n Con Paso 1 Hacer Escribir "A[",i,",",j,"]:",A(i,j); FinPara FinPara finProceso

8. Ordenamiento de un Vector Solo se analiza el Autmata de Ordenamiento de un vector n posiciones porque los autmatas de lectura y escritura en un vector fueron ya analizados. Se toma como caso un ordenamiento sencillo que este autor lo denomina lineal que consiste en dos ndices (indica posicin dentro del vector) comparado y comparante: Comparado Comparante Posicin 1 Posicin 2 hasta n Posicin 2 Posicin 3 hasta n Posicin 3 Posicin 4 hasta n Se concluye entonces Autmata Externo Autmata Interno Posicin i= 1n - 1 Posicin j= i + 1 . n E0: Constante Entera n = 10 Entera A [n] Se declara el Vector A de n posiciones Autmata de lectura de vector Autmata de Escritura de Vector Autmata Externo(Comparado) a. i=1 b. i <= n-1 c. . Autmata Interno(Comparante) a. j = i + 1 b. j <= n c. Si A[ i ] > A[ j ] k= A[ i] A[ i ] = A[ j ] A[ j ] = k Fin Si d. j = j +1 ir al momento b del Autmata Interno Fin Autmata Interno d. i =i + 1 ir al Momento b del Autmata Externo Fin Autmata Externo Autmata Escritura vector

En PSEINT Proceso OrdenVector n<-10; Dimension A(n); Para i<-1 Hasta n Con Paso 1 Hacer A(i)<-azar(50);//se genera aleatoriamente un numero entre 1 y 50 FinPara Escribir "Vector Leido: "; Para i<-1 Hasta n Con Paso 1 Hacer Escribir "A[",i,"]:",A(i); FinPara Para i<-1 Hasta n-1 Con Paso 1 Hacer Para j<-i+1 Hasta n Con Paso 1 Hacer Si A(i)>A(j) Entonces k<-A(i); A(i)<-A(j); A(j)<-k; FinSi FinPara FinPara Escribir "Vector Ordenado: "; Para i<-1 Hasta n Con Paso 1 Hacer Escribir "A[",i,"]:",A(i); FinPara finProceso

CICLOS FINITOS CON EVENTOS Se denomina evento a todo suceso o hecho esperado.

En el caso de autmata de ciclo finito se conoce cuantas veces se va a realizar ciertas operaciones, pero a veces, se puede esperar que se presente un Evento. La presencia del Evento puede ser una de las causas de la salida del ciclo o finalizacin del autmata finito. La otra causa es el fin del autmata de ciclo finito que se presenta cuando en el autmata finito incremental el ndice se hace superior a la cota superior (en la grfica cuando i>n) y en el autmata decremental cuando el ndice se hace inferior a la cota inferior (en la grfica cuando i<1). Entonces, la suma de la presencia del Evento con el fin del autmata finito se denomina Condicin de Salida (CS). La Condicin de Salida se define se realiza una sentencia(s) hasta que se presente una condicin. Desde el punto de vista lgica de programacin se debe tener en cuenta:

1. CS:: Fin autmata finito AND|OR Evento


2. Los autmatas finitos en su segundo momento (b) ejecutan una Condicin de Permanencia (CP)

3. Condicin de Permanencia (CP) se define como la realizacin de una sentencia


o varias sentencias siempre y cuando se presente una condicin. Tambin se define como, como la realizacin de una sentencia o varias sentencias mientras que se presente una condicin

4. La Condicin de Permanencia (CP) es la negacin de la Condicin de Salida


(CS). Entonces CP:: Presencia autmata finito AND|OR Ausencia Evento

b d

Para los casos del Autmata de Ciclo Finito: - Incremental - Decremental MOMENTOS A B C D INCREMENTAL INDICE=LIMITE INFERIOR Condicin de Permanencia(CP) SENTENCIA(S) INDICE=INDICE+1 IR AL MOMENTO b DECREMENTAL INDICE=LIMITE SUPERIOR Condicin de Permanencia(CP) SENTENCIA(S) INDICE=INDICE-1 IR AL MOMENTO b

No existe en el PSeint, pero, en lenguajes de programacin Java o C++ existe la manera.

8a. Digitalizacin de un Numero Un nmero es un conjunto de dgitos: <Digito>:-|0|1|...|9| <Numero>:- <digito> Dado un nmero se debe llevar cada digito a una posicin de un vector. Entonces, La Unidad del Nmero a la Posicin 1 La Dcima del Nmero a la Posicin 2 La Centn cima del Nmero a la posicin 3 y as sucesivamente. E0: Entero A[n] Vector de n - posiciones Lea x // Numero tope=0 // Cuando ingresa al ciclo se incrementa y debe cumplir tope=1n Condicin de Permanencia (CP) CP:: tope<n AND x>0 // x>0 Porque debe tener dgitos a obtener Autmata de Digitalizacin b. si tope<n AND x>0 (CP) c. tope=tope+1 A[tope]= residuo(x,10) // x residuo de 10 x= x /10 d. ir a b Fin Digitalizacin Autmata Escribir Vector:( 1tope) 8b. Bsqueda de un valor x en un vector no ordenado E0: Constante Entera n = 10 Entera A [n] Se declara el Vector A de n posiciones Lectura x // valor a buscar dentro del vector Autmata de lectura de vector Autmata de Escritura de vector Condicin de Permanencia (CP):: i<=n AND A[ i ] sea diferente de x i=0 Autmata de Bsqueda de Valor: b. i<=n AND A[ i ] sea diferente de x c. i= i +1 d. ir a b Fin Autmata de Bsqueda de Valor

ESCRIBA Existe x en la posicin i i<=n Presencia

Ausencia ESCRIBA No exista el valor x

8c. Bsqueda de un valor x en un vector ordenado E0: Constante Entera n = 10 Entera A [n] Se declara el Vector A de n posiciones Lectura x // valor a buscar dentro del vector Autmata de lectura de vector Autmata de Ordenamiento de Vector Autmata de Escritura de vector Condicin de Permanencia (CP):: i<=n AND A[ i ] sea menor que x i=0 Autmata de Bsqueda de Valor: b. i<=n AND A[ i ] sea menor que x c. i= i +1 d. ir a b Fin Autmata de Bsqueda de Valor ESCRIBA Existe x en la posicin i i<=n AND A[i]==x Presencia

Ausencia ESCRIBA No exista el valor x

8d. Verificar si el nmero n es primo o no. Los Nmeros primos son aquellos que son divisible por si mismo y por la unidad. Entonces, el ndice debe empezar en 2 y terminar en la raz cuadrada o en la mitad del nmero. Se toma entonces el intervalo del ndice como de 2 hasta n/2 E0. Lea n i=2 CP:: i<=n/2 AND residuo(n,i) no sea 0 , sea, n no sea mltiplo de i Autmata del Primo b. si i<=n/2 AND residuo(n,i) no sea 0 c. i=i+1 d. ir a b Fin Autmata del Primo ESCRIBA n no es primo i<= n /2 Presencia

Ausencia ESCRIBA n es primo

AUTOMATA DE CICLO MIENTRAS QUE Se realiza una sentencia(s) siempre y cuando se presente una condicin. Esta condicin se denomina Condicin de Permanencia(CP) . Semnticamente se expresa Mientras que se cumpla con la condicin de Permanencia se realizan las sentencias Es muy importante, tener en cuenta que la condicin cambie de valor en algn instante.

E0 e b d

c
Este Autmata evala la condicin de Permanencia antes de realizar sentencias (momento c), por eso se denomina Autmata de Pre Condicin de Permanencia

MOMENTOS E0 b. c. d. e.

QUE PASA Estado Previo al Autmata Si se cumple CP(Condicin de Permanencia) Sentencia(s) Ir al Momento b Condicin de Salida = negacion(CP)

SINTAXIS PSEINT:

Mientras {condicion_permenencia} Hacer {secuencia_de_acciones} FinMientras Donde: - La palabra reservada Mientras indica Inicio de Autmata Mientras Que - La palabra reservada Hacer indica entrada al autmata cuando se cumpla condicion_permanencia( CP) - La palabra reservada FinMientras indica terminacin de Autmata Mientras Que - Las sentencias a realizar se dan por medio del bloque: { secuencia_de_acciones } El BNF es el siguiente:
<condicin de Permanencia>: : - < condicionante > <operador lgico> <condicionante> <operador lgico>: : - & | <condicionante> : : - < variable > <operador de relacin> <operacin> <operador de relacin>:: - > < >= <= = <> <operacin> :: - <operando> <operador aritmtico> <operando> <operando>:: - <variable> | <numero> <operador aritmtico> :: - + / * -

9. Digitalizacin de un Numero Un nmero es un conjunto de dgitos: <Digito>:-|0|1|...|9| <Numero>:- <digito> Dado un nmero se debe llevar cada digito a una posicin de un vector. Entonces, La Unidad del Nmero a la Posicin 1 La Dcima del Nmero a la Posicin 2 La Centn cima del Nmero a la posicin 3 y as sucesivamente. E0: Entero A[n] Vector de n - posiciones Lea x // Numero tope=0 // Cuando ingresa al ciclo se incrementa y debe cumplir tope=1n Condicin de Permanencia (CP) CP:: tope<n AND x>0 // x>0 Porque debe tener dgitos a obtener Autmata Mientras Que b. si tope<n AND x>0 (CP) c. tope=tope+1 A[tope]= residuo(x,10) // x residuo de 10 x= x /10 d. ir a b Fin Autmata Mientras Que Autmata Escribir Vector:( 1tope) En PSEINT Proceso Digital n<-10; Dimension A(n); tope<-0; Escribir "Digite numero a digitalizar"; Leer x; Mientras x>0 & tope<n Hacer tope<-tope+1; A(tope)<-x%10; x<-trunc(x/10); FinMientras Para i<-1 Hasta tope Con Paso 1 Hacer Escribir A(i); FinPara finProceso

10. Bsqueda de un valor x en un vector no ordenado E0: Constante Entera n = 10 Entera A [n] Se declara el Vector A de n posiciones Lectura x // valor a buscar dentro del vector Autmata de lectura de vector Autmata de Escritura de vector Condicin de Permanencia (CP):: i<=n AND A[ i ] sea diferente de x i=0 Autmata de Bsqueda de Valor: b. i<=n AND A[ i ] sea diferente de x c. i= i +1 d. ir a b Fin Autmata de Bsqueda de Valor ESCRIBA Existe x en la posicin i i<=n Presencia

Ausencia ESCRIBA No exista el valor x

En PSEINT Proceso BuscarVector n<-10; Dimension A(n); Para i<-1 Hasta n Con Paso 1 Hacer Escribir "A[",i,"]:"; A(i)<-azar(50); FinPara Escribir "Escritura Vector: "; Para i<-1 Hasta n Con Paso 1 Hacer Escribir "A[",i,"]:",A(i); FinPara Escribir "Digitar Numero a Buscar en vector: "; Leer x; i<-1; Mientras i<=n & A(i)<>x Hacer i<-i+1; FinMientras Si i<=n Entonces Escribir x, " esta en la posicion: ",i; Sino Escribir x, " no existe"; FinSi finProceso

11. Verificar si el nmero n es primo o no. Los Nmeros primos son aquellos que son divisible por si mismo y por la unidad. Entonces, el ndice debe empezar en 2 y terminar en la raz cuadrada o en la mitad del nmero. Se toma entonces el intervalo del ndice como de 2 hasta n/2 E0. Lea n i=2 CP:: i<=n/2 AND residuo(n,i) no sea 0 , sea, n no sea mltiplo de i Autmata del Primo b. si i<=n/2 AND residuo(n,i) no sea 0 c. i=i+1 d. ir a b Fin Autmata del Primo ESCRIBA n no es primo i<= n /2 Presencia

Ausencia ESCRIBA n es primo En PSEINT Proceso Primo Escribir "Digite Numero a Evaluar: "; Leer n; i<-2; Mientras i<=n/2 & n%i<>0 Hacer i<-i+1; FinMientras Si i<=n/2 Entonces Escribir n, " No es primo "; Sino Escribir n, " Es Primo"; FinSi finProceso

AUTOMATA DE CICLO REPITA HASTA QUE Se realiza una sentencia(s) hasta que se presente una condicin. Esta condicin se denomina Condicin de Salida (CS). Semnticamente se expresa como Repita las sentencias Hasta que se cumpla la Condicin de Salida (CS). Es muy importante, tener en cuenta que la condicin cambie de valor en algn instante.

E0

Este Autmata realiza sentencias (momento c) y despus evala la condicin de Salida (CS), sino se cumple la condicin, se realiza las sentencias (momento c) MOMENTOS E0 c. b. e. QUE PASA Estado Previo al Autmata Sentencia(s) Si no se cumple CS(Condicin de Salida) ir al Momento c o si se cumple la Condicin de Permanencia= negacin(CS) ir al Momento c Condicin de Salida(CS)

SINTAXIS PSEINT

Repetir {secuencia_de_acciones} Hasta Que condicion_salida Donde: - La palabra reservada Repetir indica Inicio de Autmata Mientras Que - La palabra reservada Hasta Que indica que se va a evaluar la condicin de salida - Las sentencias a realizar se dan por medio del bloque: { secuencia_de_acciones } El BNF es el siguiente:
<condicin de salida>: : - < condicionante > <operador lgico> <condicionante> <operador lgico>: : - & | <condicionante> : : - < variable > <operador de relacin> <operacin> <operador de relacin>:: - > < >= <= <> = <operacin> :: - <operando> <operador aritmtico> <operando> <operando>:: - <variable> | <numero> <operador aritmtico> :: - + / * -

12. Validacin de un Numero Se desea que una Nota este entre 110 E0: Condicin de salida(CS) CS:: nota>= 1 & nota < = 10 En este caso se aplica la conceptualizacin de: CP:: Negacin(CS); entonces CP:: nota< 1 | nota > 10 Autmata Repita Hasta Que c. Lea Nota b. Si nota< 1 | nota > 10 ir a c Fin Autmata Repita Hasta Que

ESCRIBA Pasa la prueba nota>=6 Presencia

Ausencia ESCRIBA Repetir Prueba En PSEINT Proceso validarnota Repetir Escribir " Lea Nota: "; Leer nota; Hasta Que nota>= 1 & nota < = 10 Si nota>=6 Entonces Escribir "con ", nota," Pasa la Prueba "; Sino Escribir "con ", nota," a repetir la prueba "; FinSi finProceso

13. Juego de Tenis de Mesa Se termina el juego cuando uno de los dos jugadores tenga una diferencia mayor a dos en puntos, adems, que estos puntos sea mayores o iguales a 21. Regla: Si el randomico es igual 0 entonces gana punto jugador 1 Si el randomico es igual 1 entonces gana punto jugador 2 E0: jug1=jug=0 Condicin de Permanencia (CS) CS:: (jug1>=21 | jug2>=21) & abs(jug1-jug2)>=2 En este caso se aplica la conceptualizacin de: CP = negacin (Condicin de Salida CS) ; entonces CP:: (jug1<21 & jug2<21) | abs(jug1-jug2)<2 Autmata Repita Hasta Que c.

ESCRIBA Gana Jugador 1; jug1++ azar(2)=1 Presencia

Ausencia ESCRIBA Gana Jugador 2; jug2++

b. (jug1<21 & jug2<21) | abs(jug1-jug2)<2 ir a c

En PSEINT Proceso juego jug1<-0; jug2<-0; Repetir Si azar(2)=1 Entonces Escribir "gana punto Jugador 1"; jug1<-jug1+1; Sino Escribir "gana punto Jugador 2"; jug2<-jug2+1; FinSi Hasta Que (jug1>=21 | jug2>=21) & abs(jug1-jug2)>=2 Si jug1>jug2 Entonces Escribir "gana Jugador 1 con ", jug1," contra ", jug2; Sino Escribir "gana Jugador 2 con ", jug2," contra ", jug1; FinSi finProceso

14. Bsqueda Binaria Previamente debe estar ordenado el Vector Se deben declarar dos ndices minimo, maximo y mitad Se debe buscar un numero k en la mitadde la mitaddel vector donde mitad= (minimo+maximo)/2 E0: Constante Entera n = 10 Entera A [n] Se declara el Vector A de n posiciones Autmata de lectura de vector Autmata de Escritura de Vector Autmata de Ordenamiento de Vector Autmata de Escritura de Vector minimo=1 maximo=n Lea k // valor a buscar Condicin de Salida (CS) CS:: minimo > maximo | A[mitad] = k En este caso se aplica la conceptualizacin de: CP = negacin (Condicin de Salida CS) ; entonces CP:: minimo <= maximo | A[mitad] no es igual a k Autmata Repita Hasta Que c. mitad = (minimo+maximo) /2 minimo= mitad +1 A[mitad]< k Presencia

Ausencia

maximo= mitad -1 A[mitad]> k Presencia

Ausencia

b. Si minimo <= maximo | A[mitad] no es igual a k vaya a c. Fin Autmata Haga Mientras Que Existe posicin mitad A[mitad]= k Presencia

Ausencia No existe

En PSEINT Proceso BuscarVector n<-10; Dimension A(n); Para i<-1 Hasta n Con Paso 1 Hacer A(i)<-azar(50);//se genera aleatoriamente un numero entre 1 y 50 FinPara Escribir "Vector Leido: "; Para i<-1 Hasta n Con Paso 1 Hacer Escribir "A[",i,"]:",A(i); FinPara Para i<-1 Hasta n-1 Con Paso 1 Hacer Para j<-i+1 Hasta n Con Paso 1 Hacer Si A(i)>A(j) Entonces k<-A(i); A(i)<-A(j); A(j)<-k; FinSi FinPara FinPara Escribir "Vector Ordenado: "; Para i<-1 Hasta n Con Paso 1 Hacer Escribir "A[",i,"]:",A(i); FinPara Escribir "Leer Valor a Buscar"; Leer k; minimo<-1; maximo<-n; Repetir mitad<-trunc((minimo+maximo)/2);

Si A(mitad)<k Entonces minimo<-mitad+1; FinSi Si A(mitad)>k Entonces maximo<-mitad-1; FinSi Hasta Que minimo > maximo | A[mitad] = k Si A[mitad] = k Entonces Escribir k," esta en la posicion: ",mitad; Sino Escribir k," no existe"; FinSi finProceso

AUTOMATA DE SELECCION De Acuerdo al valor de una y solamente una variable se realiza una accin. La Categora de Seleccin se da mediante: Atmico: Valor Unico. Conjunto de Valores: Valor1, Valor2, Valor3 Cota: >= Valor <= Valor < > Valor Valor

SINO: Cuando no se presenta los anteriores valores

Tambin se puede crear un rbol de seleccin as: Unico Valor1,Valor2 Variables Valor3 Hasta Valor4

Cota

SINTAXIS PSEINT:

Segun <variable> Hacer <nmero1>: <instrucciones> <nmero2>, <nmero3>: <instrucciones> <...> De Otro Modo: <instrucciones> FinSegun Donde: - La clausula Segn indica inicio de autmata de seleccin - <numero1>: indica caso de valor 1 - <nmero2>, <nmero3>: indica que se puede presenta caso de valor 2 o 3 - <instrucciones> indica instrucciones a realizar por cada caso de valor

15. Identificar Categora segn la Edad. La edad del 2 al 4 es Prvulos La edad del 5 al 6 es Kinder La edad del 7 al 9 es Infantil E0: Lea Edad Autmata de Seleccin Parvulos 5,6 edad 7,8,9 infantil sino Error kinder

2,3,4

En PSEINT Proceso seleccioncasos edad<-azar(20); Escribir edad; Segun edad Hacer 2,3,4: Escribir "parvulos"; 5,6: Escribir "kinder"; 7,8,9: Escribir "infantil"; De Otro Modo: Escribir "edad no cumple"; FinSegun FinProceso

16. Un Men de Operaciones Aritmticas Se lee una variable denominada opcion. Si tecla = 1 se hace suma( c= a + b) Si tecla = 2 se hace resta( c= a - b) Si tecla = 3 se se hace multiplicacin(c= a * b) Si tecla = 4 se se hace divisin(c= a / b) Si tecla = 5 se sale del programa. Para este programa se necesita un autmata Repita Hasta Que opcion sea igual a 5 E0: Lea a Lea b Autmata Repita Hasta Que (opcin=5) Autmata Repita Hasta Que (Validar que opcion sea 1 a 5) c. Mostrar Opciones Lea opcion b. si opcion <1 | opcion > 5 ir a c Fin Autmata Repita Hasta Que (Validar que opcion sea 1 a 5) 1 2 opcion 3 c= a * b 4 c = a /b c= a -b c = a+b

Mostar resultado de Operacin b. si opcion no es igual a 5 ir a c Fin Autmata Repita Hasta Que (opcin=5)

En PSEINT Proceso Menu Escribir "a:"; Leer a; Escribir "b:"; Leer b; Repetir Repetir Escribir "1. Adicion"; Escribir "2. Resta"; Escribir "3. Multiplicacion"; Escribir "4. Division"; Escribir "5. Salir"; Escribir "Lea Opcion[1...5]"; Leer opcion; Hasta Que opcion>=1 & opcion<5 Segun opcion Hacer 1: c<-a+b; Escribir a,"+",b,"=",c; 2: c<-a-b; Escribir a,"-",b,"=",c; 3: c<-a*b; Escribir a,"*",b,"=",c; 4: Si b>0 Entonces c<-a/b; Sino c<-0; FinSi Escribir a,"/",b,"=",c; FinSegun Hasta Que opcion=5 FinProceso

CAPITULO 8. MENSAJES DE ERROR Tomado: http://pseint.sourceforge.net/ La siguiente es una lista de errores posibles en un programa que son detectados por el intrprete, junto con su explicacin. Los errores estn en orden alfabtico. Asignacin incompleta Este error se produce por la ausencia de alguna de las dos partes de una asignacin: la variable o la expresin a asignar. Ejemplos : Para <-3 hasta 5 hacer a<-; Caracter no vlido Se encontr un caracter no permitido en el PseudoCdigo. Ejemplos: &, %, #, \, -, . Estos smbolos slo pueden aparecer dentro de constantes de tipo caracter. Constante o Identificador no vlido Los identificadores deben comenzar siempre con una letra y pueden continuar slo con letras o nmeros. Tampoco pueden usarse palabras reservadas como identificadores. Este error puede ser causado tambin por una constante incorrectamente escrita. Ejemplos : Escribir 1erVar; // No puede empezar con nmero Tot <- Tot + Primer_Var; // el smbolo '_' no puede ser parte de un identificador Escribir 3.4.5; // el nmero tiene dos puntos decimales Escribir Para; // 'Para' es una palabra reservada Demasiados Parmetros Ocurre cuando una instruccin que admite slo un parmetro recibe ms de uno. Ejemplo: a <- 1,3; // 1 y 3 son dos parmetros

Divisin por cero Una expresin matemtica no debe intentar dividir por cero. Ejemplo: a <- 0; Escribir 7/a; // la operacin 7/a equivale a 7/0 y es imposible. Entonces mal colocado La clusula Entonces siempre debe estar despus de un Si, de lo contrario est mal colocada. Falta cerrar comillas Este error es ocasionado por una constante de tipo caracter incorrecta. Se deben delimitar con comillas ( " ) tanto el inicio como el final de la misma. Ejemplo: Escribir "Total:, Tot; Falta cerrar parntesis Este error se produce cuando en alguna expresin se abre un parntesis que luego no se cierra. Se deben cerrar todos los parntesis que se abren. Ejemplo: Escribir (3+4/(2*a); Falta cerrar Si/Para/Mientras/Repetir/Segn Todas las estructuras deben tener un comienzo y un final dentro del algoritmo. Este error se produce porque falta la palabra reservada FinSi/FinPara/FinMientras/Hasta Que/FinSegun o porque una de esas palabras est mal ubicada. Falta condicin Las estructuras de control repetitivas (Mientras y Repetir-Hasta Que) y las condicionales (Si y Segun) requieren que exista una condicin lgica. Ejemplos: Si Hasta Que

Segn Hacer Mientras Falta Hacer Las condiciones lgicas en las instrucciones Para, Mientras y Segun deben ser seguidas por la palabra Hacer. Ejemplos: Para a<- 1 Hasta c Segn a Falta Hasta La instruccin Para siempre debe contener la clusula Hasta <final>. Ejemplos: Para a<-1 hacer Falta nombre de proceso Todos los programas deben comenzar con la palabra reservada Proceso y a continuacin un nombre vlido (un identificador) para el programa. Ejemplo: Proceso // aqu se coloca el nombre Falta punto y coma Cada instruccin en una secuencia debe finalizar siempre con punto y coma (;). Ejemplos: Escribir 1 Leer a Dimension b(10) Faltan Parmetros Este error se produce cuando se intenta ejecutar una instruccin sin los parmetros mnimos necesarios. Ejemplos: Escribir ; // falta expresin Leer ; // falta identificador de variable

Dimension ; // falta identificador de arreglo Para B // falta asignacin y valor final Faltan subndices En la declaracin de un arreglo siempre deben indicarse las dimensiones y sus cantidades mximas de elementos. Ejemplo: Dimensin C; FinSegun/FinSi/FinPara/FinMientras/FinProceso/Hasta que mal colocado Estas estructuras deben tener su comienzo y su final en el mismo nivel, es decir que si estn anidadas deben incluirse completamente una dentro de otra. En el caso de un programa, el Proceso es nico y debe ser el primero en abrirse y el ltimo en cerrarse. Identificador no vlido Los identificadores deben comenzar siempre con una letra y pueden continuar slo con letras o nmeros. No pueden ser palabras reservadas. Ejemplos : Leer 1erVar; // No puede empezar con nmero Leer Para; // Para es palabra reservada Instruccin fuera de proceso Todas las acciones deben estar contenidas dentro del programa. Cualquier accin posterior a la palabra FinProceso ocasiona este error. La instruccin no debe tener parmetros Este error ocurre cuando una instruccin que no espera parmetros los recibe. FinSi, Repetir, FinPara, FinMientras, FinProceso y FinSegun no llevan parmetros. Logaritmo de 0 o negativo No se puede calcular el logaritmo de un nmero menor o igual a cero. No coinciden los tipos Este error se produce cuando se utilizan variables, constantes u operadores correspondientes a tipos de datos diferentes.

En las instrucciones Segun y Para la constantes, expresiones y variables deben ser siempre de tipo numrico. Ejemplos: a <-'b'; c <- 5+a; // a es caracter Segn a; // a es caracter Si 1='3' // '3' es caracter, 1 es numrica No lleva punto y coma Slo las instrucciones secuenciales (Leer, Escribir, Dimension, <-) deben finalizar con punto y coma ( ; ). Ejemplos: Para a<-1 Hasta 3 Hacer; Repetir; Si a=1; Nmero de parmetros o subndices incorrecto Este error puede ser causado por acceder a un elemento de un arreglo utilizando una cantidad de ndices diferente a las dimensiones declaradas o al invocar una funcin matemtica con ms de un parmetro. Ejemplos: Escribir Cos(20,4); // Cos es la funcin matemtica coseno Dimension a(10,2); Escribir a(2); // el arreglo a fue definido como bidimensional Operador incorrecto Este error se produce cuando se encuentra un operador mal ubicado o desconocido. Tambin ocurre cuando se encuentran dos operadores seguidos sin una constante o variable en medio. Ejemplos : a <- 5*/3; // dos operadores ('*' y '/', multiplicacin y divisin) seguidos Escribir 5_2; // el smbolo '_' no es un operador

Parmetro nulo Este error se produce cuando falta un parmetro. Ejemplos : Escribir a,,2; // el 2do parmetro est vaco Leer b,; // el 2do parmetro est vaco Escribir (); // el parmetro () es un parmetro nulo Raz de negativo PseudoCdigo slo trabaja con nmeros reales, por lo que no se puede calcular la raz cuadrada de un nmero negativo. Se cerraron parntesis dems Este error se produce cuando en alguna expresin matemtica sobran parntesis. Ejemplo : Escribir 2+(2*a)-b) ; Se esperaba <opcin>: La instruccin de seleccin mltiple Segun deben incluir al menos una opcin. Para estar bien construda, la opcin debe constar de uno o ms nmeros, seguidos por dos puntos ( : ) y luego la secuencia de instrucciones a ejecutar. Ejemplo : Segun a Hacer Escribir b; Se esperaba asignacin La instruccin Para siempre debe contener la asignacin que inicialice la variable de control. Ejemplo: Para a Hasta 5 Hacer

Se esperaba Con Paso o fin de instruccin Este error se produce cuando en una instruccin Para se incluye un parmetro (u otra instruccin) no vlido. Ejemplos : Para a<-1 Hasta 3 Leer a; Se esperaba Entonces La instruccin condicional Si siempre debe tener una clusula Entonces (es decir, una secuencia de instrucciones a ejecutarse cuando la condicin es verdadera). Ejemplos : Si a=1 Sino Escribir 2; FinSi // Para evitar este error se puede negar la condicin: a<>1 // y transformar la clusula Sino en una clusula Entonces Se esperaba espacio o coma Este error se produce cuando se encuentran dos variables o constantes consecutivas sin ningn separador en medio. Ejemplo : Escribir C B; // falta coma u operador Escribir "21" B; // falta coma u operador Mientras a='A'Hacer // falta un espacio Se esperaba Proceso <nombre> Todos los programas deben comenzar con la palabra Proceso y a continuacin un nombre vlido (un identificador) para el programa. Todas las acciones deben estar contenidas dentro del programa. Sino mal colocado La clusula Sino siempre debe estar dentro de un Si, de lo contrario est mal colocada.

Subndices fuera de rango Este error se produce cuando se usa como ndice de un arreglo a un valor fuera de las posiciones definidas en la instruccin Dimension que se us para declarar el arreglo. Ejemplo : Dimension a(5); Escribir a(6); // el arreglo a slo tiene 5 elementos.

EJERCICIOS BASICOS RESUELTOS 1. Hacer un algoritmo que imprima los nmeros del 100 al 1 en forma decreciente Proceso numero Para i<-100 Hasta 1 Con Paso -1 Hacer Escribir i; FinPara FinProceso 2. Hacer un algoritmo que cuente los nmeros pares y sume los nmeros impares entre 1 y 50 Proceso numero suma<-0; conteo<-0; Para i<-1 Hasta 100 Con Paso 1 Hacer Si i%2=0 Entonces conteo<-conteo+1; Sino suma<-suma+i; FinSi FinPara Escribir "Numero de pares:",conteo; Escribir "suma de impares:",suma; FinProceso 3. Hacer un algoritmo que imprima los nmeros pares entre 1 y 50 Primera Forma: Proceso numero Para i<-1 Hasta 50 Con Paso 1 Hacer Si i%2=0 Entonces Escribir i; FinSi FinPara FinProceso Segunda Forma: Proceso numero Para i<-2 Hasta 50 Con Paso 2 Hacer Escribir i; FinPara FinProceso

4. Hacer un algoritmo que imprima los nmeros enteros positivos (discretos) anteriores a un nmero ledo por teclado Proceso numero Escribir "leer un numero: "; Leer n; Para i<-1 Hasta n-1 Con Paso 1 Hacer Escribir i; FinPara FinProceso

EJERCICIOS INTERMEDIOS RESUELTOS 1. Digitalizar un Numero, para as, obtener la unidad, la decena, la centena y la unidad mil Proceso Digitalizar Repetir Escribir "Lea digito entre 1000 y 9999"; Leer k; Hasta Que k>=1000 & k<=9999 Dimension A(4) n<-0; Mientras k>0 Hacer n<-n+1; A(n)<-k % 10; k<-trunc(k/10); FinMientras Para i<-1 Hasta n Hacer Segun i Hacer 1: cadena<-"unidad "; 2: cadena<-"decena "; 3: cadena<-"centena "; 4: cadena<-"mil "; FinSegun Escribir cadena," es:",A(i); FinPara FinProceso

2. Calcular las horas y los minutos trabajados en tantos das( de 1 a 6) Proceso minutotrabajo total<-0; Repetir Escribir "Numero de Dias [1...6]"; Leer dias; Hasta Que dias>=1 & dias<=6 Para i<-1 Hasta dias Con Paso 1 Hacer Repetir Escribir "Dia No. ",i; Escribir "Hora Inicial: "; Leer hi; Escribir "Minuto Inicial: "; Leer mi; Escribir "Hora Final: "; Leer hf; Escribir "Minuto Final: "; Leer mf; minini<-(hi*60)+mi; minfin<-(hf*60)+mf; Hasta Que minfin>minini cuanto<-minfin-minini; Escribir "dia: ",i," tantos minutos: ",cuanto; total<-total+cuanto; FinPara Escribir "Total Minutos Trabajados: ",total; minuto<-total%60; hora<-trunc(total/60); Escribir "Horas: ",hora," Minutos:",minuto; FinProceso

3. Realizar un subprograma que encuentre los nmeros amigos en un rango de 1 a 1000 Proceso Numero_Amigo Para i<-1 Hasta 1000 hacer suma<-0; Para j<-1 Hasta trunc(i/2) Hacer Si i % j = 0 Entonces suma<-suma+j; FinSi FinPara suma1<-0; Para j<-1 Hasta trunc(suma/2) Hacer Si suma % j = 0 Entonces suma1<-suma1+j; FinSi FinPara Si i=suma1 Entonces Escribir "Numero Amigo: ",i," ",suma; FinSi FinPara FinProceso

EJERCICIOS AVANZADOS RESUELTOS 4. Ordenamiento Burbuja de un Vector y Bsqueda secuencial de un valor Proceso orden_binario n<-20; Dimension A(n); Para i<-1 Hasta n Con Paso 1 Hacer A(i)<-azar(50)+1; FinPara Para i<-1 Hasta n-1 Con Paso 1 Hacer Para j<-1 Hasta n-i con Paso 1 Hacer Si A(j)>A(j+1) Entonces aux<-A(j); A(j)<-A(j+1); A(j+1)<-aux; FinSi FinPara FinPara Para i<-1 Hasta n Con Paso 1 Hacer escribir A(i); FinPara x<-azar(50)+1; i<-1; Mientras i<=n & A(i)<x Hacer i<-i+1; FinMientras Si i<=n & A(i)=x Entonces Escribir x," esta en la posicion: ",i; Sino Escribir x," No esta en el vector" FinSi FinProceso

5. Ordenamiento Burbuja de un Vector y Bsqueda Binaria de un valor Proceso orden_binario n<-20; Dimension A(n); Para i<-1 Hasta n Con Paso 1 Hacer A(i)<-azar(50)+1; FinPara Para i<-1 Hasta n-1 Con Paso 1 Hacer Para j<-1 Hasta n-i con Paso 1 Hacer Si A(j)>A(j+1) Entonces aux<-A(j); A(j)<-A(j+1); A(j+1)<-aux; FinSi FinPara FinPara Para i<-1 Hasta n Con Paso 1 Hacer escribir A(i); FinPara x<-azar(50)+1; min<-1; max<-n; Repetir mitad<-trunc((min+max)/2); Si A(mitad)<x Entonces min<-mitad+1; FinSi Si A(mitad)>x Entonces max<-mitad-1; FinSi Hasta Que min>max | A(mitad)=x Si A(mitad)=x Entonces Escribir x," esta en la posicion: ",mitad; Sino Escribir x," No esta en el vector" FinSi FinProceso

6. Una empresa guarda en una tabla de 3x12x4 las ventas realizadas por sus tres vendedores a lo largo de doce meses de sus cuatro productos, VENTAS[ representante, mes, producto ]. Queremos proyectar el arreglo tridimensional sobre uno de dos dimensiones que represente el total de ventas, TOTAL[ mes, producto ], para lo cual sumamos las ventas de cada producto de cada mes de todos los vendedores. Imprimir el total de ventas anuales de cada producto. Proceso Ventas dimension ventas(3,12,4), total(12,4); dimension articulo(4),mes(12); articulo(1)<-"cafe"; articulo(2)<-"chocolate"; articulo(3)<-"azucar"; articulo(4)<-"sal"; mes(1)<-"enero"; mes(2)<-"febrero"; mes(3)<-"marzo"; mes(4)<-"abril"; mes(5)<-"mayo"; mes(6)<-"junio"; mes(7)<-"julio"; mes(8)<-"agosto"; mes(9)<-"septiembre"; mes(10)<-"octubre"; mes(11)<-"noviembre"; mes(12)<-"diciembre"; Para i<-1 Hasta 3 Con Paso 1 Hacer Para j<-1 Hasta 12 Con Paso 1 Hacer Para k<-1 Hasta 4 Con Paso 1 Hacer ventas(i,j,k)<-azar(100); FinPara FinPara FinPara Para j<-1 Hasta 12 Con Paso 1 Hacer Para k<-1 Hasta 4 Con Paso 1 Hacer total(j,k)<-0; Para i<-1 Hasta 3 Con Paso 1 Hacer total(j,k)<-total(j,k)+ventas(i,j,k); FinPara FinPara FinPara Escribir "total por articulos..."; Para k<-1 Hasta 4 Con Paso 1 Hacer Escribir "Articulo: ",articulo(k); suma<-0; Para j<-1 Hasta 12 Con Paso 1 Hacer

Escribir "Mes: ",mes(j)," Ventas: ",total(j,k); suma<-suma+total(j,k); FinPara Escribir "Total ventas anuales: ",suma; Escribir "============================="; FinPara FinProceso

7. Una empresa guarda en una tabla de 3x12x4 las ventas realizadas por sus tres vendedores a lo largo de doce meses de sus cuatro productos, VENTAS[ representante, mes, producto ]. Se Requiere imprimir el total de ventas anuales por vendedor. Proceso Ventas dimension ventas(3,12,4), articulo(4),vendedor(3); articulo(1)<-"cafe"; articulo(2)<-"chocolate"; articulo(3)<-"azucar"; articulo(4)<-"sal"; vendedor(1)<-"Jose Garcia"; vendedor(2)<-"Maria velez"; vendedor(3)<-"Hernan Trujillo"; Para i<-1 Hasta 3 Con Paso 1 Hacer Para j<-1 Hasta 12 Con Paso 1 Hacer Para k<-1 Hasta 4 Con Paso 1 Hacer ventas(i,j,k)<-azar(100); FinPara FinPara FinPara Escribir "Total por vendedor..."; Para i<-1 Hasta 3 Con Paso 1 Hacer Escribir "Vendedor: ",vendedor(i); total<-0; Para k<-1 Hasta 4 Con Paso 1 Hacer suma<-0; Para j<-1 Hasta 12 Con Paso 1 Hacer suma<-suma+ventas(i,j,k); FinPara Escribir "Total ventas anuales por articulo: ",articulo(k)," es ",suma; total<-total+suma; FinPara Escribir "Total ventas anuales por vendedor: ",vendedor(i)," es ",total; Escribir "======================================================="; finpara FinProceso

Das könnte Ihnen auch gefallen