Menu de calculo

  Programa de Calculo

1: De binario   a octal y vicecersa

2:De octal a hexadecimal y viceversa

3:De binario a hexadecimal y viceversa



〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

Algoritmo menu_calculo
//Elaborado por:Leonardo Cabezas Briones 
Definir opcMenu Como Entero
Definir salir Como Logico
salir <- Falso
Repetir
escribir "Bienvenido usuario a el menu de calculo "
Esperar Tecla
Escribir "------------------------------------------"
Escribir "            MENU"
Escribir "------------------------------------------"
Escribir "(1) calculo de binario a octal y vicecersa"
Escribir "(2) calculo de octal a hexadecimal y viceversa"
Escribir "(3) calculo de binario a hexadecimal y viceversa"
Escribir "(4) Salir"
Escribir "------------------------------------------"
Escribir "Elija una opción...." Sin Saltar
Leer opcMenu
Borrar Pantalla
Segun opcMenu Hacer
1:
opcion1
2:
opcion2
3:
opcion3
4:
salir <- Verdadero
De Otro Modo:
Escribir "Opción incorrecta. Inténtelo de nuevo"
FinSegun
Hasta Que salir
FinAlgoritmo

Funcion opcion1
Definir opc Como Entero
Definir volver Como Logico
Definir num Como Cadena
volver <- Falso
Mientras !volver
Escribir "         CONVERTIR" 
Escribir "------------------------------"
Escribir "(1) De binario a octal" 
Escribir "(2) De octal a binario" 
Escribir "(3) Volver al menú anterior"
Escribir "Eligir opción (1 al 3)...." Sin Saltar
Leer opc
Borrar Pantalla
Segun opc Hacer
1: 
Escribir "NÚMERO EN BINARIO: " Sin Saltar
Leer num
Si esBinario(num) Entonces
Escribir "Es ", deBinarioAOctal(num), " en octal"
SiNo
Escribir "No es un número binario"
FinSi
teclayBorrar
2:
Escribir "NÚMERO EN OCTAL: " Sin Saltar
Leer num
Si esOctal(num) Entonces
num <- quitarCeros(num)
Escribir "Es ", deOctalABinario(num), " en binario"
SiNo
Escribir "No es un número octal"
FinSi
teclayBorrar
3:
Borrar Pantalla
volver<-Verdadero
De Otro Modo:
Escribir "Opción incorrecta. Inténtelo de nuevo"
teclayBorrar
FinSegun
FinMientras
FinFuncion

Funcion opcion2
Definir opc Como Entero
Definir volver Como Logico
Definir num Como Cadena
volver <- Falso
Mientras !volver
Escribir "         CONVERTIR" 
Escribir "------------------------------"
Escribir "(1) De octal a hexadecimal" 
Escribir "(2) De hexadecimal a octal" 
Escribir "(3) Volver al menú anterior"
Escribir "Eligir opción (1 al 3)...." Sin Saltar
Leer opc
Borrar Pantalla
Segun opc Hacer
1: 
Escribir "NÚMERO EN OCTAL: " Sin Saltar
Leer num
Si esOctal(num) Entonces
num <- quitarCeros(num)
Escribir "Es ", deOctalAHexadecimal(num), " en hexadecimal"
SiNo
Escribir "No es un número octal"
FinSi
teclayBorrar
2:
Escribir "NÚMERO EN HEXADECIMAL: " Sin Saltar
Leer num
Si esHexadecimal(num) Entonces
num <- quitarCeros(num)
Escribir "Es ", deHexadecimalAOctal(num) " en octal"
SiNo
Escribir "No es un número hexadecimal"
FinSi
teclayBorrar
3:
Borrar Pantalla
volver<-Verdadero
De Otro Modo:
Escribir "Opción incorrecta. Inténtelo de nuevo"
teclayBorrar
FinSegun
FinMientras
FinFuncion

