lunes, 6 de octubre de 2014

Aprender a Programar

Cuando estamos hablando de programar, nos estamos refiriendo a crear conjuntos organizados de instrucciones que realicen una tarea para llegar a un objetivo concreto. Estos conjuntos de pasos o instrucciones se llaman también ALGORITMOS (no confundirlos con los Logaritmos, puesto que son cosas totalmente distintas).



Todos los ALGORITMOS o Programas requieren de una serie de pasos o instrucciones para ser realizadas.

Por ejemplo, el ALGORITMO para vestirse por las mañanas, requiere de los siguientes pasos:

1.- Ponerse los calcetines
2.- Ponerse los pantalones
3.- Ponerse los zapatos
4.- Ponerse la camisa
5.- Ponerse un jersey (si hace frio)

Estos pasos, pueden a su vez dividirse en subpasos (Ponerse la camisa purede por ejemplo dividirse en abrocharse los botones uno a uno, colocarse el cuello, meterla por los pantalones, etc...)

Es muy importante que estas instrucciones lleven un determinado orden, aunque hay algunas de ellas que si se intercambian entre sí no pasaría nada: Por ejemplo, podemos ponernos primero los pantalones y después los calcetines; Pero no podemos ponernos primero los zapatos y luego los calcetines ¿no?

Por eso, los pasos que ha de seguir un ALGORITMO o Programa deben estar ordenados de forma que lleguen al objetivo que estamos buscando (en este caso Vestirnos por la Mañana).

Otro ejemplo de un ALGORITMO o Programa es el de "Freir un Huevo":

1.- Sacar el huevo del frigo
2.- Sacar una sarten y echar un poco de aceite en ella
3.- Romper el huevo en un plato para ver si está malo
4.- Si el huevo esta bien, echarlo en la sarten
5.- Esperar durante 2 o 3 minutos
6.- Sacar el huevo frito a un plato usando con una espatula


En este algoritmo también podemos intercambiar ciertos pasos, y el resultado no variará. Por ejemplo podemos intercambiar los pasos 1 y 2, o incluso poner el paso 3 antes que el 2, etc...

ORDINOGRAMAS
Para representar de forma gráfica el funcionamiento de un algoritmo podemos usar una herramienta muy util llamada ORDINOGRAMA. Esta herramienta consiste en un conjunto de simbolos que unidos entre si nos permite mostrar ordenadamente los pasos o instrucciones de un Programa o Algoritmo.

Los simbolos usados en los ordinogramas son los siguientes:


Ejemplos de algoritmos representados con un Ordinogramas:

* Algoritmo que me pida 2 números, los sume y muestre el resultado por pantalla.

* Comprobar si una persona es mayor de edad

* Algoritmo que muestre por pantalla la tabla de multiplicar de un número determinado

* Algoritmo que muestre todas las tablas de multiplicar desde la del 1 hasta la del 10, tomando el algoritmo anterior como un subprograma.

* Algoritmo que muestre todos los números pares desde el numero 0 hasta el número que se le indique por teclado.

* Algoritmo que lea los goles que han metido los 2 equipos de un partido de futbol y me indique que equipo ha ganado o si han empatado.

* Algoritmo que permita elegir entre varias opciones: la primera será sumar 2 números, la segunda opción será restar 2 números, la tercera opción multiplicar 2 números, y la cuarta opción dividir 2 números.

EL PSEUDOCÓDIGO

El Pseudocógido es una herramienta muy utilizada en programación para convertir algoritmos desde el lenguaje humano a un lenguaje de programación, usando instrucciones en un lenguaje común, independientemente de cualquier lenguaje de programación.
Cada instrucción se escribe en una línea diferente, y las instrucciones pueden ser cualquier de las siguientes:
  • Leer
  • Escribir
  • Mientras
  • Fin_Mientras
  • Si
  • Fin_Si
  • Sino
  • Entonces
  • Hacer
  • etc...
Se pueden usar comentarios, que son aclaraciones que explican que es lo que hace el programa en general o alguna parte de él. Van entre asteriscos ( * comentario * ).

