ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10...

124
< > Programación 1

Transcript of ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10...

Page 1: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

1

Page 2: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

2

Somos una empresa 100% mexicana, con más de 20 años de experiencia siendo el Cen-

tro líder de Capacitación en informática.

Hoy en día, tener las mejores herramientas es sólo una parte del todo lo que signi-

fica que conviene siempre estar en permanente capacitación.

Grupo Eduit ha establecido un programa integrado capaz de identificar y perso-

nalizar las necesidades de los diferentes niveles educativos del país manteniéndose en

cada paso como asesor y colaborador, generando un “programa conforme a sus necesi-

dades”.

MisiónSatisfacer las necesidades de capacitación en tecnologías de informática a través de

programas de entrenamiento de calidad, siendo siempre una empresa a la vanguardia.

VisiónSer líder de soluciones de capacitación a nivel internacional.

Page 3: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

3

1 Algoritmos 9

1.1 Lógica computacional 9

1.1.1 Sintaxis de la lógica de predicados 9

1.2 Algoritmos 10

1.2.1 Prueba de escritorio 11

1.3 ClasificacióndeAlgoritmos 13

1.3.1 Transcripción 13

1.3.2 Compilación y errores 13

1.4 Variables 14

1.4.1 Asignación de valores 14

1.5 Operadores 15

1.5.1 Operadores aritméticos y su prioridad 15

1.6 Estructuras Básicas 16

1.6.1 Primera estructura: Secuencia de acciones 16

1.6.2 Segunda estructura: Decisión de acción 17

1.6.3 Tercera Estructura: Ciclos de acciones 19

1.7 Técnicas para representar algoritmos 20

1.7.1 Diagramasdeflujo 20

Page 4: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

4

2 Pseudocódigo 28

2.1 Introducción 28

2.2 Diagramas de Nassi Scheiderman (N-S) 28

2.2.1 Diagrama N-S de estructuras de decisión 28

2.3 Normas 30

2.4 Ciclos 35

2.4.1 Ciclo Mientras (While) 35

2.4.2 Ciclo Para (For) 36

2.4.3 Ciclo Hacer-Mientras (Repeat While) 38

2.4.4 Ciclo Hacer-Hasta (Repeat Until) 40

2.4.5 Ciclos Anidados 41

3 Almacenamiento persistente de datos 43

3.1 Diseño conceptual 43

3.1.1 Entidades 44

3.1.2 Relaciones 45

3.1.3 Modelo Entidad-Relación 46

3.2 Diseño lógico 50

Page 5: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

5

3.2.1 Tipos de Datos 50

3.3 Lenguajedeconsulta 50

3.3.1 Sintaxisbásicadellenguajedeconsultaestructurado(SQL) 50

3.3.2 Sentencias de selección, inserción, actualización y borrado de datos 51

4 .NET 56

4.1 .NET Framework 56

4.1.1 Entornodeejecución 56

4.1.2 Biblioteca de Clase Base (BCL) 57

4.1.3 Sistema de tipo común (CTS) 58

4.1.4 Especificacióndellenguajecomún(CLS) 58

4.2 Entorno de Programación 58

4.2.1 Entorno de Desarrollo (IDE) 59

4.2.2 Descarga e Instalación 59

4.2.3 Interfaz de usuario 59

4.3 Introducción a la programación en C# 64

4.3.1 Estructura de un programa 64

4.3.2 Palabras reservadas 65

4.3.3 Literales 67

Page 6: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

6

4.3.4 Variables 67

4.3.5 Tipos de Datos 68

4.3.6 Operadores 70

4.3.7 Constantes y enumeraciones 75

4.4 Sentencias de Control 78

4.4.1 Condicionales 78

4.4.2 Ciclos 81

4.4.3 Uso de Break y Continúe 86

4.5 Métodos, Arreglos y Colecciones 88

4.5.1 Métodos 88

4.5.2 Parámetros 93

4.5.3 Namespace 94

4.5.4 Arreglos 95

4.5.5 Declaración 96

4.5.6 Colecciones 100

4.5.7 Listas 100

4.5.8 Pilas 103

4.5.9 Colas 104

Page 7: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

7

5 Programaciónorientadaaobjetos 108

5.1 ClasesyObjetos 108

5.1.1 Definicióndeclases 109

5.1.2 Accesibilidad 110

5.2 Interfaces de Usuario 111

5.2.1 Barra de herramientas y controles de usuario para formularios Windows 111

5.2.2 Controles de usuario y sus eventos asociados 112

5.3 Excepciones 116

5.3.1 Excepciones del sistema 117

5.3.2 Excepciones personalizadas 120

5.4 Archivos 121

5.4.1 Streams 122

Page 8: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

•Comprender cuáles son las secuencias lógicas que se utilizan en programación así como su finalidad.

•Identificar el proceso para la construc ción de algoritmos.

•Clasificar a los algoritmos partiendo de los errores en las secuencias.

•Estimar el valor de una variable. •Evaluar el valor de las variables en diferentes operaciones.

•Manejar las estructuras básicas de los algoritmos.

•Conocer las técnicas para representar algoritmos.

Page 9: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

9

1 Algoritmos

1.1 Lógica computacional

La lógica es muy importante ya que ayuda a determinar la forma en que se puede dar solución a un proble-ma. Sin ella no es posible organizar los pasos que generen lo que esperamos obtener.

Lacomputadoratrabajaconunalógicaespecial,exactaymatemática.

Todaslasactividadesquerealizasenlacomputadoraestánbasadasenunalógicaenformadeprocedimientos o secuencias de pasos que hay que realizar para lograr lo que se quiere.

1.1.1 Sintaxis de la lógica de predicados

La lógica de predicados se basa en la idea de que las sentencias expresan relaciones entre objetos, así como cualidades y atributos de estos objetos.

Losobjetospuedenserpersonas,objetosfísicos,oconceptosyseconocencomoargumentos o términos del predicado.

Y las cualidades, relaciones o atributos, se denominan predicados.

Pordefectoseconsideraquelospredicadossonverdaderos,yelhechodequeseanverdaderosdepende de sus términos.

Estosignificaqueunpredicadopuedeserverdaderoparaunconjuntodetérminos,perofalsopara otro.

Por ejemplo, el siguiente predicado:

color (pasto, verde) esverdadero

perosialmismopredicado,lecambiamoslosargumentos,esteyanoseráverdadero:

color(pasto,azul)ocolor(cielo,verde)

Otro ejemplo sería:

textura (algodón, suave) esverdadero

y textura (piedra , suave) ó textura (algodón, aspero) son falsos

Cuandolosargumentosrepresentanaunobjetoespecíficoestosargumentossellamancons-tantes.

Pero también existen argumentos que en determinado momento pueden ser desconocidos, es-tosargumentossontambiénllamadosvariables.

Page 10: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

10

En el ejemplo:

color (pasto, X)

lavariableXpuedeserelcolorverde,haciendoqueelpredicadoseaverdadero;opuedeserelcolorazul, resultando un predicado falso.

1.2 Algoritmos

Unalgoritmoesunconjuntodeactividadesoprocesosformadosporunaseriedeinstruccionesotareasorganizadasdeformalógica,quenospermitenalcanzarunresultadooresolverunproblema.

Un algoritmo es un conjunto de instrucciones para resolver un problema.

Debe cumplir con dos reglas generales:

1.Elnúmerodepasosdebeserfinito.Deestamaneraelalgoritmodebeterminarenuntiempofinitoconla solución del problema,

2. El algoritmo debe ser capaz de determinar la solución del problema.

Lascaracterísticasprincipalesdeunalgoritmosonlassiguientes:

a) Precisión. Los pasos a seguir deben ser claros y correctos.

b)Determinismo.Elalgoritmo,dadounconjuntodedatosdeentradaidénticos,debearrojarsiemprelosmismos resultados.

c)Finitud.Elalgoritmo,independientedelacomplejidaddelmismo,siempredebeserdelongitudfinita.

Vistasdeotraformapodemosdefinirlosiguiente

1.Entrada:definirloquenecesitaelalgoritmo

2.Salida:definirloqueproduce.

3. No ambiguo: explícito, siempre sabe qué comando ejecutar.

4.Finito:Elalgoritmoterminaenunnúmerofinitodepasos.

5. Correcto: Hace lo que se supone que debe hacer. La solución es correcta

6.Efectividad:Cadainstrucciónsecompletaentiempofinito.Cadainstruccióndebeserlosuficientemen-te básica como para que en principio pueda ser ejecutada por cualquier persona usando papel y lápiz.

7.General:Debeserlosuficientementegeneralcomoparacontemplartodosloscasosdeentrada.

Page 11: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

11

Ejemplo

Unclientesolicitauncréditoaunaempresa.Laempresabuscaensubasededatoslafichadelcliente;sielclienteessolventeentonceslaempresaotorgaelcrédito;encasocontrario,rechazaelcrédito.

Los pasos del algoritmo son:

1. Inicio.

2. Aceptar solicitud de crédito.

3.Examinarlafichadelcliente.

4.Sielclienteessolvente,otorgarcrédito;encasocontrario,rechazarelcrédito.

5. Fin.

1.2.1 Prueba de escritorio

Es la comprobación de forma lógica, de un algoritmo.

Parallevaracabounapruebadeescritorio,seutilizaráelsiguienteprocedimiento:

1. Con los datos de prueba, se seguirán cada uno de los pasos propuestos en el algoritmo de reso-lución.

2. Silapruebadeescritoriogeneraresultadosóptimos,quieredecirqueelalgoritmoposeeunalógica adecuada, en caso contrario el algoritmo tendrá que ser corregido.

Ejemplo:

suma: entero

entrada: entero

menor: entero

leer entrada

menor = entrada

suma = 0

mientras (entrada != 0)haga

si (entrada < menor) entonces

Page 12: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

12

menor =entrada

fin_si

suma = suma + entrada

leer entrada

fin_mientras

escribir“valorMenor:”

escribir menor

escribir“Suma:”

escribir suma

Instrucción Entrada Menor Suma Pantallaleer entrada 10menor=entrada 10suma = 0 0suma=suma + entrada 10leer entrada 7menor=entrada 7suma=suma + entrada 17leer entrada 9suma=suma + entrada 26leer entrada 0Escribir“valormenor” ValorMenorEscribir menor 7Escribir“Suma” Suma:Escribir suma 26

La prueba de escritorio nos permite saber:

• Si el programa hace lo que debería hacer

• Sinohaceloquedeberíahacer,nospermitirádetectarerrorescomo:

o Si algún paso o instrucción no está en el orden correcto

o Si falta algo

o Si algo esta de más

Page 13: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

13

o Silospasosoinstruccionesqueserepitenlohacenmásomenosvecesdelodebido

o Si las instrucciones están en un orden apropiado

o Otros errores que pueden presentarse

• Elegir los datos apropiados para la prueba

Lapruebadeescritorioesrealizarunprocesodesimulaciónconelalgoritmodesarrollado(observarquéprocesos realizaría una computadora). Este trabajo se realiza en base a una tabla cuyos encabezados son lasvariablesqueseusanenelalgoritmoydebajodecadaunadeellassevancolocandolosvaloresquevantomando,pasoapasoysiguiendoelflujoindicadoporelalgoritmo,hastallegaralfinal.

1.3 ClasificacióndeAlgoritmos

Algoritmo determinista: en cada paso del algoritmo se determina de forma única el siguiente paso.

Algoritmo no determinista:debendecidirencadapasodelaejecuciónentrevariasalternativasyagotar-las todas antes de encontrar la solución.

1.3.1 Transcripción

Eselprocesoatravésdelcualconvertimosunalgoritmoenunlistadodeinstruccionesentendiblesparalacomputadora.Estasinstruccionesdebenajustarsealasreglassintácticasdeunlenguajedeprogramación.Lasreglassintácticasdeunlenguajedeprogramaciónsonlasrestriccionestécnicassobrelascualesestáconstruido el lenguaje.

Podríamosdecirqueesla“traducción”deunalgoritmoconla“ortografía”deunLenguajedePrograma-ción.

1.3.2 Compilación y errores

Lacompilacióneselprocesomedianteel cual la computadora revisaqueelprogramaquehazescritocumplaconlasreglassintácticasdellenguajedeprogramaciónqueestésutilizando.Elcompiladoreselencargadodehacerestarevisiónyteayudaadetectarloserroresdesintaxisydeprecaución.

Cadalenguajedeprogramacióntienesusintaxispropiaporlotantoexisteuncompiladorespecíficoparacada uno.

Si el programa fuente está escrito de manera correcto, el compilador generará el código objeto, en caso contrario mostrará una lista con los errores encontrados, no generándose ningún programa objeto, para que podamos depurarlo.

Page 14: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

14

1.3.2.1 Errores de compilación

También conocidos como errores del compilador, son errores que impiden que el programa se ejecute.

Lamayoríasedebenaerrorescometidosalescribirelcódigo.Porejemplo,puedesescribirmalunapalabraclaveuomitiralgunapuntuaciónnecesaria.

1.4 Variables

Unavariableesuntipodecajadealmacenamientoqueseutilizapararecordarvalores,deformaqueéstospuedanutilizarseomodificarsemásadelanteenelprograma.

Tambiénpodemosdecirqueunavariableesunelementoqueseempleaparaalmacenaryhacerreferenciaaotrovalor.

1.4.1 Asignación de valores

Sinoexistieranvariables,unprogramaquesumadosnúmerospodríaescribirsecomo:

resultado = 3 + 1

Elprogramaanteriorestanpocoútilquesólosirveparaelcasoenelqueelprimernúmerodelasumaseael3yelsegundonúmeroseael1.Encualquierotrocaso,elprogramaobtieneunresultadoincorrecto.

Sinembargo,elprogramasepuederehacerdelasiguientemanerautilizandovariablesparaalmacenaryreferirse a cada número:

numero_1 = 3

numero_2 = 1

resultado = numero_1 + numero_2

Los elementos numero_1 y numero_2sonvariablesquealmacenanlosvaloresqueutilizaelprograma.Elresultadosecalculasiempreenfuncióndelvaloralmacenadoporlasvariables,porloqueesteprogramafuncionacorrectamenteparacualquierpardenúmerosindicado.Sisemodificaelvalordelasvariablesnumero_1ynumero_2,elprogramasiguefuncionandocorrectamente.

Lasvariablessepuedencaracterizarpor:

Nombre: por el cuál la referenciamos dentro del algoritmo

Dirección: donde se almacena.

Tipo:laclasedevaloresquepuedealmacenar,implicauntamañodememoriayconjuntodeoperacionessobrelosvalores.

Page 15: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

15

Valor:Eselcontenidoenunmomentodado.Puedenvariarsuvalor(contenido)alolargodelaejecucióndel programa.

Elvalordeunavariablepuedecambiaramedidaqueelprogramarealizasusecuenciadeoperaciones,peroelnombreesfijo.Elprogramadortienelalibertaddeelegirlosnombres,yrecomendamosescogeraquellosqueseansignificativosyfácilesderecordaroidentificar.

1.5 Operadores

En el código fuente de un programa un operador es un carácter o una secuencia de caracteres. Por ejem-plo: ‘+’ o ‘*’ Losoperadoresdefinenlasoperacionesquevanarealizarseconlosdatosuoperandos.Existendistintostiposdeoperadoresporejemplooperadoresaritméticos,decadenasdecaracteres,derelación, lógicos o booleanos, de bit y de conjuntos etc.

1.5.1 Operadores aritméticos y su prioridad

En el siguiente ejemplo:

area=longitud*ancho;

1. El carácter ‘*’hacequesemultipliquenlosvaloresalmacenadosenlongitudyancho

2. El símbolo igual ‘=’hacequeelresultadodelamultiplicaciónseasignea(sealmaceneen)área.

Acontinuaciónsemuestranlosoperadoresaritméticos,quesonsimilaresalosbotonesdecualquiercal-culadora.

Operador Significado* multiplicación/ división% módulo+ suma- resta

Observaquesehandivididolosoperadoresengruposparaindicarsu“precedencia”,esdecir,elordenenelqueserealizansusoperaciones.Porlotanto,lamultiplicación,divisiónymódulo(*,/y%)sellevanacabo antes que la suma y la resta (+ y –). También podemos usar paréntesis para agrupar los cálculos y for-zarlosallevarseacaboenunordenespecífico.Siuncálculoincluyeoperadoresdelamismaprecedencia,las operaciones se realizarán de izquierda a derecha.

Page 16: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

16

1.6 Estructuras Básicas

Unaestructurasedefinecomounesquemaquenospermiterepresentardemanerasimplificadaalgunaidea y que bajo condiciones normales es constante.

1.6.1 Primera estructura: Secuencia de acciones

Cuandotienesquepensarquedebesirhastala paradadelautobúsatomareltransporteloquevasorganizando en tu mente es una secuencia de acciones que te permitan: acercarte a la parada, esperar el autobús correcto y tomarlo para ir a tu casa.

Puesbienesaeslaprimeraestructurasobrelacualsemueveelpensamientohumanoyeslaestructurade: Secuencia de Acciones.

Paraescribirunasecuenciadeaccionestodoloquetienesquehacerescolocarunanuevaordenounanuevaaccióndespuésdelaúltimaquehayascolocado.Deestamaneraseentiendelasecuencialidadyelorden en la ejecución de esas acciones.

Vamosadesarrollarunalgoritmoquenospermitaasomarnosalaventana,perovamosaasumirquelaventanaadondenosqueremosasomaryaestáabiertayquenoestamosmuydistantesdelaventana.Entonces diríamos:

Algoritmoparaasomarnosalaventana

Inicio

Ubicar la ventana por la que nos queremos asomar

Levantarnos del lugar en donde estemos sentados

Avanzarhacialaventana

Llegarhastatenerlaventanamuymuycerquita

Asomarnos por la ventana

Fin

En el ejemplo dado se puede notar que cada acción está antes de una y después de otra (excepto por supuestolaprimeraylaúltima).

Laestructuradesecuenciaavecesparecesertanobviayaquetodoloquetenemosquehaceresircolo-cando una acción tras otra y, por supuesto, ser muy racionales en el orden de dichas acciones porque en cuestióndealgoritmosel orden de los factores si altera el resultado.

Page 17: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

17

1.6.2 Segunda estructura: Decisión de acción

Hasllegadoalaparadadelautobús,vescómopasanypasanautobusesperoningunotienelarutaquene-cesitas.Porcadaautobúsquepasamiraslarutayalverquenoes,esperaselsiguienteyasísucesivamentehastaquevesllegaralquenecesitas.Precisamenteestáeslasegundaestructurasobrelacualsebasaelpensamiento (o razonamiento) humano. Ésta es la estructura de Decisión de acción.

Graciasalacualpuedesescogerlamejoralternativadeentrevarias,siemprequetenemosquetomarunadecisióno,másbien,siemprequetengamosqueutilizarlaestructuradeDecisionesvamosadependerdeuna condición. La condición es la que nos permite que podamos decidir cuál es el camino lógico correcto a tomar.

Vamosadesarrollarelmismoalgoritmodeasomarnosalaventanaperoestaveznolevamosacolocarlascondicionesdequeestamoscercadelaventanaydequeéstaestáabierta.Paraellovamosaincor-porar una líneas de decisión que nos permitan tener un algoritmo más genérico y que nos permita lograr mejorelobjetivo,así:

Algoritmoparaasomarnosalaventana

Inicio

Ubicar la ventana por la que nos queremos asomar

Si estamos sentados

Levantarnos del lugar en donde estemos sentados

Orientarnoshacialaventana

De lo contrario

Orientarnoshacialaventana

Avanzarhacialaventana

Llegarhastatenerlaventanamuymuycerquita

Si esta cerrada

Abrirla

Asomarnos por la ventana

Fin

Elalgoritmohacambiadounpocoyporlotantoahoratieneunascondicionesquelepermitenserunasecuenciadeaccionesmásracional.Enestascondicioneselalgoritmoseconvierteenalgomásdepuradoymuchomásaproximadoalarealidad.Observalossiguientespuntosenestealgoritmo

Page 18: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

18

1. Las palabras Siqueaparecensonexclusivamentecondicionalesynoafirmativascomopudierapensarseen algunos casos

2. Después de cada Sicondicionalvaunacondiciónqueeslaquepermitequesehagaunacosauotra.LacondiciónregulalasaccionesquevienendespuésyquedependendelSicondicionalinicial.Enladecisión:

Si estamos sentados

Levantarnos del lugar en donde estemos sentados

Orientarnoshacialaventana

De lo contrario

Orientarnoshacialaventana

Notamos que estar sentados es la condición de la cual depende si hacemos las dos acciones:

