Archivos de la categoría ‘Programacion’

Empezando a estudiar…

Ya me esta empezando a dar miedo, o mas que miedo son como ancias de saber si realmente podre con este lenguaje como es Visual Basic (VB), buscando por internet encontre un excelente manual, el cual esta bastante completo, y que obviamente compartire para todos los que pasen por este blog.

http://www.canalvisualbasic.net/temarios/manual_visualbasic_net.asp

Y hay que empezar a estudiar no mas po, no queda otra, faltan alrededor de 2 semanas para entrar a la Universidad, y veremos que sucede este año, animo y fuerza para todos los “colegas”. Y aguante!!!! INFORMATICA UTFSM CONCEPCIÓN.

Tau.

Test Nº 3 de OMA

Finalmente me salio completamente un test de OMA, bueno acá les dejo el codigo, para que puedan estudiar, o si por ahí en la red a alguien le sirve.

programacion.gif

oma3.PRG

*Jonathan Ramírez Medina / Grupo 2
*Menu principal
set status off
set bell off
set confirm on
set talk off
set date british
set wrap on
set message to 24 center
public opcion,codigo,dedonde,pedido
do bases
si=.T.
do while si
do menu
menu to opcion
do case
case opcion=1
keyboard chr(0)
do depar
do compras
case opcion=2
keyboard chr(0)
do depar
do listado
case opcion=3
si=.F.
clear
endcase
enddo
return
*------------------------
procedure bases
select 1
use deptos
select 2
use empresa
select 3
use compras
return
*-----------------------
procedure menu
@0,0 clear
@7,10 say "***** TEST NUMERO TRES DE OMA G2 *****"
@9,10 prompt "1. Compras" message "Presione <ENTER> para continuar"
@10,10 prompt "2. Listado" message "Presione <ENTER> para continuar"
@11,10 prompt "3. Salir" message "Presione <ENTER> para salir"
@13,10 say "Alumno: Jonathan Ramirez"

depar.PRG

*Listado de departamentos
select 1
go top
declare campo[2], forma[2], titulo[2]
campo[2]="CLAVE"
campo[1]="DEPTO"
forma[2]="99"
forma[1]="@! AAAAAAAAAAAAAAA"
titulo[2]="Codigo;Departamento"
titulo[1]="Nombre;Departamento"
@0,0 CLEAR
@7,10 SAY "***** LISTADO DE DEPARTAMENTOS *****"
set color to /w
@16,10 SAY " ENTER(ingresar) ESC(Salir) "
set color to
dbedit(7,10,14,61,campo,"func1",forma,titulo)
return
*-----------------------------------------
function func1
parameters resp1
do case
case lastkey()=27
resp1=0
case lastkey()=13
store CLAVE to codigo
resp1=0
otherwise
resp1=1
endcase
return resp1

compras.PRG

*Listado de compras filtradas por departamento
keyboard chr(0)
select 3
go top
declare campo[3], forma[3], titulo[3]
campo[1]="RUT"
campo[2]="MES"
campo[3]="MONTO"
forma[1]="999"
forma[2]="99"
forma[3]="999"
titulo[1]="Rut"
titulo[2]="Mes"
titulo[3]="Monto"
@0,0 clear
@7,10 SAY "***** LISTADO DE COMPRAS *****"
set color to /w
@16,10 say " F2(Agregar) F3(Eliminar) ESC(salir) "
set color to
locate for DEPTO=codigo
set filter to DEPTO=codigo
dbedit(9,10,14,66,campo,"func2",forma,titulo)
return
*---------------------------------------
function func2
parameters resp2
do case
case lastkey()=27
resp2=0
case lastkey()=-1
set cursor on
var1=0
var2=0
var3=0
@row(),31 GET var1 pict forma[1] valid existe(var1)
@row(),37 GET var2 pict forma[2]
@row(),42 GET var3 pict forma[3]
read
if lastkey() <> 27
append blank
replace RUT with var1, MES with var2, MONTO with var3, DEPTO with codigo
else
resp2=2
endif
case lastkey()=-2
dele
pack
keyboard chr(0)
resp2=2
otherwise
resp2=1
endcase
return resp2
*---------------------
function existe
parameters si
locate for RUT=var1
if found()
si=.F.
else
si=.T.
endif
return si

listado.PRG