La estructura de un programa escrito en pseudocódigo es la siguiente:

PROGRAMA: NOMBRE DEL PROGRAMA
ENTORNO: 
        VARIABLES
        CONSTANTES
        TABLAS QUE SE VAN A USAR EN EL PROGRAMA
ALGORITMO : 
        SECUENCIA DE INSTRUCCIONES DEBIDAMENTE ORDENADAS
FIN_ALGORITMO
FIN_PROGRAMA

* EJEMPLO: Algoritmo de la tabla de multiplicar en pseudocódigo:

PROGRAMA: TABLA_DE_MULTIPLICAR

ENTORNO:
  VARIABLES:   i = 0  ,  num  ,  j

ALGORITMO:
   Pedir número por teclado
   Leer num
   Mientras i < 10 hacer
       j = num * i
       mostrar " num * i = j " por pantalla
       i = i + 1
   Fin_Mientras
FIN_ALGORITMO

FIN_PROGRAMA

* EJEMPLO: Hacer un programa que calcule la velocidad media de un coche en un viaje.

PROGRAMA: Velocidad_Media

ENTORNO:
  VARIABLES: distancia, tiempo, velocidad

ALGORITMO:
   Pedir la distancia recorrida
   Leer distancia
   Pedir el tiempo que se ha tardado
   Leer tiempo
   Velocidad = distancia / tiempo
   Mostrar "La velocidad media ha sido 'velocidad'"
FIN_ALGORITMO

FIN_PROGRAMA

* EJEMPLO: Programa que compruebe si una persona es mayor de edad.

PROGRAMA: Mayor_de_edad

ENTORNO:
  VARIABLES: edad

ALGORITMO:
   Pedir la edad
   Leer edad
   Si edad < 18 entonces
      Escribir Eres menor de edad
   sino
      Escribir Eres mayor de edad
   Fin_si
FIN_ALGORITMO

FIN_PROGRAMA

* Programa que pida una contraseña por teclado, y no termine hasta que la contraseña sea la correcta:

PROGRAMA: CONTRASENIA

ENTORNO:
  VARIABLES:  contrasenia = nada
  CONSTANTE: passwd = cebolla
ALGORITMO:
   Mientras contrasenia <> passwd
     Pedir contrasenia por teclado
     Leer contrasenia
   Fin_Mientras
   Mostrar "Contrasenia Correcta"
FIN_ALGORITMO

FIN_PROGRAMA

EL LENGUAJE DE PROGRAMACIÓN  C

El lenguaje de programación C es y ha sido el lenguaje de programación más importante y más usado por los programadores en todo el mundo desde su aparición en la decada de 1970.

Su creador fue Dennis M. Ritchie.

Además de este lenguaje de programación existen otros ampliamente usados actualmente como Java, C++, C#, Python, etc...


Un programa en Lenguaje C no es ni mas ni menos que un archivo de texto escrito con un editor de texto (como por ejemplo con el Bloc de Notas de Windows). Para escribir correctamente un programa en este lenguaje, debemos conocer las instrucciones usadas en el mismo, así como la estructura de los programas en C, y la forma correcta de usar esas instrucciones.

Una vez que tengamos nuestro archivo de texto escrito correctamente (a ese archivo se le llama CODIGO FUENTE), hay que traducirlo al lenguaje que es capaz de entender el microprocesador (CODIGO MÁQUINA), para ello hay que usar una herramienta llamada COMPILADOR., con lo cual obtendremos el archivo ejecutable en el que se encuentra mi algoritmo.

Bueno, empecemos viendo cual es la estructura de un programa en Lenguaje C:

BLOQUE DE DECLARACION:
- DIRECTIVAS PARA EL PREPROCESADOR:
  + Ficheros "include"
  + Constantes "define"

- DECLARACIONES GLOBALES
  + Declaraciones de variables globales
  + Declaraciones de funciones del programador

BLOQUE DE EJECUCION:
- FUNCION PRINCIPAL "main()"
  + Declaracion de variables locales
  + Sentencias ejecutables (instrucciones)
  + Finalización del programa "exit(0)"

