Ejercicios Resueltos DE PSEINT
Ejercicios Resueltos DE PSEINT
Ejercicios Resueltos DE PSEINT
Algoritmos Resueltos
ALGORITMOS RESUELTOS
-------------------------------------------------------------------------T1.GIF TEMA 1
-------------------------------------------------------------------------Bucles y tomas de decision
-------------------------------------------------------------------------1.-Hacer un pseudocodigo que imprima los nmeros del 1 al 100.
PROGRAMA contador1
ENTORNO:
c <- 0
ALGORITMO:
Borrar_pantalla( )
MIENTRAS c < 101 HACER
ESCRIBIR c
c <- c + 1
FINMIENTRAS
FINPROGRAMA
-------------------------------------------------------------------------2.-Hacer un pseudocodigo que imprima los nmeros del 100 al 0, en orden
decreciente.
PROGRAMA contador2
ENTORNO:
c <- 100
ALGORITMO:
Borrar_pantalla( )
MIENTRAS c <= 0 HACER
ESCRIBIR c
c <- c - 1
FINMIENTRAS
FINPROGRAMA
-------------------------------------------------------------------------3.-Hacer un pseudocodigo que imprima los numeros pares entre 0 y 100.
PROGRAMA pares
ENTORNO:
c <- 2
ALGORITMO:
Borrar_pantalla( )
MIENTRAS c < 101 HACER
ESCRIBIR c
c <- c + 2
FINMIENTRAS
FINPROGRAMA
-------------------------------------------------------------------------4.-Hacer un programa que imprima la suma de los 100 primeros numeros.
PROGRAMA suma
ENTORNO:
c <- 1
suma <- 0
ALGORITMO:
Borrar_pantalla( )
MIENTRAS c <= 100 HACER
suma <- suma + c
c <- c + 1
FINMIENTRAS
ESCRIBIR "La suma de los 100 primeros nmeros es: "
ESCRIBIR suma
FINPROGRAMA
Algoritmos Resueltos
-------------------------------------------------------------------------5.-Hacer un pseudocdigo que imprima los nmeros impares hasta el 100 y que
imprima cuantos impares hay.
PROGRAMA impares
ENTORNO:
c <- 1
son <- 0
ALGORITMO:
Borrar_pantalla( )
MIENTRAS c < 100
ESCRIBIR c
c <- c + 2
son <- son + 1
FINMIENTRAS
ESCRIBIR "El nmero de impares: "
ESCRIBIR son
FINPROGRAMA
-------------------------------------------------------------------------6.-Hacer un pseudocodigo que imprima todos los nmeros naturales que hay
desde la unidad hasta un nmero que introducimos por teclado.
PROGRAMA natural
ENTORNO:
i <- 0
n <- 0
ALGORITMO:
Borrar_pantalla( )
ESCRIBIR "Introduce un nmero: "
LEER n
MIENTRAS i < n HACER
i <- i + 1
ESCRIBIR i
FINMIENTRAS
FINPROGRAMA
-------------------------------------------------------------------------7.-Introducir tantas frases como queramos y contarlas.
PROGRAMA frases
ENTORNO:
res <- "S"
frase <- Espacios( 30 )
c <- 0
ALGORITMO:
Borrar_pantalla( ) MIENTRAS
res = "S" HACER
ESCRIBIR "Frase: "
LEER frase
c <- c + 1
ESCRIBIR "Deseas introducir m s frases (S/N): "
LEER res
FINMIENTRAS
ESCRIBIR "El nmero de frases introducidas son: "
ESCRIBIR c
FINPROGRAMA
Algoritmos Resueltos
Algoritmos Resueltos
Algoritmos Resueltos
Algoritmos Resueltos
ESCRIBIR sumaimpa
FINPROGRAMA
-------------------------------------------------------------------------TEMA 2
-------------------------------------------------------------------------Bucles anidados y subprogramas
-------------------------------------------------------------------------16.-Imprimir diez veces la serie de numeros del 1 al 10.
PROGRAMA diez
ENTORNO:
serie <- 0
ALGORITMO:
Borrar_pantalla( )
MIENTRAS serie <= 10 HACER
numero <- 1
MIENTRAS numero <= 10 HACER
ESCRIBIR numero
numero <- numero + 1
FINMIENTRAS
serie <- serie + 1
FINMIENTRAS
FINPROGRAMA
-------------------------------------------------------------------------17.-Imprimir, contar y sumar los multiplos de 2 que hay entre una serie de
numeros, tal que el segundo sea mayor o igual que el primero.
PROGRAMA multiplo2
ENTORNO:
res <- "S"
ALGORITMO:
Borrar_pantalla( )
MIENTRAS res = "S" HACER
c <- 0
sum <- 0
num1 <- 0
num2 <- -999
ESCRIBIR "Nmero: "
LEER num1
ESCRIBIR "Nmero mayor que el anterior"
MIENTRAS num1 >= num2 HACER
LEER num2
FINMIENTRAS
num1 <- num1 + 1
MIENTRAS num1 <= num2 - 1 HACER
SI num1 = int( num1 / 2 ) * 2 ENTONCES
ESCRIBIR num1
c <- c + 1
sum <- sum + num1
FINSI
num1 <- num1 + 1
FINMIENTRAS
ESCRIBIR "Nmero de mltiplos de 2: "
ESCRIBIR c
ESCRIBIR "Su suma es: "
ESCRIBIR sum
res <- Espacios( 1 )
MIENTRAS res <> "S" Y res <> "N" HACER
ESCRIBIR "Otra serie de nmeros (S/N): "
LEER res
res <- Convertir_maysculas( res )
FINMIENTRAS
FINMIENTRAS
FINPROGRAMA
--------------------------------------------------------------------------
Algoritmos Resueltos
18.-Hacer un pseudocodigo que cuente las veces que aparece una determinada
letra en una frase que introduciremos por teclado.
PROGRAMA letra
ENTORNO:
frase <- Espacios( 30 )
letra <- Espacios( 1 )
longitud <- 0
a <- 0
res <- "S"
ALGORITMO:
MIENTRAS res = "S" HACER
Borrar_pantalla( )
ESCRIBIR "Introduce una frase: "
LEER frase
longitud <- Hallar_longitud( frase )
i <- 1
ESCRIBIR "Letra a buscar: "
LEER letra
MIENTRAS i <= longitud HACER
SI letra = Caracter( frase, i, 1 ) ENTONCES
a <- a + 1
FINSI
i <- i + 1
FINMIENTRAS
Borrar_pantalla( )
ESCRIBIR "El nmero de veces que aparece la letra "
ESCRIBIR letra
ESCRIBIR " en la frase "
ESCRIBIR frase
ESCRIBIR " es de "
ESCRIBIR a
res <- Espacios( 1 )
MIENTRAS res <> "S" Y res <> "N" HACER
ESCRIBIR "Desea introducir más frases (S/N): "
LEER res
res <- Convertir_maysculas( res )
FINMIENTRAS
FINMIENTRAS
FINPROGRAMA
-------------------------------------------------------------------------19.-Hacer un pseudocodigo que simule el funcionamiento de un reloj digital y
que permita ponerlo en hora.
PROGRAMA reloj
ENTORNO:
horas <- 0
minutos <- 0
segundos <- 0
res <- "S"
ALGORITMO:
Borrar_pantalla( )
ESCRIBIR "Horas: "
LEER horas
ESCRIBIR "Minutos: "
LEER minutos
ESCRIBIR "Segundos: "
LEER segundos
MIENTRAS res = "S" HACER
MIENTRAS horas < 24 HACER
MIENTRAS minutos < 60 HACER
MIENTRAS segundos < 60 HACER
ESCRIBIR horas
ESCRIBIR minutos
ESCRIBIR segundos
segundos <- segundos + 1
FINMIENTRAS
Algoritmos Resueltos
--------------------------------------------------------------------------
Algoritmos Resueltos
Algoritmos Resueltos
c <- c + 1 col
<- col + 4
SI col > 75 ENTONCES
fi <- fi + 2
col <- 5
FINSI
FINMIENTRAS
FINPROGRAMA
-------------------------------------------------------------------------24.-Comprobar si un numero mayor o igual que la unidad es primo.
PROGRAMA primo
ENTORNO:
res <- "S"
ALGORITMO:
MIENTRAS res = "S" HACER
Borrar_pantalla( )
numero <- 0
sw <- 0
MIENTRAS numero < 1 HACER
EN 8,10 ESCRIBIR "Nmero: "
EN 8,18 LEER numero
FINMIENTRAS
i <- numero - 1
MIENTRAS i > 1 Y sw <> 1 HACER
SI numero = Int( numero / i ) * i ENTONCES
sw = 1
SINO
i <- i - 1
FINSI
FINMIENTRAS
SI sw = 1 ENTONCES
EN 10,10 ESCRIBIR "no es primo"
SINO
EN 10,10 ESCRIBIR "s es primo"
FINSI
HACER Mas
FINMIENTRAS
FINPROGRAMA
-----------------------------SUBPROGRAMA Mas
res <- " "
MIENTRAS res <> "S" Y res <> "N" HACER
ESCRIBIR "Desea introducir m s nmeros (S/N): "
LEER res
res <- Convertir_mayusculas( res )
FINMIENTRAS
FINSUBPROGRAMA
-------------------------------------------------------------------------25.-Introducir un numero menor de 5000 y pasarlo a numero romano.
PROGRAMA romano
ENTORNO:
res <- "S"
ALGORITMO:
MIENTRAS res = "S" HACER
Borrar_pantalla( )
num <- 0
MIENTRAS num < 1 O num > 5000 HACER
EN 8,10 ESCRIBIR "Nmero: "
EN 8,18 ESCRIBIR num
FINMIENTRAS
col <- 15
MIENTRAS num >= 1000 HACER
EN 15,col ESCRIBIR "M"
num <- num - 1000
Algoritmos Resueltos
Algoritmos Resueltos
Algoritmos Resueltos
FINSI
HACER Mas
FINMIENTRAS
FINPROGRAMA
-----------------------------SUBPROGRAMA Mas
res <- Espacios( 1 )
MIENTRAS res <> "S" Y res <> "N" HACER
EN 20,30 ESCRIBIR "M s lanzamientos (S/N): "
EN 20,57 LEER res
res <- Convertir_mayusculas( res )
FINMIENTRAS
FINSUBPROGRAMA
-------------------------------------------------------------------------29.-Simular cien tiradas de dos dados y contar las veces que entre los dos
suman 10.
PROGRAMA dado
ENTORNO:
c <- 0
i <- 0
ALGORITMO:
Borrar_pantalla( )
MIENTRAS i < 101 HACER
SI Int( Rnd( ) * 6 ) + Int( Rnd( ) * 6 ) + 2 = 10 ENTONCES
c <- c + 1
FINSI
i <- i + 1
FINMIENTRAS
EN 10,20 ESCRIBIR "Las veces que suman 10 son: "
EN 10,48 ESCRIBIR c
FINPROGRAMA
-------------------------------------------------------------------------30.-Simular una carrera de dos caballos si cada uno tiene igual probabilidad
de ganar.
PROGRAMA caballos
ENTORNO:
dibujo <- "****"
col1 <- 4
col2 <- 4
ALGORITMO:
Borrar_pantalla( )
EN 10,col1 ESCRIBIR dibujo
EN 10,col2 ESCRIBIR dibujo
MIENTRAS col1 <= 75 Y col2 <= 75 HACER
SI Rnd( ) <= 0.5 ENTONCES
EN 10,col1 ESCRIBIR Espacios( 4 )
col1 <- col1 + 4
EN 10,col1 ESCRIBIR dibujo
SINO
EN 12,col2 ESCRIBIR Espacios( 4 )
col2 <- col2 + 4
EN 12,col2 ESCRIBIR dibujo
FINSI
FINMIENTRAS
EN 16,20 ESCRIBIR "El ganador es el caballo nmero: "
SI col1 >= 75 ENTONCES
EN 16,54 ESCRIBIR "1"
SINO
EN 16,54 ESCRIBIR "2"
FINSI
FINPROGRAMA
--------------------------------------------------------------------------
Algoritmos Resueltos
Algoritmos Resueltos
HACER Factorial
CASO op = 3
HACER Tabla
FINCASO
FINMIENTRAS
FINPROGRAMA
-----------------------------SUBPROGRAMA Primo
sw <- 0
i <- n - 1
MIENTRAS i > 1 Y sw <> 1 HACER
SI n = Int( n / i ) * i ENTONCES
sw <- 1
SINO
i <- i - 1
FINSI
FINMIENTRAS
Borrar_pantalla( )
SI sw = 1 ENTONCES
EN 10,10 ESCRIBIR "no es primo"
SINO
EN 10,10 ESCRIBIR "s es primo"
FINSI
Pausa( )
FINSUBPROGRAMA
-----------------------------SUBPROGRAMA Factorial
fac <- 1
Borrar_pantalla( )
SI n < 0 ENTONCES
EN 10,10 ESCRIBIR "No tiene factorial"
SINO
MIENTRAS n > 1 HACER
fac <- fac * n
n <- n - 1
FINMIENTRAS
EN 10,10 ESCRIBIR "Su factorial es: "
EN 10,27 ESCRIBIR fac
FINSI
Pausa( )
FINSUBPROGRAMA
-----------------------------SUBPROGRAMA Tabla
i <- 0
fi <- 10
Borrar_pantalla( )
MIENTRAS i <= 10 HACER
EN 8,10 ESCRIBIR "Tabla de multiplicar"
EN fi,10 ESCRIBIR n
EN fi,15 ESCRIBIR "*"
EN fi,20 ESCRIBIR i
EN fi,25 ESCRIBIR "="
EN fi,30 ESCRIBIR n * i
i <- i + 1
FINMIENTRAS
Pausa( )
FINSUBPROGRAMA
-------------------------------------------------------------------------TEMA 4
-------------------------------------------------------------------------Arrays unidimensionales
-------------------------------------------------------------------------33.-Crear un array unidimensional de 20 elementos con nombres de personas.
Visualizar los elementos de la lista debiendo ir cada uno en una fila
distinta.
PROGRAMA nombres
ENTORNO:
Algoritmos Resueltos
DIMENSIONA datos[ 20 ]
i <- 1
ALGORITMO:
Borrar_pantalla( )
fi <- 10
MIENTRAS i < 21 HACER
EN fi,10 ESCRIBIR "Nombre: "
EN fi, 18 LEER datos[ i ]
i <- i + 1
FINMIENTRAS
Borrar_pantalla( )
i <- 1
fi <- 3
EN 1,20 ESCRIBIR "Elementos de la lista"
MIENTRAS i < 21 HACER
EN fi,28 ESCRIBIR datos[ i ]
fi <- fi + 1
i <- i + 1
FINMIENTRAS
FINPROGRAMA
-------------------------------------------------------------------------34.-Hacer un programa que lea las calificaciones de un alumno en 10
asignaturas, las almacene en un vector y calcule e imprima su media.
PROGRAMA notamedia
ENTORNO:
DIMENSIONA notas[ 10 ]
suma <- 0
media <- 0
ALGORITMO:
Borrar_pantalla( )
fi <- 7
PARA i DESDE 1 HASTA 10 HACER
EN fi,15 ESCRIBIR "Nota "
EN fi,20 ESCRIBIR i
EN fi,21 ESCRIBIR ": "
EN fi,23 LEER notas[ i ]
fi <- fi + 1
FINPARA
PARA i DESDE 1 HASTA 10 HACER
suma <- suma + notas[ i ]
FINPARA
media <- suma / 10
EN 20,20 ESCRIBIR "Nota media: "
EN 20,32 ESCRIBIR media
FINPROGRAMA
-------------------------------------------------------------------------35.-Usando el segundo ejemplo, hacer un programa que busque una nota en el
vector.
PROGRAMA buscar
ENTORNO:
i <- 0
num <- 0
ALGORITMO:
Borrar_pantalla( )
ESCRIBIR "Nota a buscar: "
LEER num
ITERAR
i <- i + 1
SI notas[ i ] = num O i = 10 ENTONCES
SALIR
FINSI
FINITERAR
SI notas[ i ] = num ENTONCES
ESCRIBIR "Encontrado en posición: "
Algoritmos Resueltos
ESCRIBIR i
SINO
ESCRIBIR "No existe esa nota"
FINSI
FINPROGRAMA
-------------------------------------------------------------------------TEMA 5
-------------------------------------------------------------------------Arrays bidimensionales
-------------------------------------------------------------------------36.-Generar una matriz de 4 filas y 5 columnas con numeros aleatorios entre 1
y 100, e imprimirla.
PROGRAMA matriz
ENTORNO:
DIMENSIONAR A[ 4, 5 ]
i <- 1
fi <- 10
co <- 15
ALGORITMO:
Borrar_pantalla( )
EN 6,25 ESCRIBIR "Elementos de la matriz"
MIENTRAS i <= 4 HACER
j <- 1
MIENTRAS j <= 5 HACER
A[ i, j ] <- Int( Rnd( ) * 100 ) + 1
EN fi,co ESCRIBIR A[ i, j ]
co <- co + 5
j <- j + 1
FINMIENTRAS
co <- 15
fi <- fi + 2
i <- i + 1
FINMIENTRAS
FINPROGRAMA
-------------------------------------------------------------------------37.-Generar una matriz de 4 filas y 5 columnas con nmeros aleatorios entre 1
y 100, y hacer su matriz transpuesta.
PROGRAMA transpuesta
ENTORNO:
DIMENSIONAR A[ 4, 5 ]
DIMENSIONAR B[ 5, 4 ]
fi <- 8
co <- 10
fit <- 8
cot <- 40
i <- 1
ALGORITMO:
Borrar_pantalla( )
EN 6,15 ESCRIBIR "Matriz uno"
EN 6,45 ESCRIBIR "Transpuesta"
MIENTRAS i <= 4 HACER
j <- 1
MIENTRAS j <= 5 HACER
A[ i, j ] <- Int( Rnd( ) * 100 ) + 1
B[ j, i ] <- A[ i, j ]
EN fi,co ESCRIBIR A[ i, j ]
EN fit,cot ESCRIBIR B[ j, i ]
co <- co + 4
fit <- fit + 2
j <- j + 1
FINMIENTRAS
fi <- fi + 2
co <- 10
fit <- 8
Algoritmos Resueltos
Algoritmos Resueltos
Algoritmos Resueltos
Algoritmos Resueltos
Algoritmos Resueltos
ABRIR "DATOS.DAT"
sw <- 0
num <- 0
Borrar_pantalla( )
EN 5,10 ESCRIBIR "D.N.I.: "
EN 5,18 LEER num
MIENTRAS NO Eof( ) Y sw = 0 HACER
SI dni = num ENTONCES
EN 10,10 ESCRIBIR "Alta duplicada"
EN 15,10 ESCRIBIR "Pulse INTRO para continuar"
Pausa( )
sw <- 1
SINO
Siguiente_registro( )
FINSI
FINMIENTRAS
SI sw = 0 ENTONCES
EN 7,5 ESCRIBIR "Nombre: "
EN 9,5 ESCRIBIR "Apellidos: "
EN 11,5 ESCRIBIR "Dirección: "
EN 13,5 ESCRIBIR "Provincia: "
EN 7,16 LEER nombre
EN 9,16 LEER apellidos
EN 11,16 LEER direccion
EN 13,16 LEER provincia
dni <- num
Final_fichero( )
Escribir_registro( )
FINSI
CERRAR "DATOS.DAT"
res <- Espacios( 1 )
HACER Mas
FINMIENTRAS
FINPROGRAMA
-----------------------------SUBPROGRAMA Mas
MIENTRAS res <> "S" Y res <> "N" HACER
ESCRIBIR "Desea m s altas (S/N): "
LEER res
res <- Convertir_mayusculas( res )
FINMIENTRAS
FINSUBPROGRAMA
-------------------------------------------------------------------------44.-Hacer un programa que nos permita dar bajas en el fichero DATOS.DAT.
PROGRAMA bajas
ENTORNO:
res <- "S"
ALGORITMO:
MIENTRAS res = "S" HACER
ABRIR "DATOS.DAT"
sw <- 0
Borrar_pantalla( )
EN 5,10 ESCRIBIR "D.N.I.: "
EN 5,18 LEER num
MIENTRAS NO Eof( ) HACER
SI dni = num ENTONCES
sw <- 1
SINO
ABRIR "AUX.DAT"
Final_fichero( )
Escribir_registro( )
FINSI
ABRIR "DATOS.DAT"
Siguiente_registro( )
FINMIENTRAS
CERRAR "DATOS.DAT"
CERRAR "AUX.DAT"
Algoritmos Resueltos
SI sw = 0 ENTONCES
EN 12,10 ESCRIBIR "Baja inexistente"
EN 16,10 ESCRIBIR "Pulse INTRO para continuar"
BORRAR "AUX.DAT"
Pausa( )
SINO
BORRAR "DATOS.DAT"
RENOMBRAR "AUX.DAT" COMO "DATOS.DAT"
FINSI
res = Espacios( 1 )
HACER Mas
FINMIENTRAS
FINPROGRAMA
-----------------------------SUBPROGRAMA Mas
MIENTRAS res <> "S" Y res <> "N" HACER
ESCRIBIR "Desea m s bajas (S/N): "
LEER res
res <- Convertir_mayusculas( res )
FINMIENTRAS
FINSUBPROGRAMA
-------------------------------------------------------------------------45.-Dado el fichero secuencial DATOS.DAT, realizar un programa que nos permita
realizar modificaciones cuantas veces deseemos.
PROGRAMA modifica
ENTORNO:
res <- "S"
ALGORITMO:
MIENTRAS res = "S" HACER
ABRIR "DATOS.DAT"
sw <- 0
num <- 0
nom <- Espacios( 15 )
ape <- Espacios( 30 )
dir <- Espacios( 20 )
pro <- Espacios( 20 )
Borrar_pantalla( )
EN 5,10 ESCRIBIR "D.N.I.: "
EN 5,18 LEER num
MIENTRAS NO Eof( ) Y sw = 0 HACER
SI dni = num ENTONCES
HACER Imprimir
HACER Cambios
sw <- 1
SINO
Siguiente_registro( )
FINSI
FINMIENTRAS
SI sw = 0 ENTONCES
HACER Detener
FINSI
CERRAR "DATOS.DAT"
res <- Espacios( 1 )
HACER Mas
FINMIENTRAS
FINPROGRAMA
-----------------------------SUBPROGRAMA Mas
MIENTRAS res <> "S" Y res <> "N" HACER
ESCRIBIR "Desea m s cambios (S/N): "
LEER res
res <- Convertir_mayusculas( res )
FINMIENTRAS
FINSUBPROGRAMA
-----------------------------SUBPROGRAMA Imprimir
EN 7,5 ESCRIBIR "Nombre: "
Algoritmos Resueltos
Algoritmos Resueltos
FINSI
Activar_pantalla( )
CERRAR "DATOS.DAT"
FINPROGRAMA
-----------------------------SUBPROGRAMA Cabecera
Salto_pagina( )
EN 2,65 ESCRIBIR "P g.: "
EN 2,71 ESCRIBIR pag
EN 4,10 ESCRIBIR "Relacin de las personas que viven en la provincia: "
EN 4,62 ESCRIBIR pro
EN 6,7 ESCRIBIR "D.N.I." EN
6,18 ESCRIBIR "Nombre"
EN 6,40 ESCRIBIR "Apellidos"
EN 6,68 ESCRIBIR "Direccin"
EN 7,4 ESCRIBIR "------------------------------------------------------------------------"
fi <- 9
pag <- pag + 1
FINSUBPROGRAMA
-------------------------------------------------------------------------47.-En el fichero secuencial VENTAS.DAT, est n almacenadas las ventas de los
productos durante el da, cuyos campos son: NART y VENTAS. Se desea hacer
un programa que liste por impresora todas las ventas realizadas durante el da.
PROGRAMA ventas
ENTORNO:
total <- 0
uno <- 0
fi <- 55
sw <- 0
aux <- 0
pag <- 1
ALGORITMO:
Borrar_pantalla( )
Activar_impresora( )
ABRIR "VENTAS.DAT"
MIENTRAS NO Eof( ) HACER
SI fi = 55 ENTONCES
HACER Cabecera
FINSI
SI sw = 0 ENTONCES
aux <- nart
sw <- 1
FINSI
SI nart = aux ENTONCES
uno <- uno + ventas
SINO
HACER Imprimir
uno <- 0
aux <- nart
uno <- ventas
FINSI
Siguiente_registro( )
FINMIENTRAS
HACER Imprimir
EN fi + 2,20 ESCRIBIR "Unidades vendidas: "
EN fi + 2,39 ESCRIBIR total
Activar_pantalla( )
CERRAR "VENTAS.DAT"
FINPROGRAMA
-----------------------------SUBPROGRAMA Imprimir
EN fi,32 ESCRIBIR aux
EN fi,42 ESCRIBIR total
fi <- fi + 1
total <- total + uno
FINSUBPROGRAMA
Algoritmos Resueltos
-----------------------------SUBPROGRAMA Cabecera
Salto_pagina( )
EN 2,65 ESCRIBIR "P g.: "
EN 2,71 ESCRIBIR pag
EN 4,20 ESCRIBIR "LISTADO DE LAS VENTAS DE LOS PRODUCTOS AL DIA: "
EN 4,68 ESCRIBIR Fecha_sistema( )
EN 6,30 ESCRIBIR "Nmero"
EN 6,40 ESCRIBIR "Cantidad"
EN 7,18 ESCRIBIR "-----------------------------------------------------"
fi <- 9
pag <- pag + 1
FINSUBPROGRAMA
-------------------------------------------------------------------------48.-Dado el fichero secuencial ARTICULOS.DAT, cuyos campos son: NART,
ARTICULO, PVP, STOCK y MINIMO. En otro fichero VENTAS.DAT, est n
almacenadas las modificaciones de los productos durante el da, cuyos
campos son: NART2, VENTAS y TIPO. El campo TIPO puede tomar los valores 0
(venta) y 1 (compra). Se desea hacer un programa que realice una
actualizacin del fichero de ARTICULOS y un listado por impresora de las
entradas y salidas de los artculos.
PROGRAMA modifica
ENTORNO:
entra <- 0
sale <- 0
total <- 0
fi <- 55
sw <- 0
aux <- 0
pag <- 1
ALGORITMO:
Borrar_pantalla( )
Activar_impresora( )
ABRIR "ARTICULOS.DAT"
Primer_registro( )
ABRIR "SALIDAS.DAT"
Primer_registro( )
ABRIR "VENTAS.DAT"
Primer_registro( )
SELECCIONAR "VENTAS.DAT"
MIENTRAS NO Eof( ) HACER
SI fi = 55 ENTONCES
HACER Cabecompras
FINSI
SI sw = 0 ENTONCES
aux <- nart2
HACER Buscar
sw <- 1
FINSI
SI nart2 = aux ENTONCES
HACER Calculos
SINO
HACER Grabar
HACER Compra
entra <- 0
sale <- 0
aux <- nart2
HACER Buscar
HACER Calculos
FINSI
Siguiente_registro( )
FINMIENTRAS
HACER Grabar
HACER Compra
SELECCIONAR "SALIDAS.DAT"
fi <- 55
MIENTRAS NO Eof( ) HACER
Algoritmos Resueltos
SI fi = 55 ENTONCES
HACER Cabesal
FINSI
MIENTRAS nart3 <> nart HACER
SELECCIONAR "ARTICULOS.DAT"
Siguiente_registro( )
FINMIENTRAS
aux <- nart3
HACER Buscar
HACER Sale
SELECCIONAR "SALIDAS.DAT"
Siguiente_registro( )
FINMIENTRAS
EN fi + 4,55 ESCRIBIR "Total: "
EN fi + 4,62 ESCRIBIR total
Activar_pantalla( )
Cerrar_ficheros( )
BORRAR "SALIDAS.DAT"
FINPROGRAMA
-----------------------------SUBPROGRAMA Calculos
SI tipo = 0 ENTONCES
entra <- entra + ventas
SINO
sale <- sale + ventas
FINSI
FINSUBPROGRAMA
-----------------------------SUBPROGRAMA Grabar
stock <- stock + entra - sale
SELECCIONAR "ARTICULOS.DAT"
Escribir_registro( )
nart3 <- aux
ventas3 <- sale
SELECCIONAR "SALIDAS.DAT"
Final_fichero( )
Escribir_registro( )
FINSUBPROGRAMA
-----------------------------SUBPROGRAMA Cabecompras
Salto_pagina( )
EN 2,65 ESCRIBIR "P g.: "
EN 2,71 ESCRIBIR pag
EN 4,20 ESCRIBIR "LISTADO DE LAS ENTRADAS DE ARTICULOS AL DIA: "
EN 4,66 ESCRIBIR Fecha_sistema( )
EN 6,18 ESCRIBIR "Nmero"
EN 6,35 ESCRIBIR "Artculo"
EN 6,65 ESCRIBIR "Cantidad"
EN 7,15 ESCRIBIR "----------------------------------------------------------------"
fi <- 9
pag <- pag + 1
FINSUBPROGRAMA
-----------------------------SUBPROGRAMA Compra
EN fi,16 ESCRIBIR aux
EN fi,30 ESCRIBIR articulo
EN fi,67 ESCRIBIR entra
fi <- fi + 1
FINSUBPROGRAMA
-----------------------------SUBPROGRAMA Cabesal
Salto_pagina( )
EN 2,65 ESCRIBIR "P g.: "
EN 2,71 ESCRIBIR pag
EN 4,20 ESCRIBIR "LISTADO DE SALIDAS DE ARTICULOS AL DIA: "
EN 4,60 ESCRIBIR Fecha_sistema( )
EN 6,8 ESCRIBIR "Nmero"
EN 6,16 ESCRIBIR "Artculo"
EN 6,40 ESCRIBIR "Cantidad"
EN 6,54 ESCRIBIR "PVP"
Algoritmos Resueltos
Algoritmos Resueltos
donde <- 0
i <- 0
Borrar_pantalla( )
EN 10,20 ESCRIBIR "D.N.I.: "
EN 10,29 LEER dn
num <- Algoritmo( dn )
SELECCIONAR "DATOS.DAT"
LEER num
SI dni = Str( dn ) ENTONCES
HACER Alta_duplicada
SINO
SI Val( dni ) = 0 O dni = Espacios( ) ENTONCES
swh <- 1
FINSI
SI Val( puntero ) = 0 O puntero = Espacios( ) ENTONCES
HACER Introducir
puntero <- Str( 0 )
GRABAR num
SINO
HACER Buscar
SI sw = 0 ENTONCES
HACER Introducir
SI swh = 1 ENTONCES
GRABAR num
SINO
HACER Encontrar_sitio
SELECCIONAR "SINONIMOS.DAT"
GRABAR 1
puntero <- Str( donde )
SI i = 0 ENTONCES
SELECCIONAR "DATOS.DAT"
GRABAR num
SINO
SELECCIONAR "SINONIMOS.DAT"
GRABAR Val( aux )
FINSI
puntero <- Str( 0 )
SELECCIONAR "SINONIMOS.DAT"
GRABAR donde
FINSI
SINO
HACER Alta_duplicada( )
FINSI
FINSI
FINSI
HACER Mas
FINMIENTRAS
Cerrar_ficheros( )
FINPROGRAMA
-----------------------------SUBPROGRAMA Introducir
EN 12,20 ESCRIBIR "Nombre: "
EN 14,20 ESCRIBIR "Apellidos: "
EN 16,20 ESCRIBIR "Direccin: "
EN 12,29 LEER nom
EN 14,32 LEER ape
EN 16,32 LEER dir
FINSUBPROGRAMA
-----------------------------SUBPROGRAMA Encontrar_sitio
SELECCIONAR "SINONIMOS.DAT"
LEER 1
SI Val( nombre ) <> 0 Y nombre <> Espacios( ) ENTONCES
donde <- Val( nombre )
LEER donde
hueco <- Val( nombre )
nombre <- Str( hueco )
SINO
donde <- Val( dni ) + 1
dni <- Str( donde )
Algoritmos Resueltos
FINSI
FINSUBPROGRAMA
-----------------------------SUBPROGRAMA Buscar
aux <- puntero
i <- 0
MIENTRAS Val( puntero ) <> 0 Y sw = 0 HACER
SELECCIONAR "SINONIMOS.DAT"
LEER Val( puntero )
SI dni = Str( dn ) ENTONCES
EN 20,10 ESCRIBIR "Alta duplicada"
Pausa( )
sw <- 1
SINO
SI Val( puntero ) <> 0 ENTONCES
i <- i + 1
aux <- puntero
FINSI
FINSI
FINMIENTRAS
FINSUBPROGRAMA
-----------------------------SUBPROGRAMA Alta_duplicada
EN 20,10 ESCRIBIR "Alta duplicada"
Pausa( )
FINSUBPROGRAMA
-------------------------------------------------------------------------50.-Tenemos el fichero DATOS.DAT, que est indexado por el campo APELLIDOS,
cuyos campos son: DNI, NOMBRE, APELLIDOS, DIRECCION y PROVINCIA. Hacer un
programa que nos permita listar por pantalla todos los registros del
fichero, controlando el salto de p gina cuando llegue a la lnea veinte.
PROGRAMA listar
ENTORNO:
fi <- 22
ALGORITMO:
ABRIR "DATOS.DAT" INDICE "APELLIDO"
MIENTRAS NO Eof( ) HACER
SI fi = 22 ENTONCES
HACER Cabecera
FINSI
EN fi,2 ESCRIBIR dni
EN fi,12 ESCRIBIR nombre
EN fi,28 ESCRIBIR apellidos
EN fi,55 ESCRIBIR direccion
EN fi,69 ESCRIBIR provincia
fi <- fi + 1
SI fi = 20 ENTONCES
EN 22,20 ESCRIBIR "Pulse INTRO para continuar"
Pausa( )
fi <- 22
FINSI
Siguiente_registro( )
FINMIENTRAS
CERRAR "DATOS.DAT"
Cerrar_indices( )
FINPROGRAMA
-----------------------------SUBPROGRAMA Cabecera
Borrar_pantalla( )
EN 3,4 ESCRIBIR "D.N.I."
EN 3,20 ESCRIBIR "NOMBRE"
EN 3,35 ESCRIBIR "APELLIDOS"
EN 3,60 ESCRIBIR "DIRECCION"
EN 3,70 ESCRIBIR "PROVINCIA"
fi <- 5
FINSUBPROGRAMA
Algoritmos Resueltos