*Listado de montos filtrados por departamento y mes
pedido=0
@0,0 CLEAR
@7,10 SAY "***** MES DEL FILTRO *****"
@10,10 SAY "Ingrese el mes a filtar: " GET pedido pict "99"
READ
keyboard chr(0)
select 3
go top
declare campo[2], forma[2], titulo[2]
campo[1]="MONTO"
campo[2]="MES"
forma[1]="999"
forma[2]="99"
titulo[1]="Monto"
titulo[2]="Mes filtrado"
@0,0 clear
@7,10 SAY "***** LISTADO DE MONTOS *****"
set color to /w
@16,10 say " ESC(salir) "
set color to
locate for DEPTO=codigo .and. MES=pedido
set filter to DEPTO=codigo .and. MES=pedido
dbedit(9,10,14,66,campo,"func3",forma,titulo)
return
*-----------------------------
function func3
parameters resp3
do case
case lastkey()=27
resp3=0
otherwise
resp3=1
endcase
return resp3

Tau.

Calcular digito verificador rut (Chile) en C++

Luego de un día y un poco mas de pensar, y gracias a la ayuda de mi compañero Pablo Gonzalez, puse entender que las variables de tipo char tiene otro ascci y al trabajar a numeros enteros, hay dos opciones para poder trabajarlas:

1. A su numero en char, almacena en un vector restarle -48.
2. Es ocupar la libreria stdlib, la función atoi();

Sin mas comentarios al respecto, menos mal que me salió, pero ahora viene las struct, asi que nos vamos a hacer una agendita en C++.
//Validación del rut
//Alumno: Jonathan Ramírez
//Fecha: 23 Octubre 2007
//UTFSM Informatica
#include <stdio.h>
#include <string.h>
int main()
{
//declaracion de variables
char rut[7];
char rutvalidado[7];
int total=0;
int a,b,c;
int contador=3;
int acumulador=0;
int resto=0;
int digito=0;
//fin declaracion de variables
printf("*** CALCULO DEL DIGITO VERIFICADOR RUT (CHILE) ***");
printf("\n\n");
printf("Ingrese el rut que ejecutar: ");
gets(rut);
total=strlen(rut);
if(total<=7) {
for(a=0;a<=7;a++) {
if(rut[0]==rut[a]) {
rutvalidado[0]='0';
rutvalidado[a+1]=rut[0];
}
else {
rutvalidado[a+1]=rut[a];
}
}
}
else
{
for(b=0;b<=7;b++) {
rutvalidado[b]=rut[b];
}
}
for(c=0;c<=7;c++) {
if(contador==2) {
acumulador=acumulador+((rutvalidado[c]-48)*contador);
contador=8;
}
else
{
acumulador=acumulador+((rutvalidado[c]-48)*contador);
}
contador=contador-1;
}
digito=(11-(acumulador%11));
if(digito>=10) {
if(digito==10) {
printf("\nEl digito verificador de su rut es: K"); }
else
{
printf("\nEl digito verificador de su rut es: 0");
}
}
else
{
printf("\nEl digito verificador de su rut es: %d", digito);
}
getchar();
getchar();
}

Tau.

pda: tal vez actualize el codigo, ocupando la función atoi(); y asi automatizar el programa.

Test Nº 2 de OMA

Ula,
Estas son las cosas que dan rabia, uno sabiendose la materia, solamente necesita un poco de concentración y seguir el ciclo Do While, para entender que habia que inicializar en una parte la variable que me acumulaba el monto a apagar, y mas encima hacer un reporte era entero palta. Y no me fue re mal en el Test de OMA, pero se que conozco la materia, solamente falta un poco de tiempo y concentración.

Acá esta el ejercicio resuelto, yo era el grupo Numero 2. El menu lo generar ustedes, pero la opción del menu CALCULO, asi se programaba (una opción):

*CALCULO
CLEAR
go top
mesp=0
valor=0
@3,5 SAY "Ingrese el MES que desea calcular: " GET mesp PICT "9"
READ
select 1
do while .not. eof()
store RUT to rutsele1
store NOMBRE to nombresele1
select 3
APPE BLANK
REPLACE RUT with rutsele1
REPLACE NOMBRE with nombresele1
select 2
do while .not. eof()
store RUT to rutsele2
store MONTO to montosele2
store MES to messele2
if rutsele2=rutsele1
if messele2=mesp
valor=valor+montosele2
?valor
wait "111"
endif
endif
select 2
skip
enddo
select 3
REPLACE APAGAR with valor
select 1
skip
enddo
return