- FUNCIONES DEFINIDAS POR EL PROGRAMADOR
  + Cabecera de la función
  + Declaración de variables locales
  + Sentencias ejecutables (instrucciones)
  + Sentencia de salida de la función "return()"

Ésta es la estructura general de un programa escrito en lenguaje C. Veamos un ejemplo de un programa en C con esta estructura:

/* Programa Calculadora. Realiza las operaciones de suma, resta, multiplicacion y división de dos numeros enteros */


BLOQUE DE DECLARACION:

/* Directivas para el preprocesador */

#include <stdio.h>
#include <conio.h>

/* Declaracion de funciones del programador */
int operar(int,int,char);

/* Declaracion de variables globales */
int resultado=0;


BLOQUE DE EJECUCION:

/* Función Principal, comienzo del programa */
void main(void)
{
  /* Declaración e inicialización de variables locales */
  int operando1=0;
  int operando2=0;
  char operacion;

  /* Petición por pantalla de los datos */
  printf("Introduce el primer numero:");
  scanf("%d",&operando1);
  printf("Introduce el segundo numero:");
  scanf("%d",&operando2);
  printf("Introduce la operacion:");
  operacion=(char)getche();

  /* Llamada a la función que realiza la operacion */
  resultado = operar(operando1, operando2, operacion);

  /* Mostrar el resultado en pantalla */
  printf("\n\n El resultado es: %d \n",resultado);

  /* Espera la pulsación de una tecla para terminar */
  getch();

  exit(0);


}  /* Fin del programa */


/* Funcion operar: Recibe dos operandos y el operador y devuelve el resultado */

int operar(int op1, int op2, char opr)
{

  /* Variable local, solo accesible desde esta función */
  int res=0;


  /* Bloque de sentencias if para ejecutar la operacion */
  if ( opr == '+' )
    res = op1 + op2;
  if ( opr == '-' )
    res = op1 - op2;
  if ( opr == '*' )
    res = op1 * op2;
  if ( opr == '/' )
    res = op1 / op2;

  return(res);  /* Devolver el resultado de la operacion */

}  /* Fin de la función operar */

Al escribir este programa en el lenguaje C, hay que poner mucho hincapié en no omitir ningun caracter, por muy pequeño que sea (  ;  {  } etc...  ), porque la falta de alguno de estos caracteres puede hacer que mi programa no se pueda compilar ( traducir a codigo máquina ), o que el algoritmo no funciones de la forma deseada.

VARIABLES EN EL LENGUAJE C


Una variable en cualquier lenguaje de programación, es un espacio reservado en la memoria RAM del ordenador, en el cual se va a guardar valores, ya sean numericos o de tipo caracter. Estos valores pueden cambiar a lo largo de la ejecución de mi programa.

Una variable en el lenguaje C tiene un tipo y un nombre. Es recomendable que el nombre se escriba en minusculas, aunque no es imprescindible. El tipo si que tiene que ir escrito en minusculas.

Hay que tener cuidado con las mayusculas y las minusculas en los nombres de las variables, puesto que dos variables como:  "manzanas"  y   "ManZaNas" serían dos variables distintas, aunque las 2 tengan el mismo nombre.

Hay 4 tipos principales de variables en C, que son:

- char : "character" o caracter, sirve para almacenar un caracter (letra o simbolo). Ejemplos:
           char letra='a';
           char numero='3';
           char otros='@';
           char linea;

- int : "integer" o número entero, se usa para almacenar números enteros. Ejemplos:
           int contador=3;
           int manzanas=5;
           int posicion;
           int numero_=2;

- float : numero real, se usa para almacenar numeros con parte entera y parte decimal. Ejemplos:
          float precio=1.0;
          float interes=3.2;
          float pi=3.1416;
          float area;

- double : se usa para guardar numeros reales con doble precisión. La diferencia con los float es que los double necesitan más cantidad de memoria en la RAM para almacenar el valor de las variables. Ejemplo:
          double precio=2,35;


