You are on page 1of 83

Aprende programacin fcilmente.

Presentacin:

Este libro pretende ser un complemento para otros libros de programacin, ms completos y
con ms fundamentos tericos, pero que a veces necesitan ejercicios actualizados para
asimilar completamente la teora.

Es un libro de ejercicios indicado para una primera aproximacin a la programacin, pudiendo


formar parte de la asignatura de Fundamentos de la programacin o como apoyo para una
formacin autodidacta.

Est en preparacin otro libro como una continuacin de estos ejercicios, completando la
temtica de la programacin Visual y la programacin Web.

Para cualquier consulta con el autor, pueden hacrsela llegar mediante la web de
www.ibserveis.com, en el apartado de Contacto.

1
Aprende programacin fcilmente.

Captulo 0

Iniciacin a la programacin

2
Aprende programacin fcilmente. Captulo 0: Iniciacin a la programacin

Captulo 0
Iniciacin a la resolucin de problemas estructuradamente con PSEUDOCODIGO

Es de gran importancia, antes de empezar a teclear con el ordenador, plantear


correctamente la solucin de nuestro proyecto.
Existen infinitas soluciones para cada uno de los problemas que pueden plantearse,
pero siempre podemos encontrar la solucin ms adecuada, por ser la ms prctica y
fcil de implementar.

La filosofa de la solucin ms simple, es probablemente la ms acertada (Navaja


de Occam, wiki: Occam) y su actualizacin para proyectos informticos: la filosofa
KISS (Keep it Simple) , sern las filosofas que se considerarn prioritariamente para
resolver estos ejercicios.

Como ejemplo anecdtico (totalmente falso , pero ilustrativo):


Se comenta que la NASA invirti muchos millones en un bolgrafo capaz de escribir
boca arriba y en condiciones extremas de temperaturas, la URSS hizo servir lpices .
(La historia real en google: sondas espaciales boli)

Un buen artculo respecto a mantener la simplicidad en el software (google: soitu keep


simple) http://www.soitu.es/soitu/2008/03/14/pieldigital/1205521516_335354.html

Y si alguien an duda que la simplicidad es bella, eficiente e indicada para la realizacin


de proyectos, puede aplicar que el tiempo es oro si se tiene que desarrollar un proyecto
para una empresa, con un presupuesto y tiempo limitado.

Estos ejercicios pueden ser ejecutados en un entorno de programacin actual (2009), i


gratuito: Microsoft Visual C# Express edition.

Por otra parte, para todos aquellos que no tienen intencin de seguir el ritmo de las
novedades informticas, puede visitar esta web:
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=devesb

google: adictos al trabajo tutoriales c#

y , para terminar, un comic con una situacin muy real:


http://www.adictosaltrabajo.com/detalle-noticia.php?noticia=49

1
Aprende programacin fcilmente. Captulo 0: Iniciacin a la programacin

INTENTAR SOLUCIONAR LOS EJERCICIOS ANTES DE VER LA SOLUCIN PROPUESTA.

Breve explicacin de los enunciados del Captulo 0:

Lo ms importante de estos primeros ejercicios es la ordenacin de instrucciones.


Existen muchas soluciones para cada enunciado. Se propone una, lo ms ordenada y
estructurada posible para que los programas realizados ms adelante tambin sean
estructurados.

0.1) Pasos a seguir para conseguir cambiar una cuerda de guitarra

Para cambiar una cuerda de guitarra se hacen una serie de movimientos en el clavijero para
conseguir la tensin necesaria en cada cuerda, estos pasos son los que describe la solucin.

0.2) Resolucin del algoritmo de compra de una camisa

En el da a da realizamos muchas acciones que podran formar parte de un programa, es como


si tuviramos que dar las instrucciones, justas y necesarias, a un robot para escoger ropa.

Pensar en que instrucciones, paso a paso, seguimos para escoger ropa en una tienda.

0.3) PSEUDOCODIGO que calcula la suma de los nmeros enteros entre 1 y 10


(1+2+3+4....)

Este es el primer ejercicio matemtico, las instrucciones para resolver el problema son mas
abstractas que los ejercicios anteriores, pero siquen teniendo una dificultat inicial baja.

Qu instrucciones daramos a un nio de primaria para que sume los 10 primeros nmeros?

0.4) Pseudocdigo para calcular el producto de nmeros enteros del 10 al 20


(10*12*14....)

El mismo tipo de ejercicio anterior, pero con otra operacin matemtica.

0.5) Cdigo donde se introduce una serie de nmeros y el ordenador cuenta cuantos son
positivos.

La novedad de este ejercicio consiste en la interaccin del usuario con el ordenador, el nmero
que introduce el usuario forma parte de las instrucciones del algoritmo. Simplemente una
variable asignada desde el teclado.

2
Aprende programacin fcilmente. Captulo 0: Iniciacin a la programacin

0.6) Algoritmo con introduccin de 2 nmeros y el ordenador indica cual es el mayor

Ejercicio con una instruccin condicional doble. El ordenador sigue una alternativa u otra.

0.7) Algoritmo con introduccin de 2 nmeros y el ordenador indica cual es mayor o si


son iguales.

Ejercicio con instrucciones condicionales anidadas, ejemplo de programa estructurado.

0.8) Escribir la nota relacionada con la nota numrica: 5, suficiente, 6 bien, 7 notable...

Un ejercicio muy parecido al ejercicio 1.7, pero con la facilidad de una temtica conocida por los
estudiantes. Ver los resultados de sus esfuerzos reflejados en una nota trimestral.

Importante, como en todos los ejercicios, la estructuracin y la simplicidad de la solucin.

0.9) PSEUDOCODIGO para contar los alumnos que no llegan al 1.20 m , los que estan
entre 1.20 y 1.50, entre 1.50 y 1.60 y los que tienen ms de 1.60m de altura.

Un ejercicio bastante completo y estructurado, donde podemos trabajar en un algoritmo ms


serio y cercano a un programa informtico. La solucin es estructurada: existen otras soluciones,
pero implican ms trabajo (de comparacin) para el ordenador cuando se realice el programa.

0.10) Reparacin de una fuente de agua que no funciona.

En todas las reparaciones, sean de ordenadores o de otras mquinas se sigue un algoritmo para
conseguir que la reparacin sea lo ms rpida y eficiente posible. En el ejercicio es una fuente,
pero podra ser perfectamente cualquier mquina, motor, o aparato electrnico.

0.11) Pseudocdigo que calcula nota media de 3 asignaturas de cada uno de los 5
alumnos de clase.

Un ejercicio donde la calve est en un buen planteamiento para un slo alumno, despus
ampliar la solucin per los 5 alumnos que explica el enunciado

0.12) Algoritmo simplificado (20 lneas de cdigo) de un Cajero automtico

Este ejercicio podra ser muy largo o complicarse ms, pero lo que importa en una
estructuracin inicial simple para poder ampliarlo, si se desea, ms adelante.

Se pueden obtener tantas soluciones como personas resuelvan este ejercicio.

3
Aprende programacin fcilmente. Captulo 0: Iniciacin a la programacin

0.1) Pasos a seguir para conseguir cambiar una cuerda de guitarra

Inicio
Preparar material necesario
Extraer cuerda rota
Introducir cuerda nueva
Mientras no tenga tensin
Girar clavijero
volver

Esta afinada?
NO : Mientras no est afinada
Est en un tono ms alto?
S : Girar clavijero a la izquierda
No: Girar clavijero a la derecha
volver
S : esta afinada
Fin

0.2) Resolucin del algoritmo de compra de una camisa

Inicio
Entrar a la Tienda
Mientras no vea nada que me gusta
Buscar
volver

Mirar precio
Es un precio interesante?
S: Es de mi talla?
S: Voy al probador
Me gusta cmo me queda?
S: Compro la ropa
NO: volver a buscar

NO: volver a buscar

NO: volver a buscar


Fin
4
Aprende programacin fcilmente. Captulo 0: Iniciacin a la programacin

0.3) PSEUDOCODIGO que calcula la suma de los nmeros enteros entre 1 y 10 (1+2+3+4....)

inicio
suma  0: conta  0

Mientras conta menor que 10


conta  conta + 1
suma  suma + conta
Fin Mientras

Escribir La suma es; suma


fin

0.4) Pseudocodigo para calcular el producto de nmeros enteros del 10 al 20 10*12*14...

inicio
suma  0: conta  10: producto  1

Mientras conta menor o igual que 20


producto  producto * conta
conta  conta + 2
Fin Mientras

Escribir El producto es; producto


fin

0.5) Cdigo donde se introduce una serie de n y el ordenador cuenta cuantos son positivos.

inicio
positivos 0: conta 0
Introducir "Introduce nmero";numero

Mientras numero distinto 999


conta  conta + 1
SI numero >0
positivos  positivos +1

Introducir "Introducir nmero";numero


Fin Mientras

Escribir "Has introducido un total de "; conta


Escribir "I son positivos "; positivos
fin

5
Aprende programacin fcilmente. Captulo 0: Iniciacin a la programacin

0.6) Algoritmo con introduccin de 2 nmeros y el ordenador indica cual es el mayor

inicio
num1 0: num2 0
Introducir "Introduce primer nmero";num1
Introducir "Introduce segundo nmero";num2

Si (num1>num2)
Escribir "El mayor es el primero ", num1
sino
Escriure "El mayor es el segundo ", num2

fi si

Fin

0.7) Algoritmo con introduccin de 2 nmeros y el ordenador indica cual es el mayor o si son
iguales

inicio
num1 0: num2 0
Introducir "Introduce primer nmero";num1
Introducir "Introduce segundo nmero";num2

Si (num1>num2)
Escribir "El mayor es el primero ", num1
sino
SI (num2>num1)
Escribir "El mayor es el segundo ", num2
sino
Escribir "Los nmeros son iguales"
fin si

fin si

Fin

6
Aprende programacin fcilmente. Captulo 0: Iniciacin a la programacin

0.8 ) Escribir la nota relacionada con la nota numrica: 5, suficiente, 6 bien, 7 notable...

inicio
Leer nota
Mientras nota mayor que 0 y menor que 10

si nota >= 5
si nota >= 6
si nota >= 7
si nota >= 9
resultado  sobresaliente
si no
resultadonotable
fin si

si no
resultado bien
fin si

si no
resultadoaprobado
fin si

si no
resultado suspendido
fin si

fin Mientras

Escribir resultado

fin

7
Aprende programacin fcilmente. Captulo 0: Iniciacin a la programacin

0.9) PSEUDOCODIGO para contar los alumnos que no llegan al 1.20 m , los que estn entre
1.20 y 1.50, entre 1.50 y 1.60 y los que tienen ms de 1.60m de altura.

algoritmo estadsticas altura

var
entero: conta1, conta2, conta3, conta4
real : altura