Funcion opcion3
Definir opc Como Entero
Definir volver Como Logico
volver <- Falso
Mientras !volver
Escribir "         CONVERTIR" 
Escribir "------------------------------"
Escribir "(1) De binario a hexadecimal" 
Escribir "(2) De hexadecimal a binario" 
Escribir "(3) Volver al menú anterior"
Escribir "Eligir opción (1 al 3)...." Sin Saltar
Leer opc
Borrar Pantalla
Segun opc Hacer
1: 
Escribir "NÚMERO EN BINARIO: " Sin Saltar
Leer num
Si esBinario(num) Entonces
Escribir "Es ", deBinarioAHexadecimal(num), " en hexadecimal"
SiNo
Escribir "No es un número binario"
FinSi
teclayBorrar
2:
Escribir "NÚMERO EN HEXADECIMAL: " Sin Saltar
Leer num
Si esHexadecimal(num) Entonces
num <- quitarCeros(num)
Escribir "Es ", deHexadecimalABinario(num) " en binario"
SiNo
Escribir "No es un número hexadecimal"
FinSi
teclayBorrar
3:
Borrar Pantalla
volver<-Verdadero
De Otro Modo:
Escribir "Opción incorrecta. Inténtelo de nuevo"
teclayBorrar
FinSegun
FinMientras
FinFuncion

Funcion teclayBorrar
Escribir "Pulse una tecla para continuar...."
Esperar Tecla
Borrar Pantalla
FinFuncion

Funcion OK <- esBinario(cad)
Definir OK Como Logico
Definir i Como Entero
OK <- Falso
Para i<-1 Hasta Longitud(cad) Con Paso 1 Hacer
Si Subcadena(cad,i,i)=='1' O Subcadena(cad,i,i)=='0' Entonces
OK <- Verdadero
SiNo
OK <- Falso
i <- Longitud(cad)
FinSi
FinPara
FinFuncion

Funcion OK <- esOctal(cad)
Definir OK Como Logico
Definir i Como Entero
Definir C Como Caracter
valoresOctal <- "01234567"
OK <- Falso
Para i<-1 Hasta Longitud(cad) Con Paso 1 Hacer
C <- Subcadena(cad,i,i)
Para j<-1 Hasta 8 Con Paso 1 Hacer
Si C==Subcadena(valoresOctal,j,j) Entonces
OK <- Verdadero
j<-8
SiNo
Si (j==8) Entonces
OK <- Falso
i<-Longitud(cad)
FinSi
FinSi
FinPara
FinPara
FinFuncion

Funcion OK <- esHexadecimal(cad)
Definir OK Como Logico
Definir i Como Entero
Definir C Como Caracter
valoresOctal <- "0123456789ABCDEF"
OK <- Falso
Para i<-1 Hasta Longitud(cad) Con Paso 1 Hacer
C <- Subcadena(cad,i,i)
Para j<-1 Hasta 16 Con Paso 1 Hacer
Si Mayusculas(C)==Subcadena(valoresOctal,j,j) Entonces
OK <- Verdadero
j<-16
SiNo
Si (j==16) Entonces
OK <- Falso
i<-Longitud(cad)
FinSi
FinSi
FinPara
FinPara
FinFuncion

Funcion nOctal <- deBinarioAOctal(cad)
Dimension tablaBinarios[8]
Definir cad2, nOctal, nBin, faltan0, tablaBinarios Como Cadena
Definir i, j Como Entero
tablaBinarios[1] <- "000"
tablaBinarios[2] <- "001"
tablaBinarios[3] <- "010"
tablaBinarios[4] <- "011"
tablaBinarios[5] <- "100"
tablaBinarios[6] <- "101"
tablaBinarios[7] <- "110"
tablaBinarios[8] <- "111"
i<-Longitud(cad) 
faltan0 <- ""
Si !(i%3==0) Entonces
Para j<-1 Hasta (3-(i%3)) Con Paso 1
faltan0 <- faltan0 + '0'
FinPara
FinSi
cad <- faltan0+cad
nOctal <- ""
i<-Longitud(cad) 
Repetir
nBin <- Subcadena(cad,i-2,i)
Para j<-1 Hasta 8 Con Paso 1 Hacer
Si nBin==tablaBinarios[j] Entonces
cad2 <- cad2 + ConvertirATexto(j-1)
FinSi
FinPara
i<-i-3
Hasta Que (i<=0)
Para i<-Longitud(cad2) Hasta 1 Con Paso -1
nOctal <- nOctal + Subcadena(cad2,i,i)
FinPara
nOctal <- quitarCeros(nOctal)
FinFuncion

