Manual de Programación I
Manual de Programación I
Contenido
TEMA1: INTRODUCCIÓN A LA PROGRAMACIÓN 3
1.2. Características 3
1.3. Estructura 3
1.4.2. Análisis: 5
1.4.3. Diseño: 5
1.4.4. Verificación: 5
2.1. Identificadores: 6
2.2.1. Numéricos: 7
2.2.2. Alfanuméricos: 7
2.2.3. Lógicos: 7
2.3. Variables: 7
2.4. Constantes: 7
2.5.1. Aritméticos: 8
2.5.2. Relacionales: 9
2.5.3. Lógicos: 9
3.2. Pseudocódigo 13
Conclusiones 15
2
PROGRAMACIÓN I
2.9.3.1. Problemas propuestos 52
3.6. Console 62
3.7. WriteLine 62
3.8. ReadLine 63
3.9. ReadKey 63
3.11. Ejemplos 64
Practico 1 70
Practico 2 71
Práctico 3 73
3
PROGRAMACIÓN I
1. INTRODUCCIÓN A LA PROGRAMACIÓN
1.2. Características
Los algoritmos se caracterizan principalmente porque son:
1.3. Estructura
Los algoritmos son pilares en la informática, así como del desarrollo de sistemas,
por lo cual la siguiente estructura no es solo de los algoritmos, es como tal la
estructura del tratamiento automático de la información también conocido como
procesamiento de datos.
4
PROGRAMACIÓN I
● 1. Entrada: En los procesos informáticos, la entrada representa todos los
datos que necesita el algoritmo para ser procesados, es la alimentación
necesaria para que se puedan procesar los datos, pueden ser datos que
introduzca el usuario del algoritmo o bien que se obtengan de alguna otra
fuente.
5
PROGRAMACIÓN I
Tabla 1 Definición del Problema
Nombre del
Problema
Delimitación
Resultado
deseado
1.4.2. Análisis:
Una vez identificado y delimitado el problema, esta fase tiene el objetivo de dividir
el problema en sus componentes y examinar de qué manera pueden unirse, en
esta fase se deben contestar las siguientes preguntas:
Una vez resueltas estas preguntas, es muy útil escribirlas en papel o en un medio
electrónico con la finalidad de consultarlas cuando en las siguientes fases de la
metodología, se sugiere la siguiente tabla:
6
PROGRAMACIÓN I
solución como lo son diagramas de flujo y pseudocódigo se indican los pasos que
deberá seguir el algoritmo para obtener la solución del problema.
1.4.4. Verificación:
Definido como la acción de comprobar o examinar la verdad de algo, aplicado al
tema actual, es la fase que nos permite saber si el algoritmo cumplió o no su
objetivo, para realizar la comprobación se le dan variables de entrada al algoritmo
y se observan los resultados que arroja, por otra parte y haciendo uso de papel y
lápiz se realiza una prueba de escritorio que consiste en realizar las operaciones
que el algoritmo debe realizar y se comprueban los resultados obtenidos del
algoritmo contra los resultados obtenidos en la prueba de escritorio, en caso de
que ambos coincidan, se concluye que el algoritmo funciona para resolver el
problema planteado, en caso contrario se debe volver a la fase de definición del
problema para buscar el error. Para esta fase se sugiere el siguiente formato:
Tabla 3 Verificación
1.5.1. Identificadores:
Al igual que en algebra, los algoritmos funcionan mediante valores que
pueden ser introducidos por los usuarios o valores que pueden contener los
procesos, esos valores deben ser nombrados de alguna manera con la
7
PROGRAMACIÓN I
finalidad de poder identificados y usarlos, en pocas palabras es el nombre
que se la da a las variables y constantes que se usan en el algoritmo.
Dicho mexicano dice,” Hasta en los perros hay razas” de igual manera en la
informática hasta en los valores (variables y constantes) hay tipos, a
diferencia de la rama canina, la raza en este caso son tipos y los tipos de
datos más comunes son:
1.5.3. Numéricos:
Son aquellos valores que solo pueden contener números, ya sean enteros,
fraccionarios, positivos, negativos, reales o imaginarios con la finalidad de
realizar operaciones aritméticas comunes.
1.5.4. Alfanuméricos:
1.5.5. Lógicos:
Son aquellos que solo pueden tener un valor, verdadero o falso, ya que
representan el resultado de una comparación de valores
1.5.6. Variables:
Son valores que van cambiando durante la ejecución de los procesos del
algoritmo, en estas variables se van a guardar las operaciones que el algoritmo
realice para resolver el problema. Cada variable tiene un identificador, pues es el
nombre con el que se encuentra y un tipo de dato, que indica que datos podrá
guardar que pueden ser números, letras o valores cierto o falso.
8
PROGRAMACIÓN I
1.5.7. Constantes:
Son datos que su valor no va a cambiar durante todo el desarrollo del algoritmo,
las constantes pueden tener o no un identificador, pues estos valores pueden
escribirse directamente al usar las operaciones o bien asignarle un identificador,
las constantes también tienen un tipo de dato.
9
PROGRAMACIÓN I
1.6.2. Relacionales:
Estos operadores permiten evaluar la relación entre un par de operando
(constantes o variables) y permiten devolver valores de cierto o falso.
Operador Acción
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
== Igual / idéntico
!= Diferente / distinto
Ilustración 2 Tabla de Operadores relacionales
1.6.3. Lógicos:
Son operadores que permiten conectar un par de propiedades, es decir,
nos permiten obtener una respuesta lógica de la comparación de dos
operaciones.
Operador Acción
&& Conjunción, and, Y
|| Disyunción, or, O
! Negación, no
Ilustración 3 Tabla de Operadores Lógicos
10
PROGRAMACIÓN I
Ilustración 4 Tabla de verdad de AND
Operador Resultado
T F
F T
Ilustración 6 Tabla de verdad de NOT
▪ Operadores Matemáticos
▪ Paréntesis
▪ Potencias y Raíces
11
PROGRAMACIÓN I
▪ Multiplicaciones y Divisiones
▪ Sumas y restas
▪ Operadores Relacionales
▪ <,>,<=,>=,==,!=
▪ Operadores Lógicos
▪ Not
▪ AND , OR
12
PROGRAMACIÓN I
● Los diagramas de flujo se dibujan generalmente usando algunos símbolos
estándares. Algunos símbolos estándares, que se requieren con frecuencia
para diagramar programas de computadora se muestras a continuación
13
PROGRAMACIÓN I
que solo se van a utilizar conectores cuando sea
estrictamente necesario.
1.7.2. Pseudocódigo
14
PROGRAMACIÓN I
o Al poner en marcha los pasos del algoritmo para determinar si
logrará o no el objetivo, tal vez se tengan que hacer algunas
modificaciones hasta logar el objetivo esperado. El algoritmo debe
ser lo suficientemente detallado para que no exista duda alguna al
ejecutarse. (Chehaibar, 2007).
Los algoritmos tienen como fin actuar sobre los datos proporcionados por el
usuario, a los que se les aplican procesos con el fin de generar la información o un
resultado (Delgado).
Nombre del
Sueldo de un trabajador
Problema
Obtener el sueldo semanal o mensual a partir del pago por
Delimitación
horas y el número de horas trabajadas
Resultado
Sueldo semanal del trabajador
deseado
15
PROGRAMACIÓN I
Datos de entrada Proceso Salida
(¿Qué necesito para (¿Qué pasos son necesarios para (¿Qué se obtiene al
resolver el problema) resolver el problema?) resolver el problema)
CantDias Constantes
pago_hora=50
horas_dia=8
Const pago_hora=50
Const horas_dia=8
Operación o proceso, se lo
asignamos a la variable sueldo
Sueldo=pago_horas*pago_dia*CantDias
Mostramos sueldo
Sueldo
Fin del algoritmo
Fin
Fase 4 Verificación
16
PROGRAMACIÓN I
resolver la problemática. Las definiciones y metodología aquí mostrada, así como
conceptos permiten entender todos los elementos de un algoritmo y que de esta
forma se puedan diseñar los propios para resolver prácticamente cualquier
problemática bien planteada.
17
PROGRAMACIÓN I
PRACTICOS PROPUESTOS
Practico 1
1. ¿Qué es un algoritmo?
V o F
3. Un algoritmo es:
18
PROGRAMACIÓN I
Practico 2
a. Verdadero
b. Falso
a. Verdadero
b. Falso
a. Verdadero
b. Falso
a. Verdadero
b. Falso
5. Una variable es
19
PROGRAMACIÓN I
6. Los operadores relacionales se utilizan siempre en:
a. Operaciones de comparación
b. Operaciones de suma y resta
c. Operaciones de multiplicación y división
a. Verdadero
b. Falso
a. Verdadero
b. Falso
20
PROGRAMACIÓN I
12. Describa los diferentes tipos de Datos y de ejemplo para cada tipo de
dato
13. Los operadores de relación son: >, >=, <, <=, ==, ¡=
a. Faso
b. Verdadero
14. Los Operadores lógicos son
a. + - * /
b. > >= < <= == !=
c. && || !
d. Ninguna
15. La siguiente expresión lógica que resultado devuelve
a. Falso
b. Verdadero
21
PROGRAMACIÓN I
Práctico 3
Encerrar el inciso correcto con una forma circulo o indicar con una flecha el
inciso correcto
2. ESTRUCTURAS ALGORÍTMICAS
1.1. Estructura Secuencial
23
PROGRAMACIÓN I
Diagrama de flujo:
Tenemos dos entradas num1 y num2 (recordar cuáles son los nombres de
variables correctas), dos operaciones: realización de la suma y del producto de los
valores ingresados y dos salidas, que son los resultados de la suma y el producto
de los valores ingresados. En el símbolo de impresión podemos indicar una o más
salidas, eso queda a criterio del programador, lo mismo para indicar las entradas
por teclado.
24
PROGRAMACIÓN I
5. Un vendedor recibe un sueldo base más un 10% extra por comisión de sus
ventas, el vendedor desea saber cuánto dinero obtendrá por concepto de
comisiones por las tres ventas que realiza en el mes y el total que recibirá
en el mes tomando en cuenta su sueldo base y comisiones.
6. Un alumno desea saber cuál será su calificación final en la materia de
Algoritmos. Dicha calificación se compone de los siguientes porcentajes:
25
PROGRAMACIÓN I
● Para ir al trabajo, ¿elijo el camino A o el camino B?
Operadores Relacionales:
> (mayor)
< (menor)
>= (mayor o igual)
<= (menor o igual)
== (igual)
!= (distinto)
Por el camino del verdadero pueden existir varias operaciones, entradas y salidas,
inclusive ya veremos que puede haber otras estructuras condicionales.
Problema:
Ingresar el sueldo de una persona, si supera los 3000 pesos mostrar un mensaje
en pantalla indicando que debe abonar impuestos.
26
PROGRAMACIÓN I
Diagrama de flujo:
27
PROGRAMACIÓN I
Representación gráfica:
Problema:
Realizar un programa que solicite ingresar dos números distintos y muestre por
pantalla el mayor de ellos.
Diagrama de flujo:
28
PROGRAMACIÓN I
Se hace la entrada de num1 y num2 por teclado. Para saber cuál variable tiene un
valor mayor preguntamos si el contenido de num1 es mayor (>) que el contenido
de num2, si la respuesta es verdadera vamos por la rama de la derecha e
imprimimos num1, en caso que la condición sea falsa vamos por la rama de la
izquierda (Falsa) e imprimimos num2.
Como podemos observar nunca se imprimen num1 y num2 simultáneamente.
Estamos en presencia de una ESTRUCTURA CONDICIONAL COMPUESTA ya
que tenemos actividades por la rama del verdadero y del falso.
Problemas propuestos
A. Realizar un programa que lea por teclado dos números, si el primero es
mayor al segundo informar su suma y diferencia, en caso contrario informar
el producto y la división del primero respecto al segundo.
B. Se ingresan tres notas de un alumno, si el promedio es mayor o igual a
siete mostrar un mensaje "Promocionado".
C. Se ingresa por teclado un número positivo de uno o dos dígitos (1..99)
mostrar un mensaje indicando si el número tiene uno o dos dígitos. (Tener
en cuenta que condición debe cumplirse para tener dos dígitos, un número
entero)
29
PROGRAMACIÓN I
El diagrama de flujo que se presenta contiene dos estructuras condicionales. La
principal se trata de una estructura condicional compuesta y la segunda es una
estructura condicional simple y está contenida por la rama del falso de la primera
estructura.
Problema:
Confeccionar un programa que pida por teclado tres notas de un alumno, calcule
el promedio e imprima alguno de estos mensajes:
Diagrama de flujo:
30
PROGRAMACIÓN I
31
PROGRAMACIÓN I
En caso que la condición nos dé falso, por la rama del falso aparece otra
estructura condicional, porque todavía debemos averiguar si el promedio del
alumno es superior o igual a cuatro o inferior a cuatro.
Problemas propuestos
A. Se cargan por teclado tres números distintos. Mostrar por pantalla el mayor
de ellos.
B. Se ingresa por teclado un valor entero, mostrar una leyenda que indique si
el número es positivo, nulo o negativo.
C. Confeccionar un programa que permita cargar un número entero positivo de
hasta tres cifras y muestre un mensaje indicando si tiene 1, 2, o 3 cifras.
Mos-trar un mensaje de error si el número de cifras es mayor.
D. Un postulante a un empleo, realiza un test de capacitación, se obtuvo la
siguiente información: cantidad total de preguntas que se le realizaron y la
cantidad de preguntas que contestó correctamente. Se pide confeccionar
un programa que ingrese los dos datos por teclado e informe el nivel del
mismo según el porcentaje de respuestas correctas que ha obtenido, y
sabiendo que:
Operador &&
32
PROGRAMACIÓN I
Cuando vinculamos dos o más condiciones con el operador ?&&?, las dos
condiciones deben ser verdaderas para que el resultado de la condición
compuesta de Verdadero y continúe por la rama del verdadero de la estructura
condicional.
Problema:
Confeccionar un programa que lea por teclado tres números distintos y nos
muestre el mayor.
33
PROGRAMACIÓN I
F V
Operador ||
Cuando vinculamos dos o más condiciones con el operador ?Or", con que una de
las dos condiciones sea Verdadera alcanza para que el resultado de la condición
compuesta sea Verdadero.
Problema:
35
PROGRAMACIÓN I
F V
36
PROGRAMACIÓN I
Problemas propuestos
2. Se ingresan por teclado tres números, si todos los valores ingresados son
menores a 10, imprimir en pantalla la leyenda "Todos los números son
menores a diez".
37
PROGRAMACIÓN I
1.2.5. Condicionales múltiples
Las estructuras de comparación múltiples, son tomas de decisión especializadas
que permiten comparar una variable contra distintos posibles resultados,
ejecutando para cada caso una serie de instrucciones específicas. La forma
común es la siguiente:
38
PROGRAMACIÓN I
Pseudocódigo
INICIO
Dia: ENTERO
ESCRIBA un número para escribir su día
LEA Dia
En-caso-de Dia haga
Caso 1: ESCRIBA Lunes
Caso 2: ESCRIBA Martes
Caso 3: ESCRIBA Miércoles
Caso 4: ESCRIBA Jueves
Caso 5: ESCRIBA Viernes
Caso 6: ESCRIBA Sábado
Caso 7: ESCRIBA Domingo
SINO: ESCRIBA Escribió un numero fuera del rango 1-7
Fin-Caso
FIN
39
PROGRAMACIÓN I
1.3. Estructuras Repetitivas
Hasta ahora hemos empleado estructuras SECUENCIALES y CONDICIONALES.
Existe otro tipo de estructuras tan importantes como las anteriores que son las
estructuras REPETITIVAS.
40
PROGRAMACIÓN I
En caso que la condición sea Falsa continúa por la rama del Falso y sale de la
estructura repetitiva para continuar con la ejecución del algoritmo.
Problema 1:
41
PROGRAMACIÓN I
42
PROGRAMACIÓN I
No existe una RECETA para definir una condición de una estructura repetitiva,
sino que se logra con una práctica continúa solucionando problemas.
100
44
PROGRAMACIÓN I
101 Cuando x vale 101 la condición de la estructura repetitiva retorna falso,
La variable x debe estar inicializada con algún valor antes que se ejecute la
operación x=x + 1 en caso de no estar inicializada aparece un error de
compilación.
Problema 2:
Diagrama de flujo:
45
PROGRAMACIÓN I
Leemos un valor en n
X inicializamos en 1
Muestra el valor de x
A la prueba del diagrama la podemos realizar dándole valores a las variables; por
ejemplo, si ingresamos 5 el seguimiento es el siguiente:
n x
46
PROGRAMACIÓN I
2 " "
3 " "
4 " "
5 " "
Int c=0;
c =c + 1;
● Acumuladores: Forma que toma una variable y que sirve para llevar la suma
Int suma=0;
Suma=suma+b;
47
PROGRAMACIÓN I
Problema 3:
48
PROGRAMACIÓN I
La variable suma es un
acumulador, que va
acumulando el contenido
de la variable valor
La variable x es un
contador, que
incrementa de 1 en 1
Diagrama de flujo:
49
PROGRAMACIÓN I
También aparece el concepto de ACUMULADOR (un acumulador es un tipo
especial de variable que se incrementa o decrementa con valores variables
durante la ejecución del programa)
Hemos dado el nombre de suma a nuestro acumulador. Cada ciclo que se repita
la estructura repetitiva, la variable suma se incrementa con el contenido ingresado
en la variable valor.
0 0
5 5 1
16 21 2
7 28 3
10 38 4
2 40 5
20 60 6
5 65 7
5 70 8
10 80 9
2 82 10
8 90 11
50
PROGRAMACIÓN I
Este es un seguimiento del diagrama planteado. Los números que toma la variable
valor dependerá de qué cifras cargue el operador durante la ejecución del
programa.
Hay que tener en cuenta que cuando en la variable valor se carga el primer valor
(en este ejemplo 5) al cargarse el segundo valor (16) el valor anterior 5 se pierde,
por ello la necesidad de ir almacenando en la variable suma los valores
ingresados.
Problema 4:
Diagrama de flujo:
51
PROGRAMACIÓN I
52
PROGRAMACIÓN I
correcta (debe estar entre 1.20 y 1.30 el largo para que sea correcta), en caso de
ser correcta la CONTAMOS (incrementamos la variable cantidad en 1)
53
PROGRAMACIÓN I
4. Realizar un programa que imprima 25 términos de la serie 11 - 22 - 33 - 44,
etc. (No se ingresan valores por teclado)
6. Realizar un programa que permita cargar dos listas de 15 valores cada una.
Informar con un mensaje cuál de las dos listas tiene un valor acumulado
mayor (mensajes "Lista 1 mayor", "Lista 2 mayor", "Listas iguales")
Tener en cuenta que puede haber dos o más estructuras repetitivas en un
algoritmo.
54
PROGRAMACIÓN I
1.3.2. Estructura Repetitiva For
Representación gráfica:
En su forma más típica y básica, esta estructura requiere una variable entera que
cumple la función de un CONTADOR de vueltas. En la sección indicada como
"inicialización contador", se suele colocar el nombre de la variable que hará de
contador, asignándole a dicha variable un valor inicial. En la sección de
"condición" se coloca la condición que deberá ser verdadera para que el ciclo
continúe (en caso de un falso, el ciclo se detendrá). Y finalmente, en la sección de
"incremento contador" se coloca una instrucción que permite modificar el valor de
la variable que hace de contador (para permitir que alguna vez la condición sea
falsa)
55
PROGRAMACIÓN I
Cuando el ciclo comienza, antes de dar la primera vuelta, la variable del for toma
el valor indicado en la sección de de "inicialización contador". Inmediatamente se
verifica, en forma automática, si la condición es verdadera. En caso de serlo se
ejecuta el bloque de operaciones del ciclo, y al finalizar el mismo se ejecuta la
instrucción que se haya colocado en la tercera sección.
56
PROGRAMACIÓN I
● Se vuelve a controlar (automáticamente) si f es menor o igual a 50.
La variable f PUEDE ser modificada dentro del bloque de operaciones del for,
aunque esto podría causar problemas de lógica si el programador es inexperto.
Problema 1:
Diagrama de flujo:
57
PROGRAMACIÓN I
Podemos observar y comparar con el problema realizado con el while. Con la
estructura while el CONTADOR x sirve para contar las vueltas. Con el for el
CONTADOR f cumple dicha función.
Cuando la variable del for llega a 101 sale de la estructura repetitiva y continúa la
ejecución del algoritmo que se indica después del círculo.
La variable f (o como sea que se decida llamarla) debe estar definida como una
variable más.
Problema 2:
Diagrama de flujo:
Programa:
58
PROGRAMACIÓN I
El problema requiere que se carguen 10 valores y se sumen los mismos.
Tener en cuenta encerrar entre llaves bloque de instrucciones a repetir dentro del
for.
El promedio se calcula fuera del for luego de haber cargado los 10 valores.
Problema 3:
Escribir un programa que lea 10 notas de alumnos y nos informe cuántos tienen
notas mayores o iguales a 7 y cuántos menores.
Diagrama de flujo:
59
PROGRAMACIÓN I
60
PROGRAMACIÓN I
Problema 4:
Escribir un programa que lea 10 números enteros y luego muestre cuántos valores
ingresados fueron múltiplos de 3 y cuántos de 5. Debemos tener en cuenta que
hay números que son múltiplos de 3 y de 5 a la vez.
Diagrama de flujo:
61
PROGRAMACIÓN I
62
PROGRAMACIÓN I
ingresamos por teclado, por tres.
Veamos: si ingresamos 6 el resto de dividirlo por 3 es 0, si ingresamos 12 el resto
de dividirlo por 3 es 0. Generalizando: cuando el resto de dividir por 3 al valor que
ingresamos por teclado es cero, se trata de un múltiplo de dicho valor.
Ahora bien ¿por qué no hemos dispuesto una estructura if anidada? Porque hay
valores que son múltiplos de 3 y de 5 a la vez. Por lo tanto con if anidados no
podríamos analizar los dos casos.
Es importante darse cuenta cuando conviene emplear if anidados y cuando no
debe emplearse.
Problema 5:
Diagrama de flujo:
63
PROGRAMACIÓN I
podemos fijar el valor final del for con la variable n.
Por ejemplo si el operador carga 5 en n la estructura repetitiva for se ejecutará 5
veces.
La variable valor se ingresa dentro de la estructura repetitiva, y se verifica si el
valor de la misma es mayor o igual a 1000, en dicho caso se incrementa en uno el
contador cantidad.
Fuera de la estructura repetitiva imprimimos el contador cantidad que tiene
almacenado la cantidad de valores ingresados mayores o iguales a 1000.
Problemas propuestos
64
PROGRAMACIÓN I
65
PROGRAMACIÓN I
Esta estructura repetitiva se utiliza cuando conocemos de antemano que por lo
menos una vez se ejecutará el bloque repetitivo.
La condición de la estructura está abajo del bloque a repetir, a diferencia del while
o del for que está en la parte superior.
Representación gráfica:
Problema 1:
Diagrama de flujo:
66
PROGRAMACIÓN I
No hay que confundir los rombos de las estructuras condicionales con los de las
estructuras repetitivas do while.
Programa:
67
PROGRAMACIÓN I
Problema 2:
Diagrama de flujo:
68
PROGRAMACIÓN I
69
PROGRAMACIÓN I
El valor 0 no es parte de la serie de valores que se deben sumar.
Definimos el acumulador suma que almacena todos los valores ingresados por
teclado.
La estructura repetitiva do while se repite hasta que ingresamos el valor 0. Con
dicho valor la condición del ciclo retorna falso y continúa con el flujo del diagrama.
Disponemos por último una estructura condicional para el caso que el operador
cargue únicamente un 0 y por lo tanto no podemos calcular el promedio ya que no
existe la división por 0.
En caso que el contador cant tenga un valor distinto a 0 el promedio se obtiene
dividiendo el acumulador suma por el contador cant que tiene la cantidad de
valores ingresados antes de introducir el 0.
El contador cant DEBE inicializarse antes del ciclo, lo mismo que el acumulador
suma. El promedio se calcula siempre y cuando el contador cant sea distinto a 0.
Problema 3:
Diagrama de flujo:
70
PROGRAMACIÓN I
71
PROGRAMACIÓN I
La estructura se repite hasta que se ingresa el valor 0 en la variable peso. Este
valor no se lo considera un peso menor a 9.8 Kg., sino que indica que ha
finalizado la carga de valores por teclado.
Problemas propuestos
72
PROGRAMACIÓN I
3. TEMA3. LENGUAJE DE PROGRAMACIÓN C SHARP
2.1. Introducción al Lenguaje de Programación C#
El nombre C Sharp fue inspirado por la notación musical, donde '#' (sostenido, en
inglés sharp) indica que la nota (C es la nota do en inglés) es un semitono más
alta, sugiriendo que C# es superior a C/C++. Además, el signo '#' se compone de
cuatro signos '+' pegados.2
Historia
Tipos de datos
73
PROGRAMACIÓN I
Tipos para definir números enteros:
74
PROGRAMACIÓN I
Tipo de datos de coma flotante
Equivalente BC Tamañ Significad
Tipo Rango
L o o
Coma
32-bit
float System.Single ±1.401298E45 a ±3.402823E+38 flotante
(4-byte)
corto
Coma
64-bit
double System.Double ±4.94065645841246E324 a flotante
(8-byte)
largo
128-bit Coma
decimal System.Decimal (16- 7.9228162514264337593543950335 a flotante
byte) monetario
Para los tipos de datos lógicos no existen conversiones automáticas de tipo entero
a bool.
Equivalente BC
Tipo Tamaño Rango Significado
L
Literales
75
PROGRAMACIÓN I
C# tiene caracteres denominados secuencias de escape para facilitar la escritura
con el teclado de símbolos que carecen de representación visual.
C#, al igual que C++, define un tipo de cadena de caracteres. Dentro de la cadena
de caracteres se pueden usar secuencias de escape. Una cadena de caracteres
puede iniciarse con el símbolo @ seguido por una cadena entre comillas ("), en tal
caso, las secuencias de escape no tienen efecto, y además la cadena puede
ocupar dos o más líneas.
Enteros
decimal 245, [0..9]+
hexadecimal 0xF5, 0x[0..9, A..F, a..f]+
entero largo 12L
entero largo sin signo 654UL
Coma flotante
float 23.5F, 23.5f; 1.72E3F, 1.72E3f, 1.72e3F, 1.72e3f
double 23.5, 23.5D, 23.5d, 1.72E3, 1.72E3D
decimal 9.95M
Caracteres
char 'a', 'Z', '\u0231'
Cadenas
String "Hello, world"; "C:\\Windows\\", @"C:\Windows\"
Secuencias de escape
Alerta (timbre) \a
Retroceso \b
Avance de página \f
Nueva línea \n
Retorno de carro \r
Tabulador horizontal \t
Tabulador vertical \v
Nulo \0
Comilla simple \'
Comilla doble \"
Barra inversa \\
76
PROGRAMACIÓN I
Variables
Un identificador puede:
Un identificador no puede:
77
PROGRAMACIÓN I
También puedes declarar una variable sin especificar el tipo de dato, utilizando el
mecanismo de inferencia mediante la palabra clave var donde el compilador
determina el tipo de dato que se le asignará a la variable y sólo es permitida para
variables locales, no para parámetros o datos miembro.
Constantes
const
Cuando se declara una constante con la palabra clave const, también se debe
asignar el valor. Tras esto, la constante queda bloqueada y no se puede cambiar.
Son implícitamente estáticas (static).
78
PROGRAMACIÓN I
Operadores
Categoría Operadores
Aritméticos +-*/%
Lógicos ! && ||
Concatenación +
Incremento, decremento ++ --
Desplazamiento << >>
Relacional == != < > <= >=
Asignación = ^= <<= >>=
Acceso a miembro .
Indexación []
Conversión ()
Condicional ? : ??
Creación de objeto new
Información de tipo as is sizeof typeof
79
PROGRAMACIÓN I
Instrucciones de control
if-else
if (i == 2)
// ...
else if (i == 3)
// ...
else
// ...
switch
switch (i)
case 1:
...
break;
case 2:
case 3:
...
break;
80
PROGRAMACIÓN I
default:
...
break;
for
for (int i = 0; i < 10; i++)
// ...
81
PROGRAMACIÓN I
while
i=1;
// ...
do-while
do
// ...
} while (true);
foreach
// ...
82
PROGRAMACIÓN I
● La instrucción foreach, al igual que en Java, realiza un ciclo a través de los
elementos de una matriz o colección. En este ciclo se recorre la colección y la
variable recibe un elemento de dicha colección en cada iteración.
Visual Studio permite a los desarrolladores crear sitios y aplicaciones web, así
como servicios web en cualquier entorno compatible con la plataforma .NET (a
partir de la versión .NET 2002). Así, se pueden crear aplicaciones que se
comuniquen entre estaciones de trabajo, páginas web, dispositivos móviles,
dispositivos embebidos y videoconsolas, entre otros.
83
PROGRAMACIÓN I
5. Clic en examinar para seleccionar la dirección donde desea crear el
proyecto
6. En el cuadro Nombre, escriba un nombre para el proyecto y, después, elija
el botón Aceptar.
1 2
4 3
84
Ejecutar programa
PROGRAMACIÓN I
Ojo cada sentencia en C# termina con un
punto y coma
● using System
85
PROGRAMACIÓN I
86
PROGRAMACIÓN I
2.8. ReadLine
Es un método de la clase Consola, sirve para leer un dato desde teclado y ese
valor leído es string. Ejemplo: si ingresamos 5, ese valor es “5”, quiere decir string
o texto. Por lo tanto si lo vamos a recibir en una variable de tipo entero, ese valor
“5” se debe convertir a entero.
2.9. ReadKey
Es un método que sirve para pausar para ver el resultado
2.10. Conversiones de tipos de datos en C#
La conversión de datos se usa en C# de manera explícita,
En c# siempre se ingresan todos los valores con formato texto por lo que se hace
necesaria la conversión de tipos, ejemplo:
Nota: cuando se captura datos por medio de ReadLine, los datos son de tipo
String, por lo que tenemos que convertir esos datos a números, para ello se hace
uso de parse.
Otra forma es
87
PROGRAMACIÓN I
Ejemplos
88
PROGRAMACIÓN I
89
PROGRAMACIÓN I
90
PROGRAMACIÓN I
91
PROGRAMACIÓN I
Algunas Funciones
92
PROGRAMACIÓN I
Ejemplos
93
PROGRAMACIÓN I
4. CREANDO E INVOCANDO MÉTODOS
3.1. Definición de Métodos
Un método no es más que un procedimiento o acción escrito dentro de una
clase y se compone de datos y un comportamiento y que puede ser reutilizado en
cualquier clase.
[implementación]
Las partes marcadas con [] son opcionales y las que están entre <> son
necesarias:
94
PROGRAMACIÓN I
Además, también podemos añadir el modificador static para especificar que un
método debe ser llamado desde la clase misma, sin necesidad de crear una
instancia de la clase.
lista de parámetros, los métodos pueden recibir información del objeto que los
llama a través de los parámetros, la lista de parámetros está definida por el
método mediante la especificación del tipo de dato y el identificador de este, si es
necesario que el método reciba más de un parámetro estos se separan por una
coma.
3.6. Implementación
Ejemplos
95
PROGRAMACIÓN I
Uno de los más grandes ejemplos de métodos es el método Main, que es el punto
de entrada de cualquier programa escrito en este lenguaje. Por ejemplo:
Main:
96
PROGRAMACIÓN I
97
PROGRAMACIÓN I
Int: tipo de Resta: nombre recibe dos parámetros
dato a devolver del método a y b de tipo entero
Llamada a un método
Método Divide
Devuelve un tipo double, tiene por nombre Divide, los parámetros son a y b,
ambos del tipo double, y el cuerpo del método es simplemente "return a/b;". Para
llamar a un método, debemos simplemente poner el nombre del método y sus
argumentos dentro de un paréntesis separado por comas. Para llamar al método
Divide declarado antes, simplemente debemos escribir Divide(8, 2); esos valores 8
y 2 podemos enviarle desde una variable cualquiera.
98
PROGRAMACIÓN I
Escriba como se llama la llamada al método divide desde botón btnDividir,
enviar los valores para sus parámetros desde un txtNumero1 y txtNumero2
99
PROGRAMACIÓN I
3.7. Pasando valores (Parámetros) a los métodos
La declaración formal de parámetros también define variables. Hay cuatro tipos de
parámetros: parámetros por valor, por referencia, parámetros de salida, y arreglos
de parámetros
El paso de parámetros por valor es usado por defecto para pasar parámetros a
métodos. Cuando se pasa un parámetro por valor a un método realmente se está
pasando una copia de dicho parámetro, por lo que las modificaciones que le
hagamos al parámetro dentro del método no afectarán al valor del parámetro
original.
Aunque el valor del parámetro a, haya sido modificado dentro del método, este
parámetro solamente tiene una copia del valor del parámetro que pasamos al
método; por lo que cuando imprimimos el valor del parámetro vemos que éste
parámetro ha mantenido su valor original.
100
PROGRAMACIÓN I
modificación sobre el parámetro dentro de la función afectará al parámetro
original.
La palabra clave ref debe de ser usada tanto en la declaración formal del método
como como en la llamada.
Sumar dos valores y el resultado devolver en una variable por referencia, esta
variable debe inicializar en cero. el método sumaReferencia retornará el resultado
en su parámetro por referencia. Por lo tanto, no usa la palabra return y es un
void.
Llamada al método
101
PROGRAMACIÓN I
3.8. Modificadores public y static
El modificador public lo hemos utilizado anteriormente. Se puede utilizar en la
declaración de cualquier método o variable, y como es de esperar, produce el
efecto de que el campo afectado se vuelve público, esto es, se puede utilizar
desde otras clases.
102
PROGRAMACIÓN I
Método que no estático
103
PROGRAMACIÓN I
3.10. Espacios de nombres.
Al igual que en un sistema operativo las carpetas ayudan a organizar los archivos
en un disco duro, en C# los espacios de nombres ayudan a organizar las clases.
De esta manera se evitan posibles conflictos en el caso de iguales nombres de
clases o métodos, pero de distintos fabricantes, programadores o incluso el mismo
Framework, ya que se diferencian entre ellos por el distinto espacio de nombres
en que están incluidos.
Hay que tener en cuenta que los espacios de nombres deben estar creados de
una manera jerárquica. Por ejemplo, dentro de nuestra carpeta del disco duro
'Fotos', tendremos otras subcarpetas que podrían ser 'Fotos de viajes', 'Fotos de
familia', etc. De la misma forma, el Framework posee espacios de nombres
creados con una jerarquía muy estricta, y todos tienen como espacio de nombre
original el 'System'. De él derivan, por ejemplo, 'System.IO', 'System.Windows',
'System.Windows.Forms', 'System.Web', 'System.Web.UI', etc.
104
PROGRAMACIÓN I
Para la creación de un espacio de nombres se utiliza la palabra 'namespace'. El
siguiente código fuente crea un espacio de nombres 'System' que empaqueta las
clases 'ClassA' y 'ClassB' y el espacio de nombres 'Windows', que a su vez
empaqueta el espacio de nombres 'Forms' que incluye las clases 'ClassC' y
'ClassD':
namespace System
{
class ClassA { }
class ClassB { }
namespace Windows
{
namespace Forms
{
class ClassC { }
class ClassD { }
}
}
}
namespace System
{
class ClassA { }
class ClassB { }
namespace Windows.
Forms
{
class ClassC { }
class ClassD { }
}
}
105
PROGRAMACIÓN I
para invocar a la clase 'ClassC' lo haremos con la expresión
'System.Windows.Forms.ClassC'.
Directriz 'using'.
using System;
public class Program
{
public static void Main()
{
Console.WriteLine("Usando directriz
'using'.");
Console.ReadKey();
}
}
EJERCICIOS DE METODOS
1. Escribir un método que permita sumar dos números, que reciba como parámetro
dos valores y retorne la suma del mismo.
2. Escribir un método que permita calcular la potencia un número elevado a otro
número, que reciba como parámetro dos valores y retorne la potencia del mismo.
3. Escribir un método que reciba como parámetro dos números por valor y otras 3
variables por referencia, en el cual devolver como resultado la suma, resta y
potencia de dichos valores.
Escribir un método para el siguiente enunciado, enviar como parámetro el sueldo y las
tres ventas, devolver como resultado el sueldo total y la comisión.
4. Un vendedor recibe un sueldo base más un 10% extra por comisión de sus
ventas, el vendedor desea saber cuánto dinero obtendrá por concepto de
comisiones por las tres ventas que realiza en el mes y el total que recibirá
en el mes tomando en cuenta su sueldo base y comisiones.
5. Crear un menú usando la estructurar repetitivo do while y swith case para dos
ejercicios de secuenciales, dos de condicionales y dos de repetitivas for, dos de
repetitivas while.
107
PROGRAMACIÓN I
5. UNIDAD : TIPOS DE DATOS ESTRUCTURADOS
5.1. Introducción
Los tipos de datos estructurados más comunes son: vectores y matrices (array),
cadenas de caracteres (string), registros y uniones, aunque estos últimos no los
vamos a ver en este curso.
CADENAS
VECTORES
108
PROGRAMACIÓN I
Definición
Columnas
MATRICES
Filas
109
PROGRAMACIÓN I
5.2. Cadenas
Las cadenas, por tanto, son objetos que disponen de métodos que permiten
operar sobre la información almacenada en dicha cadena. Así, encontraremos
métodos para buscar una subcadena dentro de la cadena, sustituirla por otra,
dividirla en varias cadenas atendiendo a un cierto separador, convertir a
mayúsculas o minúsculas, obtener la longitud de la cadena,Longitud:
etc. indica la cantidad de
caracteres que tiene una cadena.
Declaración de una cadena
Int longitud=cadena.Length;
string cadena = "Hola Mundo!";
La variable longitud tiene
almacenado 11
String = H O L A M U N D O !
cadena
0 1 2 3 4 5 6 7 8 9 10
Acceder a una posición de una cadena y obtener la letra en una variable de tipo
char.
110
PROGRAMACIÓN I
5.2.1. Funciones de Cadenas
En este ejemplo la variable corte valdrá "Frase". La función Remove, elimina parte
de la cadena, desde la posición indicada (5) hasta el final.
111
PROGRAMACIÓN I
-Reemplazar un carácter por otro:
-Recortar la cadena:
Concatenar cadenas:
string texto = "Cadena de" + " caracteres"; // Nótese el espacio antes de
"caracteres", si no se pusiera, aparecería junto: "decaracteres"
112
PROGRAMACIÓN I
5.2.2. Ejemplos de Cadenas
Crear una nueva solución con el nombre slncadena y el nombre del proyecto con
el nombre Cadena
En la propiedad name
del textBox1, escribir
txtCadena
113
PROGRAMACIÓN I
Convertir la cadena a Mayúscula y mostrar en txtResultado
114
PROGRAMACIÓN I
115
PROGRAMACIÓN I
PRACTIO 2 DE CADENAS
Crear un proyecto con el nombre Cadena y nombre de la solución slnCadena
En la propiedad name
del textBox1, escribir
txtCadena
116
PROGRAMACIÓN I
Crear una nueva solución con el nombre slnLista, el nombre del proyecto
Lista
117
PROGRAMACIÓN I
Con esta sintaxis ahora podemos crear una list‹T› denominada ListaColores:
using System.Collections.Generic;
A los elementos individuales en una lista se puede acceder mediante el índice del
valor de la partida (teniendo en cuenta que el primer punto del índice es 0, el
segundo índice 1 y así sucesivamente). El valor del índice se encuentra entre
corchetes tras el nombre de la lista. Por ejemplo, para acceder al segundo punto
del objeto ListaColores:
MessageBox.Show(ListaColores[1]);
ListaColores[2] = "Verde";
118
PROGRAMACIÓN I
El uso de un foreach.
El foreach nos servirá para recorrer un listado de tipo de datos (int, double, string,
etc.) o un listado de listados de objetos (entiéndase como objeto una clase creada
previamente con sus respectivas variables y propiedades).
119
PROGRAMACIÓN I
incluirá en ese lugar. Por ejemplo, para insertar un elemento en la posición 2 de la
lista seria:
ListaColores.Insert(2, "Blanco");
Ordenando Listas
El método Sort permite ordenar los elementos de la lista, una vez se añaden
nuevos elementos aplicar el método Sort
ListaColores.Sort();
120
PROGRAMACIÓN I
Si el elemento no se encuentra en la lista devuelve -1.
Esta técnica podría utilizarse para reemplazar un valor con otro. Por ejemplo, sin
conocer de antemano el valor del índice del "Amarillo" cadena podemos cambiar a
"Negro":
ListaColores[ListaColores.IndexOf("Amarillo")] = "Negro";
Método Count
Borrado de elementos
Todos los elementos de una lista podrán ser borrados mediante el método Clear():
ListaColores.Clear();
121
PROGRAMACIÓN I
PRACTIO 3
List, ArrayList
Ejemplo
122
PROGRAMACIÓN I
123
PROGRAMACIÓN I
PRACTICO 4 EJEMPLO DE ARRAYLIST CON CLASES
Ejemplo de ArrayList con Clases
DateTimePicker
DataGridView1
124
PROGRAMACIÓN I
LISTAS
125
PROGRAMACIÓN I
126
PROGRAMACIÓN I
6. ARREGLOS DE UNA Y DOS DIMENSIONES
6.1. Definición de Vectores
Vector
tipo[] variable;
int[] vector;
127
PROGRAMACIÓN I
vector = new int[6]; //ahora almacenará 6 elementos
vector[0]=46;
Int elemento=vector[0];
int longitud=vector.Length;
Para desplazarse por cada casilla del vector use las estructuras repetitivas como
for, while, foreach, do while, etc.
String[] nombres;
Nombres=new string[10];
128
PROGRAMACIÓN I
Podemos recuperar estos valores del Vector mediante el uso de un bucle for.
Escribiendo el nombre y la posición vector[i]
Ordenar un Vector
129
PROGRAMACIÓN I
130
PROGRAMACIÓN I
Mostrar el vector en un dataGridView
131
PROGRAMACIÓN I
132
PROGRAMACIÓN I
133
PROGRAMACIÓN I
134
PROGRAMACIÓN I
6.5. Matrices
6.6. Definición de una Matriz
Una matriz es una estructura de datos que permite almacenar un conjunto
de datos del mismo tipo. Con un único nombre se define la matriz y por medio de
dos sub índices hacemos referencia a cada elemento de la misma (componente).
Las filas y columnas comienzan a numerarse a partir de cero, similar a los
vectores.
COLUMNAS
Fila 0
Fila 1
FILAS
Fila 2
Hemos graficado una matriz de 3 filas y 5 columnas. Para hacer referencia a cada
elemento debemos indicar primero la fila y luego la columna, por ejemplo, en el
componente 1,4 se almacena el valor 97. En este ejemplo
almacenamos valores enteros. Todos los elementos de la matriz deben ser del
mismo tipo (int, float, string etc.)
135
PROGRAMACIÓN I
int [,] Matriz;
136
PROGRAMACIÓN I
Ejemplo Cargar una matriz de n filas y m columnas, mostrar en un
DataGridView
137
PROGRAMACIÓN I
6.8. Mostrar una Matriz
138
PROGRAMACIÓN I
139
PROGRAMACIÓN I
140
PROGRAMACIÓN I
6.10. Matrices Orientado a Objetos
En el proyecto Matriz, agregar un nuevo Form2, luego copiar todo el diseño del
Form1
141
PROGRAMACIÓN I
142
PROGRAMACIÓN I
143
PROGRAMACIÓN I
7. MÉTODOS DE ORDENAMIENTO Y BÚSQUEDA.
ORDENAMIENTO.
Uno de los procedimientos más comunes y útiles en el procesamiento de datos, es
la clasificación u ordenación de los mismos. Se considera ordenar al proceso de
reorganizar un conjunto dado de objetos en una secuencia determinada. Cuando
se analiza un método de ordenación, hay que determinar cuántas comparaciones
e intercambios se realizan para el caso más favorable, para el caso medio y para
el caso más desfavorable.
Tal operación se puede hacer de manera más eficiente después de que la lista ha
sido ordenada.
Existen varios métodos para ordenamiento, clasificados en tres formas:
● Intercambio
● Selección
● Inserción.
144
PROGRAMACIÓN I
145
PROGRAMACIÓN I
Intercambio
El método de intercambio se basa en comparar los elementos del arreglo e
intercambiarlos si su posición actual o inicial es contraria inversa a la deseada.
Pertenece a este método el de la burbuja clasificado como intercambio directo.
Aunque no es muy eficiente para ordenar listas grandes, es fácil de entender y
muy adecuado para ordenar una pequeña lista de unos 100 elementos o menos.
Una pasada por la ordenación de burbujeo consiste en un recorrido completo a
través del arreglo, en el que se comparan los contenidos de las casillas
adyacentes, y se cambian si no están en orden. La ordenación por burbujeo
completa consiste en una serie de pasadas ("burbujeo") que termina con una en la
que ya no se hacen cambios porque todo está en orden.
Ejemplo:
Supóngase que están almacenados cuatro números en un arreglo con casillas de
memoria de x[1] a x[4]. Se desea disponer esos números en orden creciente. La
primera pasada de la ordenación por burbujeo haría lo siguiente:
Comparar el contenido de x[1] con el de x[2]; si x[1] contiene el mayor de los
números, se intercambian sus contenidos.
Comparar el contenido de x[2] con el de x[3]; e intercambiarlos si fuera necesario.
Comparar el contenido de x[3] con el de x[4]; e intercambiarlos si fuera necesario.
146
PROGRAMACIÓN I
147
PROGRAMACIÓN I
Quicksort.
Si bien el método de la burbuja era considerado como el peor método de
ordenación simple o menos eficiente, el método Quicksort basa su estrategia en la
idea intuitiva de que es más fácil ordenar una gran estructura de datos
subdividiéndolas en otras más pequeñas introduciendo un orden relativo entre
ellas. En otras palabras, si dividimos el array a ordenar en dos subarrays de forma
que los elementos del subarray inferior sean más pequeños que los del subarray
superior, y aplicamos el método reiteradamente, al final tendremos el array inicial
totalmente ordenado. Existen además otros métodos conocidos, el de ordenación
por montículo y el de shell.
Selección.
Los métodos de ordenación por selección se basan en dos principios básicos:
Seleccionar el elemento más pequeño (o más grande) del arreglo.
148
PROGRAMACIÓN I
Colocarlo en la posición más baja (o más alta) del arreglo.
A diferencia del método de la burbuja, en este método el elemento más pequeño
(o más grande) es el que se coloca en la posición final que le corresponde.
Inserción.
El fundamento de este método consiste en insertar los elementos no ordenados
del arreglo en subarreglos del mismo que ya estén ordenados. Dependiendo del
método elegido para encontrar la posición de inserción tendremos distintas
versiones del método de inserción.
BÚSQUEDA.
La búsqueda es una operación que tiene por objeto la localización de un elemento
dentro de la estructura de datos. A menudo un programador estará trabajando con
grandes cantidades de datos almacenados en arreglos y pudiera resultar
necesario determinar si un arreglo contiene un valor que coincide con algún valor
clave o buscado.
Siendo el array de una dimensión o lista una estructura de acceso directo y a su
vez de acceso secuencial, encontramos dos técnicas que utilizan estos dos
métodos de acceso, para encontrar elementos dentro de un array: búsqueda lineal
y búsqueda binaria.
Búsqueda Secuencial:
La búsqueda secuencial es la técnica más simple para buscar un elemento en un
arreglo. Consiste en recorrer el arreglo elemento a elemento e ir comparando con
el valor buscado (clave). Se empieza con la primera casilla del arreglo y se
observa una casilla tras otra hasta que se encuentra el elemento buscado o se
han visto todas las casillas. El resultado de la búsqueda es un solo valor, y será la
posición del elemento buscado o cero. Dado que el arreglo no está en ningún
orden en particular, existe la misma probabilidad de que el valor se encuentra ya
sea en el primer elemento, como en el último. Por lo tanto, en promedio, el
programa tendrá que comparar el valor buscado con la mitad de los elementos del
arreglo.
El método de búsqueda lineal funciona bien con arreglos pequeños o para
149
PROGRAMACIÓN I
arreglos no ordenados. Si el arreglo está ordenado, se puede utilizar la técnica de
alta velocidad de búsqueda binaria, donde se reduce sucesivamente la operación
eliminando repetidas veces la mitad de la lista restante.
Búsqueda Binaria
150