inicio
conta1  0 , conta2 0 , conta 3  0, conta 4  0

Leer altura
Mientras altura <> -1 hacer // -1 valor centinela (flag final)

si altura >= 1.20


si altura >= 1.50
si altura >= 1.60
conta 4  conta4 +1 // altura mayor 1.60
si no
conta 3  conta3 +1 // altura entre 1.50 y 1.60
fin si
si no
conta2  conta2 +1 // entre 1.20 y 1.50
fin si

si no
conta 1  conta1 +1 // altura menor que 1.20
fin si

fin Mientras

escribir conta1 ,conta2, conta3, conta4

fin

8
Aprende programacin fcilmente. Captulo 0: Iniciacin a la programacin

0.10) Reparacin de una fuente de agua que no funciona.


El sistema a reparar consta de un motor dentro de una fuente que hace salir agua. En el exterior
hay una caja de conexin elctrica a la cual llega la corriente. Sale de esta caja, un cable de
corriente que se conecta a un enchufe de 220V.

Inicio
Mientras Fuente NO Marcha hacer

Llega corriente al motor?


NO llega corriente al motor

Llega corriente a la caja?


NO llega corriente a la caja

Hay corriente en el enchufe?


NO hay corriente en el enchufe
Reparar enchufe
Fuente S marcha

S hay corriente
Reparar cable enchufe-caja
Fuente S marcha

S llega corriente a la caja


Reparar cable entre caja y motor de la fuente
Fuente S marcha

S llega corriente al motor


Cambiar motor
Fuente S marcha

Fin Mientras

Avisar que ya funciona


Cobrar factura
Fin
9
Aprende programacin fcilmente. Captulo 0: Iniciacin a la programacin

0.11) Calcula nota media de 3 asignaturas de cada uno de los 5 alumnos de clase.

Pseudocdigo media de notas para cada alumno

inicio

alumnos 5: conta 1: contanota1: suma 0

Mientras conta menor que alumnos


Escribir "Alumno N "; conta

Mientras contanota menor o igual que 3


Escribir "Introduce nota "; contanota;
Introducir numero
contanotacontanota + 1
sumasuma +numero
fin Mientras

Escribir "La media de este alumno es "; suma/3

conta conta +1
contanota1
suma0

fin Mientras

Escribir "Final del programa"

fin

10
Aprende programacin fcilmente. Captulo 0: Iniciacin a la programacin

0.12) Algoritmo simplificado de un Cajero automtico

inicio

Escribir Qu operacin quiere realizar? Ingresar/Retirar


Leer respuesta

Escribir Qu cantidad?
Leer cantidad

si respuesta = ingresar
Hacer ingreso de cantidad
Escribir Ingreso hecho en su cuenta

si no
si cantidad divisible por 5 (billetes disponibles de 5 ,10 i 20)
Escribir A dbito o crdito?
Leer forma

si forma = debito
extraer de su cuenta
si no
extraer a crdito
fin si

si no
Escribir Solo billetes de 5, 10 y 20
fin si

fin si

Escribir Gracias por utilizar este servicio

fin

11
Aprende programacin fcilmente. Captulo 1: Primeros programas

Captulo 1

Programas ejecutables en Basic y C#

12
Aprende programacin fcilmente. Captulo 1: Primeros programas

Captulo 1: Programas ejecutables en Basic y C#

Breve explicacin de los enunciados del Captulo 1:

Hemos aprendido como plantear un algoritmo para la resolucin de un problema, ahora


necesitamos aprender el idioma del ordenador para que ejecute la solucin diseada.

Para que el ordenador entienda nuestras instrucciones, necesitaremos un entorno de trabajo


(IDE) que nos permita escribir y corregir cdigo, as como tambin ejecutarlo.

Por su proximidad al pseudocdigo y su facilidad de aprendizaje, se han resuelto unos cuantos


ejercicios en lenguaje Basic . El entorno de trabajo escogido es el del SmallBasic, inicialmente
destinado a mquinas porttiles y mviles, tiene versiones para muchos sistemas operativos:
smallbasic (de fcil bsqueda en Google)

- BASIC: http://smallbasic.sourceforge.net/ , versin: smallbasic 0_9_7_ftlk

No es el objetivo de este libro ensear a manejar entornos de programacin. Existen tutoriales


muy buenos en internet para empezar a programar en Microsoft Visual C#:

Bsquedas en Google: Tutorial c#

www.devjoker.com : Tutorial C#

http://functionx.com/csharp/Lesson01.htm : FunctionX.com

Libro gratuito recomendado: www.josanguapo.com

13
Aprende programacin fcilmente. Captulo 1: Primeros programas

1.1) 1.2) Comprobar con la calculadora del S.O. 4 dgitos binarios son 1 digito
hexadecimal.
La relacin decimal-hexadecimal-binario puede haber perdido importancia en lenguajes de alto
nivel, pero ha sido la base matemtica de muchas operaciones en lenguaje C.

1.3) Programa que calcula la suma de los nmeros enteros entre 1 y 10 (1+2+3+4....)
1.4) Programa producto nmeros enteros del 10 al 20 (10*12*14...)
Los ejercicios 1.4 - 1.5 tienen fcil traslacin al lenguaje de programacin BASIC.

1.5 - 1.6) Programa: usuario introduce nmeros y el ordenador cuenta cuantos son
positivos.
Ya podemos comparar ambos lenguajes BASIC- C# , el mismo pseudocdigo escrito en cada
uno de estos lenguajes. Nuestra Piedra de Rosetta particular (google: piedra rosetta)

1.7) Contabiliza personas de ms de 180, entre 180 y 170, 170 y 160, y menores de 160cm.
El mismo pseudocdigo que el ejercicio 1.7 para comprobar que si hemos pensado
correctamente la solucin, es fcil implementarla con un lenguaje de programacin

1.8) Programa para poner notas: suspendido, aprobado, bien... con la nota numrica.
Solucin del ejercicio 0.8 con lenguaje C#

1.9) Introducir nmeros y el ordenador ensea el mximo y cuantas veces se ha repetido.


Ejercicio para insistir y asimilar los conceptos de los ejercicios 2.3 y 2.4

1.10) Calcula nota media de 3 asignaturas de cada uno de los 5 alumnos de clase.
Solucin en BASIC y C# del ejercicio 1.8

1.11) Programa para calcular salario semanal si el precio/hora es 10 , hora extra a 15


Un inicio de aplicacin prctica, y muy tpica, de la programacin: clculo de nominas.

1.12) Programa en el cual se introducen 3 nmeros, el ordenador seala cual es el central.


Es importante pensar en una solucin de este ejercicio antes de ver la solucin propuesta.

1.13) Realizar programa en el que el ordenador piensa en un nmero al azar entre 1 y 50.
El usuario ha de adivinarlo en 5 oportunidades. El ordenador sealar si es mayor o
menor.

1.14) Contabiliza personas de ms de 180, entre 180 y 170, 170 y 160, y menores de 160cm.
Solucin con C# del ya resuelto ejercicio 1.7

1.15) Introducir n (finaliza con el 999) . Muestra mximo y cuantas veces se ha repetido.

1.16) Cajero automtico: Solucin del ejercicio 1.10

14
Aprende programacin fcilmente. Captulo 1: Primeros programas

1.1) Ejecutar el siguiente programa en Basic

REM Programa nmeros decimal, binario , hexadecimal


10 x1=&h0001: x2=1 : x3=&b0001
20 print x1,x2,x3
30 y1=&h000A: y2=10: y3=&b00001010
40 print y1,y2,y3
50 z1=&h001B: z2=27: z3=&b00011011
60 print z1,z2,z3
70 end

1.2) Comprobar con la calculadora del S.O. (ver cientfica) que a cada 4 digitos binarios
corresponden a 1 digito hexadecimal. Ejemplos: 10012 -> 916 , 11002 ->C16 , 1000 10012 ->8916

1.3) Programa que calcula la suma de los nmeros enteros entre 1 y 10 (1+2+3+4....)

REM Programa suma nmeros enteros

suma =0: conta =0


WHILE conta <10
conta = conta + 1
suma = suma + conta
WEND

PRINT La suma es; suma


END

Llenguaje C:

#include <iostream>
using namespace std;

void main()
{
int suma=0; int conta =0;

while (conta<10)
{
conta = conta +1;
suma = suma +conta;
}
printf("\n\n La suma es %d ",suma);
printf("\n");
}

15
Aprende programacin fcilmente. Captulo 1: Primeros programas

1.4) Programa producto nmeros enteros del 10 al 20 10*12*14...

REM Programa producto nmeros enteros

suma =0: conta = 10: producto =1


WHILE conta <= 20
producto = producto * conta
conta = conta + 2
WEND

PRINT El producto es; producto


END

1.5) Programa : El usuario introduce nmeros y el ordenador cuenta cuantos son positivos.

REM Programa conta nmero positivos

positius =0: conta =0


INPUT "Introduce nmero";numero

WHILE numero <>999


conta = conta + 1
if numero >0 then positivos = positivos +1

INPUT "Introduce nmero";numero


WEND

PRINT "Has introducido un total de "; conta


PRINT "y son positivos "; positivos
END

TUTORIAL INICIO C# : http://functionx.com/csharp/Lesson01.htm

namespace Proyecto1
{
class Holamundo
{
public static void Main(String[] args)
{
Console.WriteLine("Hola {0}!", args[0]);
}
}
}

Compilar: csc Holamundo.cs


Ejecutar: Holamundo Maria

16
Aprende programacin fcilmente. Captulo 1: Primeros programas

1.6) Programa : El usuario introduce nmeros y el ordenador cuenta cuantos son positivos.

class Program
{
static void Main(string[] args)
{
int positivos = 0; int conta = 0; int numero;

Console.WriteLine("Introduce nmero ");


numero = Int32.Parse(Console.ReadLine());

while (numero != 999)


{
conta = conta + 1;
if (numero > 0) positivos = positivos + 1;

Console.WriteLine("Introduce nmero ");


numero = Int32.Parse(Console.ReadLine());
}

Console.WriteLine("Introducidos un total de {0}", conta);


Console.WriteLine("y son positivos {0}", positivos);

} //fin Main
}

1.7) Contabiliza personas de ms de 180, entre 180 y 170, 170 y 160, y menores de 160cm.

conta1 = 0:conta2=0:conta3 =0:conta4 =0


INPUT "Introduce altura en cm"; altura
WHILE altura <> 999
if altura>=160 then
if altura>=170 then
if altura >=180 then
conta1 = conta1 + 1
else
conta2 = conta2 + 1
fi
else
conta3= conta3 + 1
fi
else
conta4=conta4 + 1
fi
INPUT "Introduce altura en cm"; altura
WEND

print "Ms grandes de 180 " ;conta1