Existe un tipo de datos adicional, void, que indica explicitamente que el tipo es "vacio" o "nulo". Este tipo de datos se puede usar en los 3 siguientes casos:

Caso 1: Para declarar explicitamente el tipo de una función que no devuelve valor alguno. Ejemplo:

   void mi_funcion();

Caso 2: Para declarar explicitamente una función que no tiene parámetros. Ejemplo:

   void mi_funcion(void);

Caso 3: Para crear punteros genéricos. Ejemplo:

   void *puntero;


Existen 4 modificadores para estos tipos de variables: short, long, unsigned y signed. Estos modificadores sirven para reservar más o menos memoria RAM para una variable determinada, o para decir si el valor de esa variable será sin signo o con signo.

Al tipo "int" se le pueden aplicar cada uno de esos 4 modificadores. El tipo "char" puede ser modificado mediante signed y unsigned. También se puede aplicar long al tipo double. Los modificadores de tipo preceden al tipo de datos. Ejemplos:

short int a;
long int b;
unsigned char x;
long double z;

La siguiente tabla indica el tamaño de cada tipo de variable con sus modificadores y los valores máximos y minimos que puede contener:






Ejercicios 1a Tanda (Tipos de variables y funciones sencillas):

1.- Escribir un programa para calcular la longitud de la circunferencia y el área del circulo para un radio introducido por teclado.


2.- Crear un programa que imprima un mensaje por pantalla junto con tres saltos de linea

3.- Crear un programa que tenga varias variables de todos los tipos vistos, se les asigne un valor a cada una de ellas, y se muestren dichos valores por pantalla.

4.- Crear un programa que tenga una variable real, cuyo valor sea "98,3562345". Se deberá imprimir en la primera linea ese número con un solo decimal, la segunda linea el mismo numero con 2 decimales, y así sucesivamente hasta mostrarse el numero completo.

5.- Escribir un programa que te pida el nombre y los apellidos, los guarde en variables de tipo cadena de caracteres, y a continuación los muestre por pantalla.

6.- Crear un programa que pida 3 numeros enteros, y los imprima por pantalla.

7.- Crear un programa que, sabiendo el radio y la altura de un cilindro, calcule su volumen, asi como su área lateral.

8.- Crear un programa que convierta grados Fahrenheit a grados Celsius.

9.- Crear un programa que pida un caracter por teclado, y a continuación dibuje un cuadrado por pantalla usando para ello ese caracter.

10.- Crear un programa que calcule la hipotenusa y los angulos de un triangulo rectángulo, a partir de los catetos.

11.- Crear un programa que a partir de una cantidad de segundos introducida por teclado, te muestre por pantalla cuantas semanas, dias, horas y minutos son.

12.- Crear un programa que te pida una cantidad de euros y te diga qué cantidad de billetes y monedas son.

13.- Escribir un programa que intercambie el valor de dos variables.

14.- Crear un programa que tenga 3 variables: A, B y C, con sus tres valores correspondientes. Este programa tiene que mover el valor de B a A, el valor de C a B, y el valor de A a C, y a continuación mostrarlo por pantalla.

15.- Crear un programa que lea un año, y te diga a que siglo pertenece.

16.- El sueldo bruto de un trabajador es 1200 euros. Sabiendo que se le descuenta de su nomina el 25%, calcular su sueldo neto.


SOLUCIONES (Ejercicios 1a Tanda):

1.- SOLUCION

#include <stdio.h>
#define pi 3.1416
float radio, longitud, area;
main()
{
   printf("Escriba el radio de la circunferencia en cm: ");
   scanf("%f",&radio);
   longitud=2*pi*radio;
   area=pi*radio*radio;
   printf("La logitud de la circunferencia es %f cm y el area es %f cm2",longitud,area);
   getch();
}

2.- SOLUCION

#include <stdio.h>

char mensaje[]="Hola que tal estas?";
main()
{
   printf("%s \n\n\n",mensaje);
}

3.- SOLUCION

