Foro de elhacker.net

Programación => Ejercicios => Mensaje iniciado por: ¤ Nerviozzo ¤ en 20 Diciembre 2005, 23:08 pm



Título: Ejercicios en BASIC
Publicado por: ¤ Nerviozzo ¤ en 20 Diciembre 2005, 23:08 pm
Ejercicios muy básicos:

1 - Crear un programa que imprima un nombre o una frase con un carácter menos cada vez, de esta manera:

Hola amigos!
Hola amigos
Hola amigo
Hola amig
Hola ami
Hola am
Hola a
Hola
Hola
Hol
Ho
H

2 - Introducir tres números por teclado e imprimir el mayor y el menor.

3 - Introducir los lados de un triángulo y visualizar por pantalla si dicho triángulo es equilátero, isósceles o escaleno.

4 - Introducir 4 números por teclado y visualizar la suma del primero y el tercero y el producto del segundo y el cuarto.

5 - Crear un programa que imprima los 100 primeros números primos y su suma.

6 - Introducir una palabra o frase y visualizar únicamente las vocales.

7 - Crear un programa que imprima las tablas de multiplicar de un número que el usuario introduzca por teclado.

8 - Almacenar nombres en una instrucción DATA, y permitir que el usuario introduzca un nombre por teclado para imprimir el número de veces que se repite el nombre en la instrucción

9 - Crear un programa que genere los seis números de la loto (6 números aleatorios entre 1 y 49)

10 - Codificar un programa en Basic que permita introducir 10 nombres y sus 10 edades correspondientes y, los que sean mayores de edad, los ordene por orden alfabético.

11 - Almacenar en una instrucción DATA los nombres de 5 alumnos y las dos notas de los examenes que han realizado, y crear un menú que permita:

1 - Visualizar la nota media de cada alumno ordenado por nombre de alumno.
2 - Visualizar los alumnos aprobados, ordenados por la nota media.
3 - Introducir un nombre e informar de las notas del alumno.
4 - Salir.

12 - Realizar un programa que permita almacenar en un vector 10 valores aleatorios y los ordene.

13 - Realizr el programa en Basic que permita consultar por pantalla los datos de un determinado registro del fichero llamado ARTICULO.DAT.
Para efectuar dicha consulta deberá aparecer una máscara que solicite el código del artículo para poder acceder directamente al registro.
El programa deberá tener en cuenta los posibles errores del usuario, tales como introducir un código inexistente o incorrecto (caracteres alfabéticos)

Formato del registro:

Campo       Nºcaracteres         Descripción

COD$             7                      Código de artículo
ART$             20                     Artículo
CAN$             4                      Cantidad
PVP$              6                      Precio unidad

Una vez leído el registro deberá aparecer la siguiente información:

- Código del artículo

- Nombre del artículo

- Precio por unidad (IVA incluido)

Hay que tener en cuenta que el precio grabado en el fichero no tiene IVA, por lo que se deberán incrementar los precios de los artículos en un 16%

Unos cuantos ejercicios sencillos para los iniciados en Basic ::)

PAZ


Título: Re: Ejercicios en BASIC
Publicado por: ¤ Nerviozzo ¤ en 20 Diciembre 2005, 23:11 pm
Ahora os pongo las soluciones, para el que se atasque o el que las quiera como ejemplo ;)

Ejercicio 1:


Código:
cls
input "Introduce un nombre: ",nom$
for car=LEN(nom$) to 0 step -1
print LEFT$(nom$,car)
next car

igual, pero en vez de con un for lo hago con un while

Código:
cls
input "Introduce un nombre: ",nom$
car=LEN(nom$)
while car>0
print LEFT$(nom$,car)
car=car-1
wend


PAZ


Título: Re: Ejercicios en BASIC
Publicado por: ¤ Nerviozzo ¤ en 20 Diciembre 2005, 23:13 pm
Ejercicio 2:

Código:
cls
input "Introduce 3 n£meros: ",A,B,C
if A > B and A > C then print A "es el mayor"
if A < B and A < C then print A "es el menor"
if B > A and B > C then print B "es el mayor"
if B < A and B < C then print B "es el menor"
if C > A and C > B then print C "es el mayor"
if C < A and C < B then print C "es el menor"

Un código un poco guarro, pero bueno :P

PAZ


Título: Re: Ejercicios en BASIC
Publicado por: ¤ Nerviozzo ¤ en 20 Diciembre 2005, 23:14 pm
Ejercicio 3:

Código:
cls
input "Introduce los tres lados del triangulo: ",A,B,C
if A = B and A = C then print "El triangulo es equilatero"
if A <> B and A <> C and B <> C then print "El triangulo es escaleno"
if A = B and A <> C or A = C and A <> B or B = A and B <> C or C = A and C <> B or C = B and C <> A then
print "El triangulo es isosceles"
end if

PAZ


Título: Re: Ejercicios en BASIC
Publicado por: ¤ Nerviozzo ¤ en 20 Diciembre 2005, 23:15 pm
Ejercicio 4:

Código:
cls
input "Introduce 4 n£meros: ",A,B,C,D
Suma = A + C
Produ = B * D
print "La suma del primero y el tercero es" Suma
print "El producto del segundo y el cuarto es" Produ

PAZ


Título: Re: Ejercicios en BASIC
Publicado por: ¤ Nerviozzo ¤ en 20 Diciembre 2005, 23:16 pm
Ejercicio 5:

Código:
cls
for I=199 to 0 step -2
print I
suma = suma + i
next i
print "La suma es" suma

PAZ


Título: Re: Ejercicios en BASIC
Publicado por: ¤ Nerviozzo ¤ en 20 Diciembre 2005, 23:17 pm
Ejercicio 6:

Código:
CLS
INPUT "Ingrese una palabra: ", pal$
FOR I = 1 TO LEN(pal$)
IF MID$(pal$, I, 1) = "a" OR MID$(pal$, I, 1) = "A" OR MID$(pal$, I, 1) = "e" OR MID$(pal$, I, 1) = "E" OR MID$(pal$, I, 1) = "i" OR MID$(pal$, I, 1) = "I" OR MID$(pal$, I, 1) = "o" OR MID$(pal$, I, 1) = "O" OR MID$(pal$, I, 1) = "u" OR MID$(pal$, I, 1) = "U" THEN
cont = cont + 1
palcom$=palcom$+MID$(pal$, I, 1)
END IF
NEXT I
print palcom$
PRINT "el total de vocales en esta palabra es :", cont

PAZ


Título: Re: Ejercicios en BASIC
Publicado por: ¤ Nerviozzo ¤ en 20 Diciembre 2005, 23:18 pm
Ejercicio 7:

Código:
cls
input "Introduce un numero: ",A
for B=1 to 10
P=B*A
print A "*" B "=" P
next B

PAZ


Título: Re: Ejercicios en BASIC
Publicado por: ¤ Nerviozzo ¤ en 20 Diciembre 2005, 23:22 pm
Ejercicio 8:

Código:
CLS
DATA JUAN,PEPE,LUIS,JOSE,JUAN,LUIS,ISMAEL,JUAN,RUBEN,CARLOS
INPUT "Introduce un nombre: ", NOM$
FOR I=1 TO 10
READ N$
IF UCASE$(NOM$) = N$ THEN
CONT=CONT+1
END IF
NEXT I
PRINT NOM$ " aparece" CONT "veces en la instruccion DATA."

PAZ


Título: Re: Ejercicios en BASIC
Publicado por: ¤ Nerviozzo ¤ en 20 Diciembre 2005, 23:23 pm
Ejercicio 9:

Código:
cls
randomize timer
for A=1 to 6
C=INT(RND*49-1+1)+1
B$=B$+STR$(C)
next A
print B$

PAZ


Título: Re: Ejercicios en BASIC
Publicado por: ¤ Nerviozzo ¤ en 20 Diciembre 2005, 23:24 pm
Ejercicio 10:

Código:
CLS
DIM NOM$(10)
DIM EDAD(10)
FOR I=1 TO 10
INPUT "Introduce un nombre y su edad: ",NOMBRE$,EDADES
NOM$(I)=NOMBRE$
EDAD(I)=EDADES
NEXT I
FOR I=1 TO 9
IF EDAD(I)>=18 THEN
IF NOM$(I)>NOM$(I+1) THEN
AUX$=NOM$(I)
NOM$(I)=NOM$(I+1)
NOM$(I+1)=AUX$
AUX=EDAD(I)
EDAD(I)=EDAD(I+1)
EDAD(I+1)=AUX
I=1
END IF
END IF
NEXT I
FOR I=1 TO 10
PRINT NOM$(I) " TIENE " EDAD(I) " AÑOS. "
NEXT I

PAZ


Título: Re: Ejercicios en BASIC
Publicado por: ¤ Nerviozzo ¤ en 20 Diciembre 2005, 23:26 pm
Ejercicio 11:

Código:
CLS
DATA Luis,8,9,Manuel,10,7,Juan,5,4,Rocio,3,4,Carlos,6,9
DIM MATRIZ$(5,3)
FOR I=1 TO 5
READ NOM$,N1$,N2$
MATRIZ$(I,1)=NOM$
MATRIZ$(I,2)=N1$
MATRIZ$(I,3)=N2$
NEXT I
PRINT "1 - Visualizar, ordenado por nombre de alumno la nota media."
PRINT "2 - Visualizar los alumnos aprobados, ordenados por la nota media."
PRINT "3 - Introducir un nombre e informar de las notas del alumno."
PRINT "4 - Salir."
INPUT "Elija una opcion: ",OPC

SELECT CASE OPC

CASE 1
CLS
FOR I=0 TO 4
IF MATRIZ$(I,1)>MATRIZ$(I+1,1) THEN
AUX$=MATRIZ$(I,1)
      MATRIZ$(I,1)=MATRIZ$(I+1,1)
      MATRIZ$(I+1,1)=AUX$
  AUX$=MATRIZ$(I,2)
  MATRIZ$(I,2)=MATRIZ$(I+1,2)
  MATRIZ$(I+1,2)=AUX$
  AUX$=MATRIZ$(I,3)
  MATRIZ$(I,3)=MATRIZ$(I+1,3)
  MATRIZ$(I+1,3)=AUX$
  I=0
  END IF
 NEXT I
 FOR I=1 TO 5
  MEDIA=VAL(MATRIZ$(I,2))+VAL(MATRIZ$(I,3))
MEDIA=MEDIA/2
PRINT "El alumno " MATRIZ$(I,1) " tiene una media de" MEDIA
 NEXT I

CASE 2
CLS
FOR I=1 TO 5
MEDIA=VAL(MATRIZ$(I,2))+VAL(MATRIZ$(I,3))
MEDIA=MEDIA/2
IF MEDIA>=5 THEN PRINT "El alumno " MATRIZ$(I,1) " est  aprobado con un" MEDIA "de media."
NEXT I

CASE 3
CLS
INPUT "Introduce el nombre del alumno: ",ALUM$
FOR I=1 TO 5
IF UCASE$(MATRIZ$(I,1))=UCASE$(ALUM$) THEN
MEDIA=VAL(MATRIZ$(I,2))+VAL(MATRIZ$(I,3))
MEDIA=MEDIA/2
PRINT "El alumno " MATRIZ$(I,1) " ha sacado un " MATRIZ$(I,2) " y un " MATRIZ$(I,3)". Nota media:" MEDIA
      END IF
NEXT I

CASE 4
CLS
PRINT "Hasta pronto"

CASE ELSE
CLS
PRINT "Opcion desconocida"

END SELECT

PAZ


Título: Re: Ejercicios en BASIC
Publicado por: ¤ Nerviozzo ¤ en 21 Diciembre 2005, 10:19 am
Ejercicio 12:

Código:
CLS
DIM V(10)
RANDOMIZE TIMER
FOR I=1 TO 10
V(I)=INT(RND*100)
NEXT I
FOR I=1 TO 9
IF V(I)>V(I+1) THEN
AUX=V(I)
V(I)=V(I+1)
V(I+1)=AUX
I=0
END IF
NEXT I
FOR I=1 TO 10
PRINT V(I)
NEXT I

PAZ


Título: Re: Ejercicios en BASIC
Publicado por: ¤ Nerviozzo ¤ en 21 Diciembre 2005, 10:24 am
Ejercicio 13:

Una manera "fácil" y con fichero secuencial:


Código:
cls
print "1 - Crear el archivo de almacen"
print
print "2 - Consultar un art¡culo"
print
input "Elige una opci¢n: ",op
select case op

case 1
open "o",1,"almacen.dat"
do
  do
    cls
    input "Introduce el c¢digo de art¡culo: ",COD$
    input "Introduce el nombre del art¡culo: ",ART$
    input "Introduce la cantidad de art¡culos que hay: ",CAN$
    input "Introduce el coste del art¡culo sin IVA: ",PVP$
    print
    input "¨Es correcto? (S/N) ",op$
    loop until ucase$(op$)="S"
write #1,COD$,ART$,CAN$,PVP$
input "¨Desea introducir otro? (S/N) ",op$
loop until ucase$(op$)="N"
close 1

case 2
cls
sw=0
open "i",1,"almacen.dat"
  do
input "Introduce un codigo de art¡culo: ",codus$
if len(codus$)>7 then print "C¢digo incorrecto (Debe de tener 7 caracteres ¢ menos)."
while not EOF(1)
input #1,COD$,ART$,CAN$,PVP$
if codus$=COD$ then
   pvpi=val(PVP$)/100*16
   print "El c¢digo " COD$ " pertenece al art¡culo " ART$ " que cuesta" pvpi "pesetas (IVA incluido)"
   sw=1
end if
wend
if sw=0 then print "Codigo inexistente"
input "¿Desea buscar otro? (S/N) ",op$
loop until ucase$(op$)="N"
end select

y una manera un poco más "sofisticada" y con fichero relativo xD


Código:
SCREEN 9
OPEN "R",1,"ARTICULO.DAT",37
FIELD #1,7 AS COD$,20 AS ART$,4 AS CAN$,6 AS PVP$