Funcion nBin <- deOctalABinario(cad)
Dimension tablaBinarios[8]
Definir  nBin, nOctal, faltan0, tablaBinarios Como Cadena
Definir i, j Como Entero
Definir C Como Caracter
tablaBinarios[1] <- "000"
tablaBinarios[2] <- "001"
tablaBinarios[3] <- "010"
tablaBinarios[4] <- "011"
tablaBinarios[5] <- "100"
tablaBinarios[6] <- "101"
tablaBinarios[7] <- "110"
tablaBinarios[8] <- "111"
cad2 <- ""
Para i<-1 Hasta Longitud(cad) Con Paso 1 Hacer
C<-Subcadena(cad,i,i)
nBin <- nBin + tablaBinarios[ConvertirANumero(C)+1]
FinPara
FinFuncion

Funcion nBin <- deHexadecimalABinario(cad)
Dimension tablaBinarios[16]
Definir  nBin, nHexa, faltan0, tablaBinarios, C Como Cadena
Definir i, j Como Entero
tablaBinarios[1] <- "0000"
tablaBinarios[2] <- "0001"
tablaBinarios[3] <- "0010"
tablaBinarios[4] <- "0011"
tablaBinarios[5] <- "0100"
tablaBinarios[6] <- "0101"
tablaBinarios[7] <- "0110"
tablaBinarios[8] <- "0111"
tablaBinarios[9] <- "1000"
tablaBinarios[10] <- "1001"
tablaBinarios[11] <- "1010"
tablaBinarios[12] <- "1011"
tablaBinarios[13] <- "1100"
tablaBinarios[14] <- "1101"
tablaBinarios[15] <- "1110"
tablaBinarios[16] <- "1111"
cad2 <- ""
Para i<-1 Hasta Longitud(cad) Con Paso 1 Hacer
j<-ConvertirANumero(numHexa(Subcadena(cad,i,i)))
nBin <- nBin + tablaBinarios[j+1]
FinPara
FinFuncion

Funcion nHex <- deOctalAHexadecimal(cad)
Dimension tablaBinarios[16]
Definir  cad2, nHex, nBin, nOctal, faltan0, tablaBinarios Como Cadena
Definir i, j Como Entero
Definir C Como Caracter
tablaBinarios[1] <- "0000"
tablaBinarios[2] <- "0001"
tablaBinarios[3] <- "0010"
tablaBinarios[4] <- "0011"
tablaBinarios[5] <- "0100"
tablaBinarios[6] <- "0101"
tablaBinarios[7] <- "0110"
tablaBinarios[8] <- "0111"
tablaBinarios[9] <- "1000"
tablaBinarios[10] <- "1001"
tablaBinarios[11] <- "1010"
tablaBinarios[12] <- "1011"
tablaBinarios[13] <- "1100"
tablaBinarios[14] <- "1101"
tablaBinarios[15] <- "1110"
tablaBinarios[16] <- "1111"
cad <- deOctalABinario(cad)
i<-Longitud(cad) 
faltan0 <- ""
Si !(i%4==0) Entonces
Para j<-1 Hasta (4-(i%4)) Con Paso 1
faltan0 <- faltan0 + '0'
FinPara
FinSi
cad <- faltan0+cad
nHex <- ""
i<-Longitud(cad) 
Repetir
nBin <- Subcadena(cad,i-3,i)
Para j<-1 Hasta 16 Con Paso 1 Hacer
Si nBin==tablaBinarios[j] Entonces
Si (j-1) >= 10 Entonces
cad2 <- cad2 + letraHexa(ConvertirATexto(j-1))
SiNo
cad2 <- cad2 + ConvertirATexto(j-1)
FinSi
j<-16
FinSi
FinPara
i<-i-4
Hasta Que (i<=0)
Para i<-Longitud(cad2) Hasta 1 Con Paso -1
nHex <- nHex + Subcadena(cad2,i,i)
FinPara
nHex <- quitarCeros(nHex)
FinFuncion

