Curso de programación

Clase 2: Datos, tipos de datos y variables

Comentarios

Comentarios

Los comentarios son anotaciones que el programador incorpora en el código fuente para mejorar la comprensión del programa/algoritmo.

La computadora ignora las líneas de comentarios en el momento de ejecución y/o compilación por lo que solo es a fines que el código se entienda mejor por una persona que lo leerá a futuro.

Comentarios

Si un programa tiene comentarios o no es indistinto para la ejecución del mismo o el procesamiento por parte de la computadora.

Se recomienda el uso de comentarios siempre que sea posible y que sea información precisa, breve y descriptiva.

Sintaxis de comentarios

Existen muchas formas de representar comentarios y cada lenguaje elije una forma.

En Java, Javascript, C, C++, C#... se utilizan los caracteres /* */ y/o //para definir un comentario.


						/* El siguiente programa hace un saludo en Java */
						class Saludo {
							public static void main(String[] args) {
								// Imprime un saludo
								System.out.println("¡Hola alumnos y alumnas!"); 
							}
						}
					

¿Cuál el la diferencia entre /* */ y //? Es que el primero permite hacer comentarios de mas de una línea, mientras que el segundo se utiliza para hacer comentarios de una sola línea.

Sintaxis de comentarios

Existen muchas formas de representar comentarios y cada lenguaje elije una forma.

En Python, Ruby, Bash... se utilizan el caracter # para definir un comentario.


						# El siguiente programa hace un saludo en Python
						# Otra línea de comentario requiere otro '#'
						print("Hola alumnos y alumnas")
						# Ya están todxs saludados
					
El caracter # son para hacer comentarios de una línea. En las prácticas de pseudocódigo usaremos el # para definir comentarios.

¿Preguntas?

Conceptos de control y datos

Concepto de control

Hasta ahora, estuvimos viendo el control del algoritmo mediante las estructuras vistas: secuencia, selección, repetición, iteración.

Con dichas estructuras fuimos capaces de manipular el control del algoritmo.

A continuación veremos como manipular los datos de un algoritmo.

Concepto de dato

Un dato es un elemento u objeto de la realidad que los algoritmos representan y son capaces de modificar y procesar.

Cuando se resuelven problemas con computadora, muchas veces se modelizan los objetos reales mediante objetos más abstractos, representables y entendibles sobre una computadora.

Un dato puede ser el nombre de una persona, la temperatura actual, el valor de un producto de un supermercado, etc.

Es importante entender que el mecanismo de resolución de problemas involucra generalmente una transformación o un procesamiento de los datos, manejado por el control del algoritmo.

Representación de datos

Los algoritmos modifican objetos de la realidad para resolver problemas. La representación de los datos estará dada por sus características principales o por la información que nos interese saber.

A continuación comenzaremos extendiendo la notación empleada en los algoritmos para dar lugar a las declaraciones y representación de los datos.

Variables

En general, durante la ejecución de un programa es necesario manipular información que puede cambiar continuamente. Por este motivo, es imprescindible contar con un elemento que permita variar la información que se maneja en cada momento. Este elemento es lo que se conoce como variable.

Una variable permite almacenar un valor que puede ser modificado a lo largo de la ejecución del programa.

Técnicamente, una variable es un lugar en la memoria RAM de la computadora donde se almacenará dicha información.

Declaración de variables: Identificadores

Identificadores: Son los nombres descriptivos que se asocian a los datos (variables) para representar, dentro del programa su valor.

Los identificadores van tan de la mano de las variables que a veces se les conoce directamente como nombre de la variable.

Pero los identificadores no solo van asociados a las variables. También a muchas mas estructuras que veremos mas adelante.

Declaración de variables

En algunos lenguajes, existe un área específica para declarar variables. Otros lenguajes no tienen esta restricción y permiten declarar variables en cualquier momento.

A fines prácticos usaremos un área específica luego de la declaración del programa con un comentario # variables donde declararemos las variables y mantenernos ordenados.


							programa ejemplo
							# variables
									# Aquí van a ir todas las variables que usemos

							# main
								repetir (10 veces)
									limpiar
							fin_programa
						
