PROG.01. Programación Estructurada
PROG.01. Programación Estructurada
1. Introducción a la programación
Un programa es un conjunto de instrucciones dadas al ordenador en un
lenguaje que solo es entendible por él para comunicarle lo que queremos que
haga. Un algoritmo es una secuencia finita de operaciones que resuelven un
determinado problema.
Representaciones gráficas
3
Módulo 3A: Programación
Operaciones de entrada/salida de
datos. Por ejemplo: visualiza en
pantalla suma.
Representa un método o
subprograma.
4
Módulo 3A: Programación
• Todos los símbolos de decisión deben tener más de una línea de salida,
es decir, deben indicar qué camino seguir en función de la decisión
tomada.
Ejemplo
5
Módulo 3A: Programación
Algoritmo triángulo
Definir área, altura, base de tipo números reales;
Escribir “Introduce la altura del triángulo:”;
Leer altura;
Escribir “Introduce la base del triángulo:”;
Leer base;
Área <- (a*b)/2;
Escribir “El área del triángulo es:”, área;
FinAlgoritmo
6
Módulo 3A: Programación
Algunos ejemplos de lenguajes de alto nivel son java, php, c#, VB.NET,
Python…
7
Módulo 3A: Programación
8
Módulo 3A: Programación
C# Java
9
Módulo 3A: Programación
Con C#, podemos crear aplicaciones con una interfaz de texto, que
denominamos aplicaciones de consola.
Una de las ventajas de aprender este lenguaje es que es independiente de la
plataforma donde lo ejecutemos (sea Intel o AMD).
10
Módulo 3A: Programación
Este fichero que se genera debe tener la extensión cs, ya que es la extensión
utilizada por los ficheros en C#.
https://visualstudio.microsoft.com/es/downloads/
11
Módulo 3A: Programación
Instalación de MonoDevelop
https://www.monodevelop.com/download/#fndtn-download-lin
12
Módulo 3A: Programación
13
Módulo 3A: Programación
14
Módulo 3A: Programación
CÓDIGO:
using System;
namespace MiAplicación
{
class Program
{
static void Main(string[] args)
{
}
}
}
La estructura que Visual Studio nos crea por defecto es la clase program. Una
clase es una estructura de datos que está compuesta por atributos o variables
(de las que hablaremos más adelante) y métodos o funciones. El método
principal se denomina Main.
De hecho, siempre que ejecutemos un programa, el primer método que se
ejecutará será el Main. Este método tiene una serie de argumentos. Estos
argumentos son cadenas de caracteres que podemos pasar línea de
comandos (CMD):
• Para la salida por pantalla, podemos utilizar los métodos de esta clase,
Write y Writeline:
15
Módulo 3A: Programación
CÓDIGO:
using System;
namespace MiAplicación
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Console.Write("Programming...");
}
}
}
La salida será:
CÓDIGO:
using System;
namespace MiAplicación
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Introduce un dato”);
string dato = ReadLine();
}
}
}
16
Módulo 3A: Programación
Otra forma para recoger los datos de entrada de usuario es el método Read().
Este método leerá el dato introducido por el usuario y devolverá un dato de
tipo entero (int).
https://docs.microsoft.com/es-
es/dotnet/api/system.console?view=netframework-4.8
CÓDIGO:
class Program
{
static void Main(string[] args)
{
int numero;
numero = 10;
char letra = 'a';
string cadena = "Esta es una cadena";
}
}
17
Módulo 3A: Programación
Para definir una variable, necesitamos conocer primero el tipo de datos que
va a almacenar y, a continuación, el nombre que le vamos a asignar. Es
recomendable que este nombre tenga relación con el ejercicio que estemos
desarrollando.
• Debe estar formada por caracteres del alfabeto (no podemos usar “ñ”)
o por dígitos (del 0 al 9). Se puede utilizar el subrayado ("_").
18
Módulo 3A: Programación
https://docs.microsoft.com/es-es/dotnet/csharp/language-
reference/keywords/
CÓDIGO:
<tipo> <nombre_variable>;
CÓDIGO:
int num;
CÓDIGO:
int num=5;
19
Módulo 3A: Programación
CÓDIGO:
Por ejemplo:
CÓDIGO:
20
Módulo 3A: Programación
CÓDIGO:
class Calendar1
{
public const int dias_semanas = 7;
}
• Literales
• Literales enteros:
o Decimales: sin ningún prefijo. Por ejemplo: int dLiteral = 10;
o Hexadecimales: con el prefijo de 0x o 0X. Por ejemplo: int
hLiteral= 0x3F;
• Literales reales:
o El literal sin sufijo o con el sufijo d o D es del tipo double.
Por ejemplo: double num = 3.4d;
Double num2= 3.4;
o El literal con el sufijo f o F es del tipo float.
Por ejemplo: float variable = 4.5F;
o El literal con el sufijo m o M es del tipo decimal.
Por ejemplo: decimal numero = 3.2m;
21
Módulo 3A: Programación
Carácter Representación
Comilla simple \’
Comilla doble \”
Carácter nulo \0
Retroceso \b
Salto de página \f
Nueva línea \n
Retorno de carro \r
Tabulación horizontal \t
Tabulación vertical \v
Operadores aritméticos
22
Módulo 3A: Programación
CÓDIGO:
CÓDIGO:
• Operadores booleanos
Operadores booleanos
23
Módulo 3A: Programación
^ XOR lógico.
! Negación lógica.
a b a^b
T T F
T F T
F T T
F F F
24
Módulo 3A: Programación
Operadores de comparación
> Mayor.
< Menor.
== Igual.
!= desigualdad.
= Asignación.
CÓDIGO:
int numero=10;
numero = “a”; // No se puede convertir implícitamente el tipo
'string' en 'int'
25
Módulo 3A: Programación
CÓDIGO:
int a = 300;
long numero=a;
CÓDIGO:
Parse y TryParse
Con los métodos Parse y TryParse, podemos convertir una cadena en varios
tipos numéricos: int, decimal, double…
El método Parse devuelve el número convertido. El método TryParse devuelve
un valor booleano indicando si la conversión se realizó correctamente o no, y
devuelve el número convertido.
26
Módulo 3A: Programación
CÓDIGO:
Console.WriteLine(miNumero);
Convert
Es una clase que convierte un tipo de datos en otro. Algunos métodos son:
Método Descripción
ToBoolean Convierte un valor especificado en un valor
booleano
ToChar Convierte un valor especificado en un carácter
ToDecimal Convierte un valor especificado en un número
decimal
ToDouble Convierte un valor especificado en un número
de punto flotante
ToInt16 Convierte un valor especificado en un entero
de 16 bits
ToInt32 Convierte un valor especificado en un entero
de 32 bits
ToInt64 Convierte un valor especificado en un entero
de 64 bits
ToString Convierte un valor especificado en su
representación de cadena
CÓDIGO:
27
Módulo 3A: Programación
CÓDIGO:
Ejemplo
Float x,y;
x=a/b;
c=a<b && c;
d= a + b++;
e= ++a - b;
y= (float)a / b;
28
Módulo 3A: Programación
● Comentarios de una línea: son frases cortas y, por tanto, solo pueden
ocupar una línea del código. Debemos de escribir “//” antes de
comenzar con dichas anotaciones.
CÓDIGO:
29
Módulo 3A: Programación
3. Programación estructurada
La programación estructurada es un procedimiento que consiste en diseñar e
implementar programas de forma clara y sencilla para que puedan ser
mantenidos con facilidad.
- Selección de instrucciones.
1
Serna, M. E. (2009). Edsger Wybe Dijkstra. Revista Digital Lámpsakos, no. 2, pp. 107-11.
2
Corrado Böhm, Giuseppe Jacopini. (1966). Flow diagrams, turing machines and languages
with only two formation rules. 2020, de ACM Digital Library, Association for Computing
Machinery. Sitio web: https://dl.acm.org/doi/pdf/10.1145/355592.365646
30
Módulo 3A: Programación
31
Módulo 3A: Programación
32
Módulo 3A: Programación
33
Módulo 3A: Programación
34
Módulo 3A: Programación
• Tipos simples
Debemos tener en cuenta que el tipo de datos simple no está compuesto por
otros tipos, y que contiene un valor único.
35
Módulo 3A: Programación
CÓDIGO:
int x = (int)dias.Domingo;
int y = (int)dias.Viernes;
/* Salida:
Domingo = 0
Viernes = 5
*/
Sintaxis:
CÓDIGO:
36
Módulo 3A: Programación
Por ejemplo:
CÓDIGO:
int[] array2 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
CÓDIGO:
miArray [1]=’z’;
Console.WriteLine(miArray[1]);
// Guardamos en la posición 1, el carácter z. Por lo que, por pantalla, mostrará ese carácter
en esa posición. Ahora el vector estaría formado por {‘a’, ‘z’, ‘c’, ‘d’, ‘e’}
37
Módulo 3A: Programación
Sintaxis:
CÓDIGO:
Por ejemplo:
CÓDIGO:
En este caso:
38
Módulo 3A: Programación
SI CONDICIÓN ENTONCES:
INSTRUCCIONES_1
FIN SI;
SI CONDICIÓN ENTONCES:
INSTRUCCIONES_1;
SI NO:
INSTRUCCIONES_2;
FIN SI;
39
Módulo 3A: Programación
• Operadores lógicos
&& AND: ambas condiciones deben cumplirse para entrar en el bloque IF.
|| OR: es suficiente con que una de las condiciones se cumpla para entrar en el bloque
IF.
^ XOR: El resultado se evalúa como true si una condición se evalúa como false y otra
como true.
Si ambas condiciones se evalúan como false o como true, el resultado será false.
FIN SI;
FIN SI;
40
Módulo 3A: Programación
FIN SI:
Es una instrucción de selección que elige una sola acción de una lista de
opciones en función de una coincidencia de distintos patrones con la
expresión.
CÓDIGO:
using System;
int var = 1;
switch (var)
case 1:
Console.WriteLine("Caso 1");
break;
case 2:
41
Módulo 3A: Programación
Console.WriteLine("Caso 2");
break;
default:
Console.WriteLine("Otro caso");
break;
// La salida mostrada será Caso 1 porque nuestra variable ‘var’ contiene el valor 1.
• Mientras (While)
Mientras que se cumpla una condición, el código incluido dentro del bucle se
repite. La condición se evalúa al principio, por lo que puede que no llegue a
ejecutarse nunca.
Instrucción_1;
Instrucción_2;
…;
Instrucción_N;
ModificarCondición;
FinMientras;
42
Módulo 3A: Programación
Hacer
Instrucción_1;
Instrucción_2;
Instrucción_N;
ModificarCondición;
Mientras CONDICIÓN;
• Para
Para CONDICIÓN
Instrucción1;
Instrucción2;
InstrucciónN;
ModificarCondición;
43
Módulo 3A: Programación
• Foreach
CÓDIGO:
Ejemplo 1
// creamos una variable días de tipo entero que nos servirá para recorrer
cada elemento del array diasMes
Ejemplo2
List‹string› ListaColores = new List‹string›(); //creamos una lista de tipo string
ListaColores.Add ("Azul");
ListaColores.Add ("Rojo");
ListaColores.Add ("Verde");
ListaColores.Add ("Amarillo");
ListaColores.Add ("Morado");
Console.WriteLine ( color );
44
Módulo 3A: Programación
continue Se utiliza en sentencias repetitivas con bucles for, foreach, while y do… while.
Transfiere el control a la siguiente iteración.
Console.ReadKey();
return Esta estructura de salto obliga a que finalice la ejecución de una determinada
función. Normalmente se utiliza para devolver el control a la función de
llamada.
45
Módulo 3A: Programación
CÓDIGO:
CÓDIGO:
new
El operador new crea una nueva instancia de un tipo.
La palabra new crea un objeto tipo string al que pasamos el parámetro letras
como una tabla de caracteres.
46
Módulo 3A: Programación
SubString() Extrae parte de una cadena. Método que puede ser sobrecargado
indicando su inicio y su fin: SubString (int inicio) o SubString (int inicio, int
tamaño).
CompareTo() Compara la cadena que contiene el string con otra pasada por parámetro.
Contains() Si la cadena que se le pasa por parámetro forma parte del string, devuelve
un booleano.
Insert() Inserta una cadena de caracteres en una posición concreta del string.
Trim() Quita todos los espacios en blanco del principio y el final de la cadena de
caracteres.
47
Módulo 3A: Programación
https://docs.microsoft.com/es-es/dotnet/api/system.string?view=netcore-
3.1#methods
48
Módulo 3A: Programación
podemos comprobar cuándo finalizan los bucles, entre otras cosas. Para
depurar el código, teclearemos F10 (paso a paso).
49
Módulo 3A: Programación
Los ficheros que entreguemos que formen parte del proyecto deben estar
testeados y tener un correcto funcionamiento. Habrá que solventar los errores
descritos anteriormente.
summary
La etiqueta <summary> debe usarse para describir un tipo y para agregar
información adicional dentro de nuestro código. Gracias a herramientas de
documentación como GhostDoc y Sandcastle, creamos hipervínculos internos
a las páginas de documentación de los elementos de código:
https://docs.microsoft.com/es-es/dotnet/csharp/programming-
guide/xmldoc/cref-attribute
CÓDIGO: XML
<summary>description</summary>
CÓDIGO: XML
namespace ConsoleApp33
class Program
/// <summary>
///
///
/// </summary>
50
Módulo 3A: Programación
Console.WriteLine(caracter);
Console.ReadLine();
CÓDIGO: XML
<?xml version="1.0"?>
<doc>
<assembly>
<name>ConsoleApp33</name>
</assembly>
<members>
<member name="M:ConsoleApp33.Program.Main(System.String[])">
<summary>
</summary>
</member>
</members>
</doc>
51
Módulo 3A: Programación
Los IDE son utilizados por distintos lenguajes de programación como C++,
PHP, Python, Java, C#, Visual Basic, etcétera.
Los IDE deben cumplir con una serie de características para su correcto
funcionamiento, como, por ejemplo:
• Son multiplataforma.
• Reconocen sintaxis.
• Tienen un depurador.
• Formatean el código.
52