Funcion nOctal <- deHexadecimalAOctal(cad)
Dimension tablaBinarios[16]
Definir  cad2, nHex, nBin, nOctal, faltan0, tablaBinarios Como Cadena
Definir i, j Como Entero
Definir C Como Caracter
tablaBinarios[1] <- "0000"
tablaBinarios[2] <- "0001"
tablaBinarios[3] <- "0010"
tablaBinarios[4] <- "0011"
tablaBinarios[5] <- "0100"
tablaBinarios[6] <- "0101"
tablaBinarios[7] <- "0110"
tablaBinarios[8] <- "0111"
tablaBinarios[9] <- "1000"
tablaBinarios[10] <- "1001"
tablaBinarios[11] <- "1010"
tablaBinarios[12] <- "1011"
tablaBinarios[13] <- "1100"
tablaBinarios[14] <- "1101"
tablaBinarios[15] <- "1110"
tablaBinarios[16] <- "1111"
cad <- deHexadecimalABinario(cad)
nOctal <- deBinarioAOctal(cad)
// Quitamos los ceros a la izquierda del número octal
nOctal <- quitarCeros(nOctal)
FinFuncion

Funcion nHexa <- deBinarioAHexadecimal(cad)
Dimension tablaBinarios[16]
Definir cad2, nHexa, nBin, faltan0, tablaBinarios Como Cadena
Definir i, j Como Entero
tablaBinarios[1] <- "0000"
tablaBinarios[2] <- "0001"
tablaBinarios[3] <- "0010"
tablaBinarios[4] <- "0011"
tablaBinarios[5] <- "0100"
tablaBinarios[6] <- "0101"
tablaBinarios[7] <- "0110"
tablaBinarios[8] <- "0111"
tablaBinarios[9] <- "1000"
tablaBinarios[10] <- "1001"
tablaBinarios[11] <- "1010"
tablaBinarios[12] <- "1011"
tablaBinarios[13] <- "1100"
tablaBinarios[14] <- "1101"
tablaBinarios[15] <- "1110"
tablaBinarios[16] <- "1111"
i<-Longitud(cad) 
faltan0 <- ""
Si !(i%4==0) Entonces
Para j<-1 Hasta (4-(i%4)) Con Paso 1
faltan0 <- faltan0 + '0'
FinPara
FinSi
cad <- faltan0+cad
nHexa <- ""
i<-Longitud(cad) 
Repetir
nBin <- Subcadena(cad,i-3,i)
Para j<-1 Hasta 16 Con Paso 1 Hacer
Si nBin==tablaBinarios[j] Entonces
Si (j-1) >= 10 Entonces
cad2 <- cad2 + letraHexa(ConvertirATexto(j-1))
SiNo
cad2 <- cad2 + ConvertirATexto(j-1)
FinSi
j<-16
FinSi
FinPara
i<-i-4
Hasta Que (i<=0)
Para i<-Longitud(cad2) Hasta 1 Con Paso -1
nHexa <- nHexa + Subcadena(cad2,i,i)
FinPara
nHexa <- quitarCeros(nHexa)
FinFuncion

Funcion n <- letraHexa(cad)
Definir n Como Caracter
Segun ConvertirANumero(cad) Hacer
10:
n<-'A'
11:
n<-'B'
12:
n<-'C'
13:
n<-'D'
14:
n<-'E'
15:
n<-'F'
FinSegun
FinFuncion

Funcion n <- numHexa(C)
Definir n, digitos Como Cadena
Si Mayusculas(C)=='A' Entonces
n <- '10'
SiNo
Si Mayusculas(C)=='B' Entonces
n <- '11'
SiNo
Si Mayusculas(C)=='C' Entonces
n <- '12'
SiNo
Si Mayusculas(C)=='D' Entonces
n <- '13'
SiNo
Si Mayusculas(C)=='E' Entonces
n <- '14'
SiNo
Si Mayusculas(C)=='F' Entonces
n <- '15'
SiNo
digitos <- "0123456789"
Para i<-1 Hasta 10 Con Paso 1 Hacer
Si C==Subcadena(digitos,i,i) Entonces
n <- C
i<-10
FinSi
FinPara
FinSi
FinSi
FinSi
FinSi
FinSi
FinSi
FinFuncion

Funcion cad <- quitarCeros(cad)
Definir i Como Entero
Definir n Como Cadena
Para i<-1 Hasta Longitud(cad) Con Paso 1 Hacer
Si Subcadena(cad,1,1)=='0' Y Longitud(cad)>1 Entonces
cad <- Subcadena(cad,2,Longitud(cad))
FinSi
FinPara
FinFuncion

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓



No hay comentarios:

Publicar un comentario