Ya y para crear un reporte, bajo Dbase solamente habia que hacer lo siguiente:

CREATE REPORT BASEDEDATOS

Y para que se viera en el Do Case del menu escribir:

CLEAR
REPORT FORM APAGAR
SI=.T.
RETURN

Y en eso se resumia mi test, quedan 2 mas, asi que a sacarse los balazos.

Tau.

Evolucionado a Clipper

Al fin! evolucionamos a lo mas pokemon (ahora que estan en boga este tipo de terminos). Al parecer tienes mejoras considerables en el manejo de los punteros y funciones, que mejoran considerablemente la manera de programar.

Gentilmente subi el programa, para que copien los archivos…y luego compilen desde DOS.

Descargar compilador dbase (Clipper)

Tau.

Porque soy buen compañero.

Ahí esta el test de OMA resuelto(supuesto), para todos los flojos que no fueron a la clase (Azucar), para que veas que soy un buen compañero, solamente habia que resolver arreglar el ejercicio. Este ejercicio te pasaban el algoritmo hecho, y habia que arreglarlo a un codigo que estaba malo. En realidad habia que seguir el algoritmo.

**ejercicio
**alumno Jonathan Ramirez
set status off
set bell off
set talk off
set confirm off
si2=.T.
si=.T.
do while si
do while si2
store 0 to cont1, cont2, cont3, cont4, cont5
resp=" "
**programa principal
si1=.T.
do while si1
clear
numero=0
@5,5 say "Ingreso N#" get numero pict "999"
read
if numero>0
cont3=cont3+1
?cont3
if numero>=1 .and. numero<=10
cont4=cont4+1
?cont4
else
cont5=cont5+1
?cont5
endif
else
if numero=0
cont1=cont1+1
?cont1
else
cont2=cont2+1
?cont2
endif
endif
if numero=999
si1=.F.
si=.F.
endif
enddo
*entrega de resultados
clear
@ 6,14 SAY "****** ESTADISTICAS ******"
@ 8,14 SAY "Numeros iguales a cero: "
@ 8,30 SAY cont1
@ 9,14 SAY "Numeros negativos: "
@ 9,30 SAY cont2
@ 10,14 SAY "Numeros mayores a cero: "
@ 10,30 SAY cont3
@ 11,14 SAY "Numeros entre 1 y 10: "
@ 11,30 SAY cont4
@ 12,14 SAY "Numeros mayores a 10: "
@ 12,30 SAY cont5
do while .not. resp $ "SN"
resp=" "
@ 18,40 say "Desea continuar...(S/N)" get resp pict "@!A"
read
enddo
if resp="S"
si2=.T.
else
si2=.F.
si=.F.
endif
enddo
enddo

Tau.

1ra programacion en DBase

Mi primer manejo de punteros con base de datos, aunque el lenguaje DBase es bastante precario en el manejo de punteros, porque teni que estar controlando a cada rato que el puntero vaya bien, luego de 3 veces programar el mismo codigo, resulto. Imaginense que con otros lenguajes esto lo resumi a un par de lineas.

El ejercicio consistia en que tenias 4 bases de datos, y todas se iban relacionando a medida que las recorrias con alguna campo entre ellas, lo cual habian que recorrer y preguntar a cada rato si existia, si era si, almacenar todas las variables con un store, para asi ocuparlas dentro del programa en otra consulta.

*generar base de datos
go top
select 4
do while .not. eof()
store rut to rut_sele4
store cod_ramo to codr_sele4
store nota to nota_sele4
select 5
append blank
replace NOTA with nota_sele4
select 2
locate for rut=rut_sele4
if found()
store rut to rut_sele2
store cod_carr to codc_sele2
store nombre to nomb_sele2
endif
select 5
replace ALUMNO with nomb_sele2
select 1
locate for cod=codc_sele2
if foun()
store area to area_sele1
store carrera to carr_sele1
store cod to cod_sele1
endif
select 5
replace AREA with area_sele1
replace CARRERA with carr_sele1
select 3
locate for cod_ramo=codr_sele4
if found()
store cod_ramo to codr_sele3
store nombre to nomb_sele3
endif
select 5
replace RAMO with nomb_sele3
select 4
skip
enddo
select 5
wait
list
return

El resultado de todo lo anterior, se puede visualizar en la siguiente imagen:

dbase.png

Tau.