print "Entre 170 y 180 ";conta2
print "Entre 160 y 170 ";conta3: print "Ms bajas que 160 ";conta4
END
17
Aprende programacin fcilmente. Captulo 1: Primeros programas

1.8) Programa para poner notas: suspendido, aprobado, bien ... a parir de la nota numrica.

class Program
{
static void Main(string[] args)
{
double nota=0;
string c_nota = "no asignada";

bool repetir = true;


while (repetir == true)
{
try
{
Console.WriteLine("Introduce nota");
nota = Double.Parse(Console.ReadLine());
repetir = false;
}
catch (FormatException)
{
Console.Clear();
Console.WriteLine("Introducir slo valores numricos");
repetir = true;
}
}

if (nota >0 && nota<10)


{
if (nota>=5)
{
if (nota>=6)
{
if (nota >= 7)
{
if (nota >= 9) c_nota = "sobresaliente";
else c_nota = "notable";
}
else c_nota = "bien";
}
else c_nota="aprobado";
}
else c_nota ="suspendido";
}

if (c_nota != "no asignada")


{
Console.WriteLine("La nota es de {0}", c_nota);
}
else Console.WriteLine("Nota no valida");

Console.WriteLine();
Console.WriteLine("Final del programa");

} // fin Main
} // fin Class

18
Aprende programacin fcilmente. Captulo 1: Primeros programas

1.9) Introduce nmeros, el ordenador ensear el mximo y cuantas veces se ha repetido.

REM Programa maximo numero introducido


LET numero=0: LET maxi=0: LET conta =0
INPUT "Introduce nmero"; numero
WHILE numero <> 999
if numero>maxim then
maxim = numero
conta = 1
else
if numero = maxim then conta = conta +1
fi
print "El maxim es:"; maxim

INPUT "Introduce nmero"; numero


WEND

print "El maxim es" ;maxim


print "y se ha repetido ";conta; " veces"
END

1.10) Calcula nota media de 3 asignaturas de cada uno de los 5 alumnos de clase.

REM Programa media de notas para cada alumno

alumnos =5: conta =1: contanota =1: suma =0

WHILE conta <= alumnos


PRINT "Alumno n ";conta

WHILE contanota <= 3


PRINT "Introduce nota "; contanota;
INPUT numero
contanota = contanota + 1
suma = suma +numero
WEND

PRINT "La media de este alumno es "; suma/3


PRINT
conta =conta +1
contanota=1
suma=0
WEND

PRINT "Final del programa"


END
19
Aprende programacin fcilmente. Captulo 1: Primeros programas

VERSIN C#

using System;
using System.Collections.Generic;
using System.Text;

namespace Ejercicio_1_10
{
class Programa_notas
{
static void Main(string[] args)
{
int alumnos =5; int conta =1; int contanota =1; int suma =0;
int nota;
while (conta <= alumnos)
{
Console.WriteLine("Alumno nmero {0}",conta);

while (contanota <= 3)


{
Console.WriteLine ("Introduce nota ");
string temp = Console.ReadLine( );
nota = Int32.Parse(temp);

contanota = contanota + 1;
suma = suma + nota;
}

Console.WriteLine("La media del alumno es {0}",suma/3);


Console.WriteLine(" ");
conta =conta +1;
contanota=1;
suma=0;
}

Console.WriteLine("Final del programa");

} //fin Main

} //fin class

} // fin namespace

20
Aprende programacin fcilmente. Captulo 1: Primeros programas

1.11) Programa para calcular salario semanal si el precio/hora es 10 y el de la hora extra es 15

REM Programa calculo salario semanal

trabajadores =5: conta =1: preuhora= 10: salario =0: horas =0

WHILE conta <= trabajadores


PRINT "Trabajador n ";conta

INPUT "n horas trabajadas"; horas;


if horas>40 then
extra = horas -40
horas =40
fi

salario = (horas*preuhora) + (extra*preuhora*1.5)

PRINT "Salario semanal "; salario


PRINT
conta =conta +1
WEND

PRINT "Final del programa"


END

21
Aprende programacin fcilmente. Captulo 1: Primeros programas

1.12) Programa en el cual se introducen 3 nmeros, el ordenador seala cual es el central.

static void Main(string[] args)


{
int a, b, c, central;
Console.WriteLine("Introduce nmero a ");
string temp = Console.ReadLine();
a = Int32.Parse(temp);

Console.WriteLine("Introduce nmero b ");


temp = Console.ReadLine();
b = Int32.Parse(temp);

Console.WriteLine("Introduce nmero c ");


temp = Console.ReadLine();
c = Int32.Parse(temp);

if (a > b)
{
if (b > c) central = b;
else
{
if (a > c) central = c;
else central = a;
}
}
else
{
if (a > c) central = a;
else
{
if (c > b) central = b;
else central = a;
}
}

Console.WriteLine("El nmero central s {0}", central);

22
Aprende programacin fcilmente. Captulo 1: Primeros programas

1.13 ) Realizar programa en el que el ordenador piensa en un nmero al azar entre 1 y 50.
El usuario ha de adivinarlo en 5 oportunidades. El ordenador sealar si es mayor o menor.

rem randomize(timer)
label inicio
cls
conta =0: numero =0: azar =0:encertat =0
azar = int(rnd*50)+1

WHILE conta < 5 AND acertado = 0


PRINT "Oportunidades que quedan: "; (5-conta);
?:?:?
PRINT "Introduce numero "

INPUT numero

if numero > azar then


PRINT "El numero es menor"
else
if numero < azar then
PRINT "El numero es mayor"
else
PRINT "Enhorabuena, has acertado"
acertado = 1
endif
endif

conta = conta +1
WEND

PRINT:PRINT "Fin del programa"

23
Aprende programacin fcilmente. Captulo 1: Primeros programas

1.14) Contabiliza personas de ms de 180, entre 180 y 170, 170 y 160, y menores de 160cm.

using System;
using System.Collections.Generic;
using System.Text;

namespace Exercicio14
{
class Class1
{
static void Main(string[] args)
{

int conta1 = 0; int conta2=0; int conta3 =0; int conta4 =0;

Console.WriteLine ("Introduce altura en cm");


int altura = Int32.Parse(Console.ReadLine());

while (altura !=999)


{
if (altura>=120)
{
if (altura>=150)
{
if (altura >= 160) conta1 = conta1 + 1;
else conta2 = conta2 + 1;
}
else conta3= conta3 + 1;
}
else conta4=conta4 + 1;

Console.WriteLine ("Introduce altura en cm");


altura = Int32.Parse(Console.ReadLine());
}

Console.WriteLine("Ms altos de 160 {0}",conta1);


Console.WriteLine("Entre 150 y 160 {0}", conta2);
Console.WriteLine("Entre 120 y 150 {0}", conta3);
Console.WriteLine("Ms bajos que 120 {0}", conta4);

} //fin Main

} //fin class

} //fin namespace

24
Aprende programacin fcilmente. Captulo 1: Primeros programas

1.15) Introducir nmeros (final 999) y el ordenador da el mximo y cuantas veces se ha


repetido.

using System;
using System.Collections.Generic;
using System.Text;

namespace Ejercicio15
{
class Program
{
static void Main(string[] args)
{

//Programa maxim numero introducido


int numero=0; int maxim=0; int conta =0;

Console.WriteLine ("Introduce nmero");


string temp = Console.ReadLine( );
numero = Int32.Parse(temp);

while (numero != 999)


{
if (numero>maxim)
{
maxim = numero;
conta = 1;
}
else if (numero == maxim) conta = conta +1;

Console.WriteLine("El maximo es {0}",maxim);


Console.WriteLine("-");
Console.WriteLine ("Introduce nmero:");
temp = Console.ReadLine( );
numero = Int32.Parse(temp);
}

Console.WriteLine("El maximo es {0}",maxim);


Console.WriteLine("y se ha repetido {0}", conta);

}
}

25
Aprende programacin fcilmente. Captulo 1: Primeros programas

1.16 ) Cajero automtico

using System;
using System.Collections.Generic;
using System.Text;

namespace Ejercicio16
{
class Program
{
static void Main(string[] args)
{

string respuesta;

Console.WriteLine("Quiere Extraer o Ingresar (e/i)?");


string tecla = Console.ReadLine();

Console.WriteLine("Qu cantidad?");
double cantidad = Double.Parse(Console.ReadLine());

if (tecla =="i")
{
respuesta=" Ingresado en su cuenta";
}
else
{
if (cantidad % 5 ==0) // divisible per 5
{
Console.WriteLine("A Credito o Debito (c/d)");
tecla = Console.ReadLine();
if (tecla =="d")
{
respuesta=" Extraido de su cuenta";
}
else respuesta="Extraido a credito";
}
else respuesta ="Slo billetes de 5, 10, 20 i 50";
}

Console.WriteLine();
Console.WriteLine(respuesta);
Console.WriteLine("La cantidad de {0}",cantidad);
Console.WriteLine();
}

}
}

26
Aprende programacin fcilmente. Captulo 2: Bucles y funciones

Captulo 2

Bucles y Funciones

27
Aprende programacin fcilmente. Captulo 2: Bucles y funciones

2.1) Programa en el que el ordenador lanza 50 veces un dado y cuenta las veces sale el n 1.

Ejemplo para el uso de bucles for para repetir un nmero determinado de veces unas
instrucciones. Tambin muestra cmo conseguir nmeros al azar.

2.2) Programa que muestra 15 lneas como estas: 1 12 123 1234


Ejemplo del uso de dos bucles anidados de tipo for

2.3) Programa que dibuja un Triangulo issceles


Una aplicacin ms compleja i completa del uso de bucles anidados.

2.4) Programa que seala si es mltiplo del nmero 5


La primera funcin que aplicamos retorna un valor boolean (verdadero/falso) si el nmero que
enviamos per analizar es o no mltiplo de 5.

2.5) Programa que muestra el da que ser maana. Ex: 31/12/08 -> 01/01/09
Clsico ejercicio donde se ponen en prctica los conocimientos de programacin estructurada.
Se deja como ejercicio pendiente la versin en C# (por otro lado, nada complicada de realizar)

2.6) Programa para calcular Potencias, Tensiones e Intensidades. P=V*I


Ms prcticas con funciones simples, comparando diferentes lenguajes de programacin.

2.7) rea Triangulo Variables locales/globales


Qu pasa si necesitamos una variable global a todas las funciones del proyecto?.

2.8) Clculo raz cuadrada.


Podemos crear nuestras propias instrucciones de sistema operativo, compilando este
programa y ejecutando, per ejemplo, desde MS-DOS.

2.9) Calculadora
Ejemplo completo para trabajar con varias funciones en un programa .

2.10) Una empresa nos ha encargado un programa para calcular las nminas de los
trabajadores.