Levantarnos del lugar en donde estemos sentados

Orientarnoshacialaventana

O si sólo hacemos la acción

Orientarnoshacialaventana

3.Notaqueunadecisióncompletainvolucra:

Una pregunta que evalúa una condición

Unconjuntodeaccionesarealizarencasodequelacondiciónseaverdadera

Unconjuntodeaccionesarealizarencasodequelacondiciónseafalsa

Estaúltimaparte,dentrodeenunciado3,esrazóndeserdelaexistenciadelaacciónDe lo contrario.

4. No siempre que exista un condicional SidebeexistirunDe los contrario asociado a él. Siempre que exista un De lo contrario es porque está asociado a un Si condicional determinado. Tal es el caso de la Decisión

Si está cerrada

Abrirla

En donde si laventanaestáabiertapuesnohayquehacermásqueasomarseporellaperosi está cerrada debemos primero abrirla para poder asomarnos por ella.

Page 19: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

19

1.6.3 Tercera Estructura: Ciclos de acciones

Acostumbras todos los días ir a la escuela a la misma hora y a esperar el autobús en la misma parada, SencillamentevivespracticandolaterceraestructurallamadaCiclos de acciones.

Quenoesmásquelaestructuraquenospermiterepetirunaovariasaccionesunacantidaddefinidadeveces.

Todos los días desayunas en tu casa por lo cual estarás en el ciclo de ir a desayunar a tu casa siempre pero enplenodesayunoelhechodequellevesmuchasveceslacucharadelplatoatubocarepresentaqueestaráshaciendolomismomientrasenelplatoexistatodavíaalgomásparacomer.

Vamosasuponerqueeresunsupervisordeunafábricayquecadamediahora,alolargodetodoeldía,debesestarvigilandodeterminadaaccióna travésdeunaventana..Enpalabras sencillas tendrásqueasomarteporunaventanamientrasnotermineeldíacadamediahorayduranteeltiempoquenoestésasomadoloquetienesquehaceresseguirentupuestodetrabajo.Deestaformapodrásestructurarunalgoritmo más o menos de la siguiente manera:

AlgoritmoparaVigilardesdeunaventana

Inicio

Llegarpuntualalahoradeiniciodelajornadalaboral

Ubicarnos en nuestro escritorio

Mientrasnoseaelfindeldía

Ubicar la ventana por la que nos queremos asomar

Si estamos sentados

Levantarnos del lugar en donde estemos sentados

Orientarnoshacialaventana

De los contrario

Orientarnoshacialaventana

Avanzarhacialaventana

Llegarhastatenerlaventanamuymuycerquita

Si esta cerrada

Abrirla

Page 20: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

20

Asomarnos por la ventana

Regresar a nuestro escritorio

MientrasnohayapasadoMediaHora

Permanecer en nuestro escritorio

Fin_Mientras

Fin_Mientras

Fin

Variosfactoresnuevosentranenestealgoritmo

1. La palabra Mientras establece en relación con una condición el inicio de un conjunto de acciones que se repiten precisamente Mientras esa condición lo permita

2. Todo Mientras(porefectosdeclarificacióndelalgoritmo)debetenerunfinalizadorqueindiquehastadondellegaelbloquedeaccionesquedebemosrepetir.

3.Laindentaciónoloquecorrientementeseconocecomoel“Sangrado”deltextoesdecirelhechodequealgunas acciones estén más adentro de la hoja que otras, representa que existen bloques de acciones que tienenunacaracterística.

Las acciones contenidas entre el Inicio y el Fin indican que son las acciones que conforman el algoritmo en mención.

Las acciones comprendidas entre Mientras no sea Fin del día y su correspondiente Fin_Mientras sonelconjuntoobloquequesedeberepetir(o iterar)precisamentemientras lacondiciónseaVerdadera o sea Mientrasnoseafindeldía.

La acción comprendida entre MientrasnohayapasadoMediaHoraysucorrespondienteFin_Mientras es la acción que se deberá realizar hasta cuando se complete media hora.

4. Cada ciclo de acciones que se inicie con Mientras deberá tener un Fin_Mientrasasociadoyasuvezcada Fin_MientrasdeberáfinalizarunoysolouncicloiniciadoconMientras.

1.7 Técnicas para representar algoritmos

1.7.1 Diagramasdeflujo

Los Diagramas de Flujo parten de unos símbolos que nos permiten decir lo mismo que los algoritmos perodeunamaneragráficaymásentendible.

Page 21: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

21

Lossiguientessonalgunosdelossímbolosyelsignificadodeellosquesehanacordadoutilizardentrodelos Diagramas de Flujo o Flujogramas:

Símbolo SignificadoRepresenta un proceso que no es más que una acción o una orden a ejecutarse de manera clara yconcreta.Porejemplolaasignacióndeunvaloraunavariable.

Permite representar una Decisión. En su interior podemos escribir la condición de la cual depen-de la decisión y por sus extremos derecho (o iz-quierdo) e inferior se pueden colocar las salidas para los casos en que la condición sea Falsa o sea Verdadera. Permite expresar un proceso de entrada o sali-da, teniendo en cuenta que una entrada en un algoritmoseconcibecomoel procesoatravésdel cual se recibe información y una salida es el procesoatravésdelcualseentregainformación.Permite representar la escritura de un resultado o lo que técnicamente se conoce como una sa-lida.

Representa el Inicio ó el Fin de un Algoritmo. Todoloquesetienequehaceresescribirlapa-labra Inicio o Fin Permite que coloquemos en él los parámetros de inicio de un ciclo cuando se ajusta a una de las formas establecidas por las normas de progra-mación. Representaunaentradadedatosutilizandoelte-clado del computador. Todo lo que tenemos que escribirensuinterioreselnombredelavariable(o lasvariables)endondequeremosqueseal-macene el dato que entra por el teclado.Estos símbolos se conocen como conectores ló-gicos.Nospermitenrepresentarlacontinuaciónde un Diagrama de Flujo cuando éste es tan lar-go que no cabe en una sola hoja.Permite representar una lectura de datos.

Page 22: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

22

Este símbolo genera una salida de datos. repre-senta sencillamente una salida o una escritura de datos.

Representa una salida de datos pero escrita en la pantalla del computador.

Lasflechassonlossímbolosquenosvanaper-mitirrepresentarlaformadeconexiónentrelosdemás símbolos determinando igualmente el Flujo de ejecución o realización de acciones.

Estossímbolosfueronutilizadospormuchotiempopararepresentargráficamenteunaideaounalgoritmo.

¿Cómoseutilizaentoncesestasimbología?Tomemoselcasodelosdosalgoritmosqueconstruimosmien-trasconocíamoslasestructurasbásicas.Elenunciadofinalbuscabadesarrollarunalgoritmoquenosper-mitieraVigilarunaempresadesdeunaventanaasomándonoscadamediahoraporella.ElAlgoritmolohabíamosplanteadocomosigueacontinuación:

AlgoritmoparaVigilardesdeunaventana

Inicio

Llegarpuntualalahoradeiniciodelajornadalaboral

Ubicarnos en nuestro escritorio

Mientrasnoseaelfindeldía

Ubicar la ventana por la que nos queremos asomar

Si estamos sentados

Levantarnos del lugar en donde estemos sentados

Orientarnoshacialaventana

De lo contrario

Orientarnoshacialaventana

Page 23: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

23

Avanzarhacialaventana

Llegarhastatenerlaventanamuymuycerquita

Si esta cerrada

Abrirla

Asomarnos por la ventana

Regresar a nuestro escritorio

MientrasnohayapasadoMediaHora

Permanecer en nuestro escritorio

Fin_Mientras

Fin_Mientras

Fin

SiqueremosllevarloalasimbologíadeDiagramasdeFlujosuequivalenteseríaelsiguiente:

Diagrama De Flujo Para Vigilar Desde Una Ventana

Page 24: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

24

Page 25: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

25

CabedestacaralgunosdetallessignificativosenesteDiagramadeFlujo:

1.Todadecisión,comoesobvio,tienedoscaminos:Uncaminonosllevaalaacciónolasaccionesarealizaren el caso de que la respuesta a la pregunta sea Verdadera y el otro camino es el que nos dice que debemos hacer en caso de que la respuesta a la pregunta sea Falsa.

2. Lo que en el algoritmo eran unos ciclos, en el diagrama se cambiaron por unas decisiones en donde uno deloscaminossedevuelve(instruccionesatrásobviamente).AlrealizarunseguimientodeesteDiagramadeFlujonotarásquesepodrádevolvertantasvecescomolopermitalacondicióndelaDecisiónquequedaalfinalyquesolosevaasalirdeesesciclocuandolacondiciónseaVerdaderaoseaqueelciclosemantie-ne mientras la condición sea Falsa lo cual concuerda con la teoría de los ciclos.

Page 26: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

26

3.Enlaúltimadecisión,elcaminoFalsonosllevaaunaburbujaquetieneunnúmero1adentro.

Númeroquetambiénestáalprincipiodeldiagramaperoconlaflechaenelotrosentido(esdecir,nosa-liendo del diagrama sinoentrandoaél).SeutilizaestanotaciónsoloparasimplificarunpocoelDiagramade Flujo.

4.ConelDiagramadeFlujoustedpuedeverungráficodelasoluciónyconellohacerseunaideaclaradelasecuenciadepasosquenecesitaríaparaalcanzarelobjetivo.

5.SiemprequevayaadesarrollarunDiagramadeFlujotratedesermuyorganizadoymuyestético,puesnoseolvidequesivamosarepresentarunalgoritmocomputacional(endondesebuscaqueelcompu-tadorlogreunobjetivopornosotros)almomentodelatranscripciónserámuyimportanteelordenqueustedhayatenidoenlautilizacióndeestatécnica.

6.Cuandodiseñeunciclo,noseolvideverificarque,lógicamente,ladecisiónporlacualreemplaceelcicloalmomentodediseñarsudiagramadeflujotengaelmismocomportamientoesdecirpermitanquebajolasmismascondicionesunaacciónounconjuntodeaccionesserepitanunacantidadfinitadeveces.

7.Sielalgoritmoqueustedtieneparalograrestemismoobjetivoesdiferente,tengapresentaqueelDia-gramadeFlujotambiénvaaserdiferenteyaqueésteesunreflejográficodeaquel.

8.Esmuyimportantequesepaqueelsolohechodecambiarlallegadadeunadeterminadaflecha,cambiacompletamenteelalgoritmo.Puedeustednotarquelautilizacióndelossímbolosresultaserunatareamuysimplificada,peroloquesiesdelicadoeslacolocacióndelasflechasyaqueellassonlasquerepre-sentanelsentidoconquesevaa“mover”elflujodenuestrológica.

Page 27: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

•Reconocer pseudocódigos.

•Identificar el Diagrama (N-S) y su aplicación en los algoritmos.

•Trabajar con algoritmos identificando decisiones simples, en secuencia o anidadas.

•Elegir el tipo de ciclo adecuado en la creación de algoritmos.

•Resolver problemas utilizando recorridos secuenciales.

Page 28: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

28

2 Pseudocódigo

2.1 Introducción

Pseudocódigo es la representación textual de un algoritmo de manera que dicho texto se encuentre enmarcado en algunas normas técnicas que faciliten su posterior transcripción a un lenguaje de Progra-mación.

2.2 Diagramas de Nassi Scheiderman (N-S)

La técnica de Diagramas Rectangulares Estructurados o de Nassi Scheiderman permite tener unas herramientasgráficaspararepresentarlasoluciónaunproblemaconlaventajadequenobrindalaposi-bilidaddequeseamosdesordenadosennuestraconcepción.Sebasaenrepresentargráficamentetodoelalgoritmodentrodelmarcodeunrectánguloyadiferenciadelatécnicaanterior,semuevebásicamenteconlautilizacióndetressímbolosquecorrespondenacadaunadelasestructurasbásicasdelalógicadeprogramación.

2.2.1 Diagrama N-S de estructuras de decisión

Pararepresentarunadecisiónseutilizalafigura2.1endondeporelladoizquierdopodemoscolocarlasacciones o Instrucciones que correspondería ejecutar en el caso de que la condición fuera Verdadera y por el lado derecho colocaríamos las acciones o instrucciones a ejecutar cuando la condición fuera Falsa.

Figura 2.1

Page 29: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

29

PerodefinitivamentelautilizaciónefectivadeestatécnicaderepresentaciónseveconunejemploenlaFigura 2.2.

Figura 2.2

Es importante hacer algunas precisiones acerca de este diagrama:

a. Nota que la correspondencia entre nuestra idea y su representación (bajo esta técnica) es mucho másexactaqueenelcasodelDiagramadeFlujoendondetuvimosquehaceralgunospequeños

Page 30: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

30

cambios lógicos para que el diagrama correspondiera a la solución planteada.

b. La técnica de diagramación rectangular estructurada obliga a ser mucho más ordenado y no da ningúnespacioparaquenuestroalgoritmoseainentendibledadoquelasestructurassonrelativa-mente rígidas.

c. Paralautilizacióndeestatécnicasólotenemosqueconocertressímbolosyconellosrepresenta-mos todo lo que queramos dado que nuestra lógica se basa en estas tres estructuras.

d. Enmarcar nuestra idea en un rectángulo nos brinda una concepción más concreta de la solución planteada.

e. Realizar una prueba de escritorio con un diagrama basado en esta técnica se reduce a seguir la se-cuenciadeinstruccionesy(aligualqueconlosdiagramasdeflujo)arealizarunaaunaytalcomoestánallílasinstruccionesoacciones,lasdecisionesylarevisióndelascondicionesdelosciclos.

2.3 Normas

Para escribir un algoritmo bajo la forma de pseudocódigo algunas de las normas son las siguientes:

Primera Norma.- Siempre se le ha de colocar un nombre al algoritmo de manera que sea lo primero que selea.Esconvenienteacostumbrarseaquedichonombrenosuperelosochocaracteresypreferiblementequeseaaltamentemnemónicooseaquesunombrehagaunareferenciaaproximadaaloquecontiene.

Segunda Norma.-Luegodecolocadoelnombredelpseudocódigodebemosacontinuaciónquedeclararlasvariablesconlascualesvamosatrabajarduranteelprograma.Todaslasvariablesquevayanaserutili-zadasdebenserdeclaradas.Declararlassignificaescribireltipodedatoquevanaalmacenaryelnombrequedichasvariablesvanallevar.

Tercera Norma.-Todoelcuerpodelalgoritmodeberáir“encerrado”entrelaspalabrasInicioyFinindican-do en donde comienza y en donde termina el pseudocódigo.

Cuarta Norma.-

a. CuandoquierasquesalgauntítuloenlapantallatodoloquetienequehaceresutilizarlaordenEscribayacontinuacióncolocarentrecomillasdoblesloquequierasquesalgaenpantalla.Porejemplo

Escriba“Estaesunademostración”

GeneraráenpantallaeltítuloEstaesunademostración

Page 31: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

31

b. SiquieresqueloquesalgaenpantallaseaelcontenidodeunavariabletodoloquetienesquehaceresutilizarlaordenEscribayacontinuaciónysincomillasdobleselnombredelavariableque quieres escribir. Por ejemplo:

N = 5

Escriba N

Mostraráenpantallaelvalor5

c. Siquieresqueenpantallasalgauntítuloyacontinuaciónsalgaelcontenidodelavariabletodoloquetienesquehacerescolocareltítuloentrecomillasdoblesy,luegodehaberlascerrado,colocarelnombredelavariablequequierasescribiralladodeltítulo.Porejemplo:

N = 8

Escriba“Elvalores“N

GeneraráenpantallaElvalores8

Siquieresmostrarenpantallaelcontenidodevariasvariablesentoncessimplementeacontinua-cióndelaordenEscribayseparadasporcomaspuedesescribirlosnombresdelasvariablesquequieres escribir. Por ejemplo:

N = 8

M = 4

Escriba“Losvaloresson“N, M

EscribiráenpantallaLosvaloresson84

Quinta Norma.-

a. Cuandovayasaleerundatoparaqueseaalmacenadoenunavariabledeterminadautilizalaor-den Lea. Para no tener que escribir (por ejemplo)

LeaundatoenteroyguárdeloenlavariableNquetambiénesentera

Sólotienesqueescribir

Lea N

Page 32: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

32

y la computadora lo entenderá correctamente.

b. CuandonecesitesleermásdeundatoparaseralmacenadoendiferentesvariablestodoloquetienesquehaceresutilizarlaordenLeayescribirlasvariablesseparadasporcomas.Porejemplo

Lea a, b

Suponiendoquetantoacomobsonvariablesdetipoentero,estaordenleindicaráalacomputa-doraqueleaundatoenteroyloalmaceneenlavariableayluegoqueleaotrodatoenteroyloalmaceneenlavariableb.

c. NonecesariamentecuandoseleandosomasvariablesutilizandounasolaordenLea, éstas deben serdelmismotipo.Porejemplo:

Lea var_e, var_r, var_c

Asumiendoquevar_eesunavariabledetipoentero,var_resunavariabledetiporealyvar_cesunavariabledetipocarácter,estaordenleindicaráalacomputadoraqueleaunvalorenteroyloalmaceneenlavariablevar_e,luegoqueleaunvalorrealyloalmaceneenlavariablevar_ryluegoqueleauncarácteryloalmaceneenlavariablevar_c.

Sexta Norma.-CuandonecesitestomarunadecisióndeberásutilizarlaordenSi,acontinuaciónescribirlacondición correspondiente y luego las instrucciones que se han de realizar en caso de que la condición sea Verdadera. En caso de que la condición sea Falsa y tenga instrucciones a realizarse cuando así sea entonces deberáexistirunaalternativaDe los contrario.AlfinalizartodaladecisióndeberáexistirunindicadorFin_Si. La estructura entonces será la siguiente:

Si Condición

.

.

Instrucciones a ejecutar si la condición es Verdadera

.

.

De lo contrario

Page 33: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

33

.

.

Instrucciones a ejecutar si la condición es Falsa

.

.

Fin_Si

LascondicionespuedenserexpresadasutilizandolossiguientesOperadoresRelacionalesquesonlossím-bolosquenosvanapermitirobtenerunarespuestaVerdaderaoFalsa:

>Mayorque

<Menorque

>=Mayoroiguala

<=Menoroiguala

= Igual a (también llamado igual de comparación)

<>Diferentede

Esimportanteresaltarqueelsignoigual(=)utilizadocomooperadorrelacionaltieneunafuncióndiferen-tequeelsignoigual(=)utilizadoparaasignarleunvaloraunavariable.Enelprimercasoseríautilizadoparapreguntar,porejemplo,sielcontenidodelavariableaesigualalvalor5yenelsegundocasoestaría-mosasignandoalavariableaelvalor5.Sondosusosrealmentediferentes.

Algunoslenguajesdiferenciansintácticamenteeligualdecomparación(==) del igual de asignación preci-samente para que el compilador no tenga la opción de realizar interpretaciones ambiguas.

Tambiénpodemosconectarexpresionesrelacionales(talescomoa<b)atravésdelosOperadores

Booleanosquenosonmásqueunossignosquenosvanapermitirexpresardichasrelaciones.

Cuandoéramosniñosynosdecían,almandarnosalatienda,traeunrefrescoyunpande$10teníamos

Page 34: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

34

variasopciones.

a. De lo contrario traíamos ninguna de las dos cosas entonces no habíamos cumplido la orden.

b. De lo contrarionotraíamoselrefrescoperosí traíamoselpande$10 tampocohabíamoscumplido la orden

c. Sitraíamoselrefrescoperonotraíamoselpande$10tampocohabíamoscumplidolaorden

d. Si traíamoselrefrescoytambiéntraíamoselpande$10entonces síhabíamoscumplido laorden completamente.

Paraesteejemploasumimosquecumplirlaordeneshacerel“mandado”completo.Igualmentevamosaasumir la frase Hemos cumplido la orden como un Verdadero ( V ) y la frase No hemos cumplido la orden comounFalso(F).Deestaformapodríamosorganizarlasiguientetabladeverdad:

Condición 1

Trae un refresco

Condición 2

Traeunpande$10

Cond1 Y Cond2 Explicación textual

F F F No cumplimos

completamente la

ordenF V F No cumplimos

completamente la

ordenV F F No cumplimos

completamente la

ordenV V V Cumplimos

completamente la

orden

Page 35: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

35

2.4 Ciclos

Un ciclopuededefinirsecomounaestructuraquenospermiterepetiroiterarunconjuntodeinstruccio-nesyquetienelassiguientescaracterísticas:

a) Elconjuntodeinstruccionesdebeserfinito

b) Lacantidaddevecesqueserepitadichoconjuntodeinstruccionestambiéndebeserfinita.

