[ Foro de Pascal ]
Hola de nuevo!
Estoy realizando los ejercicios del nuevo curso de Pascal. Y supongo que hay muchas formas de hacerlos. Me gustaría saber si está bien enfocada mi solución.
He realizado una resta en la iteración de la variable 'cont' del ciclo FOR. De esa manera me va restando los indices hasta llegar al que yo quiero. Osea, me da como resultado el primer número y el último sobre los cinco seleccionados.
Mi código:
// Ejercicio propuesto 4.1.1.2: Crea un programa que pida al usuario
// cinco números enteros, los guarde en un array y luego muestre el
// primero y el último.
program ejercicio_4_1_1_2;
uses
crt;
var
vector : array [1..5] of byte;
cont : byte;
begin
for cont := 1 to 5 do
begin
write('Escribe el ',cont,' numero: ');
read(vector[cont]);
writeln;
end;
writeln(vector[cont-4],' ',vector[cont]);
end.
Saludos!
Está bien hecho.
Saludos.
Ok, Luis. Muchas gracias. Es que cuando hago un ejercicio siempre tengo la duda de si se podía haber hecho mejor. O con menos líneas de código.
Saludos.
Si estás comenzando a programar, el ejercicio está bien hecho. Siempre hay una forma de hacer mejor las cosas. En la parte en la que pides los datos, el texto con el que pides los datos no está bien redactado, porque vendría a ser así:
Escribe el 1 numero:
Escribe el 2 numero:
.
.
.
Escribe el 5 numero:
Eso no tiene sentido, deberías haber colocado algo como esto:
write('Escribe el numero ',cont',': ');
Y, cuando vas a mostrar el primer dato y el último, yo en tu caso hubiese colocado:
write(vector[1],' ',vector[5]);
Eso es todo.
Saludos.
Gracias. Tomo nota de las recomendaciones ;)
Aquí dejo el código que he creado sobre el ejercicio 4.1.1.5:
// Ejercicio propuesto 4.1.1.5: Crea un programa que sume dos vectores,
// cuyos componentes indicará el usuario. Por ejemplo, la suma de
// (1,2,3) y (7,11,-1) sería (8,13,2).
program ejercicio_4_1_1_5;
uses
crt;
var
vec_1, vec_2 : array [1..3] of integer;
cont : byte;
begin
writeln('SUMA DE VECTORES...');
writeln();
for cont := 1 to 3 do
begin
textcolor(green);
write('Escribe dato ',cont, ' vector 1: ');
readln(vec_1[cont])
end;
writeln();
for cont := 1 to 3 do
begin
textcolor(blue);
write('Escribe dato ',cont, ' vector 2: ');
readln(vec_2[cont])
end;
writeln();
textcolor(white);
writeln('SUMA DE INDICES DE AMBOS VECTORES');
writeln();
for cont:= 1 to 3 do
begin
textcolor(yellow);
write(vec_1[cont] + vec_2[cont],' ')
end;
writeln()
end.
Supongo que habrá fallos a capazos...
Está bien. Sólo tres mejoras de poca importancia:
1) Yo no usaría colores para un fuente tan sencillo ;-D Cuando uno comienza, es preferible ver bien la lógica del programa, en vez de que sea "bonito en ejecución".
2) No me gustan nada los fuentes tabulados con "el carácter de tabulación", porque es habitual que se conviertan en un sangrado demasiado grande (típicamente 8 espacios) y aún más frecuente que se descuadren cuando se mezclan con espacios. Configura tu editor para usar el carácter de espacio cuando tabules tu fuente, y para que cada salto equivalga a 4 espacios.
3) Recuerda que los comentarios estándar en Pascal con { } y (* *), no doble barra, que son "heredados" de C/C++ y funcionan en muy pocos compiladores.
Con esos pequeños cambios, yo lo simplificaría hasta algo así:
{ Ejercicio propuesto 4.1.1.5: Crea un programa que sume dos vectores,
cuyos componentes indicará el usuario. Por ejemplo, la suma de
(1,2,3) y (7,11,-1) sería (8,13,2). }
program ejercicio_4_1_1_5;
var
vec1, vec2 : array [1..3] of integer;
cont : byte;
begin
writeLn('SUMA DE VECTORES...');
writeLn();
for cont := 1 to 3 do
begin
write('Escribe dato ',cont, ' del vector 1: ');
readLn( vec1[cont] );
end;
writeLn();
for cont := 1 to 3 do
begin
write('Escribe dato ',cont, ' del vector 2: ');
readLn( vec2[cont] );
end;
writeLn();
writeLn('SUMA DE INDICES DE AMBOS VECTORES');
writeLn();
for cont:= 1 to 3 do
write(vec1[cont] + vec2[cont],' ');
writeLn();
end.
Hola Nacho :)
Sobre lo que me comentas de la tabulación, no sé por que sale así en el foro. Yo lo tengo configurado con Geany a cuatro espacios al tabular y así lo veo en mi editor. Es decir, la primera sentencia que creo después del begin se coloca debajo de la 'n' (del begin).
A mi no me sale tan espaciado como se ve en el foro.
Sobre el tema de los colorines, sabía que me lo ibas a comentar. Te he de dar la razón ;)
Y los comentarios con // lo desconocía. Me gusta más así. Si pongo {}, parece los bloques que encierran las sentencias en C o C++.
Saludos...
Si usas Geany como editor, una cosa es la cantidad de espacios que te va a mostrar en pantalla y otra cosa es cómo se guarde el fichero. En Editar / Preferencias / Editor / Sangría, asegúrate de que, además de "Ancho 4" esté marcado "Espacios", no "Tabulaciones".
Y entiendo que te gusten más los comentarios de una línea... pero no funcionarán en Turbo Pascal ni en otros compiladores antiguos, sólo en Free Pascal y Delphi.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)