domingo, 10 de abril de 2011

Arreglando el último programa de Pascal



Hay que perfeccionarse todos los días un poco. Así que aquí está el programa del último día un poco retocadito. ¡Hasta funciona! Lo de arriba es una prueba para ver si se pueden poner así los programas. Y lo de abajo también. Evidentemente, en un editor adecuado se ven las cosas mucho mejor.

program pruf12 (input, output);
var
i:integer;
cantidad:array[1..100] of real;
fecha:packed array[1..100] of string[2];
cpto: array[1..100] of string[30];
c,suma,reman:real;
mes:string[10];

begin
i:=0;
write('Mes actual: ');
readln(mes);
write('Remanente del mes anterior: ');
readln(reman);
repeat
i:=i+1;
writeln('Apunte nº',i);
write('Fecha: '); readln(fecha[i]);
write('Concepto (no metas acentos): '); readln(cpto[i]);
write('Cantidad ingres. o gast. (+/-): ');readln(c);
cantidad[i]:=c;
writeln('-----------');
until c=0;
i:=1;
suma:=reman;
writeln(mes);
writeln('Remanente del mes anterior: ',suma:10:2);
writeln('Fecha Concepto...........Entrada ..Salida ...Saldo.....');
while cantidad[i]<>0 do
begin
suma:= suma + cantidad[i];
write(fecha[i],': ');
write(cpto[i]:15,'...');
if (cantidad[i]>0) then
begin
write(cantidad[i]:10:2);
writeln(suma:20:2);
end
else
begin
write(cantidad[i]:20:2);
writeln(suma:10:2);
end;
i:=i+1;
end;
writeln;
writeln('..........Saldo final: ',suma:29:2);
end.

Y así es como queda la salida:


sábado, 9 de abril de 2011

Perfeccionando el Pascal



Arreglando un poquito el programa del otro día en Pascal. Serviría para una contabilidad doméstica. Un poco la "cuenta de la vieja". Los gastos hay que meterlos como números negativos. Si ponemos acentos o eñes en el concepto nos descabala la salida - que fácilmente se descabala-. Que cada uno lo arregle a su manera.


program pruf12 (input, output);
var
i:integer;
cantidad:array[1..100] of real;
fecha:packed array[1..100] of string[8];
cpto: array[1..100] of string[30];
c,suma:real;

begin
i:=0;
repeat
i:=i+1;
writeln('Apunte nº',i);
write('Fecha: '); readln(fecha[i]);
write('Concepto: '); readln(cpto[i]);
write('Cantidad ingres. o gast. (+/-): '); readln(c);
cantidad[i]:=c;
writeln('-----------');
until c=0;
i:=1;
suma:=0;
writeln('Fecha.... Concepto..........   Caja..... Saldo.....');
while cantidad[i] <> 0 do
begin
suma:= suma + cantidad[i];
write(fecha[i],': ');
write(cpto[i]:15,'...');
write(cantidad[i]:10:2);
writeln(suma:10:2);
i:=i+1;
end;
writeln;
writeln('Saldo final: ',suma:10:2);
end.


La salida sería, por ejemplo, así:
Apunte nº1
Fecha: 01/01/11
Concepto: Sueldo recibido
Cantidad ingres. o gast. (+/-): 1346
-----------
Apunte nº2
Fecha: 11/01/11
Concepto: Alquiler del piso
Cantidad ingres. o gast. (+/-): -670
-----------
Apunte nº3
Fecha: 23/01/11
Concepto: Gastos de alimentacion
Cantidad ingres. o gast. (+/-): -346
-----------
Apunte nº4
Fecha: 
Concepto: 
Cantidad ingres. o gast. (+/-): 0
-----------
Fecha....  Concepto..........      Caja.....    Saldo.....
01/01/11: Sueldo recibido...   1346.00   1346.00
11/01/11: Alquiler del pi...        -670.00     676.00
23/01/11: Gastos de alime...   -346.00     330.00


Saldo final:     330.00

El lenguaje Python