Y también usaremos la sección #main para definir donde comienza el programa.

¿Preguntas?

Tipos de datos

Tipos de datos

Independientemente del lenguaje de programación que se use, la definición de un tipo de dato implica considerar:

  • Cuáles valores puede tomar.
  • Cuáles son las operaciones que se pueden hacer sobre esos datos.
  • Su representación interna.

Tipos de datos básicos

Resumen tipos básicos:

  • Lógicos: Valores lógicos (Verdadero o Falso)
  • Numéricos: Valores numéricos (1,2,3...)
  • String: Cadena de caracteres. (Palabras)

A veces también son llamados tipos de datos primitivos.

Tipo de dato lógico

También conocido como boolean o bool es un tipo de datos que puede tener los valores Verdadero (True) o Falso (False).

Los tipos lógicos pueden compararse entre sí. Y las operaciones son las siguientes:

Tipo de dato numérico

Es uno de los tipos de datos fundamentales. Dentro de los cuales podemos destacar:

  • Enteros (int):Son números que no tienen parte fraccionaria. El rango de los números depende del lenguaje. Ejemplo de números enteros que se representan con este tipo son: ... -2, -1, 0, 1, 2 ... En los lenguajes de programación se suelen identificar como int o Integer.
  • Reales (float):Son números que tienen una parte fraccionaria. El rango de los números depende del lenguaje. Ejemplo de números reales que se representan con este tipo son: ... -2.23, -1.01, 0.009, 1.9, 2.1 ... En los lenguajes de programación se suelen identificar como float.

¿Cuándo usar un int y cuando un float?

Tipo de dato string

Se llama string (cadena) al tipo de datos utilizado para representar cadena de caracteres como palabras, texto, etc.

Los tipos string se representan con el texto entre comillas simples ' ' o dobles " ".


							"Esto es un string"
							'Esto también es un string'
						
¿Cuándo usar uno u otro?... Podemos decir que si necesitamos usar el caracter ' en el string es obligatorio el uso de las comillas dobles.

							# Para representar este string es obligatorio usar dobles.
							"I didn't do it!" 
						

¿Preguntas?

Operaciones sobre tipos de datos

Operaciones sobre booleanos

Los operadores booleanos básicos son:

  • Negación - no (not)
  • Suma o disyunción - ó (or)
  • Producto o conjunción - y (and)

A continuación veremos ejemplos de lógica.

Operaciones sobre booleanos

Negación - NOT - NO

p not p
True False
False True
Si algo es True y se le aplica el operador not su valor se cambia a False. Si algo es False y se le aplica el operador not su valor se cambia a True. Básicamente invierte su valor.

Operaciones sobre booleanos

Disyunción - AND - y

p q p and q
True True True
True False False
False True False
False False False

Si hay un valor en false, el resultado será siempre false.

p: esta_limpio | q: hay_pared_delante

Operaciones sobre booleanos

Conjunción - OR - ó

p q p or q
True True True
True False True
False True True
False False False

Si hay valor en true, el resultado será siempre true.

p: esta_limpio | q: hay_pared_delante

Operadores de comparación

Suponiendo que x=False e y=True

Relación Sintaxis Ejemplo Resultado
Igualdad == x==y False
Igualdad == x==False True
Distinto != x!=y True
Distinto != x!=True True

¿Preguntas?

Seguimos...

Operadores de comparación sobre números

Operadores de comparación

Relación Sintaxis Ejemplo Resultados posibles
Menor < x<y True o False
Mayor > x>y True o False
Menor o igual <= x<=y True o False
Mayor o igual >= x>=y True o False
Igualdad == x==y True o False
Distinto != x!=y True o False

x e y son dos variables cualquieras.

Los operadores de comparación serán utilizados para comparar variables, valores o condiciones en los programas. El resultado de una comparación entre dos datos será True o False.

Operadores de aritmética

Suponiendo que x=1 e y=2

