Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programación Java. 00 Introducción A La Programacion. Pseudocódigo. Continuacion
Programación Java. 00 Introducción A La Programacion. Pseudocódigo. Continuacion
por los alumnos de 3 ESO. y la edad media de los alumnos de 2 BACH.. Indicar las
variables utilizadas.
Inicio
Abrir
F_ALUM
Med2º=0
Medcou=0
Cont2º=0
Contcou=0
Sum2=0
Med2º=sum2º/cont2º
Leer
F_ALUM Medcou=sumcou/contcou
SI Med2º
FF Medcou Cerrar Fin
F_ALUM
SI
AL_CUR=2ºbup
SI
Sum2º=sum2º+AL_NO
AL_CUR=cou
T
Sumcou=sumcou+edad
Cont2º=cont2º+1
Contcou=contcou+1
Leer
F_ALUM
Creacion de la tabla de F_ALUM
Create table F_ALUM (AL_NOM c(40), AL_DIR c(40), AL_EDAD N(3), AL_NOT N(3), AL_CUR
c(4), AL_ALT N(3))
Create table F_EMPLE (EM_NOM c(40), EM_DIR c(40), EM_TEL N(9), EM_SUEL N(10,3),
EM_NHIJ N(3), EM_ANT N(3))
Create table F_SALIDA (SA_NOM c(40), SA_DIR c(40), SA_TEL N(9), SA_SUEL N(10,3), SA_NHIJ
N(3), SA_ANT N(3))
Inicio
Abrir
F_ALUM
Abrir
F_APRO
Abrir
F_SUSP
Leer
F_ALUM
no Cerrar
¡ EOF() F__APRO Fin
F_ALUM F_SUSP
F_ALUM
NO SI
AL_NOT > =5
SU_NOM=AL_NOM AP_NOM=AL_NOM
SU_CUR=AL_CUR AP_CUR=AL_CUR
SU_DIR=AL_DIR AP_DIR=AL_DIR
SU_NOT=AL_NOT AP_NOT=AL_NOT
Grabar Grabar
F_SUSP F_APRO
Leer
F_ALUM
*Una empresa pretende primar la antigüedad de sus empleados con una
gratificación obtenida de la siguiente forma:
1.- A los empleados que lleven al menos un año se les gratificara con 12
euros cada seis meses.
2.- Si lleva más de tres años se le gratifica con 120 euros.
F_EMPLE EM_NOM EM_DIR EM_TEL EM_SUEL EM_NHIJ EM_ANT
Cont=cont2=sum=max=grat=med=0
Abrir
F_EMPLE
Cerrar
F_EMPLE
Fin
Leer
F_EMPLE
med;cont;
Med=sum/cont2 max
¡EOF
Comprobar cont2
NO SI
EM_ANT>=36
Grat=120
SI SI
EM_ANT EM_SUEL
>=12 >max
Visualizar
EM_NOM
GRAT
EM_NHIJ
>=2
Sum=sum+EM_SUEL
Cont2=cont2+1
Leer Cont=cont+1
F_EMPLE
Ejercicio para pensar.
MU_ID - 9(9)
MU_MATR- X(9)
MU_DNI - X(9)
MU_DÍA - 9(2)
MU_MES - 9(2)
MU_ANIO - 9(4)
MU_TIPO - 9(2) 01. Aparcamiento (100)
02. Velocidad (110)
03. Semáforo (150)
04. Paso de cebra (70)
Diseñar un programa que permita añadir el archivo MULTAS_MES.DAT al archivo MULTAS.DAT. Tenga
en cuenta que ambos archivos están ordenados por campos distintos. Si es necesario puede realizar la
ordenación utilizando un array auxiliar.
http://www.cs.trinity.edu/~thicks/Tutorials/FoxPro-D-ProceduresScreenForms/FoxProD.html
TEORÍA BÁSICA FORMULARIOS
Dentro de nuestro menú del formulario podemos encontrar para hacer un “label”
(ETIQUETA) o un botón de comando.
A cada botón o label le podemos cambiar el texto desde la opción “Caption”. (Lo que
el usuario vera.
Para dar una referencia del label o el comando iremos a la opción “name”. Cada uno
deberá tener el suyo propio.
Al pulsar sobre los objetos nos saldrá una nueva hoja de comando en la cual podemos
jugar con los elementos.
Ejemplo:
thisform.lbltexto.Fontsize= thisform.lbltexto.Fontsize+1
(CADA VEZ QUE APRETEMOS EL BOTÓN LA LETRA SE HARA MAS GRANDE)
thisform.lbltexto.Fontsize=24 (EN EL BOTÓN REINICIAR QUE DEBEREMOS CREAR
CON ANTERIORIDAD). Al apretar este botón volverá al tamaño original
thisform.Release (para finalizar el programa)
También tenemos cajas de texto donde el usuario final podrá introducir datos. El resto
de datos los modificamos desde la opción caption, en este caso iremos a la propiedad
“text”
If empty(thisform.txtnombre.value)
Messagebox (“Porfavor escribe su nombre”)
Else
Messagebox (“HOLA” + thisform.txtnombre.value)
endif
Si en el caption delante ponemos \<SALIR. En el botón la primera letra saldrá subrayada y no hara falta
el uso del ratón, podremos pulsarlo con “control+s”
Listbox y combobox
https://comunidadvfp.blogspot.com/2006/06/imagenes-en-controles-listbox-y-
combobox.html
5.- Programación modular y estructurada.
La tendencia actual es conseguir, ante todo, programas simples y claros, que puedan ser
mantenidos y actualizados fácilmente. Para conseguir dichos propósitos se establecieron
dos criterios generales de programación, conocidos con el nombre de nombre de
Programación Modular y Programación Estructurada.
Modulo2
(gratificación)
Sentencia_A
(Ejecutar)
Sentencia_Z
Calculo gratificaciones
(modulo5)
No hay una norma fija para dividir un programa en módulos, se hace a criterio
del programador, sin embargo se deben de seguir unas normas mas o menos
generalizadas:
1.- Cada modulo solo puede tener un punto de entrada y uno de salida.
2.- El modulo principal debe ser conciso mostrando claramente los módulos que
lo componen.
3.- Los módulos deben tener la máxima independencia entre ellos.
4.- Un modulo debe representar por si mismo una estructura lógica, coherente y
resolver una parte bien definida del problema.
5.2.-Pseudocodigo.
Hasta ahora hemos utilizado los ordinogramas para hacer descripciones gráficas
de algoritmos. Este procedimiento es útil cuando los algoritmos son sencillos pero a
medida que se complican aumenta también la dificultad para representarlos
gráficamente ya que el tamaño de los ordinogramas crecen desmesuradamente y sus
líneas de conexión se complican en exceso. Por esta razón surge una nueva forma de
descripción de algoritmos, llamada pseudocodigo.
5.2.1.-Reglas generales del pseudocodigo.
Estructura secuencial.
Pseudocodigo
Accion_1
Accion_1
Accion_2
Accion_3
Accion_2
Accion_3
Ejercicios
*Introducir dos números diferentes por teclado A y B. Visualizar su producto y su
suma.
Pseudocodigo
Inicio
Inicio.
Introducir A B.
Leer A B
SUM=A+B
PROD=A*B
SUMA=A+B
Imprimir SUM PROD.
Fin.
PROD=A*B
Imprimir
SUM PROD
Fin
Visualizar
A
Fin
*Introducir dos valores diferentes A y B por teclado y visualizar el
mayor.
Inicio
Pseudocodigo
Leer A B Inicio.
Introduce A B.
Si A>B
A>B
SI entonces
Imprimir A.
Si_no
Visualizar Visualizar
B A Imprimir B.
Fin_si.
Fin.
Pseudocodigo
=1 =2 …. =n clq otro
Accion_1 Accion_2 Accion_n Accion_x
=n Accion_n.
Clq otro
Accion_x
Fin_según.
Inicio
Leer NUM
NUM
=1 =2 =3 =4 =5
Fin
Pseudocodigo
Inicio.
LEER NÚM.
Según NUM hacer
=1 Imprimir “Enero”. BREAK
=2 Imprimir “Febrero”.
=3 Imprimir “Marzo”.
=4 Imprimir “Abril”.
=5 Imprimir “Mayo”.
=6 Imprimir “Junio”.
=7 Imprimir “Julio”.
En C: En fox
int num; Numero=0
Printf (“Dame un número”); @10,10 say “Dame numero”
Scanf(“%d”,&num); @10,25 get numero pict “99”
Switch (num){ Read
Case 1: printf(“Enero”);break; Do case
Case 2: printf(“Febrero”);break; Case numero=1
…. @12,10 say “Enero”
Default: printf (“Número Case numero=2
incorrecto”); @12,10 say “Febrero”
} …
otherwise
@12,10 say “numero no valido”
endcase
Programa que contabilice cuantos trabajadores tienen 0 , 1, 2, 3.. hijos.
CLOSE TABLES
USE F_EMPLE IN 0
cont0 = 0
cont1 = 0
cont2 = 0
cont3 = 0
DO WHILE !EOF()
DO CASE
case em_nhij=0
cont0=cont0+1
case em_nhij=0
cont1=cont1+1
case em_nhij=0
cont2=cont2+1
case em_nhij=0
cont3=cont3+1
ENDcase
skip
ENDDO
texto = " con 0 hijos son" +STR(cont0)+CHR(13)
texto = " con 1 hijos son" +STR(cont1)+CHR(13)
texto = " con 2 hijos son" +STR(cont2)+CHR(13)
texto = " con 3 hijos son" +STR(cont3)+CHR(13)
messagebox(texto)
CLOSE tables
Ejercicio
Inicio Pseudocodigo
Cont=0 Inicio.
Introducir NÚM.
Cont=0
Cont<=10 Mientras cont <> 10
Fin
Si cont>5 entonces
SI Visualizar NUM
Leer fin_si.
NUM Cont=cont+1.
Introducir NÚM.
SI fin_mientras.
NUM>5 Fin.
Imprimir
NUM
Cont=cont+1
E.R.tipo hasta.
Pseudocodigo
Repetir
Accion_1
Accion_1
Accion_n.
Hasta condición.
Accion_n
SI
COND
NO
Ejercicio
Inicio
Pseudocodigo
Inicio.
Cont=0.
Cont=0 Repetir
Introducir NÚM.
Cont=cont+1.
Leer Si NUM>5 entonces
NUM Visualizar NÚM.
Fin_si.
Cont=cont+1 Hasta cont=10.
Fin.
NUM>5
Imprimir
NUM
SI
Cont=10 Fin
E.R.tipo para.
Pseudocodigo
Repetir SI
VAR
V1, V2, V3
Accion_1
Accion_n
Ejercicio
Inicio
Cont=0
ContA=0
Fin
Cont<=40 contA
Leer
PELI
PELI>100 SI
ContA=contA+1
Cont=cont+1
Tipo hasta.
Inicio
Pseudocodigo
Cont=0 Inicio.
Cont=0.
ContA=0.
ContA=0 Repetir
Introducir PELI.
Si PELI>100 entonces
Leer PELI
ContA=contA+1.
Fin_si.
PELI>100 SI Cont=cont+1.
Hasta cont=40.
ContA=contA+1 Visualizar contA
Fin.
Cont=cont+1
Pseudocodigo
Inicio.
ContA=0.
Inicio
Para cont = 1 mien <40 inc.1
Visualizar “n ventas”.
ContA=0
Leer PELI
Si PELI>100 entonces
ContA=contA+1.
Fin_si
Repetir SI Fin_para.
cont contA Visualizar contA.
Fin
1, 40, 1.
Leer PELI
Fin.
NO SI
PELI>100
ContA=contA+1
En C.. En fox
Int cont, num,contA;
contA=0 For cont=0 to 40
For (cont=0; cont<40;cont++){ @10,10 say “N ventas” get num pict “9999”
Printf(“Dame n de ventas”); read
Scanf(“%d”,&num); if num>100 then
If (num>100){ contA=contA+1
contA++;
}
endif
} next
Printf(“numero de películas con +100 @12,10 say “fueron “+str(conta,3)
%d”,contA);
Ejercicio
Introducir 20 números por teclado, del 10 al 39 y decir cuantos son de
cada decena y la suma de todos ellos.
Pseudocodigo
Inicio Inicio.
Cont=0.
Cont=0; cont1ª=0; cont2ª=09; Cont1ª=0.
cont3ª=0; sum=0 Cont2ª=0.
Cont3ª=0.
Sum=0.
Leer NÚM.
SI Cont, cont1ª, mientras cont<>20
Cont<=20 cont2ª ,cont3ª, Fin
sum
Si NUM>10 entonces
Leer NUM Si NUM>20entonces
NO Si NUM>30entonces
NUM>10
SI cont3ª=cont3ª+1
Si_no
SI cont2ª=cont2ª+1
NUM>20 Fin_si
SI Si_no
Cont1ª=cont1ª+1 Cont1=cont1ª+1
NUM>30
Fin_si.
Cont2ª=cont2ª+1 Cont3ª=cont3ª+1 Fin_si.
Fin_mientras.
Ejercicio
Introducir 20 números por teclado y visualizar su tabla de multiplicar del 0 al 10.
Pseudocodigo
Inicio Inicio.
NAT=0.
PROD=0.
NAT=0
Mientras NAT<>20 hacer
CONT=0.
PROD=0 Leer A.
Mientras CONT<=10 hacer
SI PROD=CONT*A.
NAT=20 Fin CONT=CONT+1.
Imprimir PROD.
Fin_mientras.
CONT=0 NAT=NAT+1.
Fin_mientras.
Fin.
Leer A
CONT>10
NO NAT=NAT+1
PROD=CONT*A
CONT=CONT+1
Visualizar
PROD
Ejercicios
En un zoo de 100 animales se quiere obtener la edad del animal mas
joven, del mas viejo y la edad media de los animales del zoológico.
Inicio
SUM=0
MAX=0
MIN=100
MED=0
CONT=0
SI MAX
CONT=100 MIN Fin
MED=SUM / CONT
MED
NO
Leer Pseudocodigo
EDAD Inicio.
SUM=0.
SUM=SUM+EDAD MAX=0
MIN=100.
NO SI MED=0.
MAX<EDAD CONT=0.
Mientras CONT<>100
MAX=EDAD Leer EDAD.
SUM=SUM+EDAD.
Si MAX<EDAD entonces
NO SI MAX=EDAD.
MIN>EDAD Fin_si.
Si MIN>EDAD entonces
MIN=EDAD
MIN=EDAD.
Fin_si.
CONT=CONT+1.
CONT=CONT+1 Fin_mientras.
MED=SUM / CONT.
Visualizar MAX MIN MED.
Fin.
PREGUNTAS DE EXAMEN.
*PASOS NECESARIOS PARA RESOLVER UN PROGRAMA
*DATOS, DEFINICIONES Y TIPOS
*TIPOS DE INSTRUCCIONES
*DIAGRAMAS DE FLUJO: 2 TIPOS
*CONTADORES, ACUMULADORES, MAXIMOS Y MINIMOS
*FICHEROS:
QUE SON?
VENTAJAS Y DESVENTAJAS
CAMPO Y REGISTRO
**TIPOS DE INSTRUCCIONES REPETITIVAS: 4
* ESTRUCTURA CONDICIONAL MULTIPLE Y FOR
**JAVA: EXPLICA COMO SE COMPILA Y EJECUTA
Rupturas de control de ficheros secuenciales
Los registros de un fichero estén grabados en posiciones físicamente contiguas, sin tener
en cuenta para su disposición el contenido de ninguno de sus campos.
Sin embargo en ocasiones es interesante ordenar un fichero secuencial por un
determinado campo. Se dice entonces que el fichero esta ordenado por un campo.
Para poder reconocer que varios registros pertenecen a una misma entidad, el contenido
de alguno de sus campos debe ser común en todos ellos, y a su vez, diferir del resto de
los registros. Este sería el campo por el que debería ordenarse el fichero. A dicho campo
se le llama campo de control y al conjunto de registros cuyo contenido coincide se le
llama bloque de control.
Puede suceder también que un fichero este ordenado por un cierto campo y dentro de él
por otro diferente. Se dice entonces que hay dos campos de control y consecuentemente
puede producirse dos rupturas de control.
Metodología.
Para saber si el campo de control del registro recién leído tiene el mismo contenido que el del
registro anterior, será necesario haber guardado en una variable auxiliar el contenido del campo de
control del primer registro del bloque.
Tras producirse una ruptura, se deben realizar las operaciones relacionadas con la
finalización de dicho bloque. Tras ello se deben reinicializar el valor de la variable
auxiliar con el contenido del campo de control del nuevo registro para poder utilizarla
como referencia en el bloque siguiente. También debemos reinicializar las variables
utilizadas para cada bloque.
Pseudocódigo:
Inicio
Abrir Fichero
<INIC-GEN>
Leer FICHERO
Mientras no fin fichero
<INIC-RUPT1>
Mientras (no cambie campo de control y no fin fichero)
<PROC-RUP1>
Leer FICHERO
Fin mientras
<FIN-RUPT1>
<PROC-GEN>
fin _mientras
<FIN-GEN>
Cerrar FICHERO
FIN
Problemas propuestos:
4.- Una fábrica de piezas de laboratorio almacena en un fichero secuencial los pedidos
realizados por los clientes de las diferentes provincias, la descripción de los campos es
la siguiente:
F_CLIENTES CL_PRO, CL_COD, CL_NOM, CL_PIEZ, CL_CANT, CL_PREC
X(2) X(5) A(30) X(3) 9(4) 9(6)
El fichero está ordenado por el campo provincia y dentro de cada provincia por el
campo código de cliente; cada cliente tendrá tantos registros como pedidos haya
realizado. Se desea:
a) .- Visualizar el total comprado por cada cliente de cada provincia.
b) .- Visualizar el total comprado en cada provincia.
c) .- Visualizar el total comprado en la empresa.
5.- Un centro de enseñanza posee un fichero de alumnos con las notas obtenidas por
estos durante el curso anterior; la descripción de los campos de sus registros son las
siguientes
El fichero está ordenado por el campo curso y dentro de cada curso por el grupo
alumno. Se desa:
a) Grabar en un fichero de salida denominado de notas medias (FnotMed) el código de
curso, el número de lista del alumno, y la nota media obtenida por este.
F_NOT_MED NM_CUR, NM_ALUM, NM_NOT
X(4) 9(2) 9(2)
b) .- Visualizar el número de lista de cada alumno y el número de suspensos que
obtuvo.
c) .- Visualizar la nota media de cada curso.
d) .- Visualizar el número de alumnos de cada curso con todas las notas aprobadas.
2.- Realizar un programa que pida la hora y diga “buenos días” y cuando sean las
14:00 me diga “buenas tardes”.
3.- Realizar un programa que pida la edad y me diga si soy joven, adulto o jubilado
considerando que menor de 30 sea joven, mayor o igual de 30 y menor de 65 sea adulto
y mayor de 65 sea jubilado.
5.- Realizar un programa que gestione la bascula del pesado de camiones solicitando el
peso de 30 camiones al día e indicar cuantos tiene sobrepeso considerado sobrepeso
mayor de 3.500 kg.
Ejercicios de repaso
Manejo de fechas.
1. Diseñar un programa en el que a partir de una fecha dada con el formato dd, mm, aaaa, se
obtenga la fecha del día siguiente.
3. Solicitar una fecha con el formato dd, mm, aaaa e indicar qué día de la semana es. Tenemos que
saber que el 1 de enero de 1990 fue lunes.
4. Diseñar un programa en el que a partir de dos fechas dadas con el formato dd, mm, aaaa, se
obtenga el número de días que han trasncurrido entre ambas. Ten en cuenta que el año puede ser
bisiesto.
>>> 1.-Calcular el cuadrado de un número X.
>> Algoritmo
1.-Obtener el número .
1.- inicio
3.-Leer(x)
6.-Fin.
Código C++
int main()
{ //zona de declaración de variables
int x,resultado;
//zona de instrucciones
cout<<"PROG. Q ELEVA AL CUADRADO UN NUMERO"<<endl<<endl;
cout<<"Numero a elevar al cuadrado?? ";
cin>>x;
cout<<endl;
resultado=x*x;
cout<<"El numero "<<x<<" elevado al cuadrado es: "<<resultado<<endl<<endl;
system("PAUSE");
return 0;
}
Download: num_cuadrado.exe
>>> 2.- Dados dos números determinar si uno es divisor del otro.
>>Algoritmo
1.-Obtener el número1 y número 2 .
2.-Realizar la operación Modulo del número1 entre el número 2.
3.- Verificar si el resultado es igual a cero.
4.- Si lo es el número 1 si es divisor del número 2.
5.-Si no lo es número 1 no es divisor de número 2.
>>Pseudo código
1.- inicio
2.- Escribir("Dame los números que se van a comparar?")
3.-Leer(x, y)
4.-Calcular(resultado < --- y mod x)
5.-Si (resultado = 0)
5.a.Escribir("El número ", x ,"si es divisor del número",y )
Si no
5.b.Escribir("El número",x,"no es divisor del número",y)
6.-Fin.
Código C++
//Desarrollado por:Ing.Tomás Morales Sánchez.
int main()
{ //zona de declaración de variables
int x,y,resultado;
//zona de instrucciones
cout<<"PROG. Q DETERMINA DADOS 2 NUMEROS SI UNO ES DIVISOR DEL OTRO";
cout<<endl<<endl;
cout<<"Primer numero?";
cin>>x;
cout<<endl;
cout<<"Segundo numero?";
cin>>y;
cout<<endl;
resultado= y % x;
if (resultado==0)
{
cout<<x<<" si es divisor de "<<y;
}
else
{
cout<<x<<" no es divisor de "<<y;
}
cout<<endl;
system("PAUSE");
return 0;
}
Download: divisor.exe
int main()
{ //zona de declaración de variables
int i,x,y,resultado;
//zona de instrucciones
cout<<"PROG. Q MULTIPLICA 2 NUMEROS POR SUMAS SUCESIVAS";
cout<<endl;
cout<<endl;
cout<<"Valor del 1er numero a multiplicar:";
cin>>x;
cout<<endl;
cout<<"Valor del 2do numero a multiplicar:";
cin>>y;
cout<<endl;
resultado=0;
for (i=1;i<=y;i++)
resultado=resultado+x;
int main()
{ //zona de declaración de variables
int i,x,y,resultado;
//zona de instrucciones
cout<<"PROG. Q ELEVA EL 1er A LA POTENCIA 2doNUMERO POR MULTIPLICACIONES SUCESIVAS";
cout<<endl;
cout<<endl;
cout<<"Valor del 1er numero:";
cin>>x;
cout<<endl;
cout<<"Valor de la potencia :";
cin>>y;
cout<<endl;
resultado=1;
for (i=1;i<=y;i++)
resultado=resultado*x;
Pseudo código
1.-inicio.
2.-Escribir("Valor del número a elevar:")
3.-Leer (x)
4.-Escribir("Valor de la potecia:")
5.-Leer(y)
6.-Asignar(acum -- > 1)
6.-Repetir desde 1 hasta y
6.1.Asignar (r-- > 0)
6.2.Repetir delde 1 hasta x
6.2.a.Calcular(r =r +acum )
6.3.-Asignar (acum --> r )
8.-Escribir("El resultado de elevar" x "a la potecia" y "es"acum)
9.-fin
Código C++
//Desarrollado por:Ing.Tomás Morales Sánchez.
for (i=1;i<=y;i++)
{
r=0;
for (a=1;a<=x;a++)
{
r=r+acum;
}
acum=r;
resultado=acum;
}
cout<<"El resultado de "<<x<<"^"<<y<<" Es : "<<resultado;
cout<<endl;
system("PAUSE");
return 0;
}
int main()
{ //zona de declaración de variables
double r,l,a,v;
const double pi=3.14159;
//zona de instrucciones
a=2*pi*pow(r,2);
v=0.75*pi*pow(r,3);
Algoritmo
1.-inicio.
4.-fin.
Pseudo código
1.- Inicio.
2.- Escribir("Dame dos números :")
3.-Leer(a,b)
4.- Si (a < b) entonces
4.a.Escribir("Los números si están en orden creciente")
Por el contrario
4.b.Escribir("Los números no están en orden creciente"")
5.Fin.
Código C++
//Desarrollado por:Ing.Tomás Morales Sánchez.
int main()
{ //zona de declaración de variables
int a,b;
//zona de instrucciones
cout<<"PROG. Q DEDUCE SI DOS NUMEROS ESTAN EN ORDEN CRECIENTE O NO"<<endl<<endl;
cout<<"Primer numero:";
cin>>a;
cout<<endl<<"Segundo numero:";
cin>>b;
if(a < b)
{
cout<<endl<<"Los numeros"<<a<<" y "<<b<<" estan en orden creciente"<<endl;
}
else
{
cout<<"Los numeros"<<a<<" y "<<b<<" no estan en orden creciente"<<endl<<endl;
}
system("PAUSE");
return 0;
}
8.- Algoritmo que sea capaz de realizar la conversión de grados Celsius a Fahrenheit y
viceversa F = (9/5)*C + 32.
Algoritmo
1.-Inicio.
7.-Fin.
Pseudo código
1.-Inicio.
2.-Escribir("tipo de conversión se quiere1: (Cº --> Fº ) o 2: (Fº --> Cº)")
3.-Leer(Opc)
4.-En caso de :
4.a. Opc = 1
4.a.i. Escribir("Temperatura en grados Cº :")
4.a.ii.Leer(C)
4.a.iii.Calcular(F=(9/5) * C + 32)
4.b. Opc = 2
4.b.i.Escribir("Temperatura en grados Fº :")
4.b.ii.Leer(F)
4.b.iii.Calcular(C=(5/9) * (F - 32))
5.-El resultado dependiendo de la conversión es el valor de la variable F o C.
6.-Fin
Código C++
//Desarrollado por:Ing.Tomás Morales Sánchez.
int main()
{ //zona de declaración de variables
int opc;
float c,f;
//zona de instrucciones
cout<<"PROG. Q REALIZA LA CONVERSION DE GRADOS CELSIUS A GRADOS FAHRENHEIT Y
VICEVERSA"<<endl<<endl;
cout<<"@@@CONVERSION DE TEMPERATURAS@@@"<<endl;
cout<<"1.- Celsius --> Fahrenheit "<<endl;
cout<<"2.- Fahrenheit --> Celsius "<<endl;
cout<<" Cual conversion se quiere? ";
cin>>opc;
switch (opc)
{
case 1:
cout<<"Temperatura en grados Celsius :";
cin>>c;
f=1.8*c+32;
cout<<"La Temperatura en Fahrenheit : "<<f<<endl;
break;
case 2:
cout<<"Temperatura en grados Fahrneheit :";
cin>>f;
c=(f-32)*0.5556;
cout<<"La Temperatura en Celsius : "<<c<<endl;
break;
}
system("PAUSE");
return 0;
}
PRACTICAS DE RECUPERACIÓN DE PROGRAMACIÓN.
1.- Un ciclista está recorriendo el camino de Santiago; recorre todos los días “K” kilómetros
durante “D” días. ¿Cuantos km a recorrido?. (Preguntar los días y los kilómetros al usuario).
b.- Si la distancia total es 1500 km indica si llega a su destino.
2.- Un termómetro digital con precisión de dos decimales informa al usuario si “hace calor”, “hace
cálido” o “hace frio” según si la temperatura supera los 30 grados, supera los 20 grados o es inferior.
Solicita al usuario la temperatura.
3.- Un grupo de 6 amigos deciden comprar un regalo con la suma de dinero que cada uno tiene en el
bolsillo. ¿Cuanto suma dicho dinero?. (Solicita el dinero de cada amigo al usuario.
b.- Si el regalo cuesta 18 euros, indica si lo compran o no. Indica cúanto les sobra o les falta.
4.- Jugando con un dado decido sumar los puntos de 3 tiradas. ¿Cuánto suman dichos puntos?. (Solicita al
usuario los puntos de cada tirada).
b.- Si la suma de los puntos mayor de 18 puntos, saca un mensaje diciendo “Me has engañado”.
5.- En el Instituto de Montaña se clasifica la altura de cimas. Indica para la altura introducida es “alta
montaña” más de 3.000 metros, “media montaña” a partir de 1.000 metros y “baja montaña” el resto.
6- Calcula el área de un terreno rectangular de largo L y ancho A. Solicita el largo y el ancho del terreno.
(Area= Largo x Acncho).
b.- Si queremos construir una casa de 90m2 de planta. Indica si tenemos suficiente terreno (Area > 90) y
cúanto nos queda para jardín.
7.- Introducir la altura de Juan ‘J’ y la altura de Luis ‘L’, indicar quíen es más alto o si tienen la misma
altura.
8.- Introducir el día, mes y año DD-MM-AAAA y de la misma fecha pero con el mes en letra. Por
ejemplo: 25-11-2004 => 25 de noviembre de 2004.
9.- Introduce la letra de un deporte y visualizar el nombre completo del deporte y un deportista de dicho
deporte. Los deportes son: f – futbol, b - baloncesto, t - tenis, g - golf
11.- Determina la “categoría” del nuevo prototipo de la NASA según su máxima velocidad. Si alcanza
500 km/h diremos que “es un cohete·”. Si alcanza los 300 km/h “es un Fórmula 1”. Si alcanza los 200
km/h “es un Ferrari”. Si alcanza los 100 km/h es “un vehículo rápido” y si no diremos es “más lento que
el carromato de mi abuelo”. Solicita la maxima velocidad del vehículo.
12- Se desea saber la media de goles realizados en la temporada 2003 por el Athletic sabiendo que se
jugaron 10 partidos.
13.- Jugando con un dado decido saber cuantas veces aparece el número 3 en 10 tiradas. (Solicita al
usuario los puntos de cada tirada).
14.- Solicitar una letra al usuario y decir el nombre completo del color (R- rojo, V - verde, A - amarillo, N
negro, B – blanco. Utilizar la sentencia switch.
15. Utilizando una sentencia switch indica los lúmenes en función de los Vatios de una bombilla: 15w –
125 L, 25w – 215 L, 40w – 500 L, 60w – 880 L, 75w – 1000 L, 100w – 1675 L.
If (x>=0){ If (x>=0){
X=x+1; X=x+1;
}else{ if (x>=1){ }If (x>=1){
X=x+2 X=x+2;
} }
17.- Realiza un programa que pida las edades de los 12 alumnos de clase y te diga la edad del más joven y
la del más mayor.
Introduce las notas de los 12 alumnos de clase de la asignatura de programación y visualiza la nota media
de los alumnos.
b.- ¿cuantos han aprobado?
c.- ¿cuál es el tanto porciento de suspensos?.
d.- calcula la nota media de los aprobados.
**** PROGRAMA QUE CONTABILIZA LOS REGISTROS
CLEAR
USE F_ALUM
MAX=0
NOM_MAX=""
?" ****** RECORRIDO DEL FICHERO ******"
DO WHILE !EOF()
IF AL_ALT>MAX
MAX=AL_ALT
NOM_MAX=AL_NOM
ENDIF
SKIP
ENDDO
TXT="El nombre del mas alto es "+nom_max
TXT= TXT+CHR(13)+" Y SU ALTURA ES "+STR(MAX,3)
?TXT
MESSAGEBOX(TXT)
GO TOP && Me coloco en el primer registro de la base de datos
TXT=""
DO WHILE !EOF()
IF AL_ALT=MAX
TXT=TXT + AL_NOM+CHR(10)
ENDIF
SKIP
ENDDO
?TXT
MESSAGEBOX (TXT)
CLOSE TABLES
PROGRAMA DE GESTIÓN DE USUARIOS DE
TEAMKLENTXO
Empezaremos por crear un proyecto al abrir Vfp9 y crearemos una carpeta
donde guardar el proyecto para tenerlo todo mejor gestionado, una vez
creado el proyecto, abriremos las pestañas del proyecto, veremos que nos
da múltiples opciones como crear una base de datos, tablas libres,
formularios entre ellas.
Empezare
mos creando una “Free Table”, le damos a “New…” y nos dará la opción
de hacer o no con asistente, en este caso la haremos sin asistente, al hacer
esto último se nos abrirá una ventana donde introducir los datos, los
introducim
os y
pasaremos
al siguiente
paso.
Una vez la tabla o tablas creadas, volveremos al menú a la ventana de
proyecto a través de la tecla “ESC” (Escape) o volviendo a abrirlo el
archivo. Esta vez crearemos un formulario, donde crearemos una interfaz
con programas (botones) desde el cual podremos manejar la tabla o base de
datos que hemos creado anteriormente. Una vez el formulario creado se nos
abrirá una ventana como la que mostraré a continuación, entonces, iremos
al menú de arriba al apartado de “Form” y le daremos a “Quick Form…”,
esto nos ayudará a introducir los campos de una manera más rápida y
eficiente al formulario.
Página 57
Fecha de impresión 19/10/2023 11:30:00
FRMclientes
NUEVO MODIFICAR
APPEND BLANK REPLACE CLCALLE WITH THISFORM.TXTcalle.VALUE
thisform.TXTid.Value=SPACE(10) REPLACE CLCIUDAD WITH THISFORM.TXTciudad.VALUE
thisform.TXTnombre.Value=SPACE(10) REPLACE CLCODPOS WITH THISFORM.TXTcp.VALUE
thisform.TXTrfc.Value=SPACE(10) REPLACE CLID WITH THISFORM.TXTid.VALUE
thisform.TXTcalle.Value=SPACE(10) REPLACE CLNOMBRE WITH THISFORM.TXTnombre.VALUE
thisform.TXTciudad.Value=SPACE(10) REPLACE CLPAIS WITH THISFORM.TXTpais.VALUE
thisform.TXTcp.Value=SPACE(10) REPLACE CLRFC WITH THISFORM.TXTrfc.VALUE
thisform.TXTpais.Value=SPACE(10) WAIT WINDOW("REGISTRO GUARDADO")NOWAIT
thisform.Refresh
BORRAR SALIR
IF MESSAGEBOX ("¿DESEA ELIMINAR ESTE IF pconfirma ("¿Desea salir?")=.T.
REGISTRO?",4+48+256)=6 pmensa ("Cerrando programa")
DELETE RELEASE THISFORM
IF !BOF() ELSE
SKIP-1 pmensa ("Volviendo al formulario")
ENDIF ENDIF
thisform.Refresh
ENDIF
REGISTRO ANTERIOR SIGUIENTE REGISTRO
IF !BOF () IF !EOF ()
SKIP-1 SKIP+1
WAIT WINDOW("REGISTRO WAIT WINDOW("SIGUIENTE
ANTERIOR")NOWAIT REGISTRO")NOWAIT
IF BOF() IF EOF()
WAIT WINDOW("¡YA ESTÁS EN SKIP-1
EL PRIMER REGISTRO!")NOWAIT WAIT WINDOW("¡YA ESTAS EN EL
ENDIF ULTIMO REGISTRO!")NOWAIT
ELSE ENDIF
WAIT WINDOW("¡YA ESTAS EN EL ENDIF
PRIMER REGISTRO!")NOWAIT thisform.Refresh
ENDIF
thisform.Refresh
PRIMER REGISTRO ULTIMO REGISTRO
GO TOP GO BOTTOM
thisform.Refresh thisform.Refresh
WAIT WINDOW("PRIMER REGISTRO")NOWAIT WAIT WINDOW("ULTIMO REGISTRO")NOWAIT
.INIT UNLOAD
SET DELETED ON SELECT Tclientes
USE Tclientes USE
thisform.MinButton= .F.
thisform.MaxButton= .F.
thisform.WindowState= 0
thisform.Autocenter= .T.
thisform.WindowType= 1
thisform.BorderStyle= 0
thisform.Closable= .F.
thisform.Movable= .F.
Página 58
Fecha de impresión 19/10/2023 11:30:00
Nº REGISTROS CRÉDITOS
USE TCLIENTES EXCLUSIVE DO FORM FRMCREDITOS
PACK
USE TCLIENTES SHARED
THIS.Caption='Registros:'+STR
(RECCOUNT())
Thisform.Refresh
FRMcreditos
CERRAR .INIT
RELEASE THISFORM thisform.MinButton= .F.
thisform.MaxButton= .F.
thisform.WindowState= 0
thisform.Autocenter= .T.
thisform.WindowType= 1
thisform.BorderStyle= 0
thisform.Closable= .F.
thisform.Movable= .F.
thisform.WindowState= 0
thisform.WindowType= 1
thisform.Autocenter= .T.
thisform.MaxButton= .F.
thisform.MinButton= .F.
thisform.Closable= .F.
thisform.BorderStyle= 0
thisform.Movable= .F.
thisform.LBLmensa.Caption= mensaje
Formulario FRMconfirma tiene un LBLmensa CMDsi y
CMDno
FRMconfirma.init FRMconfirma.unload
Página 59
Fecha de impresión 19/10/2023 11:30:00
PARAMETERS pregunta IF THISFORM.TAG="S"
RETURN (.T.)
thisform.WindowState= 0 ELSE
thisform.WindowType= 1 RETURN (.F.)
thisform.Autocenter= .T. ENDIF
thisform.MaxButton= .F.
thisform.MinButton= .F.
thisform.Closable= .F.
thisform.BorderStyle= 0
thisform.Movable= .F.
thisform.LBLmensa.caption=pregunta
CMDsi CMDno
thisform.Tag="S" thisform.Tag="N"
RELEASE thisform RELEASE thisform
PRGgeneral.prg
PROCEDURE pmensa (mensa)
DO FORM FRMmensa WITH mensa
1. Pantalla de Inicio
Página 60
Fecha de impresión 19/10/2023 11:30:00
2. Pantalla de Créditos
3. Formulario Clientes
Página 61
Fecha de impresión 19/10/2023 11:30:00
4. Formulario Productos
5. Formulario Componentes
Página 62
Fecha de impresión 19/10/2023 11:30:00
6. Formulario Precios
Página 63
Fecha de impresión 19/10/2023 11:30:00
Página 64
Fecha de impresión 19/10/2023 11:30:00
Ejemplo Código Formulario Productos
• Botón Añadir
• Botón Nuevo/Limpiar
• Botón Borrar
Página 65
Fecha de impresión 19/10/2023 11:30:00
• Botón Primer Registro
• Botón Anterior
• Botón Siguiente
Página 66
Fecha de impresión 19/10/2023 11:30:00
LOCAL lNOMBRE, lPASS
LNOMBRE=thisform.txt_nombre.Value
LPASS=thisform.txt_pass.value
IF EMPTY(thisform.txt_nombre.Value)
pmensa("Nombre Obligatorio")
RETURN
ENDIF
IF EMPTY(thisform.txt_pass.value)
pmensa ("Contraseña Obligatoria")
RETURN
ENDIF
USE TUSUARIOS
DO WHILE !EOF()
WAIT WINDOW (USUNOMBRE+ " "+ LNOMBRE+ " " +USUPASS+ " "+ LPASS)
IF USUNOMBRE=LNOMBRE .AND. USUPASS=LPASS
PMENSA("eNCONTRADO")
EXIT && Salgo del bucle
ENDIF
SKIP
ENDDO
IF !EOF()
THISFORM.TAG="S"
ELSE
THISFORM.TAG="N"
ENDIF
RELEASE THISFORM
IF EMPTY(thisform.txt_nombre.Value)
pmensa("Nombre Obligatorio")
RETURN
ENDIF
IF EMPTY(thisform.txt_pass.value) .and. EMPTY(thisform.txt_repass.Value)
pmensa ("Contraseña Obligatoria")
RETURN
ENDIF
IF EMPTY(thisform.txt_email.Value)
pmensa("Email Obligatorio")
RETURN
ENDIF
IF AT("@",thisform.txt_email.value)=0 .or. ;
AT(".",thisform.txt_email.value)=0
pmensa("email incorrecto")
RETURN
ENDIF
USE TUSUARIOS
APPEND BLANK
REPLACE USUNOMBRE WITH THISFORM.TXT_NOMBRE.Value
REPLACE USUPASS WITH THISFORM.TXT_PASS.Value
REPLACE USUEMAIL WITH THISFORM.TXT_EMAIL.Value
PMENSA("REGISTRO GUARDADO")
USE
RELEASE THISFORM
INICIO PROGRAMA
*SET PATH TO D:\SOMORROSTRO\PROGRAMACIÓN\1ª EVALUACION\examen fox\foxpro2
Página 67
Fecha de impresión 19/10/2023 11:30:00
SET DELETED ON
REGISTRAR_ACCESSO()
REGISTRAR_USUARIO()
PROCEDURE REGISTRAR_ACCESSO()
USE TREGISTROS
APPEND BLANK
REPLACE RE_FECHADT WITH DATETIME()
REPLACE RE_FECHA WITH DTOC (DATE())
REPLACE RE_HORA WITH TIME()
USE &&&CIERRA LA TABLA
WAIT WINDOW "REGISTRADO"NOWAIT
PROCEDURE REGISTRAR_USUARIO
LOCAL DEV
DO FORM FRMIDENTIFICARUSUARIO TO DEV
IF DEV==.T.
DO FORM CLIENTES
ELSE
PMENSA("NO ACEPTADO")
ENDIF
Página 68
Fecha de impresión 19/10/2023 11:30:00
CALCULADORA
BOTONES PARA LAS OPERACIONES MATEMATICAS
BOTONES DE LA MEMORIA
Página 69
Fecha de impresión 19/10/2023 11:30:00
Página 70
Fecha de impresión 19/10/2023 11:30:00
Conversor de monedas de euros a dólares. Teniendo en cuenta que un dólar es 1.02 euros.
Formulario-> frmEurosDolares. (Un euro -> 0.98 dolares)
Página 71
Fecha de impresión 19/10/2023 11:30:00
Utilizando un optionButton
Página 72
Fecha de impresión 19/10/2023 11:30:00
Descomposición en billetes
swcantidad=thisform.txtcantidad.Value
div200=INT(swcantidad/200)
resto200= MOD(swcantidad,200)
* Calcular los de l00
div100=INT(resto200/100)
resto100=MOD(resto200,100)
*
div50=INT(resto100/50)
resto50=MOD(resto100,50)
*
div20=INT(resto50/20)
resto20=MOD(resto50,20)
*
div10=INT(resto20/10)
resto10=MOD(resto20,10)
IF (resto10!=0)
MESSAGEBOX("No hay monedas"+
STR(resto10,3))
endif
thisform.txtCONT200.Value=div200
thisform.txtCONT100.Value=div100
thisform.txtCONT50.Value=div50
thisform.txtCONT20.Value=div20
thisform.txtCONT10.Value=div10
Página 73
Fecha de impresión 19/10/2023 11:30:00
Calculadora IMC
Mi primer login
Fichero
FUSERS
USUNOM X(20)
USUPASS X(20)
Página 74
Fecha de impresión 19/10/2023 11:30:00