LP1 Introduc#
LP1 Introduc#
LP1 Introduc#
-1-
PARTE I
FUNDAMENTOS DE LENGUAJE DE PROGRAMACION ANSI C
CAPITULO I FUNDAMENTOS DE PROGRAMACIN
1.1 CONCEPTOS DE SISTEMAS.1.1.1. Definicin de sistemas.- http://www.alegsa.com.ar/Dic/sistema.php
Un sistema (system). Es un conjunto de partes o elementos organizadas y relacionadas
que interactan entre s para lograr un objetivo. Los sistemas reciben (entrada) datos,
energa o materia del ambiente y proveen (salida) informacin, energa o materia.
Un sistema puede ser fsico o concreto (una computadora, un televisor, un humano) o
puede ser abstracto o conceptual (un software)
Cada sistema existe dentro de otro ms grande, por lo tanto un sistema puede estar
formado por subsistemas y partes, y a la vez puede ser parte de un supersistema.
1.1.2 Elementos o componentes de un sistema
En el siguiente diagrama se muestra los elementos o componentes de un sistema
ENTRADA
PROCESO
SALIDA
RETROALIMENTACION
-2-
Determinar las entradas. Es decir, los datos que posee el algoritmo cuando
comienza su ejecucin. Esos datos permiten obtener el resultado.
Determinar las salidas. Es decir, los datos que obtiene el algoritmo como
resultado. Lo que el algoritmo devuelve al usuario.
Determinar el proceso. Se estudia cul es el proceso que hay que realizar.
1.3.2 diseo En esta fase se crean esquemas que simbolizan a la aplicacin. Estos
esquemas los elaboran analistas. Gracias a estos esquemas se simboliza la aplicacin.
Estos esquemas en definitiva se convierten en la documentacin fundamental para
plasmar en papel lo que el programador debe hacer.
En estos esquemas se pueden simbolizar: la organizacin de los datos de la aplicacin,
el orden de los procesos que tiene que realizar la aplicacin, la estructura fsica (en
cuanto a archivos y carpetas) que utilizar la aplicacin, etc.
La creacin de estos esquemas se puede hacer en papel, o utilizar una herramienta
-3-
Inicio o Fin
Proceso
Visualizacin
Sub-Programa
Decisin
Datos
Documento
Entrada manual
Conector
de proceso
Bucle o ciclo
Datos
guardados
-4-
Flujo de Diagrama
a=10 b=20
a=20 b=10
paso1. Iniciar
paso2 ingresar las dos variables y guardarlos en N1 y N2
paso3 realizar el intercambio
3.1 Crear una variable temporal
3.2 poner el valor de N1 en temporal
3.3 Poner el valor de N2 en N1
3.4 poner el valor de temporal en N2
Paso 4 mostrar el contenido de N1 y N2
Paso 5 terminar
Elaborar diagrama de flujo, prueba de datos y programa
Inicio
N1, N2
Temp <---- N1
N1<--- N2
N2<----Temp
N1,N2
Fin
-5-
-6-
Desarrollador:
Dennis Ritchie y Bell Labs
ltima versin estable:
C99 (Marzo de 2000)
Sistema operativo: Multiplataforma
Caractersticas
a) Lenguaje de propsito general.
b) Lenguaje de nivel medio.- Permite la manipulacin de bits, bytes y direcciones de
cdigo, el C es muy portable.
c) Lenguaje estructurado.- (no estructurado en bloques), dado que C no permite la
creacin de funciones dentro de funciones, pero si funciones y funciones
secundarias.
d) Programacin modular.- Se puede escribir programas independientes (mdulos)
constituyendo libreras de programas para ser usadas posteriormente en librera
#include.
e) Transportabilidad.- Los programas escritos en este lenguaje pueden ser ejecutados
en distintos computadoras.
f) Lenguaje generalmente compilado.2.
C++
-7-
-8-
-9-
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
float n1, n2;
Console.Write(" ingrese el nro 1 ");
n1 = Convert.ToSingle(Console.ReadLine());
Console.Write(" ingrese el nro 2 ");
n2 = Convert.ToSingle(Console.ReadLine());
Console.WriteLine(" la suma de {0} y {1} es {2} ", n1, n2, n1 + n2);
Console.WriteLine(" la resta de {0} y {1} es {2} ", n1, n2, n1 - n2);
Console.WriteLine(" la multiplicacion de {0} y {1} es {2} ", n1, n2, n1 * n2);
Console.WriteLine(" la division de {0} y {1} es {2} ", n1, n2, n1 / n2);
Console.WriteLine(" la division de entera{0} y {1} es {2} ", n1, n2, (int)n1 / (int)n2);
Console.WriteLine(" la el residuo de {0} y {1} es {2} ", n1, n2, n1 % n2);
Console.ReadLine();
}
}
}
Se puede tambien aun simplificar mas
using System;
class Program
{
static void Main()
{
float n1, n2;
Console.Write(" ingrese el nro 1 ");
n1 = Convert.ToSingle(Console.ReadLine());
Console.Write(" ingrese el nro 2 ");
n2 = Convert.ToSingle(Console.ReadLine());
Console.WriteLine(" la suma de {0} y {1} es {2} ", n1, n2, n1 + n2);
Console.WriteLine(" la resta de {0} y {1} es {2} ", n1, n2, n1 - n2);
Console.WriteLine(" la multiplicacion de {0} y {1} es {2} ", n1, n2, n1 * n2);
- 10 -
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
float n1, n2,r;
public Form1()
{
InitializeComponent();
}
private void btnSuma_Click(object sender, EventArgs e)
{
n1 =Convert.ToSingle(txtOper1.Text) ;
n2 = Convert.ToSingle(txtOper2.Text);
r = n1 + n2;
txtResult.Text = Convert.ToString(r);
label2.Text = "+";
}
private void btnResta_Click(object sender, EventArgs e)
{
n1 = Convert.ToSingle(txtOper1.Text);
n2 = Convert.ToSingle(txtOper2.Text);
r = n1 - n2;
txtResult.Text = Convert.ToString(r);
label2.Text = "-";
}
private void btnMultiplicacion_Click(object sender, EventArgs e)
{
n1 = Convert.ToSingle(txtOper1.Text);
n2 = Convert.ToSingle(txtOper2.Text);
r = n1 * n2;
txtResult.Text = Convert.ToString(r);
label2.Text = "*";
}
private void btnDivision_Click(object sender, EventArgs e)
{
n1 = Convert.ToSingle(txtOper1.Text);
n2 = Convert.ToSingle(txtOper2.Text);
r = n1 / n2;
txtResult.Text = Convert.ToString(r);
label2.Text = "/";
}
}
}
- 11 -
- 12 -
private:
System::Void
btnSumar_Click(System::Object^
System::EventArgs^ e) {
float r;
r= Convert::ToSingle(textBox1->Text)+ Convert::ToSingle (textBox2->Text);
textBox3->Text=Convert::ToString (r);
sender,
Nota. El asistente
de IntelliSense de visual estudio nos muestra los tipos de
conversin que existen para convertir cadenas a nmeros
8. Con Visual C++ usando clases y objetos
#include <stdio.h>
#include <conio.h>
class suma
{
float n1,n2,r;
public: void ingresar();
float sumar();
};
void suma ::ingresar ()
{ printf("\n ingrese dos numeros ");
scanf("%f%f",&n1,&n2);
};
float suma::sumar()
{ return n1+n2;};
- 13 -
int main()
{ suma objeto;
objeto.ingresar();
printf("\n la suma de los numeros es
%f",objeto.sumar());
getch();
}
Nota. El asistente de IntelliSense de visual estudio nos muestra los componentes de
la clase que hemos creado (suma), adems visual C ++ 2008 no permite trabajar
jerrquicamente o sea se puede esconder parte del programa con el signo menos (-) y
expandir con el (+) . De esa manera los programas se minimizan,
Programa
Module Module1
Sub Main()
Dim n1 As Single, n2 As Single, suma As Single = 0
Console.WriteLine(" Ingrese primer numero ")
n1 = Console.ReadLine()
Console.WriteLine(" Ingrese segundo numero ")
n1 = Console.ReadLine()
suma = n1 + n2
Console.WriteLine(" la suma es {0} ", suma)
Console.ReadLine()
End Sub
End Module
Diseo
Cdigo
Public Class Form1
Dim n1 As Single, n2 As Single, resul As Single = 0
Private Sub operacion(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles _
BtnSuma.Click, BtnResta.Click, BtnMultiplicacion.Click, BtnDivision.Click
n1 = Val(TextBox1.Text)
n2 = Val(TextBox2.Text)
- 14 -
- 15 -
Lenguaje C#
Arquitectura de la plataforma .NET Framework
Los programas de C# se ejecutan en .NET Framework, un componente que forma
parte de Windows y que incluye un sistema de ejecucin virtual denominado Common
Language Runtime (CLR) y un conjunto unificado de bibliotecas de clases. CLR es la
implementacin comercial de Microsoft de CLI (Common Language Infrastructure), un
estndar internacional que constituye la base para crear entornos de ejecucin y
desarrollo en los que los lenguajes y las bibliotecas trabajan juntos sin ningn
problema.
El cdigo fuente escrito en C# se compila en un lenguaje intermedio (IL) conforme con
la especificacin CLI. El cdigo de lenguaje intermedio y recursos tales como mapas de
bits y cadenas se almacenan en disco en un archivo ejecutable denominado
ensamblado, cuya extensin es .exe o .dll generalmente. Un ensamblado contiene un
manifiesto que proporciona informacin sobre los tipos, la versin, la referencia cultural
y los requisitos de seguridad del ensamblado.
Cuando se ejecuta un programa de C#, el ensamblado se carga en CLR, con lo que se
pueden realizar diversas acciones en funcin de la informacin del manifiesto. A
continuacin, si se cumplen los requisitos de seguridad, CLR realiza una compilacin
Just In Time (JIT) para convertir el cdigo de lenguaje intermedio en instrucciones
- 16 -
MOTIVOS
Se enseara este lenguaje porque es parecido a lo enseado en semestres anteriores
Bibliografa Beginning Visual C++2008 Ivor Horton
Entorno de desarrollo integrado (IDE) que viene con Visual C++ 2008
- 17 -
http://www.alegsa.com.ar/Dic/.net%20framework.php
Definicin de .NET Framework
El Microsoft .NET Framework, es un componente de software que puede ser o es
incluido en los sistemas operativos Microsoft Windows. Provee soluciones precodificadas para requerimientos comunes de los programas y gestiona la ejecucin de
programas escritos especficamente para este framework
.
Microsoft desea que todas las aplicaciones creadas para la plataforma Windows, sean
basadas en el .NET Framework. Su objetivo es crear un marco de desarrollo de software
sencillo, reduciendo las vulnerabilidades y aumentando la seguridad de los programas
desarrollados
Common Language Runtime
El Common Language Runtime o CLR (Lenguaje comn en tiempo de ejecucin) es la
implementacin del estndar Common Language Infrastructure (CLI) que define un
ambiente de ejecucin para los cdigos de los programas que corren sobre la plataforma
.Net de Microsoft. El CLR es el encargado de compilar una forma de cdigo intermedio
llamada Common Intermediate Language (CIL, anteriormente conocido como MSIL -Microsoft Intermediate Language), a lenguaje de maquina nativo, mediante un JIT
Versiones de C++
Visual C++ 2008 apoya plenamente dos versiones de C++ definidas por dos distintas
normas:
Usando el IDE
Todo programa de desarrollo y ejecucin en este libro se realiza desde dentro del IDE.
Al iniciar Visual C++ 2008, observe una ventana de aplicacin similar al que se muestra
en la figura 1-3
Pasos para ejecutar en programa en C en visual estudio 2008
Paso 1 ingrese al visual estudio 2008
- 18 -
- 19 -
- 20 -
{
return 0;
}
8. Agregue el siguiente cdigo
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
int _tmain(int argc, _TCHAR* argv[])
{
printf("\n HOLA MUNDO ");
getch();
return 0;
}
9 Ejecute el programa con
10 .modifique el programa a
o la tecla f5
El programa en C#
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(" HOLA MUNDO ");
Console.ReadLine();
}
}
}
Pasos
1. Ingrese archivo \ Nuevo \ Proyecto \ aplicacin de consola win32
Poner un nombre \ aceptar\siguiente
- 21 -
- 22 -
- 23 -
y se mostrara lo siguiente
using System;
class Program
{
static void Main(string[] args)
{
float n1,n2;
Console.Write(" ingrese primer numero ");
n1= Convert.ToSingle (Console.ReadLine());
Console.Write(" ingrese segundo numero ");
n2 = Convert.ToSingle(Console.ReadLine());
Console.Write("\n la suma es {0} " ,n1+n2);
Console.WriteLine(" la resta e {0} " ,n1-n2);
Console.WriteLine(" la multiplicacion es {0} " ,n1*n2);
Console.WriteLine(" la division entera es {0} " ,(int)n1/(int) n2);
Console.WriteLine(" la division real es es {0} " ,n1/n2);
Console.WriteLine(" El modulo es {0} " ,(int)n1%(int) n2);
- 24 -
Probar
- 25 -
{
}
namespace YourNestedNamespace
{
struct YourStruct
{
}
}
class YourMainClass
{
static void Main(string[] args)
{
//Your program starts here...
}
}
}
Secciones relacionadas
Para obtener ms informacin:
Clases (Gua de programacin de C#)
Structs (Gua de programacin de C#)
Espacios de nombres (Gua de programacin de C#)
Interfaces (Gua de programacin de C#)
Delegados (Gua de programacin de C#)
asm
auto
break
case
cdecl
char
class
const
continue
default
delete
do
double else
enum
_export
extern
far
float
for
friend
goto
huge
if
inline
int
interrupt
_loadds
long
near
new
operator pascal
private
protected public
register return _saveregs _seg
short
signed
sizeof
static
struct
switch
template this
typedef union
unsigned virtual
void
volatile
- 26 -
while
1.8.2 Identificadores
Nombres usados para referirse a las variables, las funciones etiquetas y otros objetos
definidos por el usuario.
Caractersticas.-Longitud 1-30 caracteres, primer carcter una letra o Smbolo de
subrayado
1.8-3 Constantes
En C la constantes de tipo carcter se trata siempre como enteros (int), en C++ las
constantes carcter son de tipo char. Una constante se puede definir de dos formas:
#define
pi 3.14159265;
const float
Const int N=100; o define N 100
pi=3.14158265;
- 27 -
unsigned char.
signed char
unsigned char
wchar_t
short
unsigned short
int
unsigned int
long
unsigned long
float
double
long double
- 28 -
Descripcin
Ejemplo
Operadores matemticos
+
Adicin
Sustraccin
*
Multiplicacin
/
Divisin
x= y + z
x= y - z
x= y * z
x= y / z
Operadores de asignacin
=
Asignacin
+=
asignacin suma
-=
asignacin resta
*=
asignacin producto
/=
asignacin cociente
&=
asignar operador AND
&=
asignar operador OR
n= 10
n+= 3 equivale n=n+3
n-= 3 equivale n=n-3
n*= 3 equivale n=n*3
n/= 3 equivale n=n/3
x&= 0x02
x= 0x02
Operadores lgicos
&&
AND Lgico
||
OR Lgico
Operadores relacionales
==
Igual que
if(x== 10) {...}
!=
No igual que
if(x != 10) {...}
<
Menor que
if(x== 10) {...}
>
Mayor que
if(x== 10) {...}
<=
Menor o igual que
if(x== 10) {...}
>=
Mayor o igual que
if(x== 10) {...}
------------------------------------------------------------------------en resultado falso = 0 verdadero <>0
Operadores unarios
*
Operador de in direccin
&
Direccin de operador
~
NOT a nivel de bits
!
NOT lgico
int x= *y;
int *x= &y;
x&= -=0x02;
if( !valid){}
++
--
Operador de incremento
Operador de decremento
- 29 -
x= 8, y= 7
1.10.2.otros operadores
operador
accin
----------------------------------------------------------------?
Devuelve un resultado en funcin de la condicin comprobada
operador1 ? operador2 : operador3
sizeof
Devuelve el tamao en bytes de su operando
,(coma)
encadena variables, evala la expresin de izquierda a derecha.
(tipo)
Moldeado de tipos, efecta conversiones de tipo explcitas.
[]
Designa un elemento de un arreglo
Ejemplos
? a>b? printf("\n %d> %d", a,b):printf("\n %d < %d", a,b);
#include <stdio.h>
{ int x=10,r;
r= sizeof(x);
}
r vale 2 (bytes)
operador coma
1.- x= (v=3,v*5); equivale
2.- v= (z=z+10,72/z)
z= 26+10= 36;
v= 72/z; ===> z= 2;
v=3;
z= 26;
- 30 -
Conversin de tipos .Si los operadores dentro de una expresin son de tipos
diferentes se convierten al tipo de operando de precisin mas alta. El tipo entero es
convertido a float
Operador de moldeado ( Conversin Cast).- Indica al compilador que considere
temporalmente un tipo de datos como se fuera otro.
Un moldeado sirve para cambiar el tipo de datos
Eje 2. a= 3;
x= 8.1416;
a= int(x);
flota x= (float)10*5.5;
float resul = multiply ( (float) x, , y) para pasar
Ej. int a=5, b=2; double c; c= a/b= 2
c= a/(double) b = 2.5
1.10.3 Precedencia de operadores
Operador
::
() [] -> .
! ~ +(unary) -(unary) ++ -- &(unary) *(unary) (typecast)
static_cast const_cast dynamic_cast reinterpret_cast sizeof
new delete typeid
.*(unary) ->*
* / %
+<< >>
< <= > >=
== !=
&
^
|
&&
||
?:(conditional operator)
= *= /= %= += -= &= ^= |= <<= >>=
,
Asociatividad
Left
Left
Right
Left
Left
Left
Left
Left
Left
Left
Left
Left
Left
Left
Right
Right
Left
- 31 -
Nombre de la funcin
Cuerpo de la funcin
Lista de parmetros
Instruccin de devolucin
- 32 -
La clase Console
Esta clase se encuentra dentro del espacio de nombres System, y nos proporciona a
travs de sus mtodos, acceso a la consola para mostrar u obtener informacin del
usuario.
Debido a que los miembros de esta clase se encuentran compartidos (shared), no es
necesario crear una instancia previa de la misma en una variable, pudiendo ejecutar
directamente sus mtodos sobre el objeto Console
Escritura de informacin
Para mostrar texto utilizaremos el mtodo WriteLine( ) del objeto Console. Este
mtodo escribe en la lnea actual de la consola el valor que le pasemos como
parmetro, aadiendo automticamente las marcas de retorno de carro y nueva lnea,
por lo que la siguiente escritura se realizar en una nueva lnea.
using System;
- 33 -
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
int n1,n2;
Console.Write("ingrese el primer numero n1 ");
n1 =Convert.ToInt32(Console.ReadLine());
Console.Write("ingrese el segundo numero n2 ");
n2 =Convert.ToInt32(Console.ReadLine());
Console.WriteLine(" La suma de los numeros es {0}", n1 + n2);
Console.WriteLine(" La resta de los numeros es {0}", n1 - n2);
Console.WriteLine(" El producto de los numeros es {0}", n1 * n2);
Console.WriteLine(" La Division real de los numeros es {0}", (float)n1 / (float)n2);
Console.WriteLine("La Division entera de los numeros es {0}", n1 / n2);
Console.WriteLine(" El modulo de de los numeros es {0}", n1 % n2 );
Console.ReadLine();
}
}
}
Write( ) es otro mtodo que nos permite tambin escribir valores en la consola. Su uso
es igual que WriteLine( ), aunque debemos tener en cuenta que Write( ) no separa los
valores a mostrar. Veamos un ejemplo en el Cdigo fuente
Cul es la diferencia entre el Writeline y el Write?
La diferencia es que el Write escribe y no pasa a la lnea siguiente, mientras que
Writeline escribe toda la lnea pasando a la lnea siguiente un ejemplo es el siguiente:
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
string Nombre;
System.Console.WriteLine("Digite Su Nombre: ");
Nombre = System.Console.ReadLine();
System.Console.WriteLine("\n Su nombre es {0}: ", Nombre);
Console.ReadLine();
}
}
}
- 34 -
- 35 -
*Es de recordar que el orden debe ser el mismo, si le hemos aplicado al corchete {0}
{1} entonces la primer variable ira en el puesto 0, la segunda variable en el puesto 1 y
as sucesivamente.
Entonces:
Posicin: Posicin 0,1,2 y as sucesivamente.
Ancho (Opcional): Mnimo Numero de posiciones para la salida, pero si el ancho se
omite entonces o especificamos un valor mximo entonces el ancho incrementa
automticamente.
Tipo (Opcional): Es uno de los caracteres mostrado en la tabla de abajo.
Decimales (Opcional): Aqu se especifica el nmero de dgitos a mostrar en el caso de
enteros o de decimales en el caso de fraccionarios.
Cadenas con formato numrico estndar
Las cadenas de formato numrico estndar se utilizan para dar formato a tipos
numricos comunes. Una cadena de formato numrico estndar presenta la forma Axx,
dondeA es un carcter alfabtico que recibe el nombre de especificador de
formato y xx es un entero opcional que recibe el nombre de especificador de
precisin. El especificador de precisin est comprendido entre el 0 y el 99 y afecta al
nmero de dgitos del resultado. Cualquier cadena de formato numrico que contenga
ms de un carcter alfabtico, incluido el espacio en blanco, se interpreta como una
cadena de formato numrico personalizado.
En la tabla siguiente se describen los especificadores de formato numrico estndar y
se muestran los resultados de ejemplo generados por cada especificador de
Especific
ador de
formato
Nombre
Descripcin
Resultado: un valor de divisa.
"C" o "c"
Moneda
Ejemplos
123,456 ("C", enUS) -> $123,46
123,456 ("C", frFR) -> 123,46
123,456 ("C", jaJP) -> 123
"D" o "d"
"E" o "e"
"F" o "f"
"G" o "g"
- 36 -
- 37 -
numrico.
Ms informacin: Especificador de
formato general ("G").
"N" o "n"
Nmero
"P" o "p"
Percent
"R" o "r"
Accin
de ida y
vuelta
Compatible
con: Single, Double y BigInteger.
Especificador de precisin: se
omite.
Ms informacin: Especificador de
formato de operacin de ida y vuelta
("R").
123456789,1234
5678 ("R") ->
123456789,123456
78
1234567890,12345
678 ("R") -> 1234567890,12345
67
- 38 -
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
Console.WriteLine("FORMATOS EN MODO CONSOLA ");
Console.WriteLine(" Moneda {0:9:C2}", 4.5);
Console.WriteLine("Moneda {0:9:C2}", -4.5);
Console.WriteLine("Enteros {0:D5}", 45);
Console.WriteLine("Enteros {0:5:D}", 45);
Console.WriteLine("Cientifico {0:E}", 450000);
Console.WriteLine("Coma Fija{0:F2}", 45);
Console.WriteLine("Coma fija {0:F0}", 45);
Console.WriteLine("Coma fija {0,8:f2}", 45);
Console.WriteLine("Coma fija {0,8:F2}", 145.3);
Console.WriteLine(" General {0:G}", 4, 5);
Console.WriteLine("Numerico {0:N}", 4500000);
Console.WriteLine(" %{0:P}", 1.2345);
Console.WriteLine(" hexadecimal{0:X}", 450);
Console.ReadLine();
- 39 -
}
}
}
Formatos compuestos
La caracterstica de formato compuesto de .NET Framework toma una lista de objetos y
una cadena de formato compuesto como entrada. Una cadena de formato compuesto
est formada por texto fijo combinado con marcadores de posicin indizados, que
reciben el nombre de elementos de formato, y que se corresponden con los objetos de
la lista. La operacin de formato genera una cadena de resultado compuesta por el
texto fijo original combinado con la representacin de cadena de los objetos de la lista.
Sintaxis de elemento de formato
Cada elemento de formato presenta la siguiente sintaxis, formada por los siguientes
componentes:
{ index[,alignment][:formatString]}
Las llaves ("{" y "}") son necesarias.
Index (Componente)
El componente index obligatorio, denominado tambin especificador de parmetros, es
un nmero que empieza por 0, que identifica un elemento correspondiente de la lista de
objetos. O sea, el elemento de formato cuyo especificador de parmetro es 0 da
formato al primer objeto de la lista, el elemento de formato cuyo especificador de
parmetro es 1 da formato al segundo objeto de la lista, etc.
Los elementos de formato mltiple se pueden referir al mismo elemento de la lista de
objetos mediante la especificacin del mismo especificador de parmetro. Por ejemplo,
se puede dar formato al mismo valor numrico en formato hexadecimal, cientfico y de
nmero mediante la especificacin de una cadena de formato compuesto como sta:
"{0:X} {0:E} {0:N}".
Cada elemento de formato puede hacer referencia a cualquier objeto de la lista. Por
ejemplo, si existen tres objetos, se puede dar formato al segundo, primero y tercer
objeto mediante la especificacin de una cadena de formato compuesto como sta: "{1}
{0} {2}". Un objeto al que no hace referencia ningn elemento de formato se omite.Se
produce una excepcin en tiempo de ejecucin si un especificador de parmetro
designa un elemento fuera de los lmites de la lista de objetos.
Alignment (Componente)
El componente opcional alignment es un entero con signo que indica el ancho de
campo con formato preferido. Si el valor de alignment es menor que la longitud de la
cadena con formato, se omite alignment y se utiliza la longitud de la cadena con
formato como el ancho de campo. Los datos con formato del campo estn alineados a
la derecha si alignment es positivo y, a la izquierda, si alignment es negativo. Si hace
falta relleno, se utiliza un espacio en blanco. Si se especifica alignment, es necesaria la
coma.
- 40 -
Especificador
Nombre
de formato
"0"
"#"
"."
","
Descripcin
Ejemplos
1234.5678
("00000") ->
01235
1234.5678
("#####") -> 1235
0.45678 ("0.00",
en-US) -> 0.46
Especificador de
separador de
grupos:
2147483647
("##,#", en-US) ->
2,147,483,647
"%"
Marcador de
posicin de
porcentaje.
- 41 -
0.3697 ("%#0.00",
en-US) -> %36.97
0.3697 ("##.0 %",
el-GR) -> 37,0 %
""
"E0"
'string'
Otros
0.03697
("#0.00", enUS) -> 36.97
987654 ("#0.0e0")
-> 98.8e4
987654
("\###00\#") ->
#987654#
68 ("# ' grados'") > 68 grados
12.345
("#0.0#;(#0.0#);\0-") -> 12.35
68 ("# ") -> 68
en las secciones siguientes se proporciona informacin detallada sobre cada uno de los
especificadores de formato numrico personalizado.
Ejemplo de El especificador personalizado "0"
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main()
y #
- 42 -
{Double value;
value = 1.2;
Console.WriteLine(value.ToString("0.00"));
//' Displays 1.20
Console.WriteLine(value.ToString("00.00"));
//' Displays 01.20
Console.WriteLine(value.ToString("00,00"));
//' Displays 01,20
Console.WriteLine(value.ToString(" #0.000"));
value = 0.086;
Console.WriteLine(value.ToString("#0.##%"));
//' Displays 8.6%
value = 86000;
Console.WriteLine(value.ToString("0.###E+0"));
//' Displays 8.6E+4
value = 1234567890;
Console.WriteLine(value.ToString("#,#")) ;
// ' Displays 1,234,567,890
Console.WriteLine(value.ToString("#,##0,,")) ; // ' Displays 1,235
Console.ReadLine();
}
}
}
- 43 -
}
}
}
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
//' concatenar mltiples valores ' declarar variables
String Nombre;
int Nota;
//' asignar valor a las variables
Nombre = "Juan";
Nota = 17;
Console.WriteLine("El alumno " + Nombre + " Tiene " + Nota + " de nota");
Console.ReadLine();
}
}
}
Parmetros sustituibles.
Pasando como primer parmetro la cadena a mostrar, y aadiendo tantos parmetros
adicionales como valores debamos mostrar en la cadena principal. En la cadena
principal indicaremos el lugar en donde visualizaremos los parmetros poniendo su
nmero entre los smbolos de llave { }. El Cdigo fuente muestra la misma situacin
del ejemplo anterior pero utilizando esta tcnica. El resultado final en la
consola es el mismo que el del ejemplo anterior.
- 44 -
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
//' concatenar mltiples valores ' declarar variables
String Nombre;
int Nota;
//' asignar valor a las variables
Nombre = "Juan";
Nota = 17;
Console.WriteLine("El alumno {0} Tiene {1} de nota", Nombre, Nota);
Console.ReadLine();
}
}
}
Como habr comprobado el lector, los parmetros sustituibles comienzan a numerarse
por cero, no estando obligados a mostrarlos en el mismo orden en el que los hemos
situado en la llamada al mtodo. El Cdigo fuente 45 muestra dos ejemplos de
sustitucin de parmetros, uno de ellos con el mismo orden en el que se han situado
en WriteLine( ), y otro con un orden distinto.
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
//' concatenar mltiples valores ' declarar variables
String Nombre;
int Nota;
//' asignar valor a las variables
Nombre = "Juan";
Nota = 17;
Console.WriteLine("El alumno {1} Tiene {0} de nota", Nota,Nombre);
Console.ReadLine();
- 45 -
}
}
}
Lectura de informacin
Para obtener el texto escrito por el usuario en la lnea actual de la consola y hasta la
pulsacin de [INTRO] podemos utilizar el mtodo ReadLine( ) del objeto Console.
El Cdigo fuente 46 muestra como volcamos a una variable el contenido de la lnea
escrita por el usuario y posteriormente exponemos su contenido, tambin a travs de
la consola.
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
//
' declaramos una variable para volcar el contenido
//' de una lnea de la consola
String LineaTexto;
Console.Write("Ingrese un texto");
LineaTexto = Console.ReadLine(); //' el texto se pasa a la variable
//' ahora mostramos lo que hemos escrito
Console.WriteLine();
Console.WriteLine("El usuario ha escrito la siguiente lnea:");
Console.WriteLine(LineaTexto);
//' aqu evitamos cerrar la consola, ' as podemos ver mejor el resultado
Console.ReadLine();
}
}
}
- 46 -
Read( ) es otro mtodo del objeto Console que permite tambin la lectura del
dispositivo de entrada de la consola, pero en este caso devuelve el cdigo de una sola
tecla pulsada por el usuario. Para ilustrar el uso de este mtodo tenemos el ejemplo del
Cdigo fuente 47, en el que despus de pulsar varias teclas, nos introducimos en un
bucle que va extrayendo cada uno de sus cdigos, que volvemos a
transformar en el carcter correspondiente a la tecla pulsada.
Cul es la diferencia entre el Read y el Readline?
Que el Readline lee toda una lnea de texto mientras para el Read podemos usar
conversiones para que leamos por ejemplo son un carcter.
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
int CodTecla;
Object NombreTecla;
Console.WriteLine("Pulsar varerias teclas");
Console.WriteLine();
while(true)
{ //' tomar los cdigos de las teclas uno a uno
CodTecla = Console.Read();
//' si se ha pulsado intro, salir
if (CodTecla == 13)
{
break;
}
Console.WriteLine("Cdigo de tecla pulsada: {0}", CodTecla);
//' convertir el cdigo al caracter de la tecla
NombreTecla = CodTecla;
- 47 -
Ejecucin
- 48 -
- 49 -
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
float radio, Area;
Console.Write(" Ingrese radio del circulo ");
radio = Convert.ToSingle(Console.ReadLine());
Area = Convert.ToSingle(Math.PI * radio * radio);
Console.Write(" El Area es {0} ", Area);
Console.ReadLine();
}
}
}
Ejecute con F5
Puede capturar la pantalla de salida con alt+imp pantallla y despues control+ v
- 50 -
Salida
- 51 -
}
}
}
Salida
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
int x = 10;
double y = 3.1416;
Console.WriteLine("X sin formato= {0} ", x);
Console.WriteLine("X con 10 espacios izquierdo = {0,10} ", x);
Console.WriteLine("X con 10 espacios derecho = {0,-10} ", x);
Console.WriteLine("Y sin formato {0} ", y);
Console.ReadLine();
}
}
}
Problema C107. Ejemplo df ,caracteres de escape
Para escribir caracteres de escape
vbCrLf
retorno de carro y salto de linea
vbCr
retorno de carro
vbTab
tabulador
tambin se puede escribir como codio ASCCI por ejmeplo para el tabulador de debe
escribir chr(9)
- 52 -
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
Console.WriteLine(" Hola \n Hola \t \"Hola \"
Console.ReadLine();
}
}
}
\b Hola ");
- 53 -
using System;
using System.Globalization;
class Example
{
public static void Main()
{
int integerNumber;
integerNumber = 17843;
Console.WriteLine(integerNumber.ToString("F", CultureInfo.InvariantCulture));
//' Displays 17843.00
integerNumber = -29541;
Console.WriteLine(integerNumber.ToString("F3", CultureInfo.InvariantCulture));
//' Displays -29541.000
double doubleNumber;
doubleNumber = 18934.1879;
Console.WriteLine(doubleNumber.ToString("F", CultureInfo.InvariantCulture));
//' Displays 18934.19
Console.WriteLine(doubleNumber.ToString("F0", CultureInfo.InvariantCulture));
//' Displays 18934
doubleNumber = -1898300.1987;
Console.WriteLine(doubleNumber.ToString("F1", CultureInfo.InvariantCulture));
//' Displays -1898300.2
Console.WriteLine(doubleNumber.ToString("F3",
CultureInfo.CreateSpecificCulture("es-ES")));
//' Displays -1898300,199
Console.ReadLine();
}
}
- 54 -
using System;
using System.Globalization;
class Example
{
public static void Main()
{
Double value;
value = 1.2;
Console.WriteLine(value.ToString("#.##", CultureInfo.InvariantCulture));
//' Displays 1.2
value = 123;
Console.WriteLine(value.ToString("#####"));
//' Displays 123
value = 123456;
Console.WriteLine(value.ToString("[##-##-##]"));
//' Displays [12-34-56]
value = 1234567890;
Console.WriteLine(value.ToString("#"));
//' Displays 1234567890
Console.WriteLine(value.ToString("(###) ###-####"));
//' Displays (123) 456-7890
Console.ReadLine();
}
}