Relación Sintaxis Ejemplo Resultado
Suma + x+y 3
Resta - x-y -1
Producto * x*y 2
División / x/y 0.5
División entera // x//y 0
Módulo % x%y 1

En los lenguajes de programación los tipos int y float tienen compatibilidad o una forma de compatibilizarlos. Por lo que se pueden realizar esas tareas sobre enteros y float. Prestar atención que a veces el resultado puede ser un tipo u otro.

Operadores de aritmética

Suponiendo que x=10 es posible operar con números directamente.

Relación Sintaxis Ejemplo Resultado
Suma + x+x+1 21
Resta - x-20 -10
Producto * x*x 100
División / x/2 5

En los lenguajes de programación los tipos int y float tienen compatibilidad o una forma de compatibilizarlos. Por lo que se pueden realizar esas tareas sobre enteros y float. Prestar atención que a veces el resultado puede ser un tipo u otro.

Operaciones sobre string

Hay muchísimas operaciones que se pueden hacer con los string. Entre las mas básicas:

Operaciones sobre string

Relación Sintaxis Ejemplo Resultado
Comparar == "Hola" == "Chau" False
Concatenar + "Hola" + "Chau" "HolaChau"
Por lo general un string va entre comillas dobles o comillas simples.

¿Cuánto es '2'+'2'? : '22' Existen muchas mas operaciones sobre string que se verán cuando veamos Python.

Algunas formas de manipular strings en Python

¿Preguntas?

Usando variables

Operación de Asignación

En la programación, existe una instrucción para asignar un valor a una variable u objeto. Por lo general, se usa el signo igual =


							# Ejemplo de asignación en Python
							# Se asigna el valor 0 a la variable contador
							contador = 0 

							# Se asigna el valor de contador a contador_2
							contador_2 = contador
							
						

Aunque al principio pueda parecer confuso, recordar que el símbolo = es usado para asignación. Si buscamos comparación, el símbolo será ==.

Operación de Asignación

Veamos el siguiente pseudocódigo:


							programa ejemplo_asignacion
							# variables
								int x = 10 # Ahora x es igual a 10
								int y = x # Se copia el valor de x en y
								
							# main
								x= x+1
								imprimir("El valor de Y es: {y}")
								
							fin_programa
						

¿Qué imprime el programa?

Respuesta: El valor de Y es: 10
¿Por qué? El valor de x es copiado a y antes de hacer el cambio en x.

Declaración de variables

En Java, las variables de tipo primitivo se declaran de la siguiente manera:


							// Se declara una variable de tipo int vacía
							int x;
							// Se declara una variable int y se le asigna el valor 0
							int y = 0; 
						

En Python puede variar la sintaxis:


							
							x = 0 # Se declara una variable y se le asigna el 0
							y = 10 # Se declara una variable y se le asigna el 10
							x = "Hola" # Ahora x tiene el valor "Hola"
						

Existen notables diferencias entre estos dos lenguajes. Mientras que en Java debemos ser específicos para definir el tipo de datos y el mismo NO puede cambiar (tipado estático), en Python al asignarle el valor, se establece el tipo y el mismo puede cambiar durante la ejecución del programa (tipado dinámico).

Notación usada en la práctica

Para la práctica de pseudocódigo usaremos la siguiente sintaxis:


							programa ejemplo_1
							# variables
							int x = 1 # Se crea x y se le asigna el valor 1
							int y = 0 # Se crea y y se le asigna el valor 0

							# main
								x = 20 # Ahora x vale 20
								y = 1 # Ahora y vale 1

								si (x > y)
									imprimir("X es mayor")
								sino
									imprimir("Y es mayor")
							fin_programa
						

¿Qué hace el programa del ejemplo?

Notación usada en la práctica

Para la práctica de pseudocódigo usaremos la siguiente sintaxis:


							programa ejemplo_2
							# variables
								bool hay_stock = False # Se crea la variable en falso
								float precio = 100.50 # Se crea precio
								str mensaje = "NO hay stock"
							# main
								si NO (hay_stock)
									imprimir (mensaje)
								sino
									imprimir(precio)

							fin_programa
						