c) Debenestarclaramentedemarcadoselinicioyelfindelciclo.Enloscasosenloscualessóloexistauna instrucción a iterar, no serán necesarios dichas marcas.

d) Dentro de un ciclo podrá ir cualquiera de las otras estructuras que se han estudiado incluyendo otros ciclos.

2.4.1 Ciclo Mientras (While)

Eselesquemageneraldetrabajoparatodoslosciclos.Esútilquesepasqueesteciclotambiénesllamadoel Ciclo Mientras Que.

Su estructura general es la siguiente

Mientras Condición

.

.

Cuerpo del Ciclo

.

.

Fin_Mientras

Su forma de ejecución es muy sencilla: Mientras se cumpla que la condición sea Verdadera entonces se ejecutaráelCuerpodelCiclo.DemaneraquetambiénpodríamosdecirqueelCuerpodelCicloserepetirátantasvecescomolopermitalacondiciónomientrasdichacondiciónseaVerdadera.

Page 36: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

36

Ejemplo

Escribir los números impares comprendidos entre 1 y 20.

ProgramaEjem_Ciclo_Mientras

Variables

Entero :Num

Inicio

Num = 1

Mientras Num < = 20

Escriba Num

Num = Num + 2

Fin_Mientras

Fin

2.4.2 Ciclo Para (For)

Permiteejecutarunaovariasinstruccionesmientraslosvaloresdeunaprogresiónaritméticaderazóncrecienteodecrecientesevayanasignandoaunavariablellamada“variable de control delciclopara”.Elcontroldelciclosehaceenformaautomática,conbaseenparámetrosqueestableceelprogramador.

LadiferenciaconelcicloMientrasesqueenelcicloPARA,lavariablecontroladoraseinicializa,seincre-mentaysecomparaautomáticamente.

Representación o forma general

PARA VC = LI, LF, INC HACER

Accion1

Accion2

Accion_ n

FIN_PARA

Page 37: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

37

Dónde:

VC.- Variable de control del ciclo

LI.- Límite inicial

LF.-Límitefinal

INC.- Incremento

Enesteciclolavariabledecontroltomaelvalorinicialdelcicloyelcicloserepitehastaquelavariabledecontrolllegueallímitefinal.

Funcionamiento:

a. Si INCespositivo:(LI < LF)

Cuandoseactivalaestructura,automáticamenteseasignaelvalordeLI a VC y se compara VC con LF. Si VC>LF, no se ejecuta la secuencia de instrucciones o acciones. Si

VC<=LF,seejecutalasecuenciaunavezyautomáticamenteregresaalprincipiodelcicloaincre-mentarlavariablecontroladoraenelvalordeINC (VC=VC+INC)ysecomparanuevamenteelvalorde VC con LF.SinuevamenteVC<=LF,sevuelveaejecutarlasecuenciayseregresaalprincipiodelcicloarepetirlomismo.Siahora,VC>LF,seterminaelcicloautomáticamente.

b. Si INCesnegativo:

Se hace lo mismo pero se ejecuta la secuencia siempre y cuando VC>=LF y no se ejecuta si VC<LF. En ese caso LI>LF

Page 38: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

38

Ejemplo:

Hacerunalgoritmoqueimprimalastablasdemultiplicarde1a5.

Definicióndevariables:

I:multiplicando

J:Multiplicador

P: Producto

Algoritmo:

INICIO

PARA I=1, 5, 1 HACER

PARA J=1, 5, 1 HACER

P=I*J

Imprimir I,“*”,J,“=”,P

FIN_PARA

FIN_PARA

FIN_INICIO

2.4.3 Ciclo Hacer-Mientras (Repeat While)

Repiteunprocesounaovariasveces,adiferenciadelMientras,elcuallorepiteceroomásveces,estodebido a que el REPETIRevalúalacondiciónalfinaldelproceso,mientrasqueenelMientraspuedeserque nunca llegue a entrar si la condición no se cumple desde un principio.

La forma de esta estructura es la siguiente:

REPETIR

Acción 1

Page 39: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

39

Acción 2

.

.

Acción N

MIENTRAS <condición>

Funcionamiento:

Alentraralaestructuraseejecutalasecuenciadeaccionesoinstruccionesunavezyseevalúalacondi-ción.Siéstaesfalsa,sesaledelcicloysecontinúaconlasiguienteinstrucción;siesverdadera,seejecutanuevamentelasecuenciaysevuelveaevaluarlacondición.Elprocesoserepitemientraslacondiciónseaverdadera.

Ejemplo:

Hacer un algoritmo que encuentre la suma de los primeros N números naturales.

Algoritmo:

INICIO

SUMA=0

NUM=1

Leer N

REPETIR

SUMA=SUMA+NUM

NUM=NUM+1

MIENTRASNUM<=N

Imprimir“Lasumadelosprimeros“,N,“númerosnaturaleses:“,SUMA

FIN_INICIO

Page 40: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

40

2.4.4 Ciclo Hacer-Hasta (Repeat Until)

Esta es otra de las formas que traen algunos de los lenguajes de programación para expresar un ciclo. Su estructura general es la siguiente

Haga

.

.

.

Cuerpo del Ciclo

.

.

.

Hasta Condición

EnestecicloelCuerpodelmismosevaaejecutarhastacuandosecumplaunacondiciónestoquieredecirqueelconjuntodeinstruccionesqueconformanelcuerpodelciclosevaarepetirmientraslaevaluacióndelacondiciónseaFalsa.EsunciclomuyparecidoalCicloMientrasconladiferenciadequeenéstelainstruccionesserepitenMientraslacondiciónseaFalsaynoverdaderacomoseríaenelCicloMientras.

Page 41: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

41

2.4.5 Ciclos Anidados

Sedefinecomociclosanidadoslaestructuraenlacualuncicloestádentrodeotro(completamente).Estosignificaquesisetrataradeunaestructuramientrasanidadasuesquemaseríaelsiguiente:

Mientras Condición1

.

.

Mientras Condición2

.

.

Cuerpo del ciclo mas interno

.

.

Fin_Mientras Interno

.

.

Fin_Mientras Externo

Su forma de ejecución es muy sencilla: MientrasseaVerdaderalacondición1elcicloexternovaaejecutarel cuerpo del ciclo dentro del cual se encuentra un ciclo interno que está regido por la condición2 de tal manera que se ejecutará completamente el ciclo interno mientras la condición2 sea Verdadera. Cuando éstacondición2seaFalsaseejecutaránelrestodeinstruccionesdelcicloexternoysevolveráalacondi-ción1aevaluarsiaúnesverdaderaparavolveraentrarenelcuerpodedichociclo.

Page 42: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

• Comprender la importancia de elaborar un diseño conceptual previo al diseño lógico.

• Implementar el diseño de la base de datos utilizando un SMBD a partir del diseño conceptual.

• Conocer un lenguaje que permita realizar consultas estructuradas.

Page 43: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

43

3 Almacenamiento persistente de datos

Una base de datos es una herramienta para recopilar y organizar información. En las bases de datos, se puede almacenar información sobre personas, productos, pedidos, o cualquier otra cosa.

LasbasesdedatossoncreadasmedianteunsistemadeadministracióndebasesdedatosoDBMS.

3.1 Diseño conceptual

Por ejemplo, una base de datos muy sencilla podría ser una agenda de direcciones en la que anotemos datos de nuestros amigos.

Tendríamosuna”ficha”paracadaunodeestosamigos.Encadaficha,asuvez,existiráunaseriedeapar-tados, como el nombre, la dirección, el teléfono, etc.

Estonospermiteintroducirdosprimerosconceptosqueutilizaremos:cadaunadeestas“fichas”recibeelnombre de “registro”,ycadaunodelos“apartados”quecomponenlasfichassellama“campo”.

Una base de datos es un contenedor de objetos. Una base de datos puede contener más de una tabla. Por ejemplo,unsistemadeseguimientodeinventarioqueutilizatrestablasnoesunconjuntodetresbasesdedatos,sinounasolabasededatosquecontienetrestablas.

Elconjuntodelasfichas(registros)formaun“bloque”deinformación,quellamaremos“tabla”,yquesesuelerepresentarescribiendocadaficha(registro)enunafilaycadaapartado(campo) en una co-lumna, así:

Nombre Dirección Ciudad TeléfonoJosé C/ Rana 1 Alicante 111-11-11Jesús C/ Sapo 2 Madrid 222-22-22Juan C/ Boa 3 Barcelona 333-33-33

Cadaunodeestos“bloques”dedatosseráuna tabla,yestas tablasestaránrelacionadasentresí (porejemplo:unartículoserásuministradoporunciertoproveedor,yeseartículoapareceráenciertasfactu-ras, cada una de las cuales corresponderá a un cierto cliente).

Todo este conjunto de información que forman las tablas y las relaciones entre ellas (y alguna cosa más queyaveremos)seránuestra“basededatos”.Enconcreto,setratarádeloqueseconocecomouna“basededatosrelacional”.

Page 44: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

44

Etapas de diseño

El primer paso antes de crear una base de datos es pararse a pensar. Ni más ni menos. Si en la programa-ción es muy peligroso eso de empezar a teclear según aparece una idea (a pesar de que hay bastante gente que lo hace, y alguno lo hace incluso bien... si el programa es corto), en la creación de bases de datos es muy raro que salga bien.

El segundo paso recomendable es ir anotando las ideas según surgen. Cuando creemos que ya está todo, deberíamosvolveraleertodaslasnotasquehabíamostomado,porqueesonosayudaráatenerunavisióndeconjuntoyanotarsifaltaalgoquenohayamosprevistoinicialmente.

El tercer pasoseráempezaradibujargarabatosquerepresentenesainformación.Paraelloveremosporencimaunmodelollamado“Entidad-Relación”.Eldibujonosayudaráatenerunanuevaversióndecon-junto,muchomás fácildeseguirymáscompletaque lasanotaciones.Aquíseverántodavíamejor lascarenciasylasincongruenciasquepuedanexistir.

El cuarto pasoseráconvertirestedibujoenlastablas.Estepasopuedesercasitotalmentemecánico.Porejemplo,laconversióndelmodeloEntidad-Relación(elqueveremos)aunabasededatosrelacional(lasquenormalmentemanejaremos)escasiinmediato.Seacabóeldiseño.

Podríamosañadirunquinto paso que sería la introducción de los datos y la creación de una serie de es-tructuras auxiliares, como formularios, consultas o informes.

3.1.1 Entidades

Una entidad es la representación de un objeto o concepto del mundo real que se describe en una base de datos.

Unaentidadsedescribeenlaestructuradelabasededatosempleandounmodelodedatos.

Porejemplo,nombresdeentidadespuedenser:

Alumno,Empleado,Artículo,etc.

Cadaentidadestáconstituidaporunoomásatributos.Porejemplo,laentidad“Alumno”podríatenerlosatributos:nombre,apellido,añodenacimiento,etc.

En el modelo de entidad-relaciónseempleandostiposdeentidades:entidad fuerte y entidad débil.

Lasentidadesfuertestienenatributosclaves,entantolasentidadesdébilesnotienenatributosclavespropios.

Page 45: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

45

3.1.2 Relaciones

Enbasesdedatos,unarelaciónovínculoentredosomásentidadesdescribealgúnainteracciónentrelasmismas.Porejemplo,unarelaciónentreunaentidad“Empleado”yunaentidad“Sector”podríaser“tra-baja_en”,porqueelempleadotrabajaenunsectordeterminado.

Las relaciones se describen en la estructura de la base de datos empleando un modelo de datos.

Lasrelacionessonmuyempleadasenlosmodelosdebasesdedatosrelacionalyafines.

En SQL las relaciones son llamadas tablas.

Vamosverunprimerejemplo,quenosayudaráallevaralaprácticatodoestoyaintroducirelmodelo“Entidad-Relación”.

Imaginemos que nos proponen el siguiente problema:

“Sedeseaautomatizaruncentrodeestudiosdepequeñotamaño.Interesacontrolarexclusivamentelosasuntos académicos: qué alumnos tenemos, qué cursos/asignaturas han realizado, qué profesores tene-mosenplantilla,quiénhaimpartidocadaunodeloscursos,etc”.

Estas serían las indicaciones que nos daría el cliente (o que nosotros pensaríamos, si lo realizamos para nosotros).

Ahoratendríamosquepensarsivemosquefaltaalgo(ypreguntaralcliente,siprocede,cosascomosidesea guardar la dirección y demás datos postales de los alumnos y de los profesores, o si quiere saber la notaquecadaalumnoobtuvoencadacurso)oinclusosisobraalgo(porqueresultedemasiadodifícildellevaracabo-¿difícil,paranosotros?...lodudo-).

Pasamosadesglosarenbloquesdeinformación.Demomentotodavíanohablaremosdetablas,sinode“entidades”(unnombremásambiguoperomásadecuado)yde“relaciones”entreestasentidades.

Ennuestrocaso,las“cosas”(entidades)quetenemossonbásicamenteéstas:

• Alumnos.

• Cursos.

• Profesores.

Ylasrelacionesquehayentreestasentidadesson:

• LosprofesoresIMPARTENcursos.

• Los alumnos ASISTEN a cursos.

Page 46: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

46

• Indirectamente,losalumnosylosprofesorestambiénestánrelacionados:unalumnohaasistidoauncursoquehaimpartidounciertoprofesor;estarelaciónyaquedareflejadaapartirdelasotrasdos,asíque no es necesario detallarla.

Auncomentaremosalgomássobrelasrelaciones.Unacaracterísticaimportantedelasrelacionesessu“cardinalidad”:porejemplo,enlarelacióndeque“losalumnosasistenaloscursos”,esimportantesiacadacursosólopuedeasistirunalumnoovarios,ysiunalumnopuedeasistiraunsolocursooavarios.

Tendremos cuatro posibilidades:

• Que cada alumno asista a uno y sólo uno de los cursos (se expresa como 1:1 -uno a uno-)

• Quecadaalumnopuedaasistiramuchoscursos,peroencadacursosólopuedehaberunalumno(1:M-unoamuchos-)

• Quecadaalumnopuedaasistiraunúnicocurso,peropuedahabervariosalumnosenuncurso(M:1-muchosauno-).

• Quecadaalumnopuedaasistiravarioscursos,yencadacursopuedahabervariosalumnos(M:M-muchos a muchos-)

Ennuestrocaso, larelación“asistir”esunarelaciónde“muchosamuchos”(M:M).Podríamospregun-tarnoslacardinalidaddelaotrarelación(“losprofesoresimpartencursos”).Enestecaso,cadaprofesorpuedeimpartirvarioscursos,ysupondremosquecadacursoesimpartidoporunúnicoprofesor(estoydandoporsupuestoqueseconsideradistintouncursode“BasesdeDatos”impartidoenunafechayotrodelamismatemáticaperoimpartidoenfechadistinta).Setrataríadeunarelación“deunoamuchos”1:M.

Unaobservación:enlasrelacionesesimportanteelsentidoenelqueseleen.Porejemplo,larelación“losprofesoresimpartencursos”esunarelación1:M(unoamuchos),mientrasquelarelaciónopuesta“loscursossonimpartidosporprofesores”esunarelaciónM:1(muchosauno).

Estasrelacionesquehemoscomentadoson“relacionesbinarias”(entredosentidades).

3.1.3 Modelo Entidad-Relación

Esteesunmodeloquenospermitirá“dibujar”lasentidadesylasrelacionesqueexistenentreellas.No-sotros usaremos el modelo “Entidad-Relación Extendido”(EER).Existenvariasnotacionesligeramentedistintas.Voyautilizarlaqueconsideromássencilla.

Enestanotaciónserepresentanlasentidadescomounrectánguloylasrelacionesbinariascomounrombopartidoporlamitad.Silarelaciónes1:M,unadelasmitades(laquecorrespondeal“muchos”)deberáestarsombreada,ysiesM:M,todoelromboestarásombreado,loantesmencionadopuedeobservarseen la Figura 3.1.

Page 47: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

47

Figura 3.1

VamosavercómoquedaríaeldiagramaEntidad-Relacióndenuestroejemploenlafigura3.2:

Figura 3.2

Asídesencillo:tenemos3entidades(profesores,cursos,alumnos)ydosrelaciones(impartir,entreprofe-soresyalumnos,1:M,yasistir,entrealumnosycursos,M:M).

Realmente,yaaestenivelsesueleindicarlos“apartados”quehayencadaentidad(loqueseránlos“campos”denuestrastablas).Aestos“apartados”lesllamaremos“atributos”,yserepresentancomopequeñaselipsesquesalendelasentidades.

Vamosapensarprimeroquéatributosnospodríainteresarparanuestrasentidades:

Alumnos:

• CURP

• Nombre

• Dirección

• Ciudad

Page 48: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

48

• Teléfono

• Fecha de nacimiento

• Fecha de alta en el centro

• Fotografía

Profesores:

• CURP

• Nombre

• Dirección

• Ciudad

• Teléfono

• Conocimientos

• Sueldo

• Cuenta bancaria

Cursos:

• Nombre del curso

• Fecha de comienzo

• Duración (horas)

• Importe (pesos)

• Número máximo de alumnos

Es sólo un ejemplo. Insisto en que de momento no estamos pensando en tablas, sino simplemente en qué información queremos almacenar. Según el sistema de bases de datos que empleemos realmente, puede ocurrirqueseaincómodo(oinclusoimposible)trabajarconalgunosdeestosdatosquehemosprevisto(porejemplo,la“fotografía”delalumno).Peroesoyanosloplantearemosdespués.

Loquesívamosapensaryaescualdeesosdatosnospermitirádistinguirunafichadeotra.Estosehaceporquepodemostenerdosalumnosconelmismonombre,peroclaramentesonpersonasdistintas,yde-bemos saber qué cursos ha realizado cada uno de ellos sin posibilidad de confusión, para no dar a uno el diploma que corresponda a otro, ni cobrarle un dinero de otro.

Enelcasode losalumnos,nosondatosúnicos lossiguientes:elnombre(puederepetirse, inclusoconapellidos), ladirección(doshermanosodosamigospuedenvivirenlamismacasa),elteléfono(ocurrelo mismo), la fecha de nacimiento (también podemos encontrar dos alumnos que hayan nacido el mismo día), etc.

Page 49: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

49

LoquerealmentedistinguiráaunalumnodeotroessunúmerodeCURP(ClaveÚnicadeRegistrodePo-blación) o pasaporte, que sí es único.

Puesbien,estedatoquepuededistinguirunapersonadeotra(oengeneralunaficha-registro-deotra)esloquellamaremosla“clave”.

Puedeocurrirquenoexistanadaquenossirvaclaramentecomoclave,comoeselcasodeloscursos:noesúnicoelnombre(podemosimpartirmásdeuncursoconelmismocontenido),nilafechadecomienzo(varioscursospuedencomenzarelmismodía),niladuración,nielimporte,nielnúmeromáximodealum-nos.Enestoscasossesueleañadiralgoarbitrario,uncódigo,quenospermitadistinguiruncursodeotro(engeneralunaficha-registro-deotra).Ennuestrocaso,incluiríamosunnuevoatributo,llamado“Códigodecurso”.

UnúltimocomentarioantesdevercómoquedaríanuestrodiagramaEERconsusatributos.Puedeocurrirquenuestraentidadtengavariosatributosúnicos,todosloscualespuedanservircomoclave.Entonceses-cogemosunadeellascomo“claveprincipal”,yelrestoserán“clavesalternativas”,quenollegaremosausarcomoclaves.Eneldiagrama,elatributoquevayaautilizarsecomoclaveprincipalaparecerásubrayado.

Ahora ya sí. Nuestro diagrama quedaría como en la Figura 3.3 (no incluyo todos los atributos que habíamos pensado,sóloalgunoscomoejemplo,queesconlosquetrabajaremosapartirdeahora):

Figura 3.3

Page 50: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

50

3.2 Diseño lógico

3.2.1 Tipos de Datos

Engeneral,lostiposdedatoshabituales,queencontraremosencasicualquiersistemadebasesdedatos,son los siguientes:

• Texto (o alfanumérico, o carácter), cuando nuestro campo deba almacenar letras y quizás algún otrotipodesímbolosdepuntuacióny/ocifrasnuméricas.

• Numérico, cuandonuestro campovayaa guardar cantidadesnuméricas, especialmente simásadelantenecesitaremosrealizaroperacionesaritméticasconestascantidadesnuméricas.

• Lógico,cuandosólohaydosposibilidades(verdaderoofalso,síono).

• Fecha, para almacenar fechas (y, en ocasiones, también horas).

