Ingeniero Técnico en Informática de Sistemas
Programación
MARTES 7 DE OCTUBRE DE 2003
===========================
Algoritmo Ejercicio_1
Variables enteras X, Y, Z, S
Escribir “Introduzca el primer número”
Leer X
Escribir “Introduzca el segundo número”
Leer Y
Escribir “introduzca el tercer número”
Leer Z
S <- X+Y+Z
Escribir “El resultado de la suma es:”, S
Parar
Fin algoritmo
Algoritmo Ejercicio_1B
Variables enteras X, Y, Z
Escribir “Introduzca el primer número”
Leer X
Escribir “Introduzca el segundo número”
Leer Y
Escribir “introduzca el tercer número”
Leer Z
Escribir “El resultado de la suma es:”, X+Y+Z
Parar
Fin algoritmo
Algoritmo Ejercicio_1B
Variables enteras Valor, Suma
Escribir “Introduzca el primer número”
Leer Suma
Escribir “Introduzca el segundo número”
Leer Valor
Suma <- Suma+Valor
Escribir “introduzca el tercer número”
Leer Valor
Suma <- Suma + Valor
Escribir “El resultado de la suma es:”, Suma
Parar
Fin algoritmo
Algoritmo Ejercicio_11
Variables enteras X, Y, Z, S
Escribir “Algoritmo que calcula la media de tres números”
Escribir “Introduzca el primer número”
Leer X
Escribir “Introduzca el segundo número”
Leer Y
Escribir “introduzca el tercer número”
Leer Z
S <- (X+Y+Z)
Escribir “El resultado de la suma es:”, S/3
Parar
Fin algoritmo
Algoritmo Ejercicio_10
Variables enteras A, B, C
Escribir “Algoritmo que cambia el orden de los números”
Escribir “Introduzca el primer número”
Leer A
Escribir “Introduzca el segundo número”
Leer B
C A
A <- B
B <- C
Escribir “El resultado del cambio de los números es:”, A, B
Parar
Fin algoritmo
LUNES 13 DE OCTUBRE DE 2003
===========================
Algoritmo Ejercicio_12
Variables enteras X, Y, Z, S
Escribir “Algoritmo los que superen la media”
Escribir “Introduzca el primer número”
Leer X
Escribir “Introduzca el segundo número”
Leer Y
Escribir “introduzca el tercer número”
Leer Z
S <- (X+Y+Z)/3
Si x > S entonces
Escribir X
Fin si
Si Y > S entonces
Escribir Y
Fin si
Si z > S entonces
Escribir Z
Fin si
parar
fin algoritmo
Algoritmo ejercicio_13
Variables reales pulgadas, centimetros
Constantes reales conversion=2.54
escribir “Este algoritmo convierte pulgadas en centímetros”
escribir “Introduzca las pulgadas:”
leer pulgadas
centimetros <- pulgadas * conversion
escribir “Las pulgadas introducidas equivalen a: “ ,centimetros, “centimetros.”
Parar
Fin algoritmo
Algoritmo ejercicio_14
Variables reales distancia
Carácter unidad
escribir “inserta la distancia”
leer distancia
escribir “ahora especifique si la distancia está en centímetros
(C) o pulgadas (P)”
leer unidad
si (unidad = `P') o (unidad = `p') o (unidad = `C') o (unidad = `c') entonces
si (unidad = `P') o (unidad = `p') entonces
distancia <- distancia * 2.54
escribir “son” , distancia , “centímetros”
si no
distancia <- distancia / 2.54
escribir “son” , distancia , “pulgadas”
fin si
si no
escribir “inserta P o C, no otro carácter”
fin si
Parar
Fin algoritmo
Algoritmo ejercicio_14
Variables reales distancia
Carácter unidad
escribir “inserta la distancia”
leer distancia
escribir “ahora especifique si la distancia está en centímetros
(C) o pulgadas (P)”
leer unidad
si (unidad = `P') o (unidad = `p') entonces
distancia <- distancia * 2.54
escribir “son” , distancia , “centímetros”
si no
si (unidad = `C') o (unidad = `c') entonces
distancia <- distancia / 2.54
escribir “son” , distancia , “pulgadas”
si no
escribir “inserta P o C, no otro carácter”
Fin si
fin si
Parar
Fin algoritmo
MARTES 14 DE OCTUBRE DE 2003
============================
Algoritmo ejercicio_15
Variables reales A,B,C
Escribir ”Iguales o Distintos”
Escribir “Dame tres números”
Leer A
Leer B
Leer C
Si (A+B=C) entonces
Escribir “Iguales”
Si no
Escribir “Distintos”
Fin si
Si (A+C=B) entonces
Escribir “Iguales”
Si no
Escribir “Distintos”
Fin si
Si (C+B=A) entonces
Escribir “Iguales”
Si no
Escribir “Distintos”
Fin si
Parar
Fin algoritmo
Algoritmo ejercicio_15
Variables reales A,B,C
Escribir ”Iguales o Distintos”
Escribir “Dame tres números”
Leer A
Leer B
Leer C
Si (A+B=C) o (A+C=B) o (C+B=A) entonces
Escribir “Iguales”
Si no
Escribir “Distintos”
Fin si
Parar
Fin algoritmo
Algoritmo ejer_17
Variables reales A,B,C
Escribir “Introduzca 3 números aleatoriamente:”
Leer A
Leer B
Leer C
Si (A < B) y (B < C) entonces
Escribir “Los números han sido introducidos de forma creciente” ,A,B,C
Si no
Escribir “No ha introducido los números de forma creciente”
Fin si
Parar
Fin algoritmo
Algoritmo ejercicio_18
Variable real precio, salario, SueldoExtra,
Variable natural horas, HorasExtras
Escribir “Numero de horas de la semana trabajadas:”
Leer horas
Escribir “Precio por hora”
Leer precio
Si horas =< 40 entonces
Salario <- 40.0 * precio
Sino
HorasExtras <- horas - 40
SueldoExtra <- 1.5 * precio * HorasExtras
Salario <- SueldoExtra + 40.0 * precio
Fin si
Escribir “El salario semanal es: ”, Salario
Parar
Fin algoritmo
Algoritmo ejercicio_18
Variable real precio, salario, SueldoExtra,
natural horas, HorasExtras
Escribir “Numero de horas de la semana trabajadas:”
Leer horas
Escribir “Precio por hora”
Leer precio
Salario <- Horas * precio
Si horas > 40 entonces
HorasExtras <- horas - 40
SueldoExtra <- 0.5 * precio * HorasExtras
Salario <- Salario + SueldoExtra
Fin si
Escribir “El salario semanal es: ”, Salario
Parar
Fin algoritmo
Algoritmo ejercicio_21
Variables Entera Contador, N
Escribir “escribe un número”
Leer N
Contador <- 1
Mientras contador <= N hacer
Escribir contador
Contador <- contador +1
Fin mientras
Parar
Fin algoritmo
Algoritmo ejercicio_22
Variables Entera Contador, N, Sumatoria
Escribir “escribe un número”
Leer N
Contador <- 1
Sumatoria 0
Mientras contador <= N hacer
Sumatoria Sumatoria + Contador
Contador <- contador +1
Fin mientras
Escribir “La suma de los n primeros números es: ”, Sumatoria
Parar
Fin algoritmo
Algoritmo ejercicio_23
Variables Entera Contador, N, Sumatoria
Escribir “escribe un número”
Leer N
Contador <- 1
Sumatoria 0
Mientras contador <= N hacer
Sumatoria Sumatoria + Contador
Contador <- contador +1
Fin mientras
Escribir “La media de los n primeros números es: ”, Sumatoria/N
Parar
Fin algoritmo
LUNES 20 DE OCTUBRE DE 2003
===========================
Algoritmo ejecicio_26
Variable entera dia
Escribir “Introduzca el dia de la semana en número”
Leer dia
Segun dia hacer
1: escribir “Lunes”
2: escribir “Martes”
3: escribir “Miercoles”
4: escribir “Jueves”
5: escribir “Viernes”
6: escribir “Sabado”
7: escribir “Domingo”
en otro caso
escribir “Introduzca un número del 1 al 7”
Fin segun
Parar
Fin algoritmo
Algoritmo ej_26
Variables natural x
Leer x
Si - entonces
Si no
Fin si
Si x=1 entonces
Escribir “lunes”
Si no
Si x=2 entonces
Escribir “martes”
Si no
Si x=3 entoces
Escribir “miercoles”
Si no
Si x=4 entonces
Escribir “jueves”; x
Si no
Si x=5 entonces
Escribir “viernes”
Si no
Si x=6 entonces
Escribir “sabado”
si no
si x=7 entonces
Escribir “domingo”
Si no
Escribir “Introduzca un número del 1 al 7”
Fin si
Fin si
Fin si
Fin si
Fin si
Fin si
Fin si
Parar
Fin algoritmo
Algoritmo ejer_27
Variables entera mes
Escribir “introduzca número del 1 Al 12”
Leer mes
Segun mes hacer
1: escribir “enero tiene 31 dias”
2: escribir “febrero tiene 28 o 29 dias ”
3: escribir “marzo tiene 31 dias”
4: escribir “abril tiene 30 dias”
5: escribir “mayo tiene 31 dias”
6: escribir “junio tiene 30 dias”
7: escribir “julio tiene 31 dias”
8: escribir “agosto tiene 31 dias”
9: escribir “septiembre tiene 30 dias”
10: escribir “octubre tiene 31 dias”
11: escribir “noviembre tiene 30 dias”
12: escribir “diciembre tiene 31 dias”
en otro caso
escribir “te he dicho que pongas un numero del 1 al 12”
fin segun
parar
fin algoritmo
Algoritmo ejer_27
Variables entera mes
Escribir “introduzca número del 1 Al 12”
Leer mes
Segun mes hacer
1,3,5,7,8,10,12: escribir “Tiene 31 dias”
2: escribir “febrero tiene 28 o 29 dias ”
4,6,9,11: escribir “Tiene 30 dias”
en otro caso
escribir “te he dicho que pongas un numero del 1 al 12”
fin segun
parar
fin algoritmo
Algoritmo ejercicio21bis
Variables enteras X,Y,contador
Escribir “desea escribir los números entre X e Y”
Escribir “deme el valor de Inicio”
Leer X
Escribir “deme el valor de finalización”
Leer Y
Contador <- X
Mientras contador <= Y hacer
Escribir contador
Contador <- contador+1
Fin mientras
Parar
Fin algoritmo
Algoritmo ejercicio21bis
Variables enteras X,Y,contador
Escribir “desea escribir los números entre X e Y”
Escribir “deme el valor de Inicio”
Leer X
Escribir “deme el valor de finalización”
Leer Y
Para contador desde X hasta Y hacer
Escribir contador
Fin para
Parar
Fin algoritmo
MARTES 21 DE OCTUBRE DE 2003
============================
Algoritmo ejercicio_31
Variables Natural Cantidad, Contador
Real Suma, Valor
Escribir “Introduzca la cantidad de numeros a leer”
Leer Cantidad
Suma <- 0
Para Contador desde 1 hasta cantidad hacer
Escribir “Introduzca un valor”
Leer Valor
Suma <- Suma+Valor
Fin Para
Escribir “La medi es”, Suma/c
Parar
Fin Algoritmo
Algoritmo nombre_apellidos35
Variables ristra[20] nombre,ape_1,ape_2,r1
Escribir “deme su nombre”
Leer nombre
Escribir “deme su primer apellido”
Leer ape_1
Escrbir”deme su segundo apellido”
Leer ape_2
R1 <- nombre+”@”+ape_1+”@”+ape_2
Parar
Fin algoritmo
--
LUNES 27 DE OCTUBRE DE 2003
===========================
Algoritmo Ejercicio_36
Variables ristra NomCom, nombre
natural Valor
Escribir “Introduzca el nombre y los dos apellidos separados por
espacios”
Leer NomCom
Valor <- pos(NomCom, “@”)
Nombre<- sub(NomCom,1,Valor-1)
NomCom<- sub (NomCom,valor+1)
NomCom<- NomCom+”,@”+nombre
Escribir NomCom
Parar
Fin algoritmo
Algoritmo ejercicio37
Variables ristra texto
Caracter c
Natural veces, posi
Escribir “introduce un texto”
Leer texto
Escribir “introduce caracter”
Leer c
Posi <- 1
Veces <- 0
Mientras posi /= 0 hacer
Posi <- pos(texto, c)
Si posi > 0 entonces
Veces <- veces+1
Fin si
Texto <- sub(texto,posi+1)
Fin mientras
Escribir “el caracter”,c,”se repite”,veces,”veces”
Parar
Fin algoritmo
Algoritmo ejercicio37
Variables ristra texto
Caracter c
Natural veces, posi
Escribir “introduce un texto”
Leer texto
Escribir “introduce caracter”
Leer c
Veces <- 0
Para Posi desde 1 hasta lon(texto) hacer
Si sub(Texto,Posi,1) = c entonces
Veces <- veces+1
Fin si
Fin para
Escribir “el caracter”,c,”se repite”,veces,”veces”
Parar
Fin algoritmo
MARTES 28 DE OCTUBRE DE 2003
============================
tipo Tidentidad es estructura
campos ristra Nombre, DNI
fin tipo
tipo Talumno es estructura
campo Tidentidad Identificación
campo real Nota
fin tipo
variables Talumno A1,A2
...
A1.Identificación.Nombre “Pepito Pérez”
A1.Nota 7.8
...
algoritmo AlumnosQSuperanMedia
variables enteras n,i
reales Suma,Media
Talumno A
escribir “Introduzca el número alumnos evaluados”
leer n
Suma 0
para i desde 1 hasta n hacer
escribir “Introduzca el nombre del alumno”
leer A.Identificación.Nombre
escribir “Introduzca una nueva nota”
leer A.nota
Suma Suma + nota
Fin para
Media Suma/n
para i desde 1 hasta n hacer
escribir “Introduzca el nombre del alumno”
leer A.Identificación.Nombre
escribir “Introduzca una nueva nota”
leer A.nota
Si A.Nota > Media entonces
Escribir A.Identificación.Nombre
Fin si
Fin para
Parar
Fin algoritmo
tipo Tlista es estructura Talumno[100] fin tipo
algoritmo AlumnosQSuperanMedia
variables enteras n,i
reales Suma,Media
TLista ListaAlumnos
escribir “Introduzca el número alumnos evaluados”
leer n
Suma 0
para i desde 1 hasta n hacer
escribir “Introduzca el nombre del alumno”
leer ListaAlumnos[i].Identificación.Nombre
escribir “Introduzca una nueva nota”
leer ListaAlumnos[i].nota
Suma Suma + nota
Fin para
Media Suma/n
Escribir “Relación de alumnos que han superado la media”
para i desde 1 hasta n hacer
Si ListaAlumnos[i].Nota > Media entonces
Escribir ListaAlumnos[i].Identificación.Nombre
Fin si
Fin para
Parar
Fin algoritmo
Tipo Tmatriz es estructura
Campo real[50,50] Matriz
Campos enteros nf,nc
fin tipo
Algoritmo InicializaMatriz
Variables Tmatriz M
naturales i,j
escribir “Introduzca el número de filas y columnas de la matriz”
leer M.nf
leer M.nc
Para i desde 1 hasta M.nf hacer
Para j desde 1 hasta M.nc hacer
M.Matriz[i,j] 0
Fin para
Fin para
Parar
Fin algoritmo
Tipo Tmatriz es estructura real[-5..5,-3..3] fin tipo
Tipo Tmatriz es estructura entero [20,20] fin tipo
Algoritmo matriz_cero
Variable Tmatriz matriz1
Naturales i, j
Para i desde 1 hasta 20 hacer
Para j desde 1 hasta 20 hacer
Matriz1[i,j] <- 0
Fin para
Fin para
Fin algoritmo
Algoritmo suma_matricez
Variables Tmatriz matriz1,matriz2,matriz3
Naturales i,j,filas,columnas
Escribir “Filas de las matrices”
Leer filas
Escribir “Columnas de las matrices”
Leer columnas
Escribir “DATOS DE LA PRIMERA MATRIZ”
Para i desde 1 hasta filas hacer
Para j desde 1 hasta columnas hacer
Leer matriz1[i,j]
Fin para
Fin para
Escribir “DATOS DE LA SEGUNDA MATRIZ”
Para i desde 1 hasta filas hacer
Para j desde 1 hasta columnas hacer
Leer matriz2[i,j]
Fin para
Fin para
Escribir “RESULTADO DE LA MATRIZ1 Y MATRIZ2”
Para i desde 1 hasta filas hacer
Para j desde 1 hasta columnas hacer
Matriz3[i,j]<- matriz1[i,j]+ matriz2[i,j]
Fin para
Fin para
Escribir “EL RESULTADO DE LA SUMA DE LA MATRIZ1 Y LA MATRIZ2 ES: ”
Para i desde 1 hasta filas hacer
Para j desde 1 hasta columnas hacer
Escribir matriz3[i,j]
Fin para
Fin para
parar
Fin algoritmo
Funcion real valor_abs(x)
Variable entrada real x
Si x<0 entonces
X<- -X
Fin si
Devolver x
Fin funcion
Función lógica Ej43(N)
Variables entrada entera N
Locales enteras i
Para i desde 2 hasta N-1 hacer
Si Resto(N/i) = 0 entonces
Devolver falso
Fin si
Fin para
Devolver verdadero
Fin función
==
Funcion Natural MCD(A,B)
Variables
Entrada natural A,B
Mientras (A - B) /= 0 hacer
Si A>B entonces
A A-B
Si no
B B-A
Fin si
Fin mientras
Devolver A
Fin funcion
Tipo tvector es estructura [1..100] fin tipo
Funcion entera Maximo (v,n)
Variables
Entrada tvector v
Entero n
Local entero va_m
Va_m <- v[1]
Para i desde 2 hasta n hacer
Si va_m < v[i] entonces
Va_m <-v[i]
Fin si
Fin para
Devolver va_m
Fin funcion
procedimiento Maximo (v,n,Va_m)
Variables
Entrada tvector v
Entero n
salida entero va_m
Va_m <- v[1]
Para i desde 2 hasta n hacer
Si va_m < v[i] entonces
Va_m <-v[i]
Fin si
Fin para
retornar
Fin procedimiento
Tipo Tvector es estructura entero[100] fin tipo
Funcion natural Ej98busca(N,V,E)
Variables
Entrada natural N,
Entero E
Tvector V
Local natural veces,i
Veces<-0
Para i desde 1 hasta N hacer
Si V[i]=E entonces
Veces=veces+1
Fin si
Fin para
Devolver veces
Fin funcion
Procedimiento ejercicio_99 (V,N,E)
Variables entrada entero E
Entrada/salida Tvector V
Natural N
Locales enteras I,contador
Contador <- 0
Para I desde 1 hasta N hacer
Si V[I] > E entonces
Contador <- contador + 1
V[contador] <- V[I]
Fin si
Fin para
N <- contador
Retornar
Fin procedimiento
Procedimiento esparimpar (v,n)
Variables
Entrada natural n
Entrada/salida tvector v
Local natural i, contador
Entera aux
Contador<-0
Para i desde 1 hasta n hacer
Si no parimpar(v[i]) entonces
Contador<-contador+1
Aux<-v[contador]
v[contador]<- v[i]
v[i]<-aux
fin si
fin para
retornar
fin procedimiento
Tipo tcomplejo es estructura
Campos reales Preal,Pimag
Fin tipo
Funcion logica igualdad (a,b)
Variables
Entrada tcomplejo a,b
Si (a.preal=b.preal) y (a.pimag=b.pimag) entonces
Devolver verdadero
Sino
Devolver falso
Fin si
Fin funcion
Funcion logica igualdad (a,b)
Variables
Entrada tcomplejo a,b
Si (a.preal=b.preal) y (a.pimag=b.pimag) entonces
Devolver verdadero
finsi
Devolver falso
Fin si
Fin funcion
Funcion logica igualdad (a,b)
Variables
Entrada tcomplejo a,b
devolver (a.preal=b.preal) y (a.pimag=b.pimag)
Fin funcion
Ejercicio 49
Funcion tcomplejo Suma (X,Y)
Variables Entrada tcomplejo X, Y
Local tcomplejo Z
Z.preal x.preal+Y.preal
Z.pimag x.pimag+y.pimag
Devolver Z
Fin funcion
Funcion entera N_veces (r,c)
Variables entrada ristra r
Carácter c
Locales enteras n,i
N 0
Para i desde 1 hasta Lon(r) hacer
Si ( c=(sub(r,i,1)) entonces
N N+1
Fin si
Fin para
Devolver N
Fin funcion
Funcion entera vmax (v,n)
Variables entrada tvector v
Entero n
Local entero max
Max <- v[1]
Para i desde 1 hasta n hacer
Si max < v[i] entonces
Max <- v[i]
Fin si
Fin para
Devolver max
Fin funcion
Funcion caracter Eje64 (r)
Variables entrada ristra r
Local entero max
Carácter c_max,c
Max <- 0
Para i desde 1 hasta lon(r) hacer
C sub(r,i,1)
N N_veces (r,c)
Si max < N entonces
Max <- N
C_max c
Fin si
Fin para
Devolver c_max
Fin funcion
Tipo fecha es estructura
Campo natural días
Campo natural mes
Campo natural año
Fin tipo
Función lógica EsBisiesto(a)
Si (F.año mod 4 = 0 y F.año mod 100#0) o F.año mod 400=0 entonces
Devolver verdadero
Si no
Devolver falso
Fin si
Fin función
Función lógica representar_fechas (F)
Variables entrada fecha F
Según F.mes hacer
1,3,5,7,8,10,12:
devolver F.día > 0 y F.día <=31
4,6,9,11:
devolver F.día >0 y F.día <= 30
2: devolver (EsBisiesto(F.año) y F.día <= 29) o
(no EsBisiesto(F.año) y F.día <= 28)
en otro caso:
devolver falso
fin según
fin función
función natural Ristra2Número(Rn)
variable entrada ristra Rn
local entera i,v
v 0
para i desde 1 hasta lon(Rn) hacer
v v * 10 + Orden(sub(Rn,i,1))-Orden(`0')
fin para
devolver v
fin función
función Fecha Ristra2Fecha(Fr)
variable entrada ristra Fr
local Fecha F
F.dia Ristra2Número(sub(Fr,1,2))
F.mes Ristra2Número(sub(Fr,4,2))
F.año Ristra2Número(sub(Fr,7,4))
Devolver F
Fin función
Tipo Tfecha es estructura
Campos natural dia,mes,año
Fin tipo
Tipo Tlista_fechas es estructura Tfecha[100] fin tipo
Procedimiento ordena_fechas_y_elimina_repetidas(f,tam)
Variables
Entrada/salida Tlista_fechas f
Natural tam
Local natural i,j,aux
--Ordenar fechas
ordenar_fechas(f,tam)
--Eliminar repetidas
eliminar_repetidas(f,tam)
Fin procedimiento
procedimiento Ordenar_fechas(V,NElem)
variables
entrada entero NElem {Nº de elementos del vector}
entrada/salida tfecha V {Vector a ordenar}
locales enteras Actual,Aux,PosCandidato,Comodín
{Recorrido del vector}
para Actual desde 1 hasta NElem _ 1 hacer
{Búsqueda del mínimo a partir de la posición actual}
PosCandidato <- Actual
para Aux desde Actual + 1 hasta NElem hacer
si compara(V[Aux] , V[PosCandidato])=1 entonces
PosCandidato <- Aux
fin si
fin para
{Una vez localizado el elemento que debe ir en la posición actual
se intercambia con el que la ocupa }
Comodín <- V[Actual]
V[Actual] <- V[PosCandidato]
V[PosCandidato] <- Comodín
fin para
retornar
fin procedimiento {OrdenSelección}
funcion natural compara(a,b)
entrada tfecha a,b
si a.año<b.año entonces
devolver 2
si no
si a.año>b.año entonces
devolver 1
si no
si a.mes<b.mes entonces
devolver 2
si no
si a.mes>b.mes entonces
devolver 1
si no
si a.dia<b.dia entonces
devolver 2
si no
si a.dia>b.dia entonces
devolver 1
si no
devolver 0
fin si
fin si
fin si
fin si
fin si
fin si
fin funcion
procedimiento eliminar_repetidas(f,tam)
variables
entrada/salida tfecha f
natural tam
local i
i<-1
mientras i<tam hacer
si comparar (f[i],f[i+1])=0 entonces
desplazar (f,tam,i+1)
si no
i<-i+1
fin para
retornar
fin procedimiento
procedimiento FicheroParImpar(NF,Nfpar,Nfimpar)
Variables entrada ristra NF,Nfpar,Nfimpar
locales FicheroTexto F,Impar,Par
Ristra L
Entero I
I<-0
Si Abrir(F,NF ,Lectura) entonces
si CrearFichero(Nfpar) y Abrir(Par,Nfpar,escritura) y
CrearFichero(Nfimpar) y Abrir(Impar,Nfimpar,escritura) entonces
Mientras No FinFichero(F) hacer
I <- I+1
LeerLinea (F,L)
SI (I mod 2 =0) entonces
Escribir (Par,L)
NuevaLinea (Par)
Si no
Escribir (Impar,L)
NuevaLinea (Impar)
Fin si
Fin Mientras
Cerrar(Par)
Cerrar(Impar)
Fin si
Cerrar (F)
Fin si
Parar
Fin algoritmo
Funcion natural n_caracteres (nf_entrada)
Variables entrada ristra nf_entrada
Local ristra Línea,
FicheroTexto f_entrada
Natural n
N<- 0
Si abrir(f_entrada,nf_entrada,lectura) entonces
Mientras no finfichero(f_entrada) hacer
LeerLínea(f_entrada,Línea)
N<-N+Lon(Línea)
Fin mientras
Cerrar(f_entrada)
Sino
Escribir “no se pudo abrir el fichero”
Fin si
Devolver n
Fin funcion
Funcion entero n_caracteres (nf_entrada)
Variables entrada ristra nf_entrada
Local caracter c,
FicheroTexto f_entrada
Natural n
N<- 0
Si abrir(f_entrada,nf_entrada,lectura) entonces
Mientras no finfichero(f_entrada) hacer
Mientras no FinPágina(f_entrada) hacer
Mientras no FinLínea(f_entrada) hacer
Leer(f_entrada,c)
N<-N+1
Fin mientras
SaltarLínea(f_entrada)
Fin mientras
SaltarPágina(f_entrada)
Fin mientras
Cerrar(f_entrada)
Sino
N -1
Fin si
Devolver n
Fin funcion
Tipo Reg1 es estructura
Campo ristra[45] Nombre
Campo real Nota
Fin tipo
Tipo Reg2 es estructura
Campo ristra[45] Nombre
Campo ristra[13] Nota
Fin tipo
Procedimiento FiltroNotas140(NF1,NF2)
Variables entrada ristra NF1,NF2
Locales Fichero<Reg1> F1
Fichero<Reg2> F2
Reg1 R1
Reg2 R2
Si Abrir(F1,NF1,entrada) entonces
Si Crear(NF2) y Abrir(F2,NF2,escritura) entonces
Mientras no FinFichero(F1) hacer
Leer(F1,R1)
ProcesaComponente(R1,F2)
Fin mientras
Cerrar(F2)
Fin si
Cerrar(F1)
Fin si
Retornar
Fin procedimiento
Procedimiento ProcesaComponente(R,F)
Variables entrada Reg1 R
Local Reg2 Rs
Entrada/salida Fichero<Reg2> F
Si R.Nota >= 5 y R.Nota <= 10 entonces
Rs.Nombre R.Nombre
Si R.Nota >= 5 y R.Nota < 7 entonces
Rs.Nota “Aprobado”
Si no
Si R.Nota >= 7 y R.Nota < 9 entonces
Rs.Nota “Notable”
Si no
Rs.Nota “Sobresaliente”
Fin si
Fin si
Escribir (F,Rs)
Fin si
Retornar
Fin procedimiento
Algoritmo ejercicio2
Variables ristra nombref1, nombref2, r1, r2
FicheroTexto F1, F2
Entera Nr
Escribir “Introduzca el nombre del fichero donde estan los datos”
Leer nombref1
Si Abrir(f1,nombref1,lectura) entonces
Escribir “Introduzca el nombre del fichero salida”
Leer nombref2
Si crear(nombref2) y abrir(f2,nombref2,escritura)entonces
Mientras no FinFichero(f1) hacer
LeerLinea(f1,r1)
ProcesarLinea(F2,r1)
Fin mientras
Cerrar(f2)
Si no
Escribir “imposible crear o abrir el fichero de nombre”, nombref2
Fin si
Cerrar(f1)
Si no
Escribir “error al abrir el fichero”, nombref1
Fin si
Parar
Fin algoritmo
Procedimiento ProcesarLínea(F,R1)
Variable entrada/salida FicheroTexto F
Entrada ristra R1
locales ristra R2
Entera Nr
Nr <- pos(r1,”/”)
R1 <- sub(r1,Nr+1)
Nr <- pos(r1,”/”)
R2 <- sub(r1,1,nr)
R1 <- sub (r1,nr+1)
R2 <- r2 + sub(r1,1,2)
Nr <- pos(r1, “/”){pos Barra de fin de sexo}
R1 <- sub(r1,nr+1)
Nr <- pos(r1,”/”) {pos Barra de fin de estado}
R1 <- sub(r1,nr+1)
R2 <- r2+r1
Escribirlinea(f2,r2)
Retornar
Fin procedimiento
Funcion real exponencial(X, N)
Variables entrada natural N
Real X
Local real resultado
Si N = 0 entonces
Resultado <- 1
Si no
Resultado <- X * exponencial (X,(N-1))
Fin si
Devolver resultado
Fin funcion
Funcion real exponencial(X, N)
Variables entrada natural N
Real X
Si N = 0 entonces
Devolver 1
Si no
devolver X * exponencial (X,(N-1))
Fin si
Fin funcion
procedimiento exponencial(X, N, R)
Variables entrada natural N
Real X
Salida real R
Local real R1
Si N = 0 entonces
R <- 1
Si no
exponencial (X,(N-1),R1)
R X * R1
Fin si
retornar
Fin funcion
Funcion real exponencial (X,N)
Variables entrada natural N
Real X
Si N=1 entonces
Devolver X
Sino
ExpN2 Exponencial(X,ParteEntera(n/2)
Si N mod 2 = 0 entonces
Devolver) ExpN2 * ExpN2
Sino
Devolver ExpN2 * ExpN2 * X
fin si
fin si
fin funcion
algo(7,5)=algo(7,4)+7 = 28 + 7 = 35
algo(7,4)=algo(7,3)+7 = 21 + 7 = 28
algo(7,3)=algo(7,2)+7 = 14 * 7 = 21
algo(7,2)=algo(7,1)+7= 7 + 7 = 14
algo(7,1)=7
algo(7,5)=35
funcion real capital (c,r,n)
variables entrada reales c,r
natural n
si n=0 entonces
devolver c
sino
devolver capital(c,r,n-1) * (1 + r/100)
fin si
fin funcion
función entera Máximo(V,n)
variables entrada Tvector V
positivo n
local entero max
si n=1 entonces
devolver V[1]
si no
max Máximo(V,n-1)
si V[n] > max entonces
devolver V[n]
si no
devolver max
fin si
fin si
fin función
función entera Máximo(V,Linf,Lsup)
variables entrada Tvector V
positivo Linf,Lsup
local entero x,y
si Linf=Lsup entonces
devolver V[Linf]
si no
x Máximo(V,Linf,ent((Linf+Lsup)/2))
y máximo(v, ent((Linf+Lsup)/2)+1,Lsup)
si x > y entonces
devolver x
si no
devolver y
fin si
fin si
fin función
lunes 12 DE enero DE 2004-01-12
tipo Reg es estructura
campo ristra[12] Palabra
campo entero Siguiente
fin tipo
algoritmo ReconstruyeMensaje
variables ristra Mensaje,Nf
entera p
Reg R
Fichero<Reg> fm
Escribir “Introduzca el nombre del fichero”
Leer Nf
Si abrir(fm,Nf,lectura) entonces
P 1
Mensaje “”
Mientras p#0 hacer
IrA(fm,p)
Leer(fm,R)
Mensaje Mensaje + R.Palabra + “@”
P R.Siguiente
Fin mientras
Escribir Mensaje
Cerrar(fm)
Fin si
Parar
Fin algoritmo
Tipo Nodo es estructura
Campo TipoValor Info
Campo Plista Siguiente
Fin tipo
Tipo Plista es puntero<Nodo> fin tipo
Procedimiento Idetras (V, Pnt)
Variable entrada/salida Plista Pnt
Entrada carácter V
Local Plista Nuevo, Aux
Nuevo TomarBloque(Nodo)
Nuevo->siguiente nulo
Nuevo->info V
Aux pnt
Si pnt = NULO entonces
Pnt Nuevo
Si no
Mientras Auxsiguiente /= nulo hacer
Aux Auxsiguiente
Fin mientras
Auxsiguiente nuevo
Fin si
Retornar
Fin procedimiento {Idetras}
Lunes 19-1-2004
Procedimiento InsertarEnOrden(V, Pnt)
Variable entrada/salida Plista Pnt
Entrada carácter V
Local Plista Nuevo, Aux
Nuevo TomarBloque(Nodo)
Nuevo->siguiente nulo
Nuevo->info V
Aux pnt
Si pnt = NULO o V < pntinfo entonces
NuevoSig Pnt
Pnt Nuevo
Si no
Ant Pnt
Mientras (Auxsiguiente /= nulo) y (Auxinfo<V) hacer
Ant Aux
Aux Auxsiguiente
Fin mientras
Si V > AuxInfo entonces
AuxSiguiente Nuevo
Si no
AntSiguiente Nuevo
Nuevosiguiente Aux
Fin si
Fin si
Retornar
Fin procedimiento {InsertarEnOrden}
Procedimiento ExtraerDetras (Pnt)
Variable entrada/salida Plista Pnt
Local Plista Nuevo, Aux
Aux pnt
Si pnt /= NULO entonces
Ant NULO
Mientras Auxsiguiente /= nulo hacer
Ant Aux
Aux Auxsiguiente
Fin mientras
Si Ant = NULO entonces
Pnt NULO
Si no
AntSiguiente NULO
Fin si
Liberar(Aux)
Fin si
Retornar
Fin procedimiento {ExtraerDetras}
Procedimiento ExtraerEnOrden(V, Pnt)
Variable entrada/salida Plista Pnt
Entrada carácter V
Local Plista Nuevo, Aux
Aux pnt
si pnt /= NULO entonces
si V = pntinfo entonces
Pnt pntsiguiente
liberar(Aux)
Si no
Ant Pnt
Mientras (Auxsiguiente /= nulo) y (Auxinfo/=V) hacer
Ant Aux
Aux Auxsiguiente
Fin mientras
Si V = AuxInfo entonces
AntSiguiente AuxSiguiente
Liberar(Aux)
Fin si
Fin si
Retornar
Fin procedimiento {ExtraerEnOrden}
Función entera calcular (L)
Variables entrada Tnodosimple L
Local entera N
N <- 0
Mientras L /= nulo hacer
N<-N+1
L<- L->sig
Fin mientras
Devolver N
Fin función
Martes 20-1-2004
Función entera calculartamaño(L)
Variables entrada PnodoSimple L
Local entera N
Si L=nulo entonces
N 0
Sino
N<- 1 + Calculartamaño(LSiguiente)
Fin si
Devolver N
Fin función
Función entera calculartamaño(L) {E151}
Variables entrada PnodoSimple L
Si L=nulo entonces
Devolver 0
Sino
devolver 1 + Calculartamaño(LSiguiente)
Fin si
fin función
Función entera calcular (L)
Varaiables entrada Tnodo simple L
Local entera N
Si L = nulo entonces
Devolver 0
Sino
N 1 + calcular(Lsiguiente)
Devolver N
Fin si
Fin funcion
Función entera Suma(L) {E152}
Variables entrada PnodoSimple L
Si L=nulo entonces
Devolver 0
Sino
devolver LInfo + Suma(LSiguiente)
Fin si
fin función
Función entera Suma (L)
Variables entrada Tnodosimple L
Local entera S
S 0
Mientras L /= nulo hacer
S S + LInfo
L LSiguiente
Fin mientras
Devolver S
Fin función
Funcion PnodoSimple clonar(L) {E153}
Variables entrada Pnodosimple L
Local Pnodosimple P
Si L /= nulo entonces
Si l-> sig = nulo entonces
P<- TomarBloque(TnodoSimple);
P->info<-L->info;
P->sig<-nulo;
devolver P;
Si no
P<- Tomarbloque(TNodoSimple);
P->info<-L->info;
P->sig<-clonar(L->sig);
devolver P;
Fin si;
Si no
devolver nulo;
Fin si;
Fin funcion;
Funcion PnodoSimple clonar(L) {E153}
Variables entrada Pnodosimple L
Local Pnodosimple P
Si L = nulo entonces
Devolver NULO
Si no
P<- Tomarbloque(TNodoSimple);
P->info <- L->info;
P->sig <- clonar(L->sig);
devolver P;
Fin si;
Fin funcion;
Lunes 26-01-2004
---------------
Función PNodoSimple Copia(L)
Variables entrada PNodoSimple L
Local PnodoSimple Nuevo,P,Ant
P NULO
Ant NULO
Mientras L /= NULO hacer
Nuevo TomarBloque(TNodoSimple)
NuevoInfo LInfo
Si Ant = NULO entonces
P Nuevo
Ant Nuevo
Si no
AntSig Nuevo
Ant Nuevo
Fin si
L LSig
Fin mientras
NuevoSig NULO
Devolver P
Fin función
Función PNodoSimple Copia(L)
Variables entrada PNodoSimple L
Local PnodoSimple P,Ant
P NULO
Ant
NULO
mientras L /= NULO hacer
Si Ant = NULO entonces
P TomarBloque(TnodoSimple)
PInfo LInfo
Ant P
Si no
AntSig TomarBloque(TNodoSimple)
AntSigInfo LInfo
Ant AntSig
Fin si
L LSig
Fin mientras
AntSig NULO
Fin si
Devolver P
Fin función
Función PNodoSimple Copia(L)
Variables entrada PNodoSimple L
Local PnodoSimple P,Ant
Ant tomarbloque (tnodosimple)
P ant
mientras L /= NULO hacer
AntSig TomarBloque(TNodoSimple)
AntSigInfo LInfo
Ant antsig
L LSig
Fin mientras
AntSig NULO
Ant P
P PSig
Liberar(Ant)
Devolver p
Fin función
Función PNodoSimple Copia(L)
Variables entrada PNodoSimple L
Local PnodoSimple P,Ant
Si l/= NULO
Ant tomarbloque (tnodosimple)
P ant
mientras L /= NULO hacer
Antinfo l info
Ant sig nulo
Si lsig /= NULO entonces
Antsig tomarbloque (tnodosimple)
Fin si
Ant ant sig
L LSig
Fin mientras
Devolver p
Si no
Devolver NULO
Fin si
Fin función
Tipo TNodoDoble es estructura
Campo entero Info
Campos PnodoDoble Izq,Der
Fin tip
Tip PnodoDoble es puntero<TNodoDoble> fin tipo
Funcion PNodoDoble CopiaDoble(L) {E153}
Variables entrada PNodoSimple L
Local PNodoDoble P
Si L = nulo entonces
Devolver NULO
Si no
P Tomarbloque(TNodoDoble)
PInfo LInfo
PIzq NULO
PDer <- CopiaDoble(LSig)
Si PDer /= NULO entonces
PDerIzq P
Fin si
devolver P
Fin si
Fin funcion
Función PNodoDoble Copia(L)
Variables entrada PNodoSimple L
Local PNodoDoble P,Ant
Ant tomarbloque (TNodoDoble)
P ant
mientras L /= NULO hacer
AntDer TomarBloque(TNodoDoble)
AntDerInfo LInfo
AntDerIzq Ant
Ant AntDer
L LSig
Fin mientras
AntDer NULO
Ant P
P PDer
Liberar(Ant)
Si P /= NULO entonces
PIzq NULO
Fin si
Devolver p
Fin función
Martes 27-1-2004
Tipo Tpolinomio es estructura
Campo real coeficiente
Campo natural exponente
Campo PPolinomio Sig
Fin tipo
Tipo PPolinomio es puntero<TPolinomio> fin tipo
Función real EvalúaPolinomio(L,X) {E169}
Variables entrada PPolinomio L
Real X
Si L=NULO entonces
Devolver 0
Sino
devolver LCoeficiente * Potencia(X,LExponente) +
EvalúaPolinomio(LSig,X)
Fin si
fin función
función real Potencia(Base,Exp)
variables entrada reales Base,Exp
Local real R
Entera i
R1
Para i desde 1 hasta Exp hacer
R R * Base
Fin para
Devolver R
Fin función
Función PPolinomio Suma(P1,P2)
Variables entrada Polinomio P1,P2
Local PPolinomio Nuevo
Si P1 = NULO y P2 = NULO entonces
Devolver NULO
Si no
Nuevo TomarBloque(TPolinomio)
Si P1 = NULO entonces
NuevoCoeficiente P2Coeficiente
NuevoExponente P2Exponente
NuevoSig Suma(NULO,P2Sig)
Si no
Si P2 = NULO entonces
NuevoCoeficiente P1Coeficiente
NuevoExponente P1Exponente
NuevoSig Suma(P1Sig,NULO)
Si no
Si P1Exponente = P2Exponente entonces
Si (P1Coeficiente + P2Coeficiente) = 0 entonces
Liberar(Nuevo)
Devolver Suma(P1Sig,P2Sig)
Si no
NuevoCoeficiente P1Coeficiente + P2Coeficiente
NuevoExponente P1Exponente
NuevoSiguiente Suma(P1Sig,P2Sig)
Fin si
Si no
Si P1Exponente > P2Exponente entonces
NuevoCoeficiente P1Coeficiente
NuevoExponente P1Exponente
NuevoSig Suma(P1Sig,P2)
Si no
NuevoCoeficiente P2Coeficiente
NuevoExponente P2Exponente
NuevoSig Suma(P1,P2Sig)
Fin si
Fin si
Fin si
Fin si
Fin si
Devolver Nuevo
Fin función
Descargar
Enviado por: | Guiller |
Idioma: | castellano |
País: | España |