Pues hablando de lenguajes de programación, ahora está de moda el Python. No es un lenguaje como el C o el Pascal. Es un lenguaje interpretado, que en ese sentido se parece a aquel mítico BASIC de nuestra juventud. Pero, al parecer, es muy potente y muy fácil de aprender. Yo empecé ayer mismo, no leí más que cuatro cosas y ya hice algunos programillas. Aquí pongo mi último "parto". Hasta puede ser bueno para hacer concursos, exámenes y otros divertimentos. Desde luego, no es muy sofisticado, pero se puede prolongar todo lo que la memoria dé de sí:

#!/usr/bin/env python2.6
# La linea anterior parece que es necesaria. No utilizar en el programa acentos, enyes o el signo de abrir interrogacion. Parece que te la arma.
count=0
print("Cual es la capital del Principado de Asturias?")
nombre=raw_input()
if (nombre=="Oviedo") or (nombre=="oviedo"):
print "Enhorabuena, has acertado"
print "Efectivamente,",nombre,"es la capital del Principado."
count=count+1
print "Tienes",count,"puntos a tu favor"
else:
print "Lo siento, has perdido"
print nombre, "no es la capital del Principado."
print "Tienes",count,"puntos a tu favor"
#-----------------Comentario---------------------
print "----------------------------"
print "Como se llama el idioma propio de los asturianos?"
idioma=raw_input()
if (idioma=="Bable") or (idioma=="bable"):
print "Enhorabuena, has acertado"
print "Efectivamente, el ",idioma,"es el idioma propio de los asturianos"
count=count+1
print "Tienes",count,"puntos a tu favor"
else:
print "Lo siento, has perdido"
print idioma,"no es el idioma propio de los asturianos"
print "Tienes",count,"puntos a tu favor"

Como se ve. coser y cantar. No hay que andar declarando tipos ni cosas por el estilo. Lo único con lo que hay que andar con cuidado es con las indentaciones, como se ve en las sentencias condicionales.
¿Alguna dirección? Esa de ahí abajo puede ser buena para empezar.
http://mundogeek.net/archivos/2008/01/16/mi-primer-programa-en-python/
o bien, http://www.mclibre.org/consultar/python/index.html
Estos programas se escriben con un editor de texto; yo uso el Gedit de Ubuntu y estoy muy contento con él. Luego se guardan con la extensión .py. Desde la consola hay que poner en GNU Linux la orden chmod +x nombre_programa.py para hacerlo ejecutable. Estos programas no se compilan; en realidad son una serie de órdenes que se dan al intérprete. Luego se ejecuta con ./nombre_programa.py
También se pueden ejecutar paso a paso desde la consola sin más que poner, por ejemplo,  mario@mario-desktop:~$ python
automáticamente entras en Python y empiezas a dar órdenes que se ejecutan inmediatamente. En este sentido es ideal como calculadora superpotente.
Ya seguiremos hablando de Python.

viernes, 8 de abril de 2011

programas en pascal


Hablando de programas en informatica, es bueno ejercitarse en varios lenguajes. El C tiene fama de ser el lenguaje por excelencia, el de los expertos, pues con él se han construido los sistemas operativos, pero no es muy amigable. Parece que el C++ arregló algo eso. Y, desde luego, el Pascal, me parece a mí, es el más elegante, claro y didáctico. Pues nada, por divertirnos solo, voy a poner aquí el último "parto", que acabo de hacer hace unos momentos. Es el clásico problema de sumar una serie de cantidades que le vas dando. Puede resultar hasta útil, pero solo se consideran los ingresos. Otro día lo completamos con las salidas.

program pruf12 (input, output);
var
i,last:integer;
cantidad:array[1..100] of real;
c,suma:real;
begin
i:=0;
repeat
i:=i+1;
write('Dame la cantidad ',i, ': ');
readln(c);
cantidad[i]:=c;
until c=0;
i:=1;
suma:=0;
while cantidad[i]<>0 do
begin
suma:= suma + cantidad[i];
write('Cantidad ingresada: ',cantidad[i]:10:2);
writeln('..... Suma acumulada: ',suma:10:2);
i:=i+1;
end;
writeln;
writeln('Cantidad total ingresada: ',suma:10:2);
end.

Se compila en GNU Linux con gpc nombre.pas -o nombre. En este caso el nombre que yo le he dado es pruf12.pas
Luego se ejecuta con ./nombre
Para terminar de ingresar cantidades se introduce 0.