DO
 CLS
 COLOR 15,7
 LINE (10,5)-(630,344),8,B
 LINE (100,100)-(250,150),8,B
 LINE (101,149)-(101,101),15
 LINE (101,101)-(249,101),15
 LOCATE 10,20:COLOR 4:?"A";:COLOR 15:?"LTAS"
 LINE (300,100)-(450,150),8,B
 LINE (301,149)-(301,101),15
 LINE (301,101)-(449,101),15
 LOCATE 10,42:COLOR 4:?"C";:COLOR 15:?"ONSULTAS"
 LINE (200,200)-(350,250),8,B
 LINE (201,249)-(201,201),15
 LINE (201,201)-(349,201),15
 LOCATE 17,33:COLOR 4:?"S";:COLOR 15:?"ALIR"
 COLOR 1
 LOCATE 23,20:?"* PULSA LAS LETRAS EN ROJO PARA ENTRAR *"
 DO
  LINE (535,12)-(615,30),8,B
  LINE (536,29)-(614,29),15
  LINE (614,29)-(614,13),15
  WHILE NOT INSTAT
     COLOR 14
     LOCATE 2,69:?TIME$
  WEND
  A$=UCASE$(INPUT$(1))
 LOOP UNTIL A$="A" OR A$="C" OR A$="S"
 SELECT CASE A$

    CASE "A"
       LOCATE 10,20:COLOR 15:?"A";:COLOR 4:?"LTAS"
       LINE (101,149)-(101,101),8
       LINE (101,101)-(249,101),8
       LINE (101,149)-(249,149),15
       LINE (249,101)-(249,149),15
       DELAY 0.5
       LINE (101,149)-(101,101),15
       LINE (101,101)-(249,101),15
       LINE (101,149)-(249,149),7
       LINE (249,101)-(249,149),7
       LOCATE 10,20:COLOR 4:?"A";:COLOR 15:?"LTAS"
       DO
        DO
         CLS
         COLOR 15,7
         LINE (10,5)-(630,344),8,B
         COLOR 1
         CALL LIBRE
         SW=0
         FOR I=1 TO LOF(1)/37
             GET #1,I
             IF VAL(PVP$)=0 THEN
                CO$=STR$(I)
                SW=1
                EXIT FOR
             END IF
         NEXT I
         IF SW=0 THEN
            CO$=STR$((LOF(1)/37)+1)
         END IF
         COLOR 4
         LOCATE 10,30:?CO$
         COLOR 14
         AR$=FNINTRO$(20,12,27)
         CA$=FNINTRON$(4,14,27)
         PV$=FNINTRON$(6,16,27)
         LOCATE 19,20:?"¨SON CORRECTOS LOS DATOS? (S/N)"
         DO
          COR$=UCASE$(INPUT$(1))
         LOOP UNTIL COR$="S" OR COR$="N"
        LOOP UNTIL COR$="S"
        LSET COD$=CO$
        LSET ART$=AR$
        LSET CAN$=CA$
        LSET PVP$=PV$
        PUT #1,VAL(CO$)
        LOCATE 19,20:?SPACE$(35)
        LOCATE 19,20:?"¨DESEA INTRODUCIR OTRO? (S/N)"
        DO
         OTRO$=UCASE$(INPUT$(1))
        LOOP UNTIL OTRO$="S" OR OTRO$="N"
       LOOP UNTIL OTRO$="N"

    CASE "C"
       LOCATE 10,42:COLOR 15:?"C";:COLOR 4:?"ONSULTAS"
       LINE (301,149)-(301,101),8
       LINE (301,101)-(449,101),8
       LINE (301,149)-(449,149),15
       LINE (449,101)-(449,149),15
       DELAY 0.5
       LINE (301,149)-(301,101),15
       LINE (301,101)-(449,101),15
       LINE (301,149)-(449,149),7
       LINE (449,101)-(449,149),7
       LOCATE 10,42:COLOR 4:?"C";:COLOR 15:?"ONSULTAS"
       DO
        CLS
        CALL LIBRE
        COLOR 14
        LOCATE 10,28:?"    "
        CO$=FNINTRON$(7,10,27)
        IF VAL(CO$)<=LOF(1)/37 THEN
   GET #1,VAL(CO$)
   IF VAL(PVP$)>0 THEN
              COLOR 14
              LOCATE 12,28:?ART$
              LOCATE 14,28:?CAN$
              LOCATE 16,28:?VAL(PVP$)*1.16
           ELSE
              COLOR 4
              LOCATE 18,25:?"REGISTRO DADO DE BAJA"
           END IF             
        ELSE     
           COLOR 4
           LOCATE 18,25:?"SOBREPASA CODIGO"           
        END IF
        COLOR 15
        LOCATE 20,25:?"¨DESEA REALIZAR OTRA CONSULTA?(S/N)"
        DO
         AA$=UCASE$(INPUT$(1))
        LOOP UNTIL AA$="S" OR AA$="N"
       LOOP UNTIL AA$="N"

    CASE "S"
       LOCATE 17,33:COLOR 15:?"S";:COLOR 4:?"ALIR"
       LINE (201,249)-(201,201),8
       LINE (201,201)-(349,201),8
       LINE (201,249)-(349,249),15
       LINE (349,249)-(349,201),15
       DELAY 0.5
       LINE (201,249)-(201,201),15
       LINE (201,201)-(349,201),15
       LINE (201,249)-(349,249),7
       LINE (349,249)-(349,201),7
       LOCATE 17,33:COLOR 4:?"S";:COLOR 15:?"ALIR"
       DELAY 0.5
       CLS

 END SELECT