El sueldo base semanal sale aplicando la siguiente frmula: horastrabajo * preciohora +


horesextra*preciohoraextra

El preciohora es una constante=6. El preciohoraextra depende de las h.extra hechas: si son


menos de 10h extras semanales, el precio es un 50% mayor que el preciohora (* 1,5). Si se
hacen entre 10 y 20h extra, el precio es un 40% mayor. Si se hacen ms de 20h, el precio es
un 20% mayor.

Si el trabajador es de categora 3, el preciohora es el constante.


Si es de categora 2; el preciohora es un 25% mayor y si es de categora 1 es un 45% ms....

28
Aprende programacin fcilmente. Captulo 2: Bucles y funciones

2.1) Programa en el que el ordenador lanza 50 veces un dado y cuenta las veces sale el n 1.

contador =0
randomize timer
cls

for t = 1 to 50
dado = int(rnd*9)+1
print dado;
if dado = 1 then contador = contador + 1
next t

print "Han salido ";contador ;" nmeros 1 a la lista"


end

VERSIN C#

static void Main(string[] args)


{
int contador =0; int dado=0;
Random numero = new Random();
Console.Clear();

for (int t = 0; t<=50; t=t + 1)


{
dado = numero.Next(1, 7);
if (dado == 1)
{
contador = contador + 1;
Console.ForegroundColor = ConsoleColor.Red;
}
else Console.ForegroundColor = ConsoleColor.Gray;

Console.Write(" {0}", dado);


}

Console.WriteLine("-");
Console.WriteLine("Repetido el nmero1 {0} veces",contador);
}

Google: Consola C# , console C#


http://www.c-sharpcorner.com/UploadFile/scottlysle/ColorConsoleCS06082008055747AM/ColorConsoleCS.aspx

29
Aprende programacin fcilmente. Captulo 2: Bucles y funciones

2.2) Programa que muestra 15 lneas como estas: 1 12 123 1234


1
12
123 ....

static void Main(string[] args)


{
int i, j;
for (i = 1; i <= 15; i++) // 15 lineas
{
for (j = 1; j <= i; j++) // nmeros a cada lnea
Console.Write(" - {0}", j);
Console.WriteLine(" ") ;
}
}

2.3) Programa que dibuja un Triangulo issceles

static void Main(string[] args)


{
Console.Clear();

// dibujo de cada linea (bucle externo)


for (int fila=1; fila <= 7; fila ++)
{
//dibuja espacios en blanco (1er bucle interno)
for (int espacios = 7 - fila; espacios > 0; espacios--)
Console.Write(" ");// espai en blanc

// dibuja estrellas (2 bucle interno)


for (int conta = 1; conta < (2 * fila); conta++)
Console.Write("*");

Console.WriteLine(" ");
}
}

30
Aprende programacin fcilmente. Captulo 2: Bucles y funciones

2.4) Programa que seala si un nmero es mltiplo del nmero 5

class Exercici4
{
static void Main(string[] args)
{
int num = 1;
bool respuesta;

while (num <= 50)


{
Console.Write(" - {0}", num);
respuesta = multiplo5(num);

if (respuesta) Console.WriteLine(" Es mltiplo de 5");


else Console.WriteLine(" No es mltiplo de 5");

num++;
}
}

public static bool multiplo5 (int n)


{
if((n % 5) !=0) return false;
else return true;
}

31
Aprende programacin fcilmente. Captulo 2: Bucles y funciones

2.5) Programa que muestra el da que ser maana. Ex: 31/12/08 -> 01/01/09

#include <iostream>
using namespace std;
int funcion_divisor(int numero, int divisor);

void main()
{
int d,max,m,a,resto;

printf("Introduce el dia: ");


scanf("%d",&d);
printf("\nIntroduce el mes: ");
scanf("%d",&m);
printf("\Introduce el anyo: ");
scanf("%d",&a);
printf("\nHoy es dia %d de %d del %d",d,m,a);

if (m==4 || m==6 || m==9 || m==11) max=30;


if (m==1 || m==3 || m==5 || m==7 || m==8 || m==10||m==12) max=31;

if (m==2)
{
resto = funcion_divisor(a,4);
if (resto==0) max=29;
else max=28;
}

d++;

if (d>max)
{
d=1;
m++;
if (m>12) { m=1; a++; }
}

printf("\n\ny maana ser %d de %d del %d",d,m,a);


printf("\n\n");
}

int funcion_divisor(int numero, int divisor)


{
int resto = numero % divisor;
return (resto);
}

32
Aprende programacin fcilmente. Captulo 2: Bucles y funciones

2.6) Programa para calcular Potencias, Tensiones e Intensidades. P=V*I

label inicio
cls
Print "Bienvenid@ al programa" : ?:?
Print "Qu quieres calcular?"
input "1- Potncia , 2-Intensidad 3-Tensin "; opcion
if opcion ="1" then goto Calculo_Potencia
if opcion ="2" then goto Calculo_Intensidad
end

label Calculo_Potencia
print : print "Clculo de potncia "
input "Introduce Tensin: ";tension
input "Introduce Intensidad: ";intensidad
print " - "
potencia = tension * intensidad
print "La potncia es de ";potencia

input "Pulsa (s) para volver a calcular"; otra


if otra ="s" then goto inicio
end

label Calculo_Intensidad
print : print "Clculo de Intensidad "
input "Introduce Potencia: ";potencia
input "Introduce Tensin: ";tension
print " - "
Intensidad = potencia / tension
print "La Intensidad es de ";intensidad ;: ? " ampers"

input "Pulsa (s) para volver a calcular"; otra


if otra ="s" then goto inicio
end

33
Aprende programacin fcilmente. Captulo 2: Bucles y funciones

VERSIN C#

using System;
using System.Collections.Generic;
using System.Text;

class Ejercicio_2_6
{
static void Main(string[] args)
{
string n_resultado="";
double resultado=0;
string teclado ="null";
while (teclado != "4")
{
Console.WriteLine("-");
Console.WriteLine("1-Potncia 2-Tensin 3-Intens. 4-Salir");
teclado = Console.ReadLine();

switch (teclado)
{
case "1":
n_resultado = "Potencia";
resultado = fcalcul(n_resultado,"Tension","Intens."); break;
case "2":
n_resultado = "Tension";
resultado = fcalcul(n_resultado, "Potencia", "Int."); break;
case "3":
n_resultado = "Intensidad";
resultado = fcalcul(n_resultado, "Potencia", "Tens"); break;
case "4":
break;
default: Console.WriteLine("Tecla equivocada") ; break;
}

Console.WriteLine("Result {0} es {1}", n_resultado, resultado);


}
} // fi Main

public static double fcalcul(string n_calculo,string nom1,string nom2)


{
Console.WriteLine("Introduce {0}",nom1);
string temp1 = Console.ReadLine();
int var1 = Int32.Parse(temp1);

Console.WriteLine("Introduce {0}", nom2);


string temp2 = Console.ReadLine();
int var2 = Int32.Parse(temp2);

if (n_calculo=="Potencia") return (var1 * var2);


else return (var1 / var2);
}

} //fi class Exercici6

34
Aprende programacin fcilmente. Captulo 2: Bucles y funciones

2.7) rea Triangulo Variables locales/globales

using System;
using System.Collections.Generic;
using System.Text;

namespace Ejercicio_2_7
{
class ProgramTriangulo
{
static int conta =0; //pseudo-global

static void Main(string[] args)


{
double varBase,varAltura,resultado,valor;

do
{
Console.WriteLine ("PROGRAMA CALCULO TRIANGULO");
Console.WriteLine ("Introduce base");
varBase = Double.Parse(Console.ReadLine());

Console.WriteLine ("Introduce altura");


varAltura = Double.Parse(Console.ReadLine());

resultado = calcula_area (varBase,varAltura);


Console.WriteLine("El resultado es {0}", resultado);

Console.WriteLine("Para continuar calculos, pulsa 1");


valor = Double.Parse(Console.ReadLine());

} while (valor == 1);

}//fin Main

public static double calcula_area (double x, double y)


{
ProgramTriangulo.conta ++;
Console.WriteLine("Nmero veces calculada rea {0}",conta);
double area = (x * y)/2;
return (area);
}

}// fin Class


}

35
Aprende programacin fcilmente. Captulo 2: Bucles y funciones

2.8) Clculo raz cuadrada.

Proyecto: Exercici28
Archivo : Raizcuadrada.cs

namespace Exercici28
{
class Raizcuadrada
{
static void Main(string[] args)
{
double numero = Double.Parse(args[0]);
if (numero >= 0)
{
double x = calcul(ref numero);
Console.WriteLine("La raiz es {0}", x);
Console.WriteLine("y su cuadrado es {0}", numero);
}
else
{
Console.WriteLine("No se puede, nmero negativo.");
}
}

static public double calcul(ref double numero)


{
double resultado = System.Math.Sqrt(numero);
numero = numero * numero;
return (resultado);
}

}
}

EJECUTAR EN EL SISTEMA OPERATIVO MS_DOS:

csc Raizcuadrada.cs

Raizcuadrada 9

36
Aprende programacin fcilmente. Captulo 2: Bucles y funciones

2.9) Calculadora

using System;
using System.Collections.Generic;
using System.Text;

namespace Calculadora
{
class Program
{
public static double resultado;

static void Main(string[] args)


{
double operador1, operador2;
int tecla=1; string repetir;

do
{
Console.WriteLine("Calculadora: "); Console.WriteLine();
Console.WriteLine("1- Suma");
Console.WriteLine("2- Multiplicacion");
Console.WriteLine("3- Raiz quadrada");
Console.WriteLine("4- Factorial");

bool repetir_try = true;


while (repetir_try == true)
{
try
{
Console.WriteLine("\nIntroducir (1-4):");
tecla = int.Parse(Console.ReadLine());

if (tecla>1 || tecla <=4)


repetir_try = false;
}
catch (FormatException)
{
Console.Clear();
Console.WriteLine("Slo nmeros.");
repetir_try = true;
}
}

if ( tecla == 3 || tecla == 4 ) // un operador


{
Console.WriteLine("\nIntroducir nmero a calcular:");
operador1 = Double.Parse(Console.ReadLine());

if (tecla == 3 )
resultado = raizcuadrada(operador1);
else if ( tecla == 4 )
resultado = factorial(operador1);
}
37
Aprende programacin fcilmente. Captulo 2: Bucles y funciones

else // funciones ms de un operador


{
Console.WriteLine("\nIntroducir primer operador:");
operador1 = Double.Parse(Console.ReadLine());

Console.WriteLine("\nIntroducir segundo operador:");


operador2 = Double.Parse(Console.ReadLine());

if ( tecla == 1 ) resultado = suma (operador1,operador2 );


else if( tecla == 2)resultado = multiplica(operador1,operador2 );
}

Console.WriteLine("\nEl resultado es: {0}", resultado);

Console.WriteLine("\n Pulsa cualquier tecla. Final con 'f'");


repetir = Console.ReadLine();

}while ( repetir != "f" );

}//fin main

public static double suma (double operador1 , double operador2)


{
return (operador1 + operador2);
}

public static double multiplica (double operador1 , double operador2)


{
return (operador1 * operador2);
}

public static double raizcuadrada (double operador1)


{
return (System.Math.Sqrt(operador1));
}

public static double factorial (double operador1)


{
double calcul =1;
for (;operador1>=1;operador1--)
{
calcul = calcul * operador1;
}
return (calcul);
}

} //fi Class

38
Aprende programacin fcilmente. Captulo 2: Bucles y funciones

2.10) Una empresa nos ha encargado un programa para calcular las nminas de los
trabajadores.