¿Qué hace el programa del ejemplo?

Notación usada en la práctica

Para la práctica de pseudocódigo usaremos la siguiente sintaxis:


							# Ejemplo con la aspiradora robot
							programa ejemplo_3
							# variables
								int baldosas_limpiadas = 0
							# main
								mientras (NO hay_pared_delante)
									si (NO esta_limpio)
										limpiar
										balsosas_limpiadas = balsosas_limpiadas + 1
									avanzar
								# fin mientras
								imprimir("Se limpiaron",balsosas_limpiadas,"baldosas")
							fin_programa
						

¿Qué hace el programa del ejemplo?

¿Preguntas?

Constantes

Constantes

Ya vimos variables que, es básicamente un lugar para almacenar un dato y ese dato puede variar. Ahora bien, es posible también almacenar datos pero que los mismos deben permanecer sin alteración durante la ejecución del programa. Eso son las constantes.

Aunque pueda carecer de sentido al principio, las constantes son muy importante para la claridad del código.

Constantes

No veremos el uso de constantes en las prácticas de pséudo-código, pero sí tendremos en cuenta dicho concepto para mas adelante.

Es importante destacar que algunos lenguajes proveen mecanismos especiales para definir constantes. Y es una convención que las constantes estén siempre escritas en mayúsculas.

Entrada/Salida de algoritmos

Salida (output)

Ya hemos mencionado que un algoritmo tiene entrada (input) y salida output de datos.

Una salida es un dato que nos devuelve la computadora que podemos ver o escuchar. Por ejemplo, un texto en pantalla, una luz que se enciende o un sonido.

Se utiliza para tener un feedback del programa al usuario.

Salida (output)

Por ahora venimos trabajando con la salida que, en pseudocódigo, imprime un mensaje en pantalla.

Programa:


							imprimir("Hola Mundo")
						

Salida:


							Hola Mundo
						

Es una forma muy común de informar el estado interno de un programa y lo usaremos muy a menudo en nuestro proceso de aprendizaje.

Casi todos los lenguajes de programación proveen una instrucción para imprimir algo en pantalla. El famoso Hola mundo.

Entrada (input)

Los programas y algoritmos, procesan datos y generan salidas. Los datos deben obtenerlos de alguna forma, una de ellas es que el usuario los ingrese manualmente.

Los lenguajes tienen alguna forma de ingresar datos por teclado. Usaremos esta forma para ingresar manualmente.

Entrada (input)

Usaremos input para ingresar datos por teclado


							# variables
							int x = 0
							# main
							imprimir("Ingrese un valor numérico: ")
							x = input() # El programa se detiene 
							imprimir("El valor ingresado es", x)
						

De esa manera, el programa se detiene y espera que el usuario ingrese un dato por teclado y lo almacenará en la variable x


							Ingrese un valor numérico: 5
							El valor ingresado es 5
						

La variable donde se ingrese los datos será una variable más y se podrá operar con ella según lo permita el tipo de datos que estamos esperando.

Entrada (input)


							# variables
							int x = 0
							# main
							imprimir("Ingrese un valor numérico: ")
							x = input() # El programa se detiene
							si (x > 10)
								imprimir("El valor ingresado es mayor a diez")
							sino
								imprimir("El valor ingresado NO mayor a diez")
						
Como la variable espera un dato int se espera y se recibe un dato numérico.

							Ingrese un valor numérico: 5
							El valor ingresado NO mayor a diez
						

Por el momento, supondremos que los datos se ingresarán correctamente según su tipo de variable esperada.

¿Preguntas?

Ejercicios en clase

Ejercicio en clase 1

Escribir un programa que informe la cantidad de veces que fueron necesarias limpiar para que la baldosa (1,39) quede completamente limpia.

Ejercicio en clase 2

Escribir un programa que le pida al usuario una ubicación de x para ubicar al robot en la primer fila.

¡Fin de la clase!

Ir al inicio
Práctica 2
Exportar clase a PDF

Bibliografía

  • Apunte Curso ingreso 2019 - Capitulo 3, Facultad de Informática, UNLP.