LOOP UNTIL A$="S"
CLOSE
END

DEF FNINTRO$(CANT,FIL,COLU)

CONTADOR=0
COLOR 14
C$=""
B$="ABCDEFGHIJKLMNÑOPQRSTUVWXYZ\.:() "
COLU=COLU+1
A$=""
BANDE=0
WHILE CONTADOR <> CANT AND A$ <> CHR$(13)
 WHILE NOT INSTAT
   LOCATE FIL,COLU+1:?"_"
   DELAY 0.2
   LOCATE FIL,COLU+1:?" "
   DELAY 0.2
 WEND
 A$=UCASE$(INPUT$(1))
 IF CHR$(8) = A$ AND BANDE > 0 THEN
    LOCATE FIL,COLU:?" "
    LON=LEN(C$)-1
    IF LON>=0 THEN
       C$=LEFT$(C$,LON)
       AC$=LEFT$(C$,COLU-1)
       COLU=COLU-1
       CONTADOR=CONTADOR-1
    END IF
 ELSE
    X=INSTR(B$,A$)
    IF (X>0 AND CHR$(13)<>A$) AND CHR$(27) <> A$ THEN
       COLU=COLU+1
       IF CHR$(8) <> A$ THEN
          BANDE=1
          LOCATE FIL,COLU:?A$;
          C$=C$+A$
          CONTADOR=CONTADOR+1
       END IF
    END IF
 END IF
WEND
IF CANT=CONTADOR THEN
    A$=INPUT$(1)
END IF
FNINTRO$=C$
END DEF


DEF FNINTRON$(CANT,FIL,COLU)
CONTADOR=0
COLOR 14
C$=""
B$="0123456789"
COLU=COLU+1
A$=""
BANDE=0
WHILE CONTADOR <> CANT AND A$ <> CHR$(13)
 WHILE NOT INSTAT
   LOCATE FIL,COLU+1:?"_"
   DELAY 0.2
   LOCATE FIL,COLU+1:?" "
   DELAY 0.2
 WEND
 A$=INPUT$(1)
 IF CHR$(8) = A$ AND BANDE > 0 THEN
    LOCATE FIL,(COLU):?" "
    LON=LEN(C$)-1
    IF LON>=0 THEN
       C$=LEFT$(C$,LON)
       C$=LEFT$(C$,COLU-1)
       COLU=COLU-1
       CONTADOR=CONTADOR-1
    END IF
 ELSE
    X=INSTR(B$,A$)
    IF (X>0 AND CHR$(13)<>A$) AND CHR$(27) <> A$ THEN
       COLU=COLU+1
       IF CHR$(8) <> A$ THEN
          BANDE=1
          LOCATE FIL,COLU:?A$
          C$=C$+A$
          CONTADOR=CONTADOR+1
       END IF
    END IF
 END IF
 IF CANT=CONTADOR THEN
    A$=INPUT$(1)
 END IF
WEND
FNINTRON$=C$
END DEF

SUB LIBRE:
    LINE (210,122)-(315,143),8,B
    COLOR 1
    LOCATE 10,10:?"CODIGO .....   ";
    LINE (211,123)-(314,123),15
    LINE (314,123)-(314,142),15
    COLOR 1
    LOCATE 12,10:?"ARTICULO ...  ";
    LINE (210,150)-(390,171),8,B
    LINE (211,151)-(389,151),15
    LINE (389,151)-(389,170),15
    LOCATE 14,10:?"CANTIDAD ...";
    LINE (210,178)-(315,199),8,B
    LINE (211,179)-(314,179),15
    LINE (314,179)-(314,198),15
    LOCATE 16,10:?"PRECIO .....";
    LINE (210,206)-(315,227),8,B
    LINE (211,207)-(314,207),15
    LINE (314,207)-(314,226),15
 END SUB

PAZ