Fundamentos de programación
Angel Soto
dreamensys@gmail.com
ansoto.com
@dreamensys
Web Developer
Programación Orientada a objetos
Es un paradigma de programación que permite desarrollar soluciones a través de software basándose en los objetos del mundo real.
TODO es un objeto
Objeto
- Nombre
- Color
- Precio
- Edad
Comportamiento
Estado
Identidad
Conjunto de atributos que tiene el objeto.
Todo lo que el objeto puede hacer.
Representa la agrupación de aquellos objetos que presentan características similares.
- Caminar
- Maullar
- Ronronear
- Dejar caer cosas solo por diversión
Clase Gato
Ejemplo de clase
Nombre | |
Color | |
Precio | |
Edad |
Caminar() | |
Maullar() | |
Ronronear() | |
DejarCaerCosas() |
Funciones o métodos |
Atributos |
Gato |
clase Gato
cadena nombre
cadena color
real precio
entero edad
// Atributos
// Funciones o métodos
funcion maullar()
finfuncion
escribir("Meowww")
funcion ronronear()
finfuncion
escribir("rrrrrrrrrrrrr")
finclase
Principios
Abstracción
Encapsulamiento
Herencia
Polimorfismo
Introducción a C#
Historia
Caracteristicas
- Lenguaje de programación
- Orientado a objetos
- Basado en C y C++
- Seguridad de tipos
- Case Sensitive
- Lenguaje de alto nivel(Compilado)
- Incluido en el .NET Framework
Framework de .NET
Porqué C#?
- Web
- Consola
- Backend(REST API, Soap Services)
- Desktop
- Windows
- Linux
- OSX
- Servicios
- Mobile Apps
- Android
- iOS
- Windows Phone
- iOT
- Drivers
- Video Juegos(Unity3D)
En el mercado...
- Agencias digitales
- Banca
- Gobierno
- Seguros
- Fábricas de Software
Productos hechos con C#
Entornos de desarrollo
- Visual Studio Code
- Visual Studio
- Sublime Text
- Notepad++
- MonoSharp
- Bloc de Notas
Sintaxis
A excepción de las estructuras de control, absolutamente todas las sentencias deben llevar un punto y coma al final.
Variables
Inicio
leer(dividendo)
Fin
leer(divisor)
funcion dividir(dividendo, divisor)
finfuncion
si divisor = 0 entonces
finsi
sino
escribir("El divisor no puede ser cero")
resultado<-dividendo / divisor
escribir(mensaje,r)
real resultado
residuo<-dividendo MOD divisor
escribir("El resíduo es ",r)
cadena mensaje <- "El resultado es "
Ámbito y acceso
Por clase
Por función o método
Por bloque
{Tipo Dato} {Nombre Variable} = {Valor};
Estructura
int edad = 18;
Tipos de datos
int | Entero | |
double | Decimal | |
decimal | Decimal | |
char | Caracter | |
string | Cadena | |
bool | Lógico |
int edad = 18;
double estatura = 1.70;
decimal resultado = 9.95M;
char x = 'a';
string saludo = "Hola clase";
bool EstaLLoviendo = true;
Algunos como:
entre otros...
Aritméticos | + - * / % |
Lógicos | ! && || |
Concatenación | + |
Relacional | == != < > <= >= |
Puedes operar variables con...
entre otros...
Estructuras de control
Cada estructura de control debe abrirse con "{" y cerrarse con "}"
si monedas > 0 entonces
ComprarDulces()
sino
if (monedas > 0){
ComprarDulces();
}
Pseudocódigo
C#
if
bool EsMayorDeEdad;
if (edad >= 18) {
EsMayorDeEdad = true;
}
else {
EsMayorDeEdad = false;
}
if
(Simple)
(Multiple)
string ColorSemaforo;
if (ColorSemaforo == "Rojo") {
DetenerAuto();
}
else if (ColorSemaforo == "Amarillo"){
DisminuirVelocidad();
}
else {
POnerEnMarchaAuto();
}
Condicionales
switch
switch (ColorSemaforo) {
case "Rojo":
DetenerAuto();
break;
case "Amarillo":
DisminuirVelocidad();
break;
case "Verde":
POnerEnMarchaAuto();
break;
default:
AvanzarConPrecuacion();
break;
}
for
while
//Escribe del 1 al 10
for (int i = 0; i < 10; i++) {
escribir(i);
}
//Escribe 1 al 10
int i = 0;
while (i < 10) {
escribir(i);
i++;
}
foreach
foreach (int i in vectorNumeros) {
escribir(i);
}
Ciclos
public int sumar(int numero1, int numero2){
int resultado = numero1 + numero2;
return resultado;
}
Modificador de
acceso
Objeto
retorno
Nombre
método
Parámetros
de entrada
Objeto de retorno
Funciones
Modificadores de acceso
- Public
- Private
- Static
Definen que nivel de acceso tendrá una clase, atributo y/o método.
Entre otros...
Manejo de errores
try{
/*
** Aquí va el código susceptible a errores,
** algo que pueda fallar en algún momento
*/
}
catch(Exception error){
/*
** Aquí se especifica qué hacer en caso
** de que algo falle, es un plan de contingencia.
*/
}
finally{
/*
** Aquí va la lógica que se ejecutará
** independientemente si funciona o
** falla el "try"
*/
}
Objetos
Son copias o instancias de clases.
Gato pelusa = new Gato();
Nombre de la clase
Nombre del objeto o variable
Nombre del objeto o variable
pelusa.color = "Negro";
pelusa.Maullar();
Y para acceder a sus funciones y propiedades:
Arreglos
Conjunto finito de elementos de un mismo tipo.
(Arrays)
Estructura
Unidimensionales
//Ambas opciones funcionan
string[] frutas = new string[3];
string[] frutas = {"Manzana", "Pera", "Coco"};
Acceso
Creación
string manzana = frutas[0];
//O si se desea cambiar algún valor en el arreglo.
frutas[0] = "Manzana Verde";
donde 0 es el índice o posición del elemento.
Multidimensionales
// Ambas opciones funcionan
string[,] alumnos= new string[2, 2];
string[,] alumnos= new string[2, 2] {{"Pedro","Perez"},
{"Sara","Lopez"} };
Acceso
Creación
string nombrePedro = alumnos[0,1];
/* O si se desea cambiar algún valor
** en el arreglo.
*/
alumnos[0,1] = "Pedro Alberto";
donde 0 es el índice de la fila y 1 es el índice de la columna.
Escalonados
int[][] arregloEscalonado= new int[3][];
Acceso
Creación
arregloEscalonado[0] = new int[5];
arregloEscalonado[1] = new int[4];
arregloEscalonado[2] = new int[2];
(Arreglos de arreglos)
ArrayList
ArrayList arregloUsuarios = new ArrayList();
Acceso
Creación
Usuario objetoRecuperado = arrUsuarios[0];
Arreglos sin longitud preestablecida
Usuario objUsuario = new Usuario();
arregloUsuarios.Add(objUsuario);
Agregar elementos
Fundamentos de programación - Clase 3
By Angel Soto
Fundamentos de programación - Clase 3
- 997