El sueldo base semanal sale aplicando la siguiente frmula: horastrabajo * preciohora +


horesextra*preciohoraextra

El preciohora es una constante=6. El preciohoraextra depende de las h.extra hechas: si son


menos de 10h extras semanales, el precio es un 50% mayor que el preciohora (* 1,5). Si se
hacen entre 10 y 20h extra, el precio es un 40% mayor. Si se hacen ms de 20h, el precio es
un 20% mayor.

Si el trabajador es de categora 3, el preciohora es el constante.


Si es de categora 2; el preciohora es un 25% mayor y si es de categora 1 es un 45% ms....

Calculado el sueldo base, se ha de restar el impuesto IRPF (20%) para obtener sueldo neto.
Si el trabajador es soltero y el sueldo base es menor de 1000, el IRPF es del 18%, si el sueldo
es mayor de 1000, es del 20%.
Si el trabajador est casado con un sueldo menor de 1000, el IRPF es del 15%, si el sueldo es
mayor que 1000, el IRPF es 20%.

class Nominas
{
const double IRPF=0.20;
static double preciohtrabajo=6;

static void Main(string[] args)


{
int departamento,estadocivil;
double hextra,htrabajo,f_IRPF,trabajador=1;
double
sueldobase,sueldoneto,factorhextra,fdepartamento,preciohextra;
string opcion="s";

while (opcion == "s")


{

do // try /catch a ReadLine


{ Console.WriteLine("Introduce departamento (1-5)");
departamento = int.Parse(Console.ReadLine());
} while (departamento <0 || departamento >5);

fdepartamento = Calcula_fdepartamento(departamento);

do
{
Console.WriteLine("Introduce horas semanales (0-40)");
htrabajo = Double.Parse(Console.ReadLine());
} while (htrabajo < 0 || htrabajo > 40);

do
{ Console.WriteLine("Introduce horas extra semanales (0-40)");
hextra = Double.Parse(Console.ReadLine());
} while (hextra <0 || hextra >40);

39
Aprende programacin fcilmente. Captulo 2: Bucles y funciones

//Calculamos el factor hora extra y el precio de la hora extra


factorhextra = Calcula_fhextra(hextra);
preciohextra = preciohtrabajo * factorhextra;

do
{
Console.WriteLine("Intro. estado (1 soltero -2 casado)");
estadocivil = int.Parse(Console.ReadLine());
} while (estadocivil != 1 && estadocivil != 2);

sueldobase =
Calcula_sueldobase(htrabajo,fdepartamento,hextra,preciohextra);

f_IRPF = Calcula_IRPF(sueldobase,estadocivil);

sueldoneto = sueldobase - (sueldobase*IRPF);

Console.WriteLine("Trabajador {0} sueldo {1} y neto de {2}",


trabajador,sueldobase,sueldoneto);

Console.WriteLine("Continuar calculando nminas? (s/n)");


opcion = Console.ReadLine();

}
Console.WriteLine("Programa finalitzat");
}

//funcions

static double Calcula_fdepartamento(int x)


{
switch (x)
{
case 1: return 1;
case 2: return 1.25;
case 3: return 1.35;
case 4: return 1.45;
case 5: return 1.55;
default:
return 1;
}
}

static double Calcula_fhextra(double phoresextra)


{
if (phoresextra>20) return 1.2;
else if (phoresextra>10) return 1.4;
else return 1.5;
}

40
Aprende programacin fcilmente. Captulo 2: Bucles y funciones

static double Calcula_sueldobase(double htrabajo,double fdep,double


hextra,double preciohextra)
{
return ((htrabajo*preciohtrabajo*fdep)+(hextra*preciohextra));
}

static double Calcula_IRPF(double psueldo,int pestatcivil)


{
double resultado;

switch (pestatcivil)
{
case 1:
if (psueldo>=1000)
{
resultado = 0.9*IRPF;
return resultado;
}
else return IRPF;

case 2:
if (psueldo>=1000) return (0.75 * IRPF);
else return IRPF;

default: return IRPF;


}
}

}// fin class

41
Aprende programacin fcilmente. Captulo 3: Clases

Captulo 3

Clases

42
Aprende programacin fcilmente. Captulo 3: Clases

3.1) Creacin objeto y asignacin de variables propias del objeto.


Podemos ver como se crea un objeto en base a una clase, en lenguaje C++, despus en C#
2.0 (Visual Studio 2005) y finalmente con C# 3.0 propio del Visual Studio 2008.

3.2) Creacin objetos y asignacin de variables propias de los objetos.


Asignacin de valores a variables privadas de la clase a travs de funciones pblicas
(accesibles desde cualquier parte del cdigo)

3.3) Asignacin propiedades del objeto.


Variables privadas de la clase utilizadas a travs de funciones get/set.
OJO! con las maysculas

3.4) Variables STATIC


Variables que podemos emplear en todo el proyecto (si son public) sin necesidad de objetos.

3.5) Trabajando con namespaces. Organizacin de clases


Podemos agrupar diferentes clases en un solo namespace. Facilita la organizacin de
proyectos.

3.6) A partir del namespace: Hospital , guardado en al archivo Clase_Hospital .cs


, se crea la clase Paciente y se utiliza en otro archivo: Ejercicio.cs
Ejemplo de cmo utilizar diferentes archivos en el mismo proyecto.

3.7) Ejemplo de envo de un objeto como parmetro de una funcin.


Los objetos como unidad de informacin, una variable personalizada.

3.8) Creacin objeto Triangulo y clculo del permetro.


Las clases pueden contener funciones propias (mtodos).

3.9) Programa que permite el clculo de les soluciones de les ecuaciones de 2 grado.
Programa estructurado y completo que nos permite comprobar las posibilidades de la
programacin.

3.10) Ejemplo polimorfismo en funciones de una clase.


Podemos declarar varias funciones con el mismo nombre, pero diferentes parmetros (en
nmero o tipo)

3.11) Clases DERIVADAS de otra.


Una clase derivada de otra, puede heredar propiedades y mtodos.

3.12) Propiedades de una clase y clases derivadas


Ejemplo para utilizar las variables propias de una clase madre en una clase derivada de ella.

3.13) Ejemplo de clases anidadas


Se poden crear clases en el interior de otra, son las clase anidadas.

3.14) TAMAGOTCHI (idea inicial para completar a gusto del programador)


Un inicio de proyecto para poner en prctica todos los conocimientos adquiridos.

43
Aprende programacin fcilmente. Captulo 3: Clases

3.1) Creacin objeto y asignacin de variables propias del objeto.

Versin C++ , en dos archivos:

cabecera.h

#include <iostream>
#include <string>
using namespace std;

class FichaDatos

{
string nombre;
int edad;

public:
FichaDatos(string dato1, int dato2)
{
nombre=dato1;
edad=dato2;
}

void Cargar()
{
nombre = "Pedro";
edad = 29;
}
void Mostrar();

};

principal.cpp

#include <iostream>
#include <string>
using namespace std;
#include "cabecera1.h"

void FichaDatos::Mostrar()
{
cout<<"El nombre es "<<nombre<<endl;
cout<<"edad "<<edad;
}

void main (void)


{
FichaDatos Paciente("Ana",29);

Paciente.Mostrar();
Paciente.Cargar();
cout<<endl<<endl;
Paciente.Mostrar();

44
Aprende programacin fcilmente. Captulo 3: Clases

Versin C# 2.0 : (Visual Studio 2005)

using System.Text;

namespace Ejercicio_3_1
{
public class Propiedades
{
public long identificador;
public string propietario;
public double precio;
}
public class Ejercicio1
{
static void Main()
{
Propiedades Casa = new Propiedades();
Casa.identificador = 1001;
Casa.propietario = "Joan Pera";
Casa.precio = 999999;

Console.WriteLine("Lista Propiedades"); ;
Console.Write("Propiedad {0}: ", Casa.identificador);
Console.WriteLine("Propietario {0}: ", Casa.propietario);
Console.Write(" precio: ");Console.Write(Casa.precio);
Console.WriteLine(); Console.WriteLine();
}
}
}

Versin C# 3.0 : (Visual Studio 2008)


namespace Ejercicio_3_1
{
public class Propiedades
{
public long identificador;
public string propietario;
public double precio;
}
public class Exercici1
{
static void Main()
{
var Casa = new Propiedades();

Casa.identificador = 1001;
Casa.propietario = "Joan Mas";
Casa.precio = 999999;
Console.WriteLine("Lista Propiedades"); ;
Console.Write("Propiedad {0}: ", Casa.identificador);
Console.WriteLine("Propietario {0}: ", Casa.propietario);
Console.Write(" precio: ");Console.Write(Casa.precio);
}
}
}
45
Aprende programacin fcilmente. Captulo 3: Clases

3.2) Creacin objetos y asignacin de variables propias de los objetos.

namespace Ejercicios_Cap3
{
public class Propiedades
{
public long Identificador;
private string propietario;
public int habitaciones;
double precio;

public Propiedades (string nom, double precio)


{
propietario = nom;
this.precio = precio;
}

public string Mostra_Propietario ()


{
return (this.propietario);
}

public double Mostra_precio()


{
return (this.precio);
}
}

public class Exercicio_3_2


{
static void Main()
{
Propiedades Casa = new Propiedades("desconocido",999999);
Casa.Identificador = 1001;
Casa.habitaciones = 4;

Propiedades Casa2 = new Propiedades("Maria Puyol", 30000);


Casa2.Identificador = 1002;
Casa2.habitaciones = 3;

Console.WriteLine("Llistat Propiedades"); ;
Console.Write("Propiedad {0}: ", Casa.Identificador);
Console.Write("Propietario: ");
string veure = Casa.Mostra_Propietario();
Console.Write(veure);
Console.Write("\n habitaciones: ");
Console.Write(Casa.habitaciones);
Console.Write(" precio: ");
double veure_precio = Casa.Mostra_precio();
Console.WriteLine(veure_precio.ToString());

Console.Write("\n\n");
Console.Write("Propiedad {0}: ", Casa2.Identificador);
Console.Write("Propietario: ");
veure = Casa2.Mostra_Propietario();
Console.Write(veure);
46
Aprende programacin fcilmente. Captulo 3: Clases

Console.Write("\n habitaciones: ");


Console.Write(Casa2.habitaciones);
Console.Write(" precio: ");
veure_precio = Casa2.Mostra_precio();
Console.WriteLine(veure_precio.ToString());
}
}
}

47
Aprende programacin fcilmente. Captulo 3: Clases

3.3) Asignacin propiedades del objeto.

namespace Ejercicio_3_3
{
public class Vehicles
{
private string marca;private double precio;
private double potencia;

public string Marca


{
get { return marca; }
set { marca = value; }
}

public double FuncionPrecio


{
get
{
if (precio <= 0) return 0;
else return precio;
}
set { precio = value; }
}

public double Potencia


{
get
{
if (potencia > 140)
{
Console.WriteLine("Impuesto por alta potncia");
}
return potencia;
}
set { potencia = value; }
}
}

class Program
{
static void Main(string[] args)
{
Vehicles Familiar1 = new Vehicles();
Familiar1.Marca = "Seat";
Familiar1.Potencia = 150;
Familiar1.FuncionPrecio = 999999;

Console.WriteLine("Vehiculos en la tienda");
Console.WriteLine("Marca: {0} ", Familiar1.Marca);
Console.WriteLine("Potencia: {0} ", Familiar1.Potencia);
Console.WriteLine("Precio: {0} ", Familiar1.FuncionPrecio);
}
}
}
48
Aprende programacin fcilmente. Captulo 3: Clases

3.4) Variables STATIC

using System;
using System.Collections.Generic;
using System.Text;

public class Libro


{
public static string Titulo;
public string Autor;
double precio;

public void asignar_precio(double numero)


{
precio = numero;
}

public void mostrar_precio(double numero)


{
Console.WriteLine("Precio: {0}", precio);
}
}

public class Ejercicio4


{
static void Main()
{
Libro Delgadoer = new Libro();
Libro.Titulo = "Lenguaje C para todos";
Delgadoer.Autor = "Macia Salavela";
Delgadoer.asignar_precio(999);

Console.WriteLine("Libro Delgadoero");
Console.Write("Titulo: ");
Console.WriteLine(Libro.Titulo);
Console.Write("Autor: ");
Console.WriteLine(Delgadoer.Autor);
Console.WriteLine();

Libro Segundo = new Libro();


Libro.Titulo = "Lenguaje D avanzado";
Segundo.Autor = "Andrea Tejeiro";
Segundo.asignar_precio(555);

Console.WriteLine("Libro Segundo");
Console.Write("Titulo: ");
Console.WriteLine(Libro.Titulo);
Console.Write("Autor: ");
Console.WriteLine(Segundo.Autor);

Console.ReadLine();
}
}

49
Aprende programacin fcilmente. Captulo 3: Clases

3.5) Trabajando con namespaces. Organizacin de clases

using System;
using System.Collections.Generic;
using System.Text;

namespace Empresa
{
public class Producto
{
public string identificador;
public decimal precio;
}

namespace Empleado
{
public class Personal
{
public string nom;
public string telefon;
}

public class FichaNomina


{
private double Nomina;
}
}

public class Programa


{
static void Main()
{
Empresa.Producto Casa = new Empresa.Producto();

Casa.identificador = "ref_pisMTH";
Casa.precio = 999999;

Console.WriteLine("Inmobiliaria CompraMolt");
Console.Write("Propiedad : ");
Console.WriteLine(Casa.identificador);
Console.Write("Precio: ");
Console.WriteLine(Casa.precio);
Console.WriteLine();

Empresa.Empleado.Personal NuevaFicha= new Empresa.Empleado.Personal();

NuevaFicha.nom = "Aina Costa";

Console.Write("Nombre personal: ");


Console.WriteLine(NuevaFicha.nom);
}
}

50
Aprende programacin fcilmente. Captulo 3: Clases

3.6) A partir del namespace: Hospital , guardado en al archivo Clase_Hospital .cs


, se crea la clase Paciente y se utiliza en otro archivo: Program.cs

Archivo: Clase_Hospital.cs

using System;

namespace Hospital
{
public class Paciente
{
public string nombre;
public int edad;
public decimal dias;

public Paciente()
{
nombre = "sin asignar";
edad = 99;
dias = 0;
}
}
}

Archivo: Program.cs

using System;
using Hospital;

public class Program


{
static void Main()
{

Paciente nuevo = new Paciente();

Console.WriteLine("Nombre pacient: {0}",nuevo.nombre);


Console.WriteLine("Edad: {0}",nuevo.edad);
Console.WriteLine("Dias hospitalizado: {0}",nuevo.dias);
Console.WriteLine("");

}
}

51
Aprende programacin fcilmente. Captulo 3: Clases

3.7) Ejemplo de envo de un objeto como parmetro de una funcin.

using System;

namespace Hospital_Central
{
public class Paciente
{
public string nombre;
internal int dias;
}

public class Program


{
static void Main()
{
Paciente nuevo = new Paciente();

Console.Write("Introducir nombre Paciente: ");


nuevo.nombre = Console.ReadLine();

Console.Write("Introducir dias: ");


nuevo.dias = int.Parse(Console.ReadLine());

Mostrar(nuevo);
}

private static void Mostrar(Paciente obj)


{
Console.WriteLine("Pacientes");
Console.WriteLine("Nombre: {0} ", obj.nombre);
Console.WriteLine("Dias hospitalizado: {0} ", obj.dias);
}
}

52
Aprende programacin fcilmente. Captulo 3: Clases

3.8) Creacin objeto Triangulo y clculo de su permetro con una funcin propia de la clase.

namespace Exercici_3_8
{

public class triangulo


{
double perimetro = 0;

public void calcula_perimetro (double v_base, double v_altura)


{
perimetro = 2 * v_base + 2 * v_altura;
}
public void muestra_perimetro ()
{
Console.WriteLine("El perimetro es {0}", perimetro);
}
}

public class Programa


{

static void Main(string[] args)


{
triangulo m_triangulo;
m_triangulo = new triangulo();

double varBase, varAltura, tecla;

do
{
Console.WriteLine ("PROGRAMA PERIMETRO TRIANGULO");
Console.WriteLine ("Introduce base");
varBase = Double.Parse(Console.ReadLine());

Console.WriteLine ("Introduce altura");


varAltura = Double.Parse(Console.ReadLine());

m_triangulo.calcula_perimetro(varBase, varAltura);
m_triangulo.muestra_perimetro();

Console.WriteLine ("Para continuar calculos, teclea 1");


tecla = Double.Parse(Console.ReadLine());

} while (tecla== 1);

} //fin Main

}// fin class exercici7

53
Aprende programacin fcilmente. Captulo 3: Clases

3.9) Programa que permite el clculo de les soluciones de les ecuaciones de segundo grado.

Archivo: ECUACIONES.cs

using System;
using System.Collections.Generic;
using System.Text;

namespace Eq3
{
class Ecuaciones2
{
private double A, B, C;

public Ecuaciones2 (double num1, double num2, double num3)


{
A = num1;
B = num2;
C = num3;
}

public void CalculaRaices(ref double sumaRaiz, ref double


restaRaiz)
{
sumaRaiz = ((-B + System.Math.Sqrt(B * B - 4 * A * C)) / (2 * A));
restaRaiz = ((-B - System.Math.Sqrt(B * B - 4 * A * C)) / (2 *
A));
}

}
}

Archivo: PROGRAM.CS
using System;
using System.Collections.Generic;
using System.Text;

namespace Eq3
{
class Program
{
static void Main(string[] args)
{
double coefA = 0, coefB = 0, coefC = 0;
double valor1=0, valor2=0;

bool control = true;

54
Aprende programacin fcilmente. Captulo 3: Clases

while (control == true)


{
Console.Clear();
Console.WriteLine("Soluciones para ecuaciones : Ax^2 + Bx + C =
0");

bool repetir_try = true;


while (repetir_try == true)
{
try
{
Console.WriteLine("\nIntroducir coeficiente A:");
coefA = Double.Parse(Console.ReadLine());

Console.WriteLine("\nIntroducir coeficiente B:");


coefB = Double.Parse(Console.ReadLine());

Console.WriteLine("\nIntroducir coeficiente C:");


coefC = Double.Parse(Console.ReadLine());

repetir_try = false;
}
catch (FormatException)
{
Console.Clear();
Console.WriteLine("Slo son validos valores numricos.");
repetir_try = true;
}
}

//Calculo determinante
double Bcuadrado = coefB * coefB;
double cuatroAC = 4 * coefA * coefC;

if ((Bcuadrado - cuatroAC) < 0)


{
Console.Clear();
Console.WriteLine("La ecuacin no tiene solucin real.");
}
else
{

Ecuaciones2 equacion = new Ecuaciones2 (coefA, coefB, coefC);

equacion.CalculaRaices(ref valor1, ref valor2);

Console.WriteLine("\nValor 1 = {0}", valor1.ToString());


Console.WriteLine("Valor 2 = {0}", valor2.ToString());
}

... SIGUE

55
Aprende programacin fcilmente. Captulo 3: Clases

Console.WriteLine("Quiere volver a calcular? (s/n)");

bool repetir = true;


while (repetir == true)
{
string teclat = Console.ReadLine();
switch (teclat)
{
case "s":
case "S":
control = true; repetir = false;
break;
case "n":
case "N":
control = false; repetir = false;
break;
default:
Console.WriteLine("\nLa entrada no es correcta. s/n");
repetir = true;
break;
}
}

} // while control ==true

}// fin Main


}// fin class
}

56
Aprende programacin fcilmente. Captulo 3: Clases

3.10) Ejemplo polimorfismo en funciones de una clase.

namespace EjercicioPolimorfismo
{
class Polimorf
{
private double nota1, nota2, nota3;

public double Media (double num1, double num2)


{
double result = (num1 + num2)/2;
return (result);
}

public double Media (double num1, double num2, double num3)


{
double result = (num1*0.20 + num2*0.20 + num3*0.60);
return (result);
}
}

public class Program


{
static void Main()
{
double nota1, nota2, nota3, resultado=0;

Polimorf CalculNota = new Polimorf();

Console.Write("Cuantas notas tiene el alumno (2/3): ");


int teclat = int.Parse(Console.ReadLine());

Console.Write("Introducir nota1: ");


nota1 = double.Parse(Console.ReadLine());

Console.Write("Introducir nota2: ");


nota2 = double.Parse(Console.ReadLine());

if (teclat == 2) resultado = CalculNota.Media(nota1, nota2);

if (teclat == 3)
{
Console.Write("Introducir nota3: ");
nota3 = double.Parse(Console.ReadLine());

resultado = CalculNota.Media(nota1, nota2, nota3);


}

Console.WriteLine("Resultado de la media: {0}",resultado);


Console.WriteLine();
}
}

57
Aprende programacin fcilmente. Captulo 3: Clases

3.11) Clases DERIVADAS de otra.

namespace Ejercicios
{
class Persona
{
private string telf;private double edad;
protected string nom;

protected
Persona(string n)
{ nom = n; }

protected void VerNom()


{
System.Console.WriteLine("{0}", nom);
}
}

class Empleado : Persona


{
public string IdEmpleado;
public double numEmpleado;

public
Empleado(string n) : base (n) {}

public void VerNom()


{
System.Console.WriteLine("{0}", nom);
}
}

class Estudiant : Persona


{
public
Estudiant (string n): base (n) {}

public void VerNom()


{
System.Console.WriteLine("{0}", nom);
}
}

public class Program


{
static void Main()
{
Estudiant Joana = new Estudiant("Joana");
Empleado Miquel = new Empleado("Miquel");
Joana.VerNom();
Miquel.VerNom();
}
}

}
58
Aprende programacin fcilmente. Captulo 3: Clases

3.12) Propiedades de una clase y clases derivadas

using System;
using System.Collections.Generic;
using System.Text;

namespace Concesionari
{
public class Vehiculos
{
private string identificador;
private double kilometraje;
private double precio;

public Vehiculos()
{
}

public string Identificador //ojo! Mayscula inicio


{
get { return identificador; }

set
{
if (identificador == "")
identificador = "Desconocido";
else
identificador = value;
}
}

public double Kilometraje


{
get
{
if (kilometraje <= 0)
return 0;
else
return kilometraje;
}
set { kilometraje = value; }
}

public double Precio


{
get { return precio; }
set { precio = value; }
}
}

59
Aprende programacin fcilmente. Captulo 3: Clases

public class Coches : Vehiculos


{
private string numMatricula;
private double consumo;

public string Matricula


{
get { return numMatricula; }
set { numMatricula = value; }
}

public double Consumo


{
get { return consumo; }
set { consumo = value; }
}

public void Mostrar()


{
//Coche deriva de Vehiculo accede a propiedades de Vehiculo
Console.WriteLine("\n COCHE");
Console.WriteLine("Identificador: {0}", Identificad);
Console.WriteLine("Kilometraje: {0}", Kilometraje);
Console.WriteLine("Precio: {0}", Precio);
Console.WriteLine("Matricula: {0}\n", numMatricula);
Console.WriteLine("Consumo: {0}\n", Consumo);
}
}

public class Programa


{
static void Main()
{
Vehiculos Furgo1 = new Vehiculos();
Furgo1.Identificador = "A0001";
Furgo1.Precio = 999999;

Console.WriteLine("\n VEHICULO ");


Console.WriteLine("Identif.: {0}", Furgo1.Identificador);
Console.WriteLine("Kilometraje: {0}", Furgo1.Kilometraje);
Console.WriteLine("precio: {0}", Furgo1.Precio);

Coches Familiar1 = new Coches();


Familiar1.Identificador = "C0001";
Familiar1.Precio = 888888;
Familiar1.Mostrar();
}
}

60
Aprende programacin fcilmente. Captulo 3: Clases

3.13) Ejemplo de clases anidadas.

using System;

public class Empresa


{

public Empresa()
{
Console.WriteLine(" - Empresa -");
}

public class Profesores


{
public Profesores()
{
Console.WriteLine(" - Profesor -");
}
}

public class Ejercicio


{
static void Main()
{
Empresa Carme = new Empresa();
Empresa.Profesores Aina = new Empresa.Profesores();
}
}

61
Aprende programacin fcilmente. Captulo 3: Clases

3.14) TAMAGOTCHI (idea inicial para completar)


Archivo: Class_Tamagotchi.cs

namespace Ejercicio_Tamagotchi
{
public class Tamagotchi
{
private string nombre;
private double peso;
private double felicidad;
private double limpieza;
private double salud;

public Tamagotchi(string pnombre)


{
nombre = pnombre;
peso = 10;
felicidad = 10;
limpieza = 10;
salud = 10;
}

public string Nom


{
get { return nombre; }
set { nombre = value; }
}

public double Peso


{
get
{
if (peso <= 0) return 0;
else return peso;
}
set { peso = value; }
}

public double Felicidad


{
get { return felicidad; }
set { felicidad = value; }
}

public double Limpieza


{
get { return limpieza; }
set { limpieza = value; }
}

public double Salud


{
get { return salud; }
set { salud = value; }
}

62
Aprende programacin fcilmente. Captulo 3: Clases

public void Dibujar(string estado)


{
switch (estado)
{
case "normal":
Console.WriteLine();
Console.WriteLine(" ******** ");
Console.WriteLine(" * *");
Console.WriteLine(" * * * *");
Console.WriteLine(" * *");
Console.WriteLine(" * **** *");
Console.WriteLine(" ******* ");
; break;

case "alegre":
Console.WriteLine();
Console.WriteLine(" ******** ");
Console.WriteLine(" * * * *");
Console.WriteLine(" * *");
Console.WriteLine(" * * * *");
Console.WriteLine(" * **** *");
Console.WriteLine(" ******* ");
; break;

case "enfadado":
Console.WriteLine();
Console.WriteLine(" ******** ");
Console.WriteLine(" * * * *");
Console.WriteLine(" * *");
Console.WriteLine(" * *");
Console.WriteLine(" * ** *");
Console.WriteLine(" ******* ");
; break;

case "delgado":
Console.WriteLine();
Console.WriteLine(" ******* ");
Console.WriteLine(" * * * *");
Console.WriteLine(" * *");
Console.WriteLine(" * *");
Console.WriteLine(" * *** *");
Console.WriteLine(" ****** ");
; break;

case "gordo":
Console.WriteLine();
Console.WriteLine(" ********* ");
Console.WriteLine(" * * * *");
Console.WriteLine(" * *");
Console.WriteLine(" * *");
Console.WriteLine(" * ***** *");
Console.WriteLine(" ******** ");
; break;

default:
Console.WriteLine("Default case");
63
Aprende programacin fcilmente. Captulo 3: Clases

break;
}
}

public void Instrucciones()


{
Console.WriteLine();
Console.WriteLine("c: comer ");
Console.WriteLine("j: jugar");
Console.WriteLine("d: dormir");
Console.WriteLine("l: limpiar");
Console.WriteLine("---------- ");
}

public void Datos()


{
Console.WriteLine("Peso: {0} ", this.Peso);
Console.WriteLine("Felicidad: {0} ", this.Felicidad);
Console.WriteLine("Limpieza: {0} ", this.Limpieza);
Console.WriteLine("Salud: {0} ", this.Salud);
Console.WriteLine();
}

}
}

Archivo : Program.cs

namespace Ejercicio_Tamagotchi
{
class Program
{
static void Main(string[] args)
{
Tamagotchi Bitxo = new Tamagotchi("Pitu");
double segon = 0; int conta = 0; string teclat;

while (Bitxo.Salud>0)
{
DateTime tiempo = DateTime.Now;
segundo = tiempo.Second;
string cadenatiempo = tiempo.ToLongTimeString();
Console.WriteLine("Tiempo: {0} ", cadenatiempo);
Console.WriteLine("Segundo: {0} ", segundo);

if (segundo % 5 == 0)
{
Console.WriteLine("5 segundos");
Bitxo.Peso = Bitxo.Peso - 1;
Bitxo.Limpieza = Bitxo.Limpieza - 1;
Bitxo.Felicidad = Bitxo.Felicidad - 1;

64
Aprende programacin fcilmente. Captulo 3: Clases

Bitxo.Dibujar("alegre");
conta++;
}
else
{
Bitxo.Dibujar("normal");
}
if (conta == 2)
{
if (Bitxo.Peso >9) Bitxo.Salud = Bitxo.Salud - 4;
if (Bitxo.Limpieza < 9) Bitxo.Salud = Bitxo.Salud - 2;
conta = 0;
}

Bitxo.Instrucciones();
Bitxo.Datos();

teclat = Console.ReadLine();
if (teclat == "c") Bitxo.Peso = Bitxo.Peso + 1;
if (teclat == "j") Bitxo.Felicidad = Bitxo.Felicidad + 1;
if (teclat == "d")
{
Bitxo.Salud = Bitxo.Salud + 1;
Bitxo.Limpieza = Bitxo.Limpieza + 1;
}
if (teclat == "l") Bitxo.Limpieza = Bitxo.Limpieza + 1;
Console.Clear();
}// fi While

if (Bitxo.Salud < 0) Console.WriteLine("Has perdido!");


else Console.WriteLine("Muy bien!, en {0} vive feliz",
Bitxo.Nombre);
} // fi Main
}
}

65
Aprende programacin fcilmente. Captulo 4: Arrays

Captulo 4

Arrays

66
Aprende programacin fcilmente. Captulo 4: Arrays

4.1) Declaracin e inicializacin Arrays unidimensionales ( C # 2008 /2005)

namespace Arrays1
{
public class Ejercicio1
{
static void Main()
{
var Temperatura = new double[] { 16.55, 15.28, 16.28,16.72, 15.54 };

// C# 2005
//double [] Temperatura = {16.55, 15.28, 16.28, 16.72, 15.54 };

try
{
for (int i = 0; i < 10; i++)
Console.WriteLine("Valor {0} : {1}", i, Temperatura[i]);
}
catch (IndexOutOfRangeException)
{
Console.WriteLine("Lmite array excedido ");
}

} // fin Main

}
}

4.2) C# 2008 / 2005 : MULTIDIMENSIONALES

public static class Ejercicio2


{
static void Main(string[] args)
{
// C# 2005
// double[,] Temp =

var Temp = new double [3, 7]


{
{16.55, 15.28, 16.28, 16.72, 15.54, 15.64, 16.08 },
{16.85, 16.98, 17.18, 16.72, 17.24, 17.34, 17.38 },
{18.55, 17.88, 18.98, 16.72, 16.54, 18.01, 18.48 }
};

for (int dia = 0; dia < 7; dia++)


{
for (int i = 0; i < 3; i++)
Console.WriteLine("Valores dia {0}:{1}", dia, Temp[i, dia]);
Console.WriteLine();
}
}
}

67
Aprende programacin fcilmente. Captulo 4: Arrays

4.3) Asignacin de valores al array Jugadores (C# 2008 / 2005)

namespace Arrays3
{
class Program
{
static void Main()
{
string[] jugadores = new string[100];

// C# 2008
// var jugadores = new string[100];

asignar(jugadores);

for (int t = 0; t <= 5; t++)


Console.WriteLine(jugadores[t]);
}

public static void asignar(params string[] fichas)


{
fichas[0] = "Martina";
fichas[1] = "Joan";
fichas[2] = "Ana";

for (int t=3; t<=5; t++)


{
Console.WriteLine("Entra nombre jugador n {0}", t);
string teclado = Console.ReadLine();

fichas[t] = teclado;
}
}
}

68
Aprende programacin fcilmente. Captulo 4: Arrays

4.4) Array bidimensional (3 asignaturas , 4 alumnos)

class Program
{
static void Main()
{
string[] Asignatura = new string[]
{
"Programacin",
"Matematicas",
"Ingles",
};

double[,] Notas = new double[4, 3];

// C# 2008
//var Notas = new double [4,3];

for (int nalum = 0; nalum < 4; nalum++)


{
Console.WriteLine("\n Alumno {0} ", nalum);

for (int cont = 0; cont < 3; cont++)


{
Console.Write("Introduce nota {0}: ", Asignatura[cont]);
double teclado = Double.Parse(Console.ReadLine());
Notas[nalum, cont] = teclado;
}
}

for (int x = 0; x < 4; x++)


{
Console.WriteLine("\n Alumno {0} ", x);

for (int i = 0; i < 3; i++)


Console.WriteLine("Nota{0}:{1} ", Asignatura[i], Notas[x, i]);
}
Console.WriteLine();

foreach (var nota in Notas)


Console.WriteLine("Nota {0} ", nota);

} // fin Main

} // fin class program

69
Aprende programacin fcilmente. Captulo 4: Arrays

4.5) Array bidimensional (2 asignaturas , 3 alumnos) . Envo a funcin de valores

class Program
{
static void Main()
{
string[] Asignatura = new string[]
{
"Matematicas",
"Ingles",
};

double[,] Notas = new double[3, 2];

// C# 2008
//var Notas = new double [3,2];

for (int nalum = 0; nalum < 3; nalum++)


{
Console.WriteLine("\n Alumne {0} ", nalum);

for (int cont = 0; cont < 2; cont++)


{
Console.Write("Entra nota {0}: ", Asignatura[cont]);
double teclado = Double.Parse(Console.ReadLine());
Notas[nalum, cont] = teclado;
}
}

Console.WriteLine("\n Nota media de clase");

double num = media(Notes);


Console.WriteLine("Nota Media {0} ", num);

} // fin Main

public static double media(double[,] p_notas)


{
double resultado=0;
int conta=0;

foreach (double nota in p_notas)


{
resultado = resultado + nota;
conta++;
}

resultado = resultado / conta;


return resultado;
}

70
Aprende programacin fcilmente. Captulo 4: Arrays

4.6) MATRICES BIDIMENSIONALES.


Aadir funcin al programa, donde se calcule el PRODUCTO de 2 matrices.

namespace Arrays6
{
class Matrices
{
const int max = 4;

static void Main()


{
int [,] matriz1 = new int [max, max];
int [,] matriz2 = new int [max, max];
int [,] matriz3 = new int [max, max];

for (int i=0; i<max; i++) //inicializamos valores


{
for (int j=0; j<max; j++)
{
matriz1 [i,j] = 50;
matriz2 [i,j] = 10;
matriz3 [i,j] = 0;
}
}

resta (matriz1, matriz2, matriz3);


vermatriz(matriz3);
}

public static void resta (int[,] m1, int[,] m2, int[,] m3)
{
for (int i=0; i<max; i++)
for (int j=0; j<max; j++) m3[i,j]= m1[i,j] - m2[i,j];
}

public static void vermatriz (int[,] veure)


{
for (int i=0; i<max; i++)
{
for (int j=0; j<max; j++)
{
Console.Write(" {0} ", veure[i,j]);
}
Console.WriteLine();
}
}

}
}

71
Aprende programacin fcilmente. Captulo 4: Arrays

4.7) ARRAYS DE OBJETOS CON C++ y C#

#include <iostream>
#include <string>
using namespace std;

class trabajador{
double sueldo;
string nombre;

public:
void cargardatos(double varsueldo, string varnom)
{
sueldo = varsueldo;
nombre = varnom;
}
double mostrarsueldo()
{
return sueldo;
}
};

void main()
{
trabajador ejecutivo[3];
trabajador admin[3];

double sueldoejecutivo = 900;


double sueldoadmin = 800;
string cnombre;

for(int i=0;i<3;i++)
{
cout<<" Introduce nombre administrativo "<< i <<" : ";
cin >> cnombre;
admin[i].cargardatos(sueldoadmin, cnombre);
}

for(i=0;i<3;i++)
{
cout<<" Introduce nombre ejecutiva "<< i <<" : ";
cin >> cnombre;
ejecutivo[i].cargardatos(sueldoejecutivo, cnombre);
}

for(i=0;i<3;i++)
{
cout << " Sueldo ejecut."<<i<< ejecutivo[i].mostrarsueldo();
cout << " Sueldo admin "<< i << ejecutivo[i].mostrarsueldo();
cout << "\n";
}

system("pause");
}

72
Aprende programacin fcilmente. Captulo 4: Arrays

namespace Arrays7
{
public class trabajador
{
public double nomina;
public string nombre;

public string NombreTrabajador


{
get { return nombre; }
set { nombre = value; }
}
public double NominaTrabajador
{
get { return nomina; }
set { nomina = value; }
}
}

public class Ejercicio7


{
static void Main()
{
trabajador [] ejecutivo = new trabajador [10 ];
trabajador [] administrativo = new trabajador [10];

double nominaA = 900;double nominaB = 800;


string teclado;

for(int i=0;i<3;i++)
{
Console.Write("Introduce nombre adminis. num {0}: ", i);
teclado = (Console.ReadLine());

administrativo [i] = new trabajador ();


administrativo[i].NominaTrabajador = nominaB;
administrativo[i].NomTrabajador = teclado;
}
Console.WriteLine();

for(int i=0;i<3;i++)
{
Console.Write("Introduece nombre ejecutivo num {0}: ", i);
teclado = (Console.ReadLine());

ejecutivo[i] = new trabajador ();


ejecutivo[i].NominaTrabajador = nominaA;
ejecutivo[i].NomTrabajador = teclado;
}
Console.WriteLine();

for(int i=0;i<3;i++)
{
Console.Write("Nom ejec.{0} es{1} ", i,
ejecutivo[i].NomTrabajador );

73
Aprende programacin fcilmente. Captulo 4: Arrays

Console.WriteLine("Nomina ejecutivo {0} s {1}", i,


ejecutivo[i].NominaTrabajador );
}
Console.WriteLine();

}// fin main


}// fin class Ejercicio7
}

74
Aprende programacin fcilmente. Captulo 4: Arrays

4.8) Ejercicio con arrays de structs (C++)

#include <iostream>
#include <string>
#include <stdlib.h>
#include <stdio.h>
#define _NUM 3
using namespace std;
using std::string;

struct catalogo
{
int identificador;
string titulo;
string autor;
float precio;
};

void asignar(catalogo *libros);


void visualizar(catalogo *libros);
void buscar(catalogo *libros, string busqueda);

void main()
{
catalogo libros[_NUM];
string busqueda;

asignar(libros);
visualizar(libros);

cout << "Introduzca autor a consultar: ";


cin >> busqueda;
buscar(libros, busqueda);
}

void asignar(catalogo *libros)


{
libros[0].identificador=24225;
libros[0].titulo="En el camino";
libros[0].autor="Kerouak";
libros[0].precio=8.5;

libros[1].identificador=35213;
libros[1].titulo="Cartero";
libros[1].autor="Charles";
libros[1].precio=10;

libros[2].identificador=12532;
libros[2].titulo="La conspiracin";
libros[2].autor="Dan";
libros[2].precio=24;
}

75
Aprende programacin fcilmente. Captulo 4: Arrays

void visualizar(catalogo *libros)


{
for (int i=0; i<_NUM; i++)
{
cout << "Identificador: " << libros[i].identificador << endl;
cout << "Titulo: " << libros[i].titulo << endl;
cout << "Autor: " << libros[i].autor << endl;
cout << "Precio: " << libros[i].precio << " EUR" << endl;
cout << endl;
}
}

void buscar(catalogo *libros, string busqueda)


{
bool encontrados=false;
cout << "Resultados de la busqueda: " << endl;

for (int i=0; i<_NUM; i++)


{
if (libros[i].autor==busqueda)
{
encontrados=true;
cout << "Identificador: " << libros[i].identificador << endl;
cout << "Titulo: " << libros[i].titulo << endl;
cout << "Autor: " << libros[i].autor << endl;
cout << "Precio: " << libros[i].precio << " EUR" << endl;
cout << endl;
}
}

76
Aprende programacin fcilmente. Captulo 4: Arrays

4.9) ArraysClass

public class Ejercicio9


{
static void Main(string[] args)
{
Array Notas = Array.CreateInstance(typeof(double), 5);

Notas.SetValue(5.4, 0);
Notas.SetValue(7.8, 1);
Notas.SetValue(9.0, 2);
Notas.SetValue(4.5, 3);
Notas.SetValue(6.5, 4);

for (int i = 0; i < Notas.Length; i++)


Console.WriteLine("Nota: {0}", Notas.GetValue(i));

Console.WriteLine();

foreach (double numero in Notas)


Console.WriteLine("Nota: {0}", numero);
}
}

4.10) ArraysClass Bidimensional

class Bidimensional
{
public static void Main()
{
Array Alumnos = Array.CreateInstance(typeof(string), 2, 3);

// Alumnos clase 0
Alumnos.SetValue("Maria", 0, 0);
Alumnos.SetValue("Tomeu", 0, 1);
Alumnos.SetValue("Marga", 0, 2);

// Alumnos clase 1
Alumnos.SetValue("Maties", 1, 0);
Alumnos.SetValue("Andreu", 1, 1);
Console.Write("Introduce el nombre alumno3: ");
string teclado = Console.ReadLine();
Alumnos.SetValue(teclado, 1, 2);

for (int cont = 0; cont < Alumnos.GetLength(0); cont++)


for (int num = 0; num < Alumnos.GetLength(1); num++)
Console.WriteLine("Alumno: {0}",
Alumnos.GetValue(cont, num));

Console.WriteLine();
foreach (string Nom in Alumnos)
Console.WriteLine("Alumno: {0}", Nom);
}
}
77
Aprende programacin fcilmente. Captulo 4: Arrays

NDEX

1 . . . . . . . . Presentacin.

2 . . . . . . . . Captulo 0 : Iniciacin a la programaci.

12 . . . . . . . Captulo 1 : Primeros programas.

27 . . . . . . . Captulo 2: Bucles y funciones

42 . . . . . . . Captulo 3: Clases

66 . . . . . . . Captulo 4: Arrays

You might also like