Ejercicios 2a Tanda (Estructuras de control if y switch):

1.- Escribir un programa que lea 2 numeros por teclado y decida cual es el mayor.

2.- Dada una fecha de nacimiento (dd , mm , aaaa) de una persona, calcular su edad. Si es menor de 1 año, decir cuantos meses y dias tiene.

3.- Dado un año por teclado (aaaa) comprobar si es bisiesto o no lo es. Un año es bisiesto  si es multiplo de 4. Sin embargo los años multiplos de 100 solo son bisiestos cuando a su vez son multiplos de 400.

4.- Dado un mes y un año, calcular el numero de dias que tiene ese mes.

5.- Crear un programa que lea un numero por teclado y diga si es positivo, negativo o cero.

6.- Crea un programa que lea 3 numeros y diga cual es el mayor, y cual es el menor.

7.- El domingo de Pascua es el primer domingo después de la primera luna llena posterior al equinoccio de primavera, y se determina mediante el siguiente calculo sencillo:

A = año % 19
B = año % 4
C = año % 7
D = ( 19 * A + 24 ) % 30
E = ( 2 * B + 4 * C + 6 * D + 5 ) % 7
N = 22 + D + E

donde N indica el numero de dia del mes de marzo ( si N es igual o menor que 31 ) o abril ( si es mayor que 31 ). Crear un programa que lea un año (aaaa) por teclado y calcule la fecha del domingo de Pascua de ese mismo año.

8.- Crear un programa que lea una nota por teclado y diga si esa nota es: Suspenso, Aprobado, Bien, Notable, Sobresaliente o Matricula de Honor.

9.- Crear un programa que lea 3 numeros por teclado y muestre cual es el menor de ellos.

10.- Crear un programa que lea una fecha por teclado y te muestre el signo del Zodiaco correspondiente.

11.- Dado el numero de orden de un dia de la semana, escriba por pantalla el nombre de ese dia.

12.- Dado un numero por teclado, indicar si es par o impar.

13.- Dado un numero por pantalla, indicar si es capicua o no.



Ejercicios 3a Tanda (Bucles while y for):

1.- Calcula el factorial de un numero leido por teclado con un bucle while, otro for, y otro until.

2.- Crear un programa que lea 15 notas por teclado, y después calcule la media aritmética de dichas notas.

3.- Calcular si un numero dado por teclado es primo o no

4.- Crear un programa que calcule la suma de los primeros 70 numeros enteros.

5.- Calcular la suma de una serie de numeros introducidos por el teclado.

6.- Contar el número de enteros negativos introducidos por teclado

7.- Visualizar por pantalla una figura como la siguiente:

#
##
###
####

siendo variable el número de lineas que se mostrarán.

8.- Crear un programa que calcule el mayor, el menor y la media aritmética de N números introducidos por teclado. El valor de N se dará al principio del programa.

9.- Calcular todos los números de 3 cifras tales que la suma de los cubos de las cifras es igual al valor del número.

10.- Genere un numero aleatorio y guardelo en una variable, y a continuación el usuario tendrá que adivinarlo. El programa le preguntará por valores del número, y le tendrá que decir si el numero buscado es mayor o menor, hasta que el numero sea acertado.

11.- Las cuatro primeras letras del alfabeto ocupan los vértices de un rectángulo. Escriba un programa para hacer girar las letras en el sentido de las agujas de un reloj si pulsamos la tecla 'd' o en sentido contrario si pulsamos la letra 's'

12.- Crear un programa que descomponga un número N en sus factores primos.

13.- Dada una frase introducida por teclado, crear un programa que cuente el número de palabras que tiene y la longitud de la palabra mayor.

14.- Crear un programa que calcule raices cuadradas mediante aproximaciones sucesivas y luego compare el resultado final con el obtenido mediante la función sqrt().

15.- Dado el dia de la semana correspondiente al dia primero de un mes, crea un programa que muestre por pantalla el calendario de ese mes.

16.- Dado un numero por teclado decidir si es capicua


No hay comentarios:

Publicar un comentario