• Memo, es un campo de texto especial, que permite una longitud ilimitada, pero a cambio su acce-so es más lento que el campo de texto normal.

• Otrosmenoshabitualesnospermitiránguardarimágenesoficherosengeneral,númerosqueseincrementenautomáticamente,hipervínculos (enlacesaunaciertadireccióndentrodenuestracomputadora u otro), etc.

3.3 Lenguajedeconsulta

3.3.1 Sintaxisbásicadellenguajedeconsultaestructurado(SQL)

SQLesunlenguajedecomputaciónquesirveparatrabajarconconjuntosdedatosylasrelacionesentreellos.

SQL se usa para describir conjuntos de datos que pueden ayudarle a responder preguntas. Cuando se usa SQL, debe emplear la sintaxis correcta. La sintaxis es el conjunto de reglas mediante las cuales se combinan los elementos de un lenguaje correctamente. La sintaxis de SQL se basa en la sintaxis del inglés.

Comandos

ExistendostiposdecomandosSQL:

• LosDLLquepermitencrearydefinirnuevasbasesdedatos,camposeíndices.

• LosDMLquepermitengenerarconsultasparaordenar,filtraryextraerdatosdelabasededatos(select, insert, update y delete)

Page 51: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

51

Cláusulas

Lascláusulassoncondicionesdemodificaciónutilizadas paradefinir losdatosquedeseaseleccionaromanipular.

Cláusula Descripciónfrom Utilizadaparaespecificarlatabladelacualsevan

a seleccionar los registroswhere Utilizadaparaespecificarlascondicionesquede-

benreunirlosregistrosquesevanseleccionargroup by Utilizadaparaespecificarlosregistrosselecciona-

dosengruposespecíficoshaving Utilizadaparaexpresarlacondiciónquedebesa-

tisfacercadagrupoorder by Utilizadaparaordenarlosregistrosseleccionados

deacuerdoconunordenespecífico

Por ejemplo, una simple instrucción SQL que recupera una lista de los apellidos de contactos cuyo nombre esMaríapodríasersimilaraesto:

SELECT Apellidos

FROM Contactos

WHERENombre=‘María’;

3.3.2 Sentencias de selección, inserción, actualización y borrado de datos

Sentencias de Selección

Seutilizanparaindicaralmotordedatosquedevuelvainformacióndelasbasesdedatos,estainformaciónesdevueltaenformadeunconjuntoderegistrosquepuedenmodificarse.

Sintaxis:

SELECT Atributos FROM Tabla

Atributos: lista de propiedades que se deseen presentar

Tabla:nombredelatablaquecontienelosatributosapresentar

Page 52: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

52

Ejemplo:

SELECTNombre,TelefonoFROM Clientes

Estaconsultadevuelveunrecordsetconelcamponombreyteléfonodelatablaclientes.

Sentencias de inserción

Paraalmacenardatosenunabasededatosdebemos insertarfilasen lastablas.ParaellosSQLponeanuestra disposición la sentencia INSERT.

Inserción individual de filas

PararealizarlainserciónindividualdefilasSQLposeelainstrucciónINSERTINTO.Lainserciónindividualdefilaseslaquemáscomúnmenteseutiliza.

Su sintaxis es la siguiente:

INSERT INTO <nombre_tabla>

[(<campo1>[,<campo2>,...])]

values

(<valor1>,<valor2>,...);

Comosepuedeobservar lasentenciatienedospartesclaramentediferenciadas,porun lado lapropiaINSERT INTO seguida de la lista de campos en los que queremos insertar los datos, y por otro la lista de valoresquequeremosinsertarenloscampos.Lamejorformadeverestoesatravésdeunejemplo.

INSERT INTOtCoches

(matricula,

marca ,

modelo ,

color ,

numero_kilometros)

Page 53: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

53

values

(‘M1111CA’,

‘RENAULT’,

‘MEGANETR100’,

‘NEGRODIAMANTE’,

78000);

Nota:Hemosutilizadoelcolorrojoparalosdatosdetipotexto,entrecomilladosconlacomillasimple,yelazulparalosnuméricos.

Con esta sentencia INSERTcreamosunregistroenlatablatCochesconlosvaloresespecificados,esdecir,lamatriculatendráelvalorM-1111-CA,lamarcaseráRENAULTyasísucesivamente.

Sentencias de actualización

Para la actualización de datos SQL dispone de la sentencia UPDATE. La sentencia UPDATE permite la ac-tualizacióndeunoovariosregistrosdeunaúnicatabla.LasintaxisdelasentenciaUPDATE es la siguiente:

UPDATE <nombre_tabla>

SET <campo1> = <valor1>

{[,<campo2> = <valor2>,...,<campoN> = <valorN>]}

[ WHERE <condicion>];

LassiguientessentenciasactualizanlosdatosdelatablatCochesconlosvaloresdelatablatMarca.

UPDATEtCoches

SETmarca=‘1’

WHEREmarca=‘FORD’;

Page 54: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

54

UPDATEtCoches

SETmarca=‘2’

WHEREmarca=‘RENAULT’;

UPDATEtCoches

SETmarca=‘3’

WHEREmarca=‘SEAT’;

Sentencias de borrado de datos

Paraborrardatosdeunatabla,debemosutilizarlasentenciaDELETE.

La sintaxis de la sentencia DELETE es la siguiente:

DELETE FROM <nombre_tabla>

[ WHERE <condicion>];

El siguiente ejemplo ilustra el uso de la sentencia DELETE.EsbuenaideaespecificarenlasentenciaWHE-REloscamposqueformanlaclaveprimariadelatablaparaevitarborrardatosquenoqueramoseliminar.

DELETE FROMtCoches

WHEREmarca=‘SEAT’;

Cuando trabajemos con la sentencia DELETE debemos tener en cuenta las siguientes consideraciones:

• Sólo podemos borrar datos de una única tabla.

• Cuandoborramosdatosdeunavista,losestamosborrandotambiéndelatabla.Lasvistassonsólounaformadeverlosdatos,nounacopia.

Page 55: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

• Identificar la plataforma .NET, también su kit de desarrollo .Net Framework, que le permitirán desarrollar aplicacio nes simples o complejas.

• Conocer el entorno de C# y su instalación.

• Describir los elementos que confor man un programa, conocerá los diferentes tipos de datos y como hacer la declaración de estos.

• Operar las sentencias de control.

• Conocer las definiciones de método, arreglo y colecciones, su uso e importancia.

Page 56: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

56

4 .NET

4.1 .NET Framework

.NETFrameworkesunentornomulti-lenguajeparalaconstrucción,distribuciónyejecucióndeServiciosWebyaplicacionesdichodeotraformaesunaplataformadiseñadaparasimplificareldesarrollodeapli-caciones en el entorno distribuido de Internet.

.Netesunconjuntodebibliotecasquepuedenserutilizadasporaplicacionesparaacelerareldesarrollodeprogramasyoptimizarelrendimiento..Netofreceunentornodeejecucióndeaplicaciones,compila-dores,ypermiteeldesarrollodetodotipodeprogramasdeescritorio,aplicacionesparaInternet,paradispositivosmóviles,etc.

Características

• Proporciona un entorno coherente de programación orientada a objetos, en el que el código de los objetos se puede almacenar y ejecutar de forma local, ejecutar de forma local pero distribuida en Internet o ejecutar de forma remota.

• Proporcionaunentornodeejecucióndecódigoqueminimizalaimplementacióndesoftwareylosconflictosdecontroldeversiones.

• Ofreceunentornodeejecucióndecódigoquepromuevelaejecuciónseguradelmismo,inclusodel creado por terceros.

• Proporciona un entorno de ejecución de código que elimina los problemas de rendimiento de los entornosenlosqueseutilizanscriptsointérpretesdecomandos.

• Ofrecealprogramadorunaexperienciacoherenteentretiposdeaplicacionesmuydiferentes,como las basadas en Windows o en el Web.

4.1.1 Entornodeejecución

.NET proporciona un entorno de ejecución para aplicaciones llamada Common Language Runtime o CLR.CLReslaimplementacióndeMicrosoftdeunestándarllamadoCommon Language Infrastructure o CLI.ÉstefuecreadoypromovidoporMicrosoftperodesdehaceañosesunestándarreconocidomun-dialmente.

El CLR/CLI esencialmentedefineunentornode ejecución virtual independiente enel que trabajan lasaplicacionesescritasconcualquierlenguaje.NET.Esteentornovirtualseocupademultituddecosasim-portantesparaunaaplicación:desdelagestióndelamemoriaylavidadelosobjetoshastalaseguridadylagestióndesubprocesos.

Page 57: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

57

TodosestosserviciosunidosasuindependenciarespectoaarquitecturascomputacionalesconviertenlaCLRenunaherramientaextraordinariamenteútilpuestoque,enteoría,cualquieraplicaciónescritaparafuncionarsegúnlaCLIpuedeejecutarseencualquiertipodearquitecturadehardware.

PorejemploMicrosoftdisponedeimplementaciónde.NETparaWindowsde32bits,Windowsde64bitseinclusoparaWindowsMobile,cuyohardwarenotienenadaqueverconlaarquitecturadeunordenadorcomún

4.1.2 Biblioteca de Clase Base (BCL)

Laplataforma.NET(Figura4.1)nosofreceinfinidaddefuncionalidades“defábrica”queseutilizancomopuntodepartidaparacrearaplicaciones.Existenfuncionalidadesbásicas(porejemplotodolorelaciona-doconlaE/Sdedatosolaseguridad)yfuncionalidadesavanzadasenlasquesefundamentancategoríasenteras de aplicaciones (acceso a datos, creación de aplicaciones Web...).Toda esta funcionalidad está im-plementadaenformadebibliotecasdefuncionesquefísicamenteseencuentranendiversasDLL (biblio-tecas de enlace dinámico). A su conjunto se le denomina Base Classes Library (Biblioteca de clases base o BCL)yformanparteintegraldelaplataforma.NET,esdecir,nosetratadeañadidosquesedebanobtener o adquirir aparte.

Figura 4.1

TodoloqueseencuentraenlaBCLformapartedelaplataforma.NET.Dehechoexistetalcantidaddefun-cionalidad integrada dentro de estas bibliotecas (hay decenas de miles de clases) que el mayor esfuerzo que todo programador que se inicia en .NET debe hacer es el aprendizaje de las clases más importantes. DetodosmodosVisualStudioofrecemuchaayudacontextual(documentación,Intellisense...)yunavezqueseaprendenlasbasesresultafáciliravanzandoenelconocimientodelaBCLamedidaquelovamosnecesitando.

Page 58: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

58

4.1.3 Sistema de tipo común (CTS)

El sistema de tipos común define cómo sedeclaran, utilizan y administran lostiposenelmotor entiempodeejecución.Estambiénunaparteimportantedelacompatibilidadentiempodeejecuciónconlaintegraciónentrelenguajes.Elsistemadetiposcomúnrealizalasfuncionessiguientes:

• Estableceunmarcodetrabajoqueayudaapermitirlaintegraciónentrelenguajes,laseguridaddetiposylaejecucióndecódigoconaltorendimiento.

• Proporciona un modelo orientado a objetos que admite la implementación completa de muchos lenguajes de programación.

• Definereglasquedebenseguirloslenguajes,loqueayudaagarantizarquelosobjetosescritosendistintoslenguajespuedaninteractuarunosconotros.

ElSistemadetiposcomúneselmodeloquedefinelasreglasquesesiguenenCommonLanguageRuntimeparadeclarar,utilizaryadministrartipos.Estesistemaestableceunmarcodetrabajoquepermitelainte-graciónentrelenguajes,laseguridaddetiposyejecutarcódigodealtorendimiento.

Eslamateriaprimaapartirdelacualsepuedencrearbibliotecasdeclases.

4.1.4 Especificacióndellenguajecomún(CLS)

Common Language Specification (CLS)defineunconjuntodereglascomprobablesmedianteprogra-maciónquedeterminalainteroperacióndelostiposcreadosendistintoslenguajesdeprogramación.LaseleccióndeCLSesunmodoexcelentedegarantizarlainteroperaciónentrelenguajes.LosdiseñadoresdebibliotecasdeclasesadministradaspuedenutilizarCLSparaasegurarsedequelasAPIcreadassepuedenllamardesdeunaampliagamadelenguajesdeprogramación.TengaencuentaqueaunqueCLSpromueveeldiseñocorrectodebibliotecas,noloimpone.

4.2 Entorno de Programación

Eselbancodetrabajodelprogramador,seencargadedarsoportealasactividadesdelafasedecodifica-ción (preparación del código y prueba de unidades).

Losmismosproductossirventambiénparaeldiseñodetalladoyparalaspruebasdeintegración.Sesitúa,por tanto, en la parte central del ciclo de desarrollo.

Page 59: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

59

4.2.1 Entorno de Desarrollo (IDE)

Seutilizaelacrónimo“IDE”(IntegratedDevelopmentEnvironment)parareferirnosalentornodedesa-rrollo integrado de C#. Al igual que los procesadores de palabras, programas que facilitan la creación de documentos, el IDE cuenta con herramientas para crear (desarrollar) programas. Todas las herramientas que requerimos para dicho propósito están integradas, por lo que podemos realizar la totalidad de nuestro trabajodentrodelIDEenvezdetenerqueusarotrosprogramas.Enotraspalabras,elIDEnosproporcionaun entorno de programación completo.

4.2.2 Descarga e Instalación

DescargaMicrosoftVisualC#2012ExpressEdition.Sigalasinstruccionesdeinstalaciónyregistreelpro-ducto si el proceso te pide hacerlo.Lo puedes descargar desde la sigueinte liga:

http://www.microsoft.com/visualstudio/esn/downloads

4.2.3 Interfaz de usuario

Acontinuacióndescribiremoslainterfazdeusuariodemanerageneralyparahacerdeunmodomássen-cillolaexplicaremosatravésdeunejemplo:

Elprogramaquecrearemosacontinuacióndesplegaráelmensaje“Holamundo”enlapantalladetucom-putadora. Independientemente de lo anterior, deberá seguir estos pasos generales para crear cualquier programa.

1. AbreelIDE.AcontinuaciónaparecerálaPáginadeinicio,comosemuestraenlaFigura4.2

2. HasclicenelvínculoCrear:Proyecto…AcontinuaciónsemostrarálaventanaNuevo

Proyecto (Figura 4.3) .

Figura 4.2

Page 60: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

60

Figura 4.3

Asegúratedequeestéseleccionada laplantillaAplicacióndeWindowsForms.Elijeunnombreparatuproyecto,mismoqueseconvertirátambiénenlaidentificacióndeunacarpeta.Terecomendamosutilizarsóloletras,dígitosyespacios.EnnuestrocasoutilizamoselnombrePrimerHola.HazclicenAceptar.Acontinuaciónapareceráunáreadediseñosimilar(aunquenonecesariamenteidéntica)alaquesemuestraen la Figura 4.4.

Figura 4.4

Page 61: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

61

3. ParafacilitartuincursiónenellenguajeC#,esconvenientequeelcuadrodeherramientasestésiemprevisible.HazclicenelmenúVeryseleccioneCuadrodeherramientas.Ahorahazclicenelsímbolode“chincheta”delcuadrodeherramientas(Figura4.5),elcuadrodeherramientasque-daráfijoyabiertodemanerapermanente.HazclicenTodoslosformulariosWindowsFormsparaverlalistadeherramientasdisponibles.

Figura 4.5

Los pasos anteriores son comunes en la realización de cualquier proyecto. Realicemos ahora una tarea específicaparaesteproyectoenparticular.Observaelformularioyelcuadrodeherramientasilustradosen la Figura 4.6.

Figura 4.6

Page 62: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

62

Acontinuaciónseleccionaremosuncontroldelcuadrodeherramientas,ylocolocaremosenelformula-rio. Éstos son los pasos a seguir:

• Localiza el cuadro de herramientas y has clic en Control Label.

• Desplaza el puntero del ratón hacia el formulario. Has clic y, sin soltar el botón, arrastra para crearunaetiquetacomoenlaFigura4.7.

Figura 4.7

Ahoraestableceremosalgunaspropiedadesdelaetiqueta:hasclicconelbotónderechodelratónsobrelaetiquetayseleccionePropiedades.DesplazaelratónhacialalistaPropiedadesenlaparteinferior derecha de la pantalla, como se muestra en la Figura 4.8:

Figura 4.8

Page 63: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

63

• DesplázatehastalapropiedadTextysustituyeeltextolabel1porHolaMundo.

• Ejecutemosahoraelprograma,haciendoclicenlaflechaqueseencuentraenlapartesuperiordelIDEsetratadelbotónIniciardepuraciónverFigura4.9.

Figura 4.9

Apareceráunanuevaventana,comosemuestraenlaFigura4.10.Eselprogramaquehazcreado.Sólomuestraalgodetexto,peroesunaverdaderaventanaencuantoaquepuedemoverla,cambiarsutamañoy cerrarla al hacer clic en el icono X que se encuentra en la esquina superior derecha.

Figura 4.10

Para guardar tu programa y poder usarlo más adelante:

• VealmenúArchivo y selecciona laopciónGuardar todo.A continuación aparecerá la ventanaGuardarproyecto.Apareceráunaventanacomoladelafigura4.11

Figura 4.11

• Haz clic en Guardar.

Page 64: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

64

4.3 Introducción a la programación en C#

4.3.1 Estructura de un programa

LosprogramasenC#puedenconstardeunoovariosarchivos.Cadaarchivopuedecontenerceroovariosnamespaces.Unnamespacepuedecontenertiposcomoclases,estructuras,interfaces,enumeracionesydelegados,ademásdeotrosspacenames.Acontinuación,semuestralaestructuradeunprogramaenC#quecontienetodosestoselementos.

// Estructura general de un programa en C#

usingSystem;

namespace Ejemplo //Nombre del programa

{

class Program //Nombre de la clase

{

}

struct TuEstructura

{

}

interface TuInterfaz

{

}

delegate intEjemploDelegate();

enum EjemEnum

{

Page 65: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

65

}

namespace TuNamespaceAnidado

{

struct Tu estructura

{

}

}

class TuClaseprincipal

{

static voidMain(string[] args)

{

//Tu programa inicia aquí...

}

}

}

4.3.2 Palabras reservadas

ExistenpalabrasparautilizaciónexclusivadeC#,demaneraqueelprogramadornolospuedereutilizar.Sedenominan palabras clave o palabras reservadas.Laspalabrasclavesonidentificadorespredefinidosreservadosquetienenunsignificadoespecialparaelcompilador.

Nosepuedenutilizarcomoidentificadoresenunprogramaamenosqueincluyanelcará[email protected],@ifesunidentificadorválidoperoifnoloesporqueifesunapalabraclave.

Page 66: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

66

Palabras clave de instrucciones

EnlatablasiguientesemuestrantodaslaspalabrasclavedelasinstruccionesdeC#.

Categoría Palabras clave de C#

Instrucciones de selección

Una instrucción de selección hace que el control del programa se transfiera a un determinado punto del flujo de ejecución dependiendo de qué cierta condición sea verdadera o no.

if, else, switch, case

Instrucciones de iteración

Las instrucciones de iteración permiten crear bucles. En un bucle, las instrucciones internas se ejecutan un determinado número de veces, según el criterio de terminación del bucle. Estas instruc-ciones se ejecutan en orden, salvo cuando se en-cuentra una instrucción de salto.

do, for, foreach, in, while

Instrucciones de salto

La bifurcación del flujo secuencial normal de un programa se consigue mediante instrucciones de salto, las cuales producen una transferencia inme-diata del control del programa. Las siguientes pa-labras clave se utilizan en instrucciones de salto:

break, continue, default, goto, return, yield

Instrucciones de control de excepciones

C# incorpora mecanismos para el tratamiento de las situaciones anómalas, denominadas excepcio-nes, que pueden producirse durante la ejecución de un programa. Estas excepciones se controlan mediante código situado fuera del flujo normal de control.

throw, try-catch, try-finally, try-catch-finally

Checked y unchecked

Las instrucciones de C# se pueden ejecutar en un contexto comprobado (checked) o no compro-bado (unchecked). En un contexto comprobado, el desbordamiento aritmético produce una ex-cepción. En un contexto no comprobado, se hace caso omiso del desbordamiento aritmético y el resultado se trunca.

checked, unchecked

Page 67: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

67

4.3.3 Literales

Unaliteraleslarepresentaciónexplícitadelosvaloresquepuedentomarlostiposbásicosdellenguaje.AcontinuaciónseexplicacuáleslasintaxisconqueseescribenlosliteralesenC#desglosándolossegúneltipodevaloresquerepresentan:

Literales enteros: Un número entero se puede representar en C# tanto en formato decimal como hexade-cimal. En el primer caso basta escribir los dígitos decimales (0-9) del número unos tras otros, mientras que enelsegundohayqueprecederlosdígitoshexadecimales(0-9,a-f,A-F)conelprefijo0x.Enamboscasosesposibleprecederelnúmerodelosoperadores+ó–paraindicarsiespositivoonegativo,aunquesinoseponenadaseconsideraráqueespositivo.

Ejemplos de literales enteros son 0, 5, +15, -23, 0x1A, -0x1a, etc.

Enrealidad,lasintaxiscompletaparalaescrituradeliteralesenterostambiénpuedeincluirunsufijoqueindiqueeltipodedatoenteroalquehadepertenecerelliteral.

Literales reales: Los números reales se escriben de forma similar a los enteros, aunque sólo se pueden es-cribir en forma decimal y para separar la parte entera de la real usan el tradicional punto decimal (carácter .)Tambiénesposiblerepresentarlosrealesenformatocientífico,usándoseparaindicarelexponenteloscaracteres e ó E.

Ejemplos de literales reales son 0.0, 5.1, -5.1, +15.21, 3.02e10, 2.02e-2, 98.8E+1, etc.

Literales lógicos:Losúnicosliteraleslógicosválidossontrueyfalse,querespectivamenterepresentanlosvaloreslógicosciertoyfalso.

Literales de carácter:Prácticamentecualquiercaráctersepuederepresentarencerrándoloentrecomillassimples.Porejemplo,‘a’(letraa),‘‘(carácterdeespacio),‘?’(símbolodeinterrogación),etc.

4.3.4 Variables

Una variablerepresentaunvalornuméricoodecadenaounobjetodeunaclase.Elvalorquelavariablealmacenapuedecambiar,peroelnombresiguesiendoelmismo.Unavariableesuntipodecampo.Elcódigosiguienteesunejemplosencillodecómodeclararunavariabledeentero,asignarleunvalory,acontinuación,asignarleunnuevovalor.

int x = 1; // a x se asigna el valor 1

x=2;//ahoraxvale2

Page 68: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

68

EnC#,lasvariablessedeclaranconuntipodedatosyunaetiquetaconcretoademástienesqueespecificarsilavariableesdetipoint,float,byte,shortuotrocualquiera.

4.3.5 Tipos de Datos

Untipodedatossepuededescribircomo:

• Untipodedatosintegrado,comoint o char, o bien

• Untipodedatosdefinidosporelusuario,comoclass o interface.

4.3.5.1 int

Lapalabraclaveintdenotauntipoenteroquealmacenavaloressegúneltamañoyel intervaloqueseindica en la tabla siguiente:

Tipo Intervalo TamañoTipo de .NET Fra-mework

Valor prede-terminado

int De -2.147.483.648 a 2.147.483.647

Entero de 32 bits con signo

System.Int32 0

Lasvariablesdetipoint se pueden declarar e inicializar como en el siguiente ejemplo:

int i = 123;

4.3.5.2 double

Lapalabraclavedoubledenotauntiposimplequealmacenavaloresdepuntoflotantede64bits.Lasi-guientetablamuestralaprecisiónyelintervalodevaloresaproximadoparaeltipodouble.

TipoIntervalo aproxi-mado

PrecisiónTipo de .NET Fra-mework

double ±5,0 × 10−324 a ±1,7 × 10308

15-16 dígitos System.Double

De forma predeterminada, una literal numérica real en el lado derecho del operador de asignación se tratacomounvalordetipodouble por ejemplo:

double x = 3;

Page 69: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

69

4.3.5.3 float

Lapalabraclavefloatdenotauntiposimplequealmacenavaloresdepuntoflotantede32bits.

Lasiguientetablamuestralaprecisiónyelintervalodevaloresaproximadoparaeltipofloat.

TipoIntervalo aproximado

Precisión Tipo de .NET Framework

float -3.4 × 1038to +3.4 × 1038

7 dígitos System.Single

De forma predeterminada, una literal numérica real en el lado derecho del operador de asignación se trata comodouble.Porconsiguiente,parainicializarunavariabledetipofloat,utilizaelsufijof o F, como en el ejemplo siguiente:

float x = 3.5 F;

4.3.5.4 char

LapalabraclavecharseutilizaparadeclararunainstanciadelaestructuradeSystem.Charque.NETFra-meworkutilizapararepresentaruncarácterUnicode.ElvalordeunobjetodeCharesunvalor(ordinal)numérico de 16 bits.

LoscaracteresUnicodeseutilizanpararepresentarlamayorpartedelosidiomasescritosenelmundo.

Tipo Intervalo SizeTipo de .NET Fra-mework

char De U+0000 a U+FFFF

Carácter Unicode de 16 bits

System.Char

Lasconstantesdetipochar se pueden escribir como literales de cadena, secuencias de escape hexadeci-malesorepresentacionesUnicode.Loscódigosdecaracteresintegralessepuedenconvertirexplícitamen-tealtipochar.

Page 70: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

70

bool

LapalabraclaveboolesunaliasdeSystem.Boolean.Seutilizaparadeclararvariablesquealmacenanlosvaloresbooleanos,true y false.

Puedeasignarunvalorbooleanoaunavariabledetipobool.Tambiénpuedeasignarunaexpresiónqueseevalúecomoboolaunavariabledetipobool.

long

Lapalabraclavelongdenotauntipoenteroquealmacenavaloressegúneltamañoyelintervaloqueseindican en la tabla siguiente:

Tipo Intervalo Tamaño Tipo de .NET Framework

long –9.223.372.036.854.775.808 a 9.223.372.036.854.775.807

Entero de 64 bits con signo

System.Int64

Lasvariablesdetipolong se pueden declarar e inicializar como en el siguiente ejemplo:

long long1 = 4294967296;

4.3.6 Operadores

En C#, un operador es un término o un símbolo que acepta como entrada una o más expresiones, deno-minadas operandos,ydevuelveunvalor.Losoperadoresquerequierenunoperando,comoeloperadorde incremento (++) o new, se denominan operadores unarios. Los operadores que requieren dos ope-randos, como losoperadoresaritméticos (+, -, *, /) se denominan operadores binarios. El operador condicional (?:),utilizatresoperandosyeselúnicooperadorterciariodeC#.

Losoperadoresdeunaexpresiónseevalúanenunordenconcretoconocidocomoprioridaddeoperado-res.Latablasiguientedividealosoperadoresencategoríasbasadaseneltipodeoperaciónquerealizan.Las categorías se muestran en orden de prioridad.

Page 71: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

71

Principal x.y, f(x), a[x], x++, x--, new, typeof, checked, un-checked

Unario +, -, !, ~, ++x, --x, (T)x

Aritméticos: multiplicativos *, /, %

Aritméticos: aditivos +, -

Desplazamiento <<, >>

Comprobación de tipos y relacio-nales

<, >, <=, >=, is, as

Igualdad ==, !=

Lógicos, en orden de prioridad &, ^, |

Condicionales, en orden de priori-dad

&&, ||, ?:

Asignación =, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=

Cuandodosoperadoresconlamismaprioridadestánpresentesenunaexpresión,seevalúansegúnsuasociatividad.Losoperadoresquesonasociativosporlaizquierdaseevalúanenordendeizquierdaade-recha.Porejemplo,x*y/zseevalúacomo(x*y)/z.Losoperadoresquesonasociativosporladerechaseevalúanenordendederechaaizquierda.

Losoperadoresdeasignaciónyeloperadorterciario(?:)sonasociativosporladerecha.Todoslosotrosoperadoresbinariossonasociativosporlaizquierda.

Sinembargo,elestándardeC#noespecificacuándoseejecutalaparte“fija”deunainstruccióndeincre-mento en una expresión. Por ejemplo, el resultado del código de ejemplo siguiente es 6:

int num1 = 5;

num1++;

System.Console.WriteLine(num1);

Losparéntesissepuedenutilizarparaenvolverunaexpresiónyhacerqueesaexpresiónseaevaluadaantesque cualquier otra. Por ejemplo, 2 + 3 * 2 normalmente darían 8 como resultado.

Estoesporquelosoperadoresmultiplicativostienenprioridadsobrelosoperadoresaditivos.Escribirlaex-presión (2 + 3) * 2 da como resultado 10, ya que ésta indica al compilador de C# que el operador de adición (+)sedebeevaluarantesqueeloperadordemultiplicación(*).

Page 72: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

72

Operadores aritméticos

Losoperadoresaritméticossonlossiguientes:

Símbolo Acción* multiplicación/ división% módulo+ suma- resta

Lamultiplicación,divisiónymódulo(*, / y %)sellevanacaboantesquelasumaylaresta(+y–).Tambiénpodemosusarparéntesisparaagruparloscálculosyforzarlosallevarseacaboenunordenespecífico.Siuncálculo incluye operadores de la misma precedencia, las operaciones se realizarán de izquierda a derecha. He aquí algunos ejemplos:

int i;

int n = 3;

double d;

i = n + 3; // se convierte en 6

i = n * 4; // se convierte en 12

i = 7 + 2 * 4; // se convierte en 15

n=n*(n+2)*4; //seconvierteen60

d = 3.5 / 2; // se convierte en 1.75

n = 7 / 4; // se convierte en 1

Recuerde que las instrucciones forman una secuencia, la cual se ejecuta de arriba hacia abajo en la página. Siemprequeseutilicenparéntesis,loselementosqueéstoscontengansecalcularánprimero.

Lamultiplicaciónyladivisiónserealizanantesdelasumaylaresta.Porlotanto:

3 + 2 * 4

sellevaacabocomosisehubieraescritoasí:

3 + (2 * 4)

Page 73: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

73

Elusodelosoperadores+,–y*esrazonablementeintuitivo,peroladivisiónesunpocomásengañosa,yaqueexigediferenciarentrelostiposintydouble.Enestesentido,loimportanteestomarencuentaque:

• Cuando el operador / trabaja con dos números double o con una mezcla de double e int se produ-ceunresultadodouble.Parafinesdecálculo,cualquiervalorintseconsideracomodouble.Asíescomofuncionaladivisiónenunacalculadoradebolsillo.

• Cuando / trabaja con dos enteros se produce un resultado entero. El resultado se trunca, lo cual significaqueseborranlosdígitosquepudierahaberdespuésdel“puntodecimal”.Éstanoeslaforma en que funcionan las calculadoras.

He aquí algunos ejemplos:

//divisiónconvaloresdouble

doubled;

d=7.61/2.1; //seconvierteen3.7

d=10.6/2; //seconvierteen5.3

Enelprimercasoladivisiónsellevaacabodelamaneraesperada.

Enelsegundoelnúmero2setratacomo2.0(esdecir,undouble)yladivisiónserealiza.

Sinembargo,ladivisiónconenterosesdistinta:

//divisiónconenteros

inti;

i=10/5; //seconvierteen2

i=13/5; //seconvierteen2

i=33/44; //seconvierteen0

Enelprimercasoseesperaunadivisiónconenteros;larespuestaexactaqueseproducees2.

Enelsegundocasoelresultadotambiénes2,debidoaquesetruncaelverdaderoresultado.

Eneltercercasosetruncalarespuesta“correcta”de0.75,conlocualobtenemos0.

Page 74: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

74

El operador %

Porúltimoveremoseloperador% (módulo).Amenudoseutilizajuntoconladivisióndeenteros,yaqueprovee lapartedelresiduo.Sunombreprovienedeltérmino“módulo”.Anteriormentedijimosque losvaloresdoublesealmacenandemaneraaproximada,adiferenciadelosenteros,quelohacendeformaexacta.

Entonces¿cómopuedeserque33/44genereunresultadoenterode0?¿Acasoperder0.75significaqueelcálculonoespreciso?Larespuestaesquelosenterossíoperanconexactitud,peroelresultadoexactoestácompuestodedospartes:elcociente(esdecir,elresultadoprincipal)yelresiduo.Porlotanto,sidivi-dimos 4 entre 3 obtenemos como resultado 1, con un residuo de 1. Esto es más exacto que 1.3333333, etc.

En consecuencia, el operador %nosdaelresiduocomosisehubierallevadoacabounadivisión.

He aquí algunos ejemplos:

int i;

double d;

i=12%4; //seconvierteen0

i = 13 % 4; // se convierte en 1

i = 15 % 4; // se convierte en 3

d = 14.9 % 3.9; // se convierte en 3.2 (se divide 3.2 veces)

El uso más frecuente de % es con números int.

Veamosunproblemaqueinvolucraunresultadoconresiduo:convertirunnúmeroenterodecentavosendoscantidades:lacantidaddedólaresyelnúmerodecentavosrestantes.Lasoluciónes:

int centavos = 234;

int dolares, centavosRestantes;

dolares=centavos/100; //seconvierteen2

centavosRestantes = centavos %100; //seconvierteen34

Unión de cadenas con el operador +

Hastaahorahemosvistoelusodevariablesnuméricas,perotambiénesmuyimportanteelprocesamientodedatosdetexto.C#cuentaconeltipodedatosstring;lasvariablesstringpuedenguardarcualquierca-racter. La longitud máxima de una cadena es de aproximadamente dos mil millones de caracteres.

Page 75: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

75

El siguiente es un ejemplo del uso de cadenas:

string primerNombre = “Salvador “;

string apellidoPaterno, nombreCompleto;

string saludo;

apellidoPaterno=“López”;

nombreCompleto = primerNombre + apellidoPaterno;

saludo=“Saludosde“+nombreCompleto; //seconvierteen“SaludosdeSalvadorLópez”

Enelejemploanteriordeclaramosalgunasvariablesstringylesasignamosvaloresinicialesmedianteelusodecomillasdobles.Despuésutilizamoslaasignación,enlacualelvalordelacadenaaladerechadelsigno=sealmacenaenlavariableutilizadaalaizquierdadelmismo,demanerasimilaralaasignaciónnu-mérica(siintentamosutilizarunavariablequenohayarecibidounvalor,C#nosinformaráquelavariableno está asignada y el programa no se ejecutará).

Las siguientes líneas ilustran el uso del operador +, que (de igual manera que al sumar números) opera sobrelascadenasylasuneextremoconextremo.Aestoseleconocecomo“concatenación”.

Después de la instrucción:

nombreCompleto = primerNombre + apellidoPaterno;

elvalordenombreCompletoesSalvadorLópez.

4.3.7 Constantes y enumeraciones

Constantes

Las constantessonvaloresinmutablesqueseconocenentiempodecompilaciónynocambianmientrasdura el programa.

Lasconstantessedeclaranconelmodificadorconst.SólolostiposintegradosdeC#(excluidoSystem.Ob-ject) se pueden declarar como const.

Eltipodeenumeraciónpermitedefinirconstantesconnombreparalostiposintegradosenteros(porejem-plo int, uint, long, etc.).

Las constantes se deben inicializar tal como se declaran. Por ejemplo:

class Calendar1

Page 76: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

76

{

public const int meses = 12;

}

En este ejemplo, la constante meses siempre es 12 y no se puede cambiar. De hecho, cuando el compilador encuentraunidentificadordeconstanteenelcódigofuentedeC#(porejemplo,meses),sustituyedirecta-menteelvalorliteralenelcódigodelenguajeintermedio(IL)quegenera.

Sepuedendeclararvariasconstantesdelmismotipoalmismotiempo,porejemplo:

class Calendar2

{

const int meses = 12, semanas = 52, dias = 365;

}

Enumeraciones

enumeslapalabraclavequeseutilizaparadeclararunaenumeración,untipodistintoqueconsisteenunconjunto de constantes con nombre denominado lista de enumeradores.

Cadatipodeenumeracióntieneuntiposubyacente,quepuedesercualquiertipoexceptochar.Eltipopredeterminado subyacente de los elementos de la enumeración es int.

Deformapredeterminada,elprimerenumeradortieneelvalor0yelvalordecadaenumeradorsucesivose incrementa en 1.

Por ejemplo:

enumDias{Sab,Dom,Lun,Mar,Mie,Jue,Vie};

Enestaenumeración,Sabes0,Domes1,Lunes2yasísucesivamente.

Losenumeradorespuedentenerinicializadoresquereemplazanalosvalorespredeterminados.Porejem-plo:

enumDias{Sab=1,Dom,Lun,Mar,Mie,Jue,Vie};

Enestaenumeración,seobligaaquelasecuenciadeelementosempieceen1envezdeen0.

AunavariabledetipoDiasselepuedeasignarcualquiervalorenelintervalodeltiposubyacente;losvalo-

Page 77: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

77

res no se limitan a las constantes con nombre.

ElvalorpredeterminadodeunenumEeselvalorproducidoporlaexpresión(E)0.

Nota: Un enumerador no puede contener espacio en blanco en su nombre.

Tipos de enumeraciones

Untipodeenumeraciónproporcionaunamaneraeficazdedefinirunconjuntodeconstantesconnombrequepuedenasignarseaunavariable.

Porejemplo,supongaquetienequedefinirunavariablecuyovalorrepresentaráundíadelasemana.Sólohaysietevaloressignificativosquealmacenarádichavariable.Paradefiniresosvalores,puedeutilizaruntipodeenumeración,quesedeclaramediantelapalabraclaveenum.

enumDias{Domingo,Lunes,Martes,Miércoles,Jueves,Viernes,Sabado};

enumMeses:byte{Ene,Feb,Mar,Abr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic};

Lasventajasdeutilizarunaenumeraciónenlugardeuntiponumérico:

• Seespecificaclaramenteparaelcódigodeclientequévaloressonválidosparalavariable.

• EnVisualStudio,IntelliSensemuestralosvaloresdefinidos.

• Sinoseespecificanvaloresparaloselementosenlalistadeenumeradores,losvaloresseincre-mentanautomáticamenteen1.

En el ejemplo anterior, Dias.Domingotieneunvalorde0,Dias.Lunes tieneunvalorde1,yasísucesiva-mente.AlcrearunnuevoobjetoDias,éstetendráunvalorpredeterminadodeDias.Domingo (0) de lo contrarioseleasignaunvalorexplícitamente.

Alcrearunaenumeración,seleccionaelvalorpredeterminadomáslógicoyasígnaleelvalorcero.

Deestaforma,todas lasenumeracionestendránesevalorpredeterminadosinose lesasignaunvalorexplícitamente al crearlas.

Page 78: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

78

4.4 Sentencias de Control

4.4.1 Condicionales

Todoslossereshumanoshacemoseleccionesenlavidadiaria.Usamosunparaguassillueve;compramosunCDsitenemossuficientedinero.Laseleccionestambiénseutilizanmuchoenlosprogramas.

Lacomputadoraevalúaunvalorydeacuerdoconelresultado,tomauncursodeacciónuotro.Cadavezqueunprogramahaceunaselecciónentrevariasaccionesydeciderealizarunauotraseutilizaunains-trucción if o switch para describir la situación.

Algunasvecesdesearemosqueseevalúenciertosdatosyseelijaunadevariasaccionesdependiendodelresultadodelaevaluación.

Porejemplo,talveznecesitemosquelacomputadoraevalúelaedaddeunapersonayledigasipuedevo-taroesdemasiadojovenparahacerlo.Aestoseleconocecomoselección,yparallevarlaacaboseutilizauna instrucción conocida como if.

Las instrucciones ifsontanimportantesqueseutilizanentodosloslenguajesdeprogramaciónquesehaninventado.

4.4.1.1 La instrucción if

Se trata de un si condicional, por ejemplo siapruebas,tecomprounXboxyunvideojuego.Puesbien,enprogramación,esmásomenoslomismo.Escritoenpseudocódigoseveríadelasiguienteforma:

Si (apruebas)

{

tecomprounXbox;

tecomprounvideojuego;

}

En C# podemos poner el siguiente ejemplo:

if (num==10)

{

Console.WriteLine(“Elnúmeroesiguala10”);

}

Page 79: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

79

Enesteejemplo,seevalúacomoverdaderoofalsoloqueestádentrodelosparéntesis,esdecir,num==10. Por lo tanto, el operador ==retornaráverdadero(true)siemprequenumvalga10,yfalso(false)sivaleotra cosa.

En C# == es el operador de comparación y = es de asignación.

NOTA: La condición a evaluar se encierra entre paréntesis; ésta es una regla de la sintaxis de C#. Observa también que para la prueba de igualdad se utiliza el operador == (no el operador =).

La instrucción if consta de dos partes:

•Lacondiciónaevaluar;

•Lainstrucciónosecuenciadeinstruccionesaejecutarsilacondiciónesverdadera.

Esmuyfrecuentequeselleveacabonosólounaacción,sinosecuenciascompletasdeaccionessielre-sultadodelaevaluaciónesverdadero.Enestecaso,lasaccionesarealizardebenirencerradasentreloscorchetes.

4.4.1.2 if ... else

Algunasvecesesnecesarioespecificardossecuenciasdeacciones:lasquesellevaránacabosilacondi-ciónesverdadera,ylasqueseránrealizadassiesfalsaparaesopodemoshacerusodelainstrucciónelse. Podríamosdecirquefuncionacomoun“delocontrario”,esdecir,si apruebas, te compro un Xbox y un videojuego;de lo contrario, tecastigoentucuartoytequedassincenar.Supseudocódigoseríaalgocomo esto:

Si (apruebas)

{

te compro un Xbox;

te compro un videojuego;

}

de lo contrario

Page 80: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

80

{

tecastigoentucuarto;

te quedas sin cenar;

}

Veamos cómo se escribe esta instrucción en C#:

if(num==10)

{

Console.WriteLine(“Elnúmeroesiguala10”);

}

else

{

Console.WriteLine(“Elnúmeronoesiguala10”);

}

Esta instrucción if consta de tres partes:

• Lacondiciónaevaluar;

• Lainstrucciónosecuenciadeinstruccionesqueseejecutaránsi lacondiciónesverdadera;estapartedebeirencerradaentrecorchetes;

• Lainstrucciónoinstruccionesaejecutarsilacondiciónesfalsa;estapartedebeirencerradaentrecorchetes.

Elnuevoelementoenestecódigoeslapalabraclaveelse, que introduce la segunda parte de la instrucción if.

Page 81: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

81

4.4.2 Ciclos

Lossereshumanosestamosacostumbradosarealizardeterminadasactividades—comocomer,dormirytrabajar—unayotravez.Lascomputadorasrealizanrepeticionessimilarescuando,porejemplo:

• sumanunalistadenúmeros;

• buscanciertainformaciónenunarchivo;

• resuelvenunaecuaciónmatemáticademaneraiterativa,obteniendocadavezmejoresaproxi-maciones;

• hacenqueunaimagengráficasemuevaenlapantalla(animación).

Ahoraveremoscómorepetirunasecuenciadeinstruccionesciertonúmerodeveces.Enparte,elpoderdelascomputadorasderivadesuhabilidadderealizarrepeticionesconextremarapidez.

Enellenguajedeprogramaciónalasrepeticionesselesconocecomociclos, bucles o loops.

4.4.2.1 for

El ciclo forvaasignandovaloresaunavariabledesdeunvalorinicialhastaunvalorfinal,ycuandolavaria-blecontieneunvalorqueestáfueradelintervaloelciclotermina.Veamoslasintaxis:

for (var=inicial;condición;siguientevalor)

{

Instrucciones

}

La explicación es la siguiente después de la sentencia forse indican lasespecificacionesdelcicloentreparéntesis.

Estasespecificacionesestándivididasentrespartesseparadasporpuntoycoma:

• lapartedeasignacióndelvalorinicialenprimerlugar;

• lapartequeverificalacontinuidaddelbucle(medianteunacondición)ensegundolugar;

• ylaparteenquesecalculaelsiguientevalorentercerlugar.

Page 82: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

82

Por ejemplo:

Realicemos un ciclo for que imprima los números del 1 al 5:

for (int i = 1; i <= 5; i++)

{

Console.WriteLine(i);

}

La condición determina si el ciclo for se ejecuta o completa de cualquiera de las siguientes maneras:

• Silacondiciónesverdadera,seejecutaelcuerpodelciclo.

• Silacondiciónesfalsa,elcicloterminayseejecutanlasinstruccionesquevandespuésdelallavede cierre.

Tenencuentaqueesposibleescribirladeclaracióndeunavariabledentrodeunainstrucciónforjuntoconsuinicialización,algoquesehaceconfrecuencia.Estavariablepuedeutilizarsedentrodelcuerpodela instrucción for.

4.4.2.2 while

La traducción de “while”aespañolsignifica“mientras”,porlotantounciclowhileserepetirámientrasunacondicióndeterminadasecumpla,osea,verdadera(true).Veamossusintaxis:

while (expresión bool)

{

Instrucciones

}

Entonceslas“Instrucciones”quesehallendentrodelciclowhileseejecutaráncontinuamentemientraslaexpresióndetipobooleanseaverdadera(true).Porejemplo,podemosescribirunciclowhile para pedir unacontraseñadeusuario.EnC#quedaríasimilaraesto:

Page 83: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

83

stringClave=”programacion123”;

stringRes=””;

while (Res!=Clave)

{

Console.Write(“Damelaclave:“);

Res=Console.ReadLine();

}

Console.WriteLine(“Laclaveescorrecta”);

string a=Console.ReadLine();

Enestepequeñoejemploelprogramapediráunayotravezlaclavealusuario,ycuandoéstetecleelaclavecorrectaserácuandofinalicelaejecucióndelmismo.

Algunasvecesseescribenciclosqueempiezanconunconteode0,ylaintencióndelaevaluaciónesveri-ficarsilacondiciónesmenorqueelnúmerorequerido,comosemuestraacontinuación:

conteo=0;

while (conteo < númeroRequerido)

{

// cuerpo

conteo=conteo++;

}

Page 84: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

84

Enotrasocasioneselciclocomienzaconunconteode1ylaevaluaciónbuscacorroborarsilacondición es menor o igual al número requerido, como en el ejemplo siguiente:

conteo=1;

while (conteo <= númeroRequerido)

{

// cuerpo

conteo=conteo++;

}

4.4.2.3 do ... while

Cuandoseutilizanlasinstruccioneswhile o for,laevaluaciónserealizasiemprealprincipiodelarepeti-ción.

El ciclo doesunaestructuraalternativa,enlacuallaevaluaciónsellevaacaboalfinaldecadarepetición.Estosignificaqueelciclosiempreserepiteporlomenosunavez.

La sintaxis es la siguiente:

do

{

Instrucciones

} while(expresiónbool);

Page 85: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

85

Realicemoselejemploanteriorquesolicitabaunacontraseña:

usingSystem;

namespace BuclesDo

{

class BuclesDoApp

{

staticvoidMain()

{

stringClave=”Compadre,cómprameuncoco”;

stringRes=””;

do

{

Console.Write(“Damelaclave:“);

Res=Console.ReadLine();

} while(Res!=Clave);

Console.WriteLine(“Laclaveescorrecta”);

stringa=Console.ReadLine();

}

}

}

El resultado sería el mismo que antes. La diferencia está en que aquí daría exactamente lo mismo lo que valieralavariableResantesdellegaralbucle,puestoqueestesevaaejecutarantesdecomprobardichovalor,yalejecutarse,elvalordeRessesustituyeporloqueseintroduzcaenlaconsola.

Page 86: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

86

4.4.3 Uso de Break y Continúe

4.4.3.1 Break

Lainstrucciónbreakpermiteterminarelbucleenvolventemáscercanoolainstrucciónswitchenlacualaparece.Elcontrolsetransfierealainstrucciónquesiguealainstrucciónterminada,siexistealguna.

Enesteejemplo,lainstruccióncondicionalcontieneuncontadorquesesuponequecuentade1a100;sinembargo, la instrucción break termina el bucle tras 4 iteraciones.

//statements_break.cs

usingSystem;

class BreakTest

{

staticvoidMain()

{

for(inti=1;i<=100;i++)

{

if (i == 5)

{

break;

}

Console.WriteLine(i);

}

}

}

Resultados

1

2

3

4

Page 87: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

87

4.4.3.2 Continue

La instrucción continuetransfiereelcontrolalasiguienteiteracióndelainstruccióndeiteraciónenvol-ventedondeaparece.

Ejemplo

Enesteejemplo,seinicializauncontadorquecuentade1a10.Utilizandolainstruccióncontinueconlaexpresión(i<9),seomitenlasinstruccionessituadasentrecontinueyelfinaldelcuerpodelbuclefor.

//statements_continue.cs

usingSystem;

classContinueTest

{

staticvoidMain()

{

for(inti=1;i<=10;i++)

{

if (i < 9)

{

continue;

}

Console.WriteLine(i);

}

}

}

Page 88: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

88

4.5 Métodos, Arreglos y Colecciones

4.5.1 Métodos

Losprogramasgrandespuedensercomplejos,difícilesdecomprenderydedepurar.Latécnicamásimpor-tanteparareducirestacomplejidadconsisteendividirelprogramaensecciones(relativamente)indepen-dientes.Estonospermiteenfocarnosenunasecciónespecíficasindistraernosconelprogramacompleto.

Además,silaseccióntienenombrepodemos“llamarla”o“invocarla”(esdecir,hacerqueseautilizadaporotra instancia)consólohacerreferenciaaella.Trabajardeestamaneranospermite,enciertosentido,pensaraunnivelmásalto.

En C# a dichas secciones se les conoce como métodos.

4.5.1.1 Nuestro primer método

Vamos a construir una clase llamada Boligrafo.

Unaclaseesunaconstrucciónquepermitecreartipospersonalizadospropiosmediantelaagrupacióndevariablesdeotrostipos,métodosyeventos.Unaclaseescomounplano.Definelosdatosyelcomporta-mientodeuntipo.

Los métodos de nuestra clase Boligrafo serán, por ejemplo, Pintar y Recargar, que son las operaciones que se suelen efectuar con un bolígrafo.

Ambosmétodosmodificaránlacantidaddetintadelbolígrafo,valorquepodríamosponerenunapropie-dad llamada Tinta. Recordemos que un método es como un procedimiento o una función.

En determinadas ocasiones necesitaremos pasarle datos a los métodos para que estos puedan hacer su trabajo.

Siguiendoconelbolígrafo,puedequenecesitemosdecirlealmétodoPintarlacantidaddetintaquevamosagastar.Puesbien,estosdatossellamanargumentos.Vamosaverlo:

usingSystem;

classBoligrafo

{

protectedintcolor=0;

protectedbytetinta=100;

Page 89: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

89

publicboolPintar(bytegasto)

{

if(gasto>this.tinta)returnfalse;

this.tinta-=gasto;

Console.WriteLine(“Segastaron{0}unidadesdetinta.”,gasto);

return true;

}

public void Recargar()

{

this.tinta=100;

Console.WriteLine(“Bolígraforecargado”);

}

public int Color

{

get

{

returnthis.color;

}

set

{

this.color=value;

}

}

publicbyteTinta

{

get

Page 90: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

90

{

returnthis.tinta;

}

}

}

EnesteejemplotieneslosmétodosPintaryRecargar(prestaespecialatenciónalasintaxis).Elprimerodisminuyelacantidaddetinta,yelsegundoestableceestacantidadnuevamentea100,esdecir,rellenaelbolígrafodetinta.

El encabezado declara el nombre del método (que nosotros tenemos la libertad de elegir) y los elementos que deben suministrarse para controlar su operación.

C#utilizalostérminosargumentosyparámetrosparadefinirestoselementos.Alrestodelmétodoseleconocecomocuerpo,yvaencerradoentrellaves{};aquíesdondeserealizaeltrabajo.

Amenudoelencabezadoesunalíneaextensa,ynosotrospodemosoptarpordividirloenpuntosadecua-dos (aunque no en medio de una palabra).

Unaimportantedecisiónquedebetomarelprogramadoresellugardesdedondesepuedeinvocarelmé-todo;enestesentido,tenemosdosopciones:

• Elmétodosólopuedeserinvocadodesdeelinteriordelprogramaactual;enestecasoutilizamoslapalabraclaveprivate.

• Elmétodopuedeserinvocadodesdeotroprograma;enestecasoutilizamoslapalabraclavepu-blic.

Otra decisión que debe tomar el programador es:

• ¿Elmétodorealizaráunatareasinnecesidaddeproducirunresultado?Enestecasoutilizamoslapalabraclavevoiddespuésdeprivate.

Page 91: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

91

• ¿Elmétodocalcularáunresultadoylodevolveráalaseccióndecódigoqueloinvocó?Enestecasotenemosquedeclarareltipodelresultado,envezdeusarvoid.Másadelanteenelcapítuloveremoscómohacerlo.

4.5.1.2 Cómo invocar métodos

ParainvocarunmétodoprivadoenC#espreciso indicarsunombrejuntoconunalistadeargumentosentre paréntesis. En nuestro programa la primera llamada es:

DibujarLogo(papel,miLapiz,10,20);

Estainstruccióntienedosefectos:

• Losvaloresdelosargumentossetransfierenalmétododemaneraautomática.Másadelanteha-blaremos sobre esto con mayor detalle.

• El programa salta al cuerpo del método (la instrucción después del encabezado) y ejecuta las ins-trucciones.Cuandoterminacontodaslasinstruccionesyllegaalcaracter},laejecucióncontinúaen el punto desde el que se hizo la llamada al método.

EstosefectossepuedenvisualizarenlaFigura4.12

Figura 4.12

Page 92: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

92

Despuéssellevaacabolasegundallamada:

DibujarLogo(papel,miLapiz,100,100);

Sondosllamadasqueproducendoslogotipos.

4.5.1.3 Cómo pasar argumentos

Esimprescindiblecomprenderlomejorposiblecómosetransfieren(pasan)losargumentosalosmétodos.En nuestro ejemplo el concepto se muestra en las siguientes líneas:

DibujarLogo(papel,miLapiz,10,20);

privatevoidDibujarLogo(GraphicsareaDibujo,

Pen lápizAUsar,

int posX,

int posY)

Eláreaenlaquedebemosenfocarnosestáconstituidaporlasdoslistasdeelementosquesehallanentreparéntesis. En una llamada los elementos se denominan argumentos. En el encabezado del método los elementos se denominan parámetros. Para aclarar esta situación extraigamos los parámetros y los argu-mentos:

argumentos: papel miLapiz 10 20

parámetros: areaDibujo lapizAUsar posX posY

Recordemoslacomparaciónquehicimosdeunavariableconunacaja.Dentrodelmétodohayunconjuntodecajasvacías(losparámetros)queesperanlatransferenciadelosvaloresdelosargumentos.

DespuésdelatransferenciatenemoslasituaciónquesemuestraenlaFiguraNocontamosconvaloresnuméricosparapasarlosaláreadedibujoyellápiz,porloquenosenfocaremosencómosetransfierenlascoordenadas (Figura 4.13).

Figura 4.13

Page 93: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

93

Latransferenciaserealizadeizquierdaaderecha.Lallamadadebeproporcionarelnúmeroytipocorrec-tos de cada argumento. Si el que hace la llamada (el usuario) recibe accidentalmente los argumentos en el orden incorrecto, el proceso de la transferencia no los regresará a su orden correcto.

CuandoelmétodoDibujarLogoseejecuta,estosvalorescontrolanelprocesodedibujo.Aunqueenesteejemploinvocamoselmétodoconnúmeros,tambiénpodemosutilizarexpresiones(esdecir,incluirvaria-bles y cálculos), como en el siguiente ejemplo:

intx=6;

DibujarLogo(papel,miLapiz,20+3,3*2+1);//23y7

DibujarLogo(papel,miLapiz,x*4,20);//24y20

4.5.2 Parámetros

4.5.2.1 Parámetros y argumentos

Enelanálisisqueestamosllevandoacaboestáninvolucradasdoslistasentreparéntesis,yesimportanteaclarar el propósito de cada una de ellas:

• El programador que escribe el método debe elegir cuáles son los elementos que éste solicitará por medio de parámetros. En el método DibujarLogo las medidas de los cuadrados anidados siempre seestablecenen20,40y60,demaneraquelainstanciaqueinvocaelmétodononecesitasumi-nistraresosdatos.Sinembargo,talvezquienhagalallamadaquieravariarlaposicióndellogotipo,utilizarun lápizdistintoo inclusodibujarloenuncomponentedistinto (comounbotón).Estoselementossehanconvertidoenparámetros.

• Elescritordelmétododebeelegirelnombredecadaparámetro.Siseutilizannombressimilaresenotrosmétodosnohayproblemaalguno,puescadaunodeellostieneunacopiapropiadesusparámetros.Enotraspalabras,elescritortienelalibertaddeelegircualquiernombre.

• Sedebeproporcionareltipodecadaparámetro;estainformacióndebeirantesdelnombredelmismo.Lostiposdependendelmétodoenparticular.Seutilizaunacomaparasepararlosparáme-tros entre sí. En el encabezado de DibujarLogo puede comprobar este acomodo.

• Quienhacelallamadadebeproveerunalistadeargumentosentreparéntesis,yéstostendránqueserdeltipocorrectoyestarenelordenadecuadoparaelmétodo.

Losdosbeneficiosqueconllevalautilizacióndeunmétodoparadibujarellogotiposon:evitamosduplicarlastres instruccionesDrawRectanglecuandoserequierenvarios logos,yaldarunnombreaestatareapodemosserdecididamentemáscreativos.

Porúltimo,sabemosquetalvezdeseeaplicarlashabilidadesdeprogramaciónquehaaprendidoaquía

Page 94: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

94

otros lenguajes, pero debe saber que aún cuando los conceptos son similares la terminología podría ser distinta;porejemplo,enmuchoslenguajesquienhacelallamadaproveelos“parámetrosactuales”,yladeclaracióndelmétodotiene“parámetrosformales”.

4.5.3 Namespace

Un Namespaceesunaformadeagruparclases,funciones,tiposdedatosrelacionados,yotrosnamespa-ces.Seutilizaunaformajerárquicaparacrearunesquemaquenospermitahacerreferenciayorganizarlas clases de la BCL. Además las clases irán creciendo porque nos creemos nuestras propias clases o por-queconsigamosalgunadeotrosdesarrolladores.Unamismaclasepuedeaparecerenvariosespaciosdenombres.

4.5.3.1 La palabra clave using y los namespaces

C#incluyeunaenormebiblioteca(ocolección)declasesquepodemosutilizar.UnaspectomuyimportantedelaprogramaciónenC#radicaenlaposibilidaddeemplearestasclasesenvezdeescribirnuestropropiocódigo.Aestoseleconocecomo“reutilizacióndesoftware”.

Debidoaquehaymilesdeellas,lasclasesestánsubdivididasengruposcuyoámbitoesconocidomediantelapalabraclavenamespace.Porotrolado,parautilizarunaclaseprimerodebemosasegurarnosdequeseimporteanuestroprogramamediantelapalabraclaveusing.

Estopuedeocurrirdedosformas:algunosdelosespaciosdenombresqueseutilizanconmásfrecuenciaseimportandemaneraautomáticaencualquieraplicacióndeWindows.Estosnamespacesson:

System

System.Drawing

System.Collections

System.ComponentModel

System.Windows.Forms

System.Data

Page 95: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

95

4.5.4 Arreglos

Enlavidarealesmuyfrecuentequetengamosquelidiarcondatosquenoestánaislados,sinoagrupadosencoleccionesdeinformación.Algunasvecesestetipodeinformaciónseencuentraalmacenadaentablas,talcomoocurreenelcasodelositinerariosdetrenes,losdirectoriostelefónicosolosestadosdecuentabancarios.Enprogramaciónaestascoleccionesdedatosselesconocecomoestructurasdedatos,ytienenlaparticularidaddequecadapartedelainformacióndelatablaestárelacionadadeciertaformaconelresto.

El arregloesunodelostiposmássimplesdeestructuradedatosenprogramación.

Unarreglosepuedeconsiderarsimplementecomounatablaconunasolafila(ocolumna)deinformaciónen forma de números, cadenas de caracteres o cualquier otra cosa.

La siguiente es una tabla de palabras que almacena los nombres de los miembros de un grupo musical:

C# denomina estas tablas como arreglos. En programación cada uno de los datos de un arreglo es conocido comoelemento,ynosreferimosaélporlaposiciónqueocupaenelarreglollamadaíndice,algunasvecesseutilizaeltérminocomponenteenvezdeelemento,yeltérminosubíndiceenvezdeíndice).

Desdenuestropuntodevista,elnombreJohnestáenlaposiciónunodelatablaanterior,peroC#cuentaloselementosapartirdecero.Enconsecuencia,lacadenadecaracteresRingoseencuentraenlaterceraposición del arreglo.

Alaposiciónqueocupaunelementoenunarregloseleconocecomoíndice.Así,podemosvisualizarlosarreglos y sus índices de la siguiente manera:

Recuerda que los índices no se guardan en la memoria de la computadora, sólo los datos. Los índices cons-tituyenelmecanismoquenospermitelocalizarlainformaciónenunarreglo.

Heaquíotroarreglo,estavezconteniendonúmeros.Tambiénsemuestransusíndices:

Enlosprogramas(aligualqueenlavidareal)porlogeneraltenemosquerealizarlassiguientesoperacio-nes con arreglos:

Page 96: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

96

• Crearelarreglo:determinarcuálessulongitudyquétipodeelementosalmacenará.

• Colocar valores en el arreglo (equivalente, por ejemplo, a introducir números enundirectoriotelefónico personal).

• Desplegar en pantalla el contenido del arreglo (los arreglos se guardan en la memoria de la compu-tadoray,porende,soninvisibles).

• Buscarenelarreglociertovalor (algosimilarabuscarenel itinerariodetrenesunacorridaenhorarioconveniente).

• Sumarelcontenidodelarreglo(equivalenteaaveriguarcuántogastóunclienteenelsupermer-cado).

4.5.5 Declaración

EnC#losarreglossedeclarandelamismamaneraquecualquierotroobjeto:mediantelapalabraclavenew, y por lo general en la parte superior de una clase o de un método.

Además,elprogramadordebedarlenombre,comosemuestraacontinuación:

int[] edades = newint[6];

string[] grupo = newstring[4];

Lavariableedadesestáahoralistaparaguardarunarreglodeenteros.Elnúmeroentrecorchetesqueestádespuésdelnombredelarreglorepresentasutamaño.

El arreglo edades es lo bastante grande como para contener seis números (enteros, int), cuyos índices irán de 0 a 5.

Porsuparte,elarreglogrupotienecapacidadsuficienteparacontenercuatrocadenasdecaracteres(string)susíndicesvande0a3.

4.5.5.1 Índices

Parahacerreferenciaaunelementoindividualdeunarregloelprogramadebeespecificarelvalordelíndi-ce(algunasvecesllamadosubíndice)correspondiente.

Porlotanto,edades[3]hacereferenciaalelementoquetieneelíndice3enelarreglo:elvalor12enelcasodenuestroejemplo.Demanerasimilar,grupo[2]contienelacadenaGeorge.

Recuerdequelosíndicesempiezanen0,porloqueunarreglodelongitud4tieneíndicesquevande0a3.Porlotanto,sihiciéramosreferenciaagrupo[4]estaríamoscometiendounerror,elprogramasedetendríay aparecería un mensaje indicándolo.

Page 97: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

97

Enresumen,losvaloresdelosíndices:

• empiezanencero;

• sonenteros;

• lleganhastaunnúmeromenosqueeltamañodelarreglo(elvalorqueseespecificaalmomentode declarar el arreglo).

Algunasvecesesconvenienteutilizarcomoíndiceelvalordeunavariable.Entalescasosutilizamosvaria-blesintcomoíndices.Porejemploparamodificarlosvaloresdeelementosindividualesdeunarregloatravésdeinstruccionesdeasignación,comoenelsiguienteejemplo:

edades[3]=99;

grupo[2]=“Mike”;

Parahacerreferenciaaloselementosindividualesdeunarreglo,entodosestosfragmentosdeprogramahemosespecificadoelvalordeuníndice.

Es frecuente que necesitemos hacer referencia al n-ésimo elemento en un arreglo, siendo nunavariable.Por ejemplo, supón que deseamos sumar todos los números de un arreglo (de números), e imagina que ésteconstadesieteelementosquerepresentanelnúmerodecomputadorasvendidasenunalmacéndu-rante cada día de la semana:

int[] venta = new int[7];

Parainsertarvaloresenelarregloemplearemosinstruccionesdeasignación.Supongaqueellunes(día0)sevendieron13computadoras:

venta[0]=13;

yelrestodelasemanasevendieronestascantidades:

venta[1] = 8;

venta[2] = 22;

venta[3] = 17;

venta[4] = 24;

venta[5] = 15;

venta[6] = 23;

Ahoraqueremosobtenerlaventatotaldelasemana.Unamanera(pocohábil)deobtenereseresultadoconsistiríaenescribirlosiguiente:

suma=venta[0]+venta[1]+venta[2]+venta[3]+venta[4]+venta[5]+venta[6];

Page 98: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

98

Locualescorrecto,peronoaprovechalaregularidaddeunarreglo.

Laalternativaesusarunciclofor.Unavariable—digamos,númeroDía—seempleaparaalmacenarelvalordelíndicequerepresentaeldíadelasemana.Alprincipioelíndicesehaceiguala0,ysuvalorseincremen-tacadavezqueserepiteelciclo:

intsuma=0;

for(intnúmeroDía=0;númeroDía<=6;númeroDía++)

{

suma=suma+venta[númeroDía];

}

Encadaiteracióndelciclosesumaaltotalelsiguientevalordelarreglo.Enrealidadestefragmentodecó-digonoesmáscortoquelasoluciónanterior,perosindudaloseríasielarreglotuvieramilelementosquesumar.Otraventajaesqueelcódigomuestraexplícitamentequeestárealizandounaoperaciónsistemáticaen un arreglo.

Losíndicessonelúnicolugardelaprogramaciónenelquesepermite(algunasveces)elusodenombresunpococrípticos.Sinembargo,enelfragmentodeprogramaanteriorquedaclaroelusocomoíndicedenúmeroDía,yelnombreestáestrechamenterelacionadoconelproblemaaresolver.

4.5.5.2 Longitud de los arreglos

Unprogramaenejecuciónsiemprepuedeconocerlalongituddelosarreglosqueintervienenenél.

Por ejemplo, si tenemos un arreglo declarado de la siguiente forma:

int[]tabla=newint[10];

podemosconocersulongitudsiutilizamoslapropiedadLength,comoenelsiguienteejemplo:

inttamaño;

tamaño=tabla.Length;

Enestecaso,tamañotieneunvalorde10.Talvezleparezcainútilquerersaberlalongituddeunarreglo;después de todo tenemos que proporcionar ese dato al momento de declararlo.

Unavezquecreamosunarreglosulongitudesfija.

Aldiseñarunnuevoprogramadebemostenerencuentaeltamañodecualquierarregloqueintervengaenél.Enocasioneslanaturalezadelproblemahacequeestoresulteobvio.Porejemplo,silosdatosserela-cionan con los días de la semana, sabemos que el arreglo constará de siete elementos.

Page 99: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

99

4.5.5.3 Inicialización de arreglos

Unaformacomúndeinicializarunarreglodemaneraexplícitaesalmomentodedeclararlo.Losvaloresinicialesrequeridosseencierranentrellavesyseseparanmediantecomas.Peroeltamañodelarreglonodebe proporcionarse en su posición usual. La siguiente inicialización:

int[]edades={23,54,96,13,7,32};

endondelalongituddelarreglonosedademaneraexplícita,esequivalentea:

int[]edades=newint[6];

edades[0]=23;

edades[1]=54;

edades[2]=96;

edades[3]=13;

edades[4]=7;

edades[5]=32;

Heaquíotroejemplo;enestecasoseinicializaunarreglodecadenasdecaracteres:

string[]grupo={“John”,“Paul”,“George”,“Ringo”};

Otra forma de inicializar un arreglo es mediante un ciclo, como en el siguiente ejemplo:

int[]tabla=newint[25];

for(intíndice=0;índice<tabla.Length;índice++)

{

tabla[índice]=0;

}

Sielprogramanecesitarestablecerperiódicamenteelarregloasusvaloresiniciales,podemosutilizarelciclo for anterior.

Page 100: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

100

4.5.6 Colecciones

Las coleccionesproporcionanunmétodomásflexibleparatrabajarcongruposdeobjetos.Adiferenciadelos arreglos, el grupo de objetos con el que trabaja puede aumentar y reducirse dinámicamente a medida que cambian las necesidades de la aplicación.

Paraalgunascolecciones,puedeasignarunaclaveacualquierobjetoqueincluyaenlacolecciónparaquepuedarecuperarrápidamenteelobjetoconlaclaveasignada.

Una colecciónesunaclase,demodoqueantesdepoderagregarelementosaunanuevacolección,debedeclararla.

4.5.7 Listas

Cuando arrastramos un cuadro de lista al formulario desde el cuadro de herramientas, estamos creando unanuevainstanciadelaclaseListBox. Esta clase emplea otra clase llamada Listparallevaracabosusfun-ciones.Loscuadrosdelistasimplementedesplieganlainformaciónenelformulario,ymanejanloseventosdeclicderatón;porsuparte,laslistasalmacenanlainformaciónquesemuestraenaquellos.

Así,mientrasloscuadrosdelistasoportanloseventosClick y DoubleClick junto con propiedades tales comoSelectedItem,laslistasproveenmétodosparaagregaryeliminarelementosdeéstas.

Podemos obtener un conteo del número de elementos que conforman la lista (y el cuadro de lista) median-teelusodelapropiedadCount,comosemuestraacontinuación:

int númeroDeElementos = compras.Items.Count;

4.5.7.1 Adición de elementos a una lista

El programa de ejemplo que se muestra en la siguiente Figura 4.14 permite que el usuario agregue ele-mentos a un cuadro de lista.

Figura 4.14

Page 101: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

101

Estemétodorespondealclicdelbotónycolocaunelementoacompraralfinaldelcuadrodelista.

privatevoidbutton1_Click(objectsender,EventArgse)

{

compras.Items.Add(textBox1.Text);

}

Enesteejemploelnombredelcuadrodelistaescompras.Comovimosantes,unadelaspropiedadesdeloscuadrosdelistaesItems,yrepresentasucontenidocomounainstanciadelaclaseList.Asuvez,estaclaseproporcionavariosmétodos,unodeloscualesesAdd,quenospermiteañadirelementosaunalista.Suparámetroeselvalorqueseagregaráalalista.

Tambiénpodemoscolocarelementosenuncuadrodelistaentiempodediseño.Alseleccionarlapropie-dadItemsdeuncuadrodelistaapareceunanuevaventanaquenospermiteinsertarelementosenél.

4.5.7.2 La longitud de una lista

Acontinuaciónveremosunmétodoquerespondealclicdeunbotóndesplegandouncuadrodemensajeconelnúmerodeelementosquecontieneelcuadrodelista.

privatevoidbutton1_Click(objectsender,EventArgse)

{

MessageBox.Show(Convert.ToString(compras.Items.Count));

}

UnavezmáspodemosvercómoseutilizalapropiedadItemsdelcuadrodelistallamadocompras.

AlmismotiemposeemplealapropiedadCountdelaclaseListparaobtenerelnúmerodeelementosquelo conforman.

Page 102: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

102

4.5.7.3 Índices

Losprogramasutilizanuníndiceparahacerreferenciaaloselementosqueconstituyenuncuadrodelista.Uníndiceesunenteroqueindicaaquéelementosehacereferencia.Elprimerelementotieneelíndice0,el segundo 1, etcétera como se muestra en al Figura 4.15.

Figura 4.15

Elprogramadeejemploquesemuestraenlafigura4.16muestraalusuarioelnúmerodeíndicecorres-pondiente a cada elemento.

Figura 4.16

Ahoraanalicemosunprogramaquedemuestracómousarlosvaloresdelosíndices.Elusuariohaceclicenunelementodelcuadrodelista,yelprogramamuestraelvalordelíndiceequivalenteenuncuadrodetexto.

Page 103: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

103

Cuandoocurreeleventodelclicinvocamoselsiguientemétodoparamanejarlo:

privatevoidcompras_SelectedIndexChanged(objectsender,EventArgse)

{

textBox1.Text=Convert.ToString(compras.SelectedIndex);

}

SelectedIndexesunapropiedaddelcuadrodelistaqueproporcionaelvalordelíndicedelelementoenelquesehizoclic(o21sinosehahechoselecciónalguna).Alejecutaresteprogramapodemosverquelosvaloresdelosíndicesnosealmacenancomopartedelcuadrodelista,sinoquelacomputadoraconocelosvaloresyéstospuedenusarsecomoycuandoseanecesario.Tambiénpodemosconfirmarquelosvaloresde los índices empiezan en cero y no en uno.

4.5.8 Pilas

Estaestructuraesbastanteusadaparasimularmétodosrecursivosyresolveralgunostiposdeproblemas.Estovienesimulandocomounmontóndeobjetosquesevanapilando(unoencimadeotro).Lafilosofíade una pila (stack) es “El último que entra es el primero que sale”.Puedenverunpocomásdequesetrataenlasiguientefigura4.17.

Figura 4.17

EsimportantetambiénseñalarqueestaclaseimplementalainterfazIEnumerable.

Unapilatieneunconstructorcontressobrecargas:

Pila vacía

Éste es el primer elemento en salir

Page 104: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

104

Contructorpordefectoquecreaunapilavacía

Stack s = new Stack();

Podemosindicarlacantidadinicialdeelementosquetendrálapila

Stack s = new Stack(intinitialCapacity);

Podemos también pasarle una colección de elementos (List, Quee, ArrayList). Este constructor copiará to-dos estos elementos a la pila:

Stack s = new Stack(ICollection col);

4.5.9 Colas

Las Colas son una colección FIFO. Es decir, procesan información en un orden de primero-en-entrar, pri-mero-en-salir(delinglésfirst-in,first-out).Dichodeotramanera,manejaprimeroloselementosquereci-biómáslejanoseneltiempo.Pensemosunpocoenlalógicausadaparaprocesarpedidosenunaaplicaciónen C#.

LascolasFIFOsonfrecuentementeutilizadasdentrodeunsistemadecomputadorasparaalbergartareasqueaúnfaltansercompletadascuandoqueremosproveerserviciosenunabaseprimero-en-llegar,prime-ro-en-atender.

Podemos crear colas si nos apoyamos en la clase Queue. En una cola podremos introducir elementos por lacabeza(“Enqueue”,encolar)yextraerlosporelextremoopuesto,elfinaldelacola(“Dequeue”,desen-colar).EstetipodeestructurassenombranavecestambiénporlassiglasFIFO(FirstInFirstOut,loprimeroen entrar es lo primero en salir).

Unejemplobásicosimilaralanterior,quecrearaunacola,introdujeratrespalabrasyluegolasvolvieraamostrar sería:

Page 105: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

105

Ejemplo:

usingSystem;

usingSystem.Collections;

public class ejemploCola1 {

publicstaticvoidMain(){

stringpalabra;

Queue Cola = new Queue();

Cola.Enqueue(“Hola,”);

Cola.Enqueue(“soy”);

Cola.Enqueue(“yo”);

for(bytei=0;i<3;i++){

palabra=(string)miCola.Dequeue();

Console.WriteLine(palabra);

}

}

}

Que mostraría:

Hola,

soy

yo

laimplementacióndeunacolaqueincluyeC#esmásavanzadaqueeso,conmétodos:

• “Peek”,quemiraelvalorquehayenlacabezadelacola,perosinextraerlo.

• “Clear”,queborratodoelcontenidodelacola.

• “Contains”,queindicasiunciertoelementoestáenlacola.

• “GetType”,parasaberdequétiposonloselementosalmacenadosenlacola.

Page 106: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

106

• “ToString”,quedevuelveelelementoactualconvertidoaunstring.

• “ToArray”,quedevuelvetodalapilaconvertidaaunarray.

• “GetEnumerator”,quepermiteusar“enumeradores”pararecorrerlacola,unafuncionalidadqueveremosconalgúndetallemásadelante.

• Aligualqueenlapila,tambiéntenemosunapropiedad“Count”,quenosindicacuántoselemen-toscontiene.

Page 107: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

• Reconocer el concepto de clase y el modo de acceso a estas en la programación con C#.

• Realizar interfaces graficas usando los diferentes controles que proporciona C# .

• Conocer y manejar excepciones en C#.

• Nombrar los requerimientos para el manejo de archivos en C#.

Page 108: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

108

5 Programaciónorientadaaobjetos

En esencia, la programación orientada a objetos no es más que un modelo de programación donde un programaesdivididoenmódulosdesoftwareindependientesunosdeotrosperoconcapacidaddeinte-ractuarentresíparacumplirconunobjetivo.

Dichos módulos están conformados básicamente por datos y funciones que se encargan de manipularlos internamenteparamostraralexteriorúnicamentelosresultadosquenecesitaelprogramaquelosvaautilizar.

5.1 ClasesyObjetos

5.1.9.1 Clases

La clase es el elemento fundamental de la programación orientada a objetos con el lenguaje C#. Aunque, dentrodeestemodelodeprogramación,existenmuchasdefinicionesválidasparaelconceptodeclase,enlaprácticaunaclasenoesmásqueunaplantilladesoftwarequesirveparaconstruircualquiercantidadde objetos.

Porejemplo,en.NETexisteunaclasellamadaFormquesirvecomomoldeparaconstruircualquierven-tanaquenecesiteunaaplicacióntipoWindows.Lasventanasquenosotrosobservamosenlapantalladenuestrocomputador,sonlosobjetosgeneradosconesaplantilla.

Puedenhabermuchosobjetosgeneradosconesaplantilla,peroloquelospuedehacerdiferentesaunosdeotros,sonlosvaloresqueseasignanasusatributoscomo:alto,ancho,color,título,etc.

Desdelaperspectivadellenguajedeprogramación,unaclaseesuntipo,quealigualquelostiposestán-dar,sirveparadeclararvariablescuyaestructuraesunafielcopiadeella.

Estasvariablesrecibenelnombredeobjetosysonloselementosquemanipulaelprogramadorparade-sarrollar su programa.

5.1.9.2 Objetos

Cuandosediseñayprogramaunaaplicacióndesoftwareconelmodelode programaciónorientadaaobjetos,loquesehaceenlaprácticaesconstruirunconjuntodeplantillasdeobjetos,oloqueseconocecomoclases,lascualespermitendefinirvariablesenmemoriaqueseconocenconelnombredeobjetoso instancias de clase.

Desdeestaperspectiva,eltérminoclaseganamayorsignificado,yaquesepuededefinircomounaplanti-lla que permite generar una clase de objetos.

Para crear un objeto de una determinada clase, se procede básicamente en dos pasos:

• primerosedeclaraunavariableconeltipoquerepresentalaclasey

• luego se le asigna memoria con el operador new

Page 109: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

109

5.1.1 Definicióndeclases

EnC#unaclasesedefinemediantelapalabraclaveclass y una sintaxis básica que encontramos para definirla,eslasiguiente:

class NombreClase

{

//Miembros

}

Porejemplo,supongamosquedeseamosuncomponentedesoftwareparaprocesosmatemáticosquenospermitan manipular números complejos.

LaclasequenospermitiráprocesarestosnúmeroslallamaremosComplejo,ysepuededefinircomo,

class Complejo

{

//MiembrosdelaclaseComplejo

}

5.1.1.1 Definición de objeto

Por ejemplo, tomando la clase Complejodefinidaanteriormente,lasiguientelíneacreaunobjetoapar-tirdeestaplantilla:

Complejoz;

Cuando el programa ejecuta esta línea, sólo posee una dirección de memoria donde se inicia la estructura delavariablez.

Paraasignarlelamemoriatotalconformealtamañodelaestructuraquedescribelaclase,esnecesarioaplicar el operador new, así:

z = new Complejo();

Apartirdeaquí,elsistemaconoceconexactitudlaubicaciónytamañoocupadoenmemoriaporlava-riablezyestaráencondicionesdecolocarenelsitioquecorrespondacadaunodelosdatosydemásele-mentos que conforman el objeto.

Page 110: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

110

En C#, tanto la declaración como la asignación de memoria para un objeto puede hacerse en una sola línea de código, como se muestra enseguida para nuestro ejemplo:

Complejo z = new Complejo();

5.1.2 Accesibilidad

Sinembargo,lasclasesdebencumplirunosnivelesdeseguridadqueexigenelmanejodelcontroldeacce-sibilidadaellas,sobretodoporpartedeagentesexternosalproyectodesoftwaredondesehayandefini-do.Esporestoqueladefinicióndecualquierclasedebeirantecedidadeunapalabraclavequedeterminala accesibilidad que admite dicha clase.

LasintaxisC#paradefinirunaclaseeslasiguiente:

[public | private | protected | internal]

class NombreClase

{

//Miembros

}

Lasecciónentrecorchetes,queindicalaspalabrasclavedeaccesibilidad,public,private,protected,inter-nal,quepuedenutilizarseenladefinicióndeunaclase,esopcionaleindicacualeselniveldeaccesoquesevaapermitirsobrelaclase.

Sinoseespecificaningúnniveldeaccesibilidad,elcompiladorladefinepordefectocomointernal,locualsignificaquesolosepermiteelaccesoalasclasesquehacenpartedelmismoensamblado.

Mediantelaspalabrasdeaccesibilidadsepuedenespecificar los siguientescinconivelesdeprotecciónpara una clase:

Acceso Seguridadpublic No existe ninguna restricción de accesoprotected Sólo pueden tener acceso la clase contenedora o

lostiposderivadosdeéstaclaseinternal Únicamentesepermiteelaccesoalensamblado

actualinternal protected El acceso está limitado al ensamblado actual o a

lostiposderivadosdelaclasecontenedoraprivate Sólosepermiteelaccesoaltipocontenedor

Paranombrarunaclasesesugiereutilizarunacadenadecaracteresqueiniciaconunaletramayúscula

Page 111: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

111

ycuyosignificadoesfamiliarparaelprogramador.Aquíesmuy importantetenerencuentacuales lafuncionalidadbásicadelaclase,paradarleunnombrequeresultesignificativoyfácilderecordarposte-riormente. Podemos tener clases como: Complejo, Estudiante, DocumentoImpresion, RedNeuronal, Co-nexionBaseDatos.

5.2 Interfaces de Usuario

La interfaz de usuario es el medio con que el usuario puede comunicarse con una máquina, un equipo o una computadora, y comprende todos los puntos de contacto entre el usuario y el equipo. Normalmente suelen ser fáciles de entender y fáciles de accionar.

Lainterfazvirtualointerfazgráfica(GUI)quepermite,medianteiconos(cursor+objetosgráficosmetafóri-cos),interactuarconloselementosgráficosconvirtiendoalserhumanoenusuariodelaaplicación.

Una interfaz debe cumplir las condiciones:

• Naturalidad.Elnuevosistemaautomatizadodebetenderaserlomássimilaralantiguo.

• Facilidaddeaprendizajeyuso,dosaspectosquenosiemprevanunidos.

• Consistencia.Lainterfazdebemanteneruniformidadencuantoaestilo,vocabulario,etc.

5.2.1 Barra de herramientas y controles de usuario para formularios Windows

5.2.1.1 El formulario

Elelementoprincipalymásrepresentativodeunaaplicaciónconinterfazgráficaesaquelqueseconocecon el nombre de ventana.DesdelavisióndelprogramadordeC#,elobjetoquedaorigenaesteelemen-to es el formulario.

La clase Form,quepertenecealNamespaceSystem.Windows.Forms,esquienseencargadedefinirtodoslosformulariosqueseannecesariosparalacreacióndelasventanasquepuedenecesitarunaaplicaciónconinterfazgráficadeusuario.

Generalmente,yenelcontextodelentornodedesarrollode.NET,aestetipodeaplicacionesseledeno-mina programas Windows Forms.

Formesunaclasequeencapsulatodaslaspropiedades,métodosyeventosquesenecesitanparadarfuncionalidadaunaventana.Aunqueelprogramadortambiénpuedeheredardeellaparacrearclasesquedefinanformulariosdeventanastotalmentepersonalizadasasusintereses.

Page 112: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

112

Enelsiguienteejemplovamosamostrarunaventanatotalmenteautónoma,cuyo comportamientoesidénticoaldecualquierotraventanadeotrosprogramasdeWindows.

Ladiferenciaconelanteriorejemplo,radicaenlainclusióndeunciclodemensajesatravésdelaclaseApplication.

usingSystem.Windows.Forms;

publicclassProgramaGrafico

{

staticvoidMain()

{

Formventana=newForm();

ventana.Text=“¡Holaventana...!”;

ventana.Visible=true;

Application.Run(ventana);

}

}

5.2.2 Controles de usuario y sus eventos asociados

EnWindowsselellamacontrolacualquierelementográficocolocadosobreunaventanayquepermiterealizar alguna tarea de interés para la aplicación.

Ejemplos de controles son las barras de desplazamiento, los menús, botones de comando, botones de opción,casillasdeverificación,camposdeentradadetextoycuadrosdelista,entreotros.

Para.NETcualquiercontrolesunobjetoquepuedecrearseapartirdeunaclase,ysumanejoesigualalde cualquier otro objeto.

Conlaventajaqueyaexisteunaampliagamadeclasesquehansidoprogramadas,yhacenpartede.NETFramework,paratalfin.

Sehacemencióndetresclasesquepermitencrearloscontrolesmásbásicosdeunaaplicación:Button,paracrearbotonesdecomando;TextBox,paracrearcamposdeentradadetexto,yLabelparacrearlasllamadasetiquetas,quepermitenmostrarcadenasdetextosobrelaventana.

Page 113: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

113

Las tres clases mencionadas exponen un conjunto de propiedades que son comunes a todos sus objetos. Entre ellas están las siguientes:

Propiedad DescripciónText Permite escribir o leer una cadena de texto hacia o

desde el controlLeft Establece o recupera la coordenada horizontal de

laesquinasuperiorizquierdadelcontrol(verFigu-ra 5.1)

Top Estableceorecuperalacoordenadaverticaldelaesquinasuperiorizquierdadelcontrol(verFigura5.1)

Width Establece o recupera el ancho de un controlHeight Establece o recupera el ancho de un control

Laspropiedadesdeposiciónydimensióndeuncontrolaceptanvaloresenterosquepordefectorepresen-tancantidadesdepíxeles.

Figura 5.1

Estaspropiedadesigualexistenparaunformulario,dondeLeftyTopestablecenodevuelvenlascoorde-nadas de la esquina superior izquierda con respecto a la pantalla.

ElformularioexponelapropiedadControls,queesunobjetodeltipoCollectionControls,elcualexponeelmétodoAddquepermiteagregaruncontrolalaventana.Susintaxiseslasiguiente:

Formulario.Controls.Add(Identificador);

ElparámetrodelmétodoAdd,eselidentificadordelavariablequerepresentaalobjetocontrol.

Page 114: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

114

AcontinuaciónsemuestraunprogramaformadoporunaventanaquecontieneunbotónetiquetadoconAceptar.ElprogramahaceunaimplementacióndeleventoClickdelbotón.

usingSystem;

usingSystem.Windows.Forms;

publicclassProgramaGrafico

{

staticvoidMain()

{

FormformVentana=newForm();

ButtonbuttonAceptar=newButton();

// Botón Aceptar

buttonAceptar.Click+=newEventHandler(ButtonAceptarClick);

buttonAceptar.Text=“Aceptar”;

buttonAceptar.Left=100;

buttonAceptar.Top=150;

//Configurarlaventana

formVentana.Text=“Ventana”;

formVentana.Visible=true;

//Agregaruncontrolalaventana

formVentana.Controls.Add(buttonAceptar);

// Entrar al bucle de mensajes

Application.Run(formVentana);

}

//MétodoquecontrolaeleventoClickdelbotónAceptar

staticvoidButtonAceptarClick(objectsender,EventArgse)

Page 115: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

115

{

MessageBox.Show(“¡Holabotón...!”,“Click”);

}

}

ElprogramadeesteejemplomuestracuatrobotonesdecomandoquegeneraneleventoClickyesteescontroladoporunúnicoevento.Estaesunabuenaformadeprogramarunconjuntodecontrolesquerealizan tareas muy similares.

SehaimplementadoelcontroladordeleventoClickdeloscuatrobotonesmedianteelmétodo

staticvoidButtonOperar(objectemisor,EventArgse)

{

ButtonbuttonEmisor=(Button)emisor;

MessageBox.Show(buttonEmisor.Text);

}

Lasclasesquedefinenobjetosvisualesimplementanunagrancantidaddeeventosyeltrabajodelprogra-mador de .NET es desarrollar los métodos que los controlen.

Elsiguienteprogramamuestradoseventosquehansidocontroladosparamostrarunmensajeenpanta-lla.EleventoLoadquesegeneracadaqueseestáiniciandoelprocesodecargadeunaventanayeleventoClickquesegeneraalhacerclicconelbotónprincipaldelratónsobrelaventana.

usingSystem;

usingSystem.Windows.Forms;

publicclassVentanaEventos

Page 116: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

116

{

staticvoidMain()

{

FormformVentana=newForm();

formVentana.Load+=newEventHandler(FormVentanaLoad);

formVentana.Click+=newEventHandler(FormVentanaClick);

formVentana.Text=“Ventana”;

Application.Run(formVentana);

}

staticvoidFormVentanaLoad(objectemisor,EventArgse)

{

MessageBox.Show(“Cargando...”,“Load”);

}

staticvoidFormVentanaClick(objectemisor,EventArgse)

{

MessageBox.Show(“Clic...”,“Click”);

}

}

5.3 Excepciones

EnC#,eltérmino“excepción”seutilizaparatransmitirlaideadequealgohasalidomal;entérminoscomu-nes,significaquehaocurridounerrorosehapresentadouna“circunstanciaexcepcional”.

EnellenguajeC#,loserroresdelprogramasedifundenentiempodeejecuciónatravésdelprogramame-diante un mecanismo denominado excepciones. Las excepciones se producen cuando el código encuentra un error y se detectan mediante el código que puede corregir el error.

LasexcepcionessepuedenproducirmedianteelCommonLanguageRuntime(CLR)de.NETFrameworkomediantecódigodeunprograma.Unavezqueseproduceunaexcepción,éstasedifundealapiladella-madas hasta que se encuentra una instrucción catch para la excepción. Las excepciones no detectadas se identificanatravésdeuncontroladordeexcepcionesgenéricoproporcionadoporelsistema.

Page 117: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

117

5.3.1 Excepciones del sistema

5.3.1.1 La clase System.Exception.

LaclaseSystem.Exceptioneseltipobasedetodaslasexcepciones.Entresuspropiedadesmásimportantesestán:

- Message:esunapropiedaddesólolecturaquecontieneunadescripcióndelacausadelaexcepción(enforma de cadena legible por el ser humano).

- InnerException:esunapropiedaddesólolecturaquecontienelaexcepcióninternadelaexcepción.Sisuvaloresdistintodenull,indicaquelaexcepciónactualhasidolanzadaenrespuestaaotraexcepción(que es a la que se llama la excepción interna).

ElvalordeestaspropiedadespuedeserespecificadoenelconstructordelaclaseSystem.Exception.

5.3.1.2 Activación de Excepciones.

Lasexcepcionespuedenseractivadasdedosmodos:

• Mediantelasentenciathrow:Activalaexcepcióndemodoinmediatoeincondicional.Enningúncasovuelveelcontrolalasentenciasiguientealthrow.

• Durante la ejecución de sentencias y expresiones C# se pueden dar situaciones en las que la ope-raciónnopuedacompletarsedemodonormalyseactiveunaexcepción.Porejemplo,unadivisiónenteraporcerolanzalaexcepciónSystem.DivideByZeroException.

5.3.1.3

ManejodeExcepciones.

Las excepciones se manejan mediante una sentencia try-catch-finally.

Por ejemplo:

try

{

strings=null;

x.MiFun(s);

}

catch(ArgumentNullExceptione)

Page 118: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

118

{

Console.WriteLine(“{0}Primeraexcepcióncapturada”,e);

}

catch(Exceptione)

{

Console.WriteLine(“{0}Segundaexcepcióncapturada”,e);

}

Cuandoselanzaunaexcepcióndesdeelcódigoqueestáentrelasllavesdelacláusulatry,elsistemabuscalaprimeracláusulacatchquepuedamanejareltipodeexcepciónquesehalanzado(eltipodeexcepciónhadecoincidirconeldelparámetroqueesperalacláusulacatchobienserdeuntipoderivadoalqueespera la cláusula catch).

Si no se encuentra la cláusula catch adecuada se sigue buscando la excepción en el punto del código desde elquesehallamadoalmétodoquecontienelacláusulatrydondesehalanzadolaexcepción.Estaopera-ción se repite hasta encontrar una cláusula catchque“capture”laexcepción.

Es importante tener en cuenta que si se desea que una cláusula catch capture cualquier excepción ha de definirsesinparámetros.Unavezsehaencontradolacláusulacatchquemanejalaexcepción,setransfie-re el control a la primera sentencia de tal cláusula. Antes de ejecutar la primera sentencia de la cláusula catch,seejecutantodaslascláusulasfinallydelassentenciastryanidadasalaquecapturalaexcepción.

Si no se encuentra una cláusula catch puede ocurrir una de las dos opciones siguientes:

Si la búsqueda llega a un constructor staticoauninicializadordecamposstatic,selanzaunaexcepciónSystem.TypeInicializationExceptionenelpuntoenelqueseinvocóalconstructor.ElcampoInnerExceptiondelaexcepciónTypeInicializationExceptioncontienelaexcepciónoriginalmentelanzada.

Si la búsqueda llega al código que inicialmente comenzó el thread o el proceso, la ejecución del thread o elprocesofinalizan.

Page 119: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

119

Ejemplo:

usingSystem;

classMiClase

{

publicstaticvoidMain()

{

MiClasex=newMiClase();

try

{

strings=null;

x.MiFun(s);

}

//Capturadelaexcepción(másespecífica):

catch(ArgumentNullExceptione)

{

Console.WriteLine(“{0}Primeraexcepcióncapturada“,e);

}

//Capturadelaexcepción(menosespecífica):

catch(Exceptione)

{

Console.WriteLine(“{0}Segundaexcepcióncapturada“,e);

}

}

publicvoidMiFun(strings)

{

if (s == null)

thrownewArgumentNullException();

} }

Page 120: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

120

5.3.2 Excepciones personalizadas

.NETFrameworkproporcionaunajerarquíadeclasesdeexcepciónque,enúltimainstancia,derivandelaclasebaseException.Cadaunadeestasclasesdefineunaexcepciónespecífica,porloqueenmuchoscasos sólo hay que detectar la excepción. También se pueden crear clases de excepción personalizadas derivándolasdelaclaseException.

Cuandosecreenexcepcionespersonalizadas,esrecomendablefinalizarelnombrede laclasede laex-cepcióndefinidaporelusuarioconlapalabra“Excepción”.Tambiénserecomiendaimplementarlostresconstructores comunes recomendados, como se muestra en el ejemplo siguiente.

Enelejemplosiguiente,sederivaunanuevaclasedeexcepción,EmployeeListNotFoundException,deException.Sedefinentresconstructoresenlaclase,cadaunoconparámetrosdiferentes.

usingSystem;

publicclassEmployeeListNotFoundException:Exception

{

publicEmployeeListNotFoundException()

{

}

publicEmployeeListNotFoundException(stringmessage)

: base(message)

{

}

publicEmployeeListNotFoundException(stringmessage,Exceptioninner)

: base(message, inner)

{

}

}

Page 121: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

121

5.4 Archivos

Losflujosnospermitenaccederaunarchivocomounasecuenciadeelementos.Eltérmino“flujo”seuti-lizaenelsentidodeunasucesióndedatosquesaleoentradelprograma.

Acontinuaciónexplicaremoselvocabularioasociadoalusodearchivos,queessimilarencasitodosloslenguajesdeprogramación.Sideseamosprocesarlosdatosqueseencuentranenunarchivoexistente,debemos:

1. Abrirelarchivo.

2. Leer(recibircomoentrada)losdatos,elementoporelemento,ycolocarlosenvariables.

3. Cerrarelarchivocuandoterminemosdetrabajarconél.

Paratransferirdatosdevariablesaunarchivo,debemos:

1. Abrirelarchivo.

2. Enviarcomosalida(escribir)nuestroselementosenlasecuenciarequerida.

3. Cerrarelarchivocuandoterminemosdetrabajarconél.

Alleerdatosdeunarchivo,loúnicoquepodemoshacerestrabajarelementoporelemento.Si,porejem-plo,sólonecesitamosexaminarelúltimoelementodeunarchivo,tendremosquecodificaruncicloparaleerunelementoalavezhastallegaralrequerido.

Paralarealizacióndemuchastareasesconvenientevisualizarlosarchivosdetextocomounaseriedelí-neas,cadaunacompuestadevarioscaracteres.Cadalíneasedaporterminadamedianteunmarcadordefindelíneaquepuedeserenelcarácterdenuevalínea,elcarácterderetorno,oambos.

AuncuandoelusuarioseconcretaaoprimirlateclaEnterparafinalizarunalínea,elsoftwaredeWindowscolocaráloscaracteresdenuevalíneayretornoparaindicarelfindelínea.C#seencargadeocultarlamayor parte de este complicado proceso.

Ademásdepodermanipularlosarchivosquecontienenlíneasdetexto,C#tambiénpuedemanejaraque-llosqueconstandedatosbinarios,comoimágenes.Sinembargo,porlogeneralestetipodedatosseorga-nizaenunformatomáscomplicadodentrodelosarchivos.

Page 122: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

122

5.4.1 Streams

5.4.1.1 Las clases StreamReader y StreamWriter

Paraleeryescribirlíneasdetextoutilizaremos:

• El método ReadLine de StreamReader:lee toda una línea de texto y la coloca en una cadena, exclu-yendoelmarcadordefindelínea

• La clase StreamWriter. Consta de dos métodos principales: Write y WriteLine. Ambos escriben una cadenaenunarchivo,peroWriteLineagregaelmarcadordefindelíneadespuésdelacadena.TambiénpodemosusarWriteLinesinargumentosparaescribirsólounmarcadordefindelíneaenelarchivo.ComoalternativaaWriteLinepodemosutilizarWriteenviándoleloscaracteres\r\nentre comillas como argumento. Los métodos OpenText y CreateText de la clase File. Éstos son métodosestáticosquenosproporcionanunanuevainstanciadeunflujodetexto.

LasclasesdearchivoformanpartedelnamespaceSystem.IO.Comoestaclasenoseimportademaneraautomática,parahacerlodebemosusarlasiguientelínea:

usingSystem.IO;

enlapartesuperiordetodosnuestrosprogramasenlosqueseprocesenarchivos.

5.4.1.2 Operaciones de salida con archivos

ElprogramaArchivodesalidaabreunarchivoyescribetreslíneasenél.Lainterfazdeusuariosóloconsisteen un botón, por lo cual no la mostraremos aquí. El código es el siguiente:

privatevoidbutton1_Click(objectsender,EventArgse)

{

//escribevariaslíneasdetextoenelarchivo

StreamWriterflujoSalida=File.CreateText(@”c:\miarchivo.txt”);

flujoSalida.WriteLine(“Estearchivo”);

flujoSalida.WriteLine(“contienetres”);

flujoSalida.WriteLine(“líneasdetexto.”);

flujoSalida.Close();

}

Page 123: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

< > Programación

123

Ahoraexaminemosnuestrocódigo.Primerocreamosyabrimoselarchivo:

StreamWriterflujoSalida=File.CreateText(@”c:\miarchivo.txt”);

EnestecasoutilizamoselmétodoestáticoCreateTextde la claseFile,ésta líneacreaunnuevoobjetoStreamWriteryabreelarchivo.Cabemencionarqueenestapartedelcódigohaydoselementosquehacenreferenciaalarchivo:

• Unacadenaespecificandoelnombredelarchivoqueutilizaelsistemaoperativocuandomuestralascarpetas:@”c:\miarchivo.txt”.Tenencuentalanecesidaddeutilizarelcarácter@,cuyafun-cióneshacerqueelcarácter\tengasuinterpretaciónnormalenvezdelusoqueseledaconloscaracteres de escape.

• UnavariablequeelegimosnombrarflujoSalida.EsunainstanciadelaclaseStreamWriterquenosproporcionaelmétodoWriteLine.AlutilizarCreateTextasociamosflujoSalidaconelarchivo“c:\miarchivo.txt”.

ParaescribirunalíneadetextoenelarchivoutilizamosWriteLine,comoenelsiguienteejemplo:

flujoSalida.WriteLine(“Estearchivo”);

Sielusuarioescribelosdatosquedeseamoscolocarenelarchivo(digamos,medianteuncuadrodetexto),podríamosutilizar:

flujoSalida.WriteLine(textBox1.Text)

Sielarchivoyaexistesucontenidooriginalseráeliminadoysustituidoporlastreslíneas.Porúltimo,ce-rramoselarchivo:

flujoSalida.Close();

Estoaseguraquelosdatosentránsitoseescribanenelarchivo,ytambiénnospermitevolveraabrirloparalectura o escritura.

ElprocesodeescrituratambiénhubierapodidollevarseacabomedianteelusodeWriteconloscaracteresdefindelínea,comoenelsiguienteejemplo:

flujoSalida.Write(“Doslíneas\r\ndetexto.\r\n”);

Algunasvecesestoesconvenientecuandomanipulamosunacadenaquecontienevariaslíneas.

Enresumen,elprocesoparaescribirdatosenunarchivoconsistióen:

• abrirelarchivo“c:\miarchivo.txt”

• enviar(escribir)algunascadenasalarchivo

• cerrarelarchivo

Page 124: ogramación - CETis No. 7cetis7.edu.mx/Microsoft/PROGRAMACION/GUIAS/PROGRAMACION.pdfogramación 10 En el ejemplo: color (pasto, X) la variable X puede ser el color verde, haciendo

www.grupoeduit.com

01 800 808 62 40