martes, 11 de abril de 2017

introduccion a c y pasos para descargar compilador Devc++


external image Image5734.gif



 Introducción a Dev-C++


external image dev-c%252B%252B.jpg






external image lista.png


Información:
Curso "Introducción a Dev-C++", En este Curso podrás aprender los principios de programación en el lenguaje C++ en el Entorno Dev-C++. C++ Es un lenguaje de Programación diseñado en la época de los 1980, con el propósito de extender y evolucionar al lenguaje C, y para procrear la programación orientada o objetos.
Dev-C++ es un entorno de desarrollo integrado para programar en lenguaje C/C++. Usa MinGW que es una versión de GCC como su compilador. Dev-C++ puede además ser usado en combinación con Cygwin y cualquier compilador basado en GCC. Para poder descargar Dev-C++, puede ser des este link en**MEGA**. O bien desde sourceforge.


Contenido:
1 - Introducción
2 - Descargar e Instalar Dev-C++
3 - Hola Mundo
4 - Comentarios
5 - Cout y Cin
6 - Short, Int y Long
7 - Float y Double
8 - Char y Bool
9 - Operadores Matematicos Basicos
10 - Operadores Relacionales
11 - Operadores Logicos
12 - Sentencia If-Else
13 - Sentencia Switch
14 - Ciclo While
15 - Ciclo Do-While
16 - Ciclo For
17 - Punteros
18 - Funciones
19 - Vector (Arreglos)
20 - Matriz (Arreglos)
21 - Matriz de Matrices (Arreglos)
22 - Operación Insertar Arreglos
23 - Operación Mostrar en Arreglos
24 - Operación Modificar en Arreglos
25 - Operación Eliminar en Arreglos
26 - Formula General
27 - Gotoxy
28 - Mover Asterisco con Gotoxy



Cool C/C++

Programacion en C/C++

Primero que nada, debes saber que esta librería es exclusiva para el compilador Dev-C++ en su última versión, por lo que debes tenerlo instalado y configurado corréctamente, si no es así usas los siguiente links antes de continuar con este manual:



#include <stdio.h>

  • #include <conio2.h>

  • int main()
  • {
  • clrscr();
  • gotoxy(20,40);
  • printf("Hola, esto es un mensaja de prueba");
  • getch();
  • return 0;
  • }


**Descarga del Dev-C++**

Instalación del Dev-C++

Este manual supone que has descargado el siguiente archivo:

Librería conio Dev-C++ (conio.zip)

Instalación de la librería

  1. Descomprime el archivo en cualquier directorio y verás que aparece el fichero conio-2.0-1mol.DevPak, le das doble click y se te presenta una pantalla como la siguiente:external image c1.png


    Le das click al botón Install y empezará el proceso de instalación


  1. Una vez terminada la instalación se presentan la siguiente pantalla indicandonos que le proceso ha sido exitoso. Click enFinish y terminamos esta parte.external image c2.png


Configuración de la librería

  1. Ahora vamos a configurar la librería para poder usarla, para ello abre el compilador y ve a Herramientas -> Opciones del compilador, en la ficha Compilador activa la casilla Añadir estos comandos a la línea de comandos del linker y el cuadro que está debajo escribe -lconio (Ojo: la primera letra es: ele), puedes fijarte en la siguiente pantalla:external image c3.png


    Una vez hecho esto pulsa el botón Aceptar para guardar los cambios


Prueba de la librería

  1. Abre el compilador, vas a Archivo -> Nuevo -> Proyecto y en la pestaña Basic seleccionas Console Application y das click enAceptar:external image c4.png


  1. Selecciona en donde quieres guardar el archivo del proyecto y se te presentará a continuación un código de ejemplo. Reemplaza todo el código escrito por el siguiente:
>
Código:












  • Nota que para usar la librería, tienes que poner #include <conio2.h>, esto es vital, caso contrario no funcionará.

  • Ahora tendrás algo como lo siguiente:external image c5.jpg


  1. Presiona CTRL+S para guardar el archivo fuente mostrado. Luego presiona CTRL+F9 para compilar el programa, se presentará un cuadro indicandonos que la compilación ha sido exitosa, damos click en Cerrar.external image c6.png


  1. Por último presiona CTRL+F10 para ejecutar el programa, verás una pantalla como la que sigue, puedes presionar cualquier tecla para salir.external image c7.png


Consideraciones finales

  1. Debes saber que la librería conio y la winbgi no son compatibles entre si, no podrás usar las 2 a la vez en el mismo proyecto. Si usas la conio, debes asegurarte que no estés haciendo referencia a la winbgi, para ello:

    • Ve a Proyecto -> Opciones del Proyecto -> Parámetros, fíjate que en la ventana Linker no tengas algo como:

      || Código:
      Expandir
      Expandir
      Expandit todo
      Expandit todo
      Contraer
      Contraer
      Seleccionar todo
      Seleccionar todo
||


    • Si lo tienes debes borrarlo.


    • Ahora ve a Herramientas -> Opciones del compilador, en la ficha Compilador en la casilla Añadir estos comandos a la línea de comandos del linker borra la parte en caso de tenerla:

      || Código:
      Expandir
      Expandir
      Expandit todo
      Expandit todo
      Contraer
      Contraer
      Seleccionar todo
      Seleccionar todo

||

¿Que es la Programacion?



Introduccion:
La Programacion ha pasado a tener un papel importantisimo en la vida diaria, gracias a ella podemos programar los ordenadores, electrodomesticos, robots y otras maquinas. La Programacion intenta resolver ciertos problemas que nos surgen todos los dias basandose en una metodologia.
El conjunto de problemas que son resolubles utilizando un computador es indudablemente, muy extenso. El concepto de algoritmo es fundamental para la actividad de resolver problemas con computadoras, por lo que necesitamos adquirir un conocimiento firme sobre lo que es y no es con objeto de llevar a cabo de forma eficaz la actividad de resolver problemas ya que este es el proposito de escribir algoritmos.
Definiciones:
  • Un programa de computador es un conjunto de instrucciones ordenes dadas a la maquina que producirán la ejecución de una determinada tarea. A la persona que escribe programas se le denomina Programador, al proceso de escribir programas se denomina Programacion.
  • En informática, la programacion es un proceso por el cual se escribe (en un lenguaje deprogramacion), se prueba, se depura y se mantiene el código fuente de un programa informático.
  • La Programacion es la accion de escribir un conjunto de instrucciones escritas en un determinado lenguaje, que dirigen a un ordenador para la ejecución de una serie de operaciones, con el objetivo de resolver un problema que se ha definido previamente.
  • La Programacion es un conjunto de tecnicas utilizadas para desarrollar programas que sean faciles de leer, depurar (poner a punto) y modificar o mantener.
Programacion y Algoritmos
Un programador no solo debe aprender la tarea que realiza cada instruccion sino que ademas debe saber combinar estas instrucciones para realizar un tarea en particular. Al considerar este problema desde un punto de vista diferente, un programador primero debe resolver el problema paso a paso y luego tratar de encontrar las instrucciones (o series de instrucciones) apropiada que resuelva el problema. La solucion paso a paso se conoce como algoritmo. Los algoritmos juegan un papel muy importante en la ciencia de la computacion.
Programacion y Ingenieria de Software:
Al principio la programacion de ordenadores se veia como un arte, todo era cuestion de dominar un lenguaje de programacion y aplicar habilidades personales de resolucion de problemas.
En la actualidad no es aceptable escribir un programa que realiza una tarea sin seguir principios y metodos de ingenieria de software para obtener programas confiables.
Una buena formacion en programacion no solo debe incluir el estudio de los esquemas algoritmicos, y estructuras de datos mas importantes, el analisis de algoritmos y el paradigma orientado a objetos. Una buena formacion en programacion tambien deberia incluir, una formacion en ingenieria de software y estudiar ingenieria de requisitos, metodos de desarrollo de software, gestion de proyectos, y sobre todo, adquirir experiencia practica participando en proyectos de software.
Programacion y Creatividad
La programacion es una actividad en la que la creatividad juega un papel crucial, por ello un buen programador ademas de tener una buena formacion academica es una persona muy creativa y con una gran capacidad de abstraccion, esencial para la resolucion de problemas. Los programadores siempre deben tener presente que se enfrentan a una actividad muy compleja y deben desconfiar de los lenguajes, metodos o herramientas que se ofrecen como soluciones magicas para construir software de forma casi automatica y sin apenas esfuerzo, sin dejar lugar a la creatividad. Ellos deben saber, de acuerdo a Brooks, que las tecnologias abordan problemas accidentales. Pero los problemas esenciales pueden ser abordados a traves de solidos principios software. El buen programador debe ser un persona que sabe trabajar en equipo, que conoce la importancia del trabajo metodico, y que no se comporta como un programador complusivo que se plantea la programacion como una batalla a muerte contra la maquina, sin tregua ni cuartel.

Lenguaje C
El lenguaje C, fue diseñado por Dennies Ritchie en 1970, en los laboratorios Bell de Estados Unidos.
Este lenguaje presenta varias características, entre las cuales están:
  1. Lenguaje de programación de propósitos generales
  2. Permite la Programación Estructurada
  3. Abundancia de Operadores y Tipos de Datos
  4. No está asociado a ningún sistema operativo ni a ninguna máquina
  5. Popular y Eficaz
  6. Permite el desarrollo de Sistemas Operativos y programas de aplicación
  7. Portabilidad
  8. Existen las librerías en las bibliotecas
  9. tiene sólo 32 palabras reservadas
external image Image5733.gif
*bibliotecas: es el archivo que contiene código objeto de una colección de rutinas o funciones que realizan tareas determinadas y se pueden utilizar en los programas.
*Enlazador: Programa que convierte las funciones de la biblioteca estándar de C, con el código que ha traducido el compilador .
Estructura de Un programa en C
Ya estamos apunto de entrar a lo más interesante, a la programación en sí; pero es necesario, primero; mencionar algunos de los errores típicos al programar, para que el lector sepa como identificarlos y así los pueda corregir.
  1. ERROR DE SINTAXIS: Estos errores son producidos, cuando se hace mal uso de las reglas del lenguaje de programación, y se violan las normas de sintaxis, de ese lenguaje (en nuestro caso C); estos errores son fáciles de detectar por que generalmente es el compilador, que los identifica (Y hasta muestra la línea donde se encuentra dicho error, pero eso depende de la versión del compilador que estemos usando). En este curso he usado Turbo C, en su versión 2 y 3.
  2. ERRORES DE EJECUCIÓN: Estos errores se producen , cuando le indicamos a la computadora, realizar una determinada acción, y esta la comprende, pero no puede ejecutarla. Por ejemplo, indicarle a la computadora una división entre cero, sumar dos variables a las cuales no se les ha signado valoralguno, etc.
  3. ERRORES DE LÓGICA: Muchas veces, cuando estamos programando, el compilador no nos indica errores de sintaxis, ni de lógica; pero el resultado de nuestro programa, esta fuera del rango esperado, esto es producto de un error de lógica en el código de nuestro programa. Este tipo de errores son muy difíciles de identificar y por supuesto de corregir, ya que generalmente hay que revisar línea por línea de nuestro programa. Ejemplo: El sueldo negativo de un empleado, etc.
La estructura de un programa en C, consta de algunas partes esenciales: las cuales son uno o más módulos llamadas funciones, siendo main() la primera función que es llamada cuando empieza la ejecución del programa .
Cada función debe contener :
>Directivas de pre-procesador (instrucciones que se le dan al compilador
#include antes de compilar)
#define
ejemplo:
#include <stdio.h>
Lo que se le esta indicando, es que de las librerías, "Incluya" en nuestro programa la directiva stdio.h, la cual contiene las funciones de
entrada y salida de datos (standar input output, en inglés). Si necesitamos las funciones matemáticas, debemos especificarlo con la declaratoria:
#include <math.h>
Si necesitamos las funciones de cadenas:
#inlcude <stlib.h>
Es necesario aclarar que esto se hace al inicio del programa, y las declaratorias deben llevar el símbolo de numeral (#) seguido de la sentencia "include", y entre signos de mayor y menor que (<>) el nombre de la directiva.
>Declaraciones Globales
pueden ser:
*Prototipos de Funciones: También llamadas declaraciones de funciones, lo cual se tratará más adelante
*Declaraciones de Variables
cabe destacar, que esto se hace seguido de los #include y los #define.
>Función Principal main()
Esta es la función principal de nuestro programa, su cuerpo, por ello NUNCA debe faltar, ya que en ella van contenidas todas las instrucciones de nuestro programa.
main()
{
declaraciones locales /*Comentarios */
sentencias
}
la función main() va al inicio, luego abrimos llaves y dentro de ellas van las declaraciones de variables, las sentencias de lectura, cálculos, asignaciones e impresiones, y con la última llave ( } ), le indicamos el final del programa.
Ejemplo 1.1
Programa que a
partir del radio, calcula el área de un circulo
#include <stdio.h>
#include <conio.h>
main()
{
float radio, area;
printf("Radio=\n");
scanf("%f", &radio);
area=3.14159*radio*radio;
printf("El Area es %f\n\n", area);
getch();
return 0;
}
Explicación:
Le indicamos al compilador, que usaremos las bibliotecas <stdio.h> y <conio.h>, ¿por qué <conio.h>?, por que esta biblioteca, contiene las funciones getche(), getch(), etc, y de una de ellas hacemos uso en este pequeño ejemplo.
Luego, le indicamos a nuestro programa el incio de nuestro programa (función main() ).
Declaramos, como valores reales, las variables radio y area (de esto se hablará más adelante). Luego, con la instrucción printf(), mostramos en pantalla el mensaje (Radio=) y scanf se encarga de leer el valor digitado por el usuario. Posteriormente area, es igual al la multiplicación de pi (3.14159), el radio al cuadrado. Se muestra en pantalla ese resultado, luego el programa espera que se presiones cualquier tecla (getch() ) y no retorna ningún valor (return 0).
Ejercicios
Defina los siguientes conceptos:
  1. Programa:_
  2. CPU:_
  3. Software:_
  4. Memoria Principal:
  5. Lenguaje de Programación:__
Indique que tipo de error (Error de sintaxis, error de ejecución o error lógico), en cada uno de los siguientes enunciados
  1. Utilizar una variable antes de asignarle un valor:
  2. asignarle un valor real a una variable declarada como entero:
  3. al cometer este error, los resultados arrojados por el programa no son los que se esperaban:
  4. Un programa no puede ser ejecutado por el computador, mientras tenga este tipo de errores:
  5. estos errores no son detectados por el compilador, ni tampoco son errores de ejecución:_
Mencione y Explique, la estructura general de un programa en C:
Capitulo II: " Lenguaje de Programación Estructurado C"
¿Por qué programación estructurada?
Si el lector recuerda, en el capítulo anterior, se hablaba de las características del lenguaje C, y en una de ellas se decía que, el Lenguaje de Programación C, permite la programación estructurada. Esto implica que, haremos uso de una técnica llamada Lógica Estructurada, y esto no es más ni menos que una de lastécnicas básicas y fundamentales de la programación estructurada, su objetivo es diseñar soluciones"correctas" y confiables a los problemas, ignorando al principio consideraciones de eficiencia como la minimización del uso de memoria y el tiempo de su respuesta.
Lo que significa que, haremos uso de esa técnica para crear programas correctos; esta es una técnica que ayuda al programador (un tanto a la fuerza), a ser ordenado, al momento de programar.
Los frutos de ésta técnica se reflejan cuando, queremos darle mantenimiento al programa, es más fácil hacerlo ya que hemos programado de una manera lógica y ordenada. Al igual que al momento de corregir errores de sintaxis y lógica, esta técnica nos facilita el trabajo.
Ahora iniciemos, de una vez por todas, lo que el lector está esperando:
Sintaxis de Algunos Elementos de Un Programa en C
  1. como su nombre lo indica, estos son los nombres, con los que identificamos las variables, constantes, funciones, vectores, etc, de nuestro programa. Para ello debemos tener presente algunas reglas:
    >pueden tener de 1 hasta un máximo de 31 caracteres
    >Debe de iniciar con una letra o subrayado
    Ejemplo:
    (Correctos)
    c2
    _c2
    ( Incorrectos)
    2c
    2 c
    >No es lo mismo una minúscula que una mayúscula, ya que c distingue de entre ellas. Ejemplo: BETA ¹ Beta ¹ beta ¹ BeTa
    >No son válidos los identificadores de palabras reservadas. En un inicio hablamos que c posee 32 palabras reservadas, entre ellas están:
    float char while
    int else return
    Estas palabras no pueden ser utilizadas para identificar variables, constantes, funciones etc
  2. identificadores:En todo programa que estemos diseñando en C (o en cualquier otro lenguaje de programación); es necesario insertar ciertos comentarios en el código, para que en posteriores modificaciones y cuando se realice el mantenimiento, podamos recordar cosas importantes ya que, en los comentarios, podemos incluir aspectos importantes del programas, explicaciones del funcionamiento de las sentencias, etc.
    El formato de los comentarios en C, es el siguiente:
    /*este es un comentario en C */
    /*Podemos colocar mucha información importante
    de nuestro Programa */
  3. ComentariosPermite que, el pre-procesador, incluya funciones proporcionadas por el fabricante, a nuestro programa. Ejemplo:
    #include <stdio.h> /* le decimos al compilador que incluya la librería
    stdio.h */
  4. La Directiva #includepermite definir constantes simbólicas. Pero hasta ahora ha sido poco lo que hemos hablado acerca de las constantes, es por ello que en aprovechando, este especio; dedicaré unas cuantas líneas para aclarar ello.
    Las variables pueden cambiar de valor, durante la ejecución del programa, por eso es que se llamanvariables. Y las constantes como su nombre lo indica, son valores que permanecen constantes durante toda la ejecución del programa, un ejemplo de ello, es el valor de p (pi) que equivale a 3.14159....
    En C existen diferentes tipos de variables, entre ellas tenemos:
    1. Constates Numéricas:
    Son valores numéricos, enteros o de reales (de punto flotante). Se permiten también constantes octales y hexadecimales.
    2. Constantes Simbólicas:
    las constantes simbólicas tiene un nombre (identificador), y en esto se parecen las variables. Sin embargo, no pueden cambiar de valor a lo largo de la ejecución del programa. En C, se pueden definir mediante el preprocesador.
    (Tomado del Manual "Aprenda Lenguaje ANSI C como si estuviera en Primero" Escuela superior de
    Ingenieros Industriales. Universidad de Navarra. Febrero de 1998).Ejemplo:
    #define N 100
    #define PI 3.1416
    #define B 45
    Esta directiva (#define) va, inmediatamente después de los #include. Se escribe la directiva, se deja un espacio y se escribe el identificador de la constante, otro espacio y su valor.
  5. la directiva #define/ ! % ^ & * () - + {} [] \ ; : <> ¿ .
  6. Signos de Puntuación y de SeparaciónAl momento de programar en C, esta es una regla de oro, y la causa por la cual nuestro programa puede darnos muchos errores de sintaxis, cuando se omite, al final de cada sentencia un punto y coma (;). Ya que con ello le indicamos al compilador que ha finalizado una sentencia.
    NOTA: el lector no debe confundirse, las directivas: #include, #define. Main(), no llevan punto y coma, por que no son sentencias.
    Recordemos el ejemplo 1.1, y vea que al final de cada sentencia lleva su correspondiente punto y coma:
    #include <stdio.h>
    #include <conio.h>
    main()
    {
    float radio, area;
    printf("Radio=\n");
    scanf("%f", &radio);
    area=3.14159*radio*radio;
    printf("El Area es %f\n\n", area);
    getch();
    return 0;
    }
  7. Todas las Instrucciones o sentencias del programa terminan con un punto y coma (;)Esta consideración toma mayor auge, cuando veamos las instrucciones anidadas en condiciones, ciclos, etc.
    Ejemplo:
    {
    ...
    printf("Hola\n\b");
    ...
    }
  8. Todo Bloque de Instrucciones debe ir entre llaves
  9. En una línea se pueden escribir más de una instrucción separada por un punto y coma
Esto es posibles, por que con el punto y coma, le estamos indicando al compilador el fin de una sentencia o instrucción.
Ejemplo:
b = c + d; d = 2*k;
Tipos de Datos en C
Un tipo de dato, se define como un conjunto de valores que puede tener una variables, junto con ciertasoperaciones que se pueden realizar con ellas.
*TIPOS DE DATOS PREDEFINIDOS




















NOTA: El tipo de dato string y bolean NO existen en C. Sin embargo más adelante veremos una forma de cómo hacer uso de las cadenas de texto.
Declaración de Variables
Una Variable, como su nombre lo indica, es capaz de almacenar diferentes valores durante la ejecución del programa, su valorvaría. Es un lugar en la memoria el cual, posee un nombre (identificador), y un valor asociado.
La declaración de variables en C, se hace en minúsculas.
Formato:
Tipo_de_dato nombre_de_la_variable;
Ejemplos:
*Declare una variable de tipo entero y otra de tipo real, una con el nombre de "x" y otra con el identificador "y":
int x;
float y;
*Declare una variable de tipo entero llamada moon, e inicialícela con un valor de 20
int x = 20;
*Declare una variable de tipo real, llamada Pi, e inicialícela con una valor de 3.1415
float pi=3.1415;
*Declare una variable de tipo caracrter y asígnele el valor de "M"
char car = ’M’;
*Declare una variable llamada nombre, que contenga su nombre:
char nombre[7]="Manuel";
Explicación:
En el apartado anterior, se explicó, que C, no tiene el tipo de dato llamado string, o mejor conocido como cadenas de texto, pero nosotros podemos hacer uso de ellas, por medio de un arreglo, (de lo cual hablaremos con más detalle, posteriormente); pero para declarar este tipo de datos colocamos el tipo de datos, es decir la palabra reservada char luego el nombre, e inmediatamente abrimos, entre corchetes, va el número de letras, que contendrá dicha variable. Es muy importante que al momento de declarar el tamaño, sea un número mayor, al verdadero número de letras; por ejemplo, la palabra "Manuel", solo tiene 6 letras, pero debemos declararlo para 7 letras ¿Por qué?.
Veámoslo gráficamente, en la memoria, C crea un variable llammada nombre y esta posee la palabra Manuel, así:

external image Image5735.gif
en realidad, hay 7 espacios, pero la cuanta llega hasta 6, por que c, toma la primera posición como la posición cero, y para indicar el final de la cadena lo hace con un espacio en blanco.
Declaración de Constantes
Las constantes, como su nombre lo indica, son valores que se mantiene invariables durante la ejecución del programa.
Su formato es el siguiente:
const tipo_de_dato nombre= valor;
donde const, es una palabra reservada, para indicarle al compilador que se esta declarando una constante.
Ejemplo:
const int dia=7;
const float pi=3.14159;
const char caracter= ‘m’;
const char fecha[]="25 de diciembre";
Caso 

Especial Constantes Simbólicas
Las constantes simbólicas, se declaran mediante la directiva #define, como se explicó anteriormente. Funcionan de la siguiente manera, cuando C, encuentra el símbolo que representa a la constante, lo sustituye por su respectivo valor.
Ejemplo:
#define N 150
#define PI 3.1416
#define P 50

external image Image5736.gif
NOTA: El lector debe comprender algunas diferencias fundamentales entre la declaratoria const y #define; la primera, va dentro del programa, es decir, dentro de la función main() o alguna función definida por el usuario, mientras que #define va en el encabezado, después de los #include, por eso estas no llevan al final el punto y coma (;).
Entrada y Salida Por Consola
Entrada y Salida por consola: se refiere a las operaciones que se producen en el teclado y en la pantalla de la computadora. En C no hay palabras claves para realizar las acciones de Entrada/Salida, estas se hacen mediante el uso de las funciones de la biblioteca estándar (stadio.h).
Para utilizar las funciones de E / S debemos incluir en el programa el archivo de cabecera stdio.h, mediante la declaratoria:

#include <stdio.h>

Las Funciones de E / S más simples son getchar() que lee un carácter del teclado, espera un retorno de carro (¿ ), es decir unenter y el eco aparece. Es decir la tecla presionada.
*putchar(): Imprime un carácter en la pantalla, en la posición actual del cursor.
Algunas variaciones:
*getche(): Aparece el Eco
*getch(): No aparece el eco
estas instrucciones se encuentran en la biblioteca conio.h
Veamos un ejemplo:
Programa que espera que se presiona una tecla, la muestra en pantalla, y además muestra el carácter siguiente:
Ejemplo 2.1:
#include <stdio.h>
#include <conio.h>
main()
{
char car;
clrscr(); /*Se encarga de borrar la pantalla por eso se llama claer screen*/
car=getchar();
putchar(car+1);
getch();
return 0;
}
Ejemplo 2.2:
#include <stdio.h>
#include <conio.h>
main()
{
char x; /*Declaramos x como caracter*/
printf("Para Finalizar Presione cualquier Tecla:");
x= getchar();/*Captura y muestra el caracter presionado*/
getch();/*Espera a que se presione cualquier otra tecla para finalizar*/
return 0;
}
Entrada / Salida de Cadenas
Una Cadena, es una frase, compuesta por varias palabras. En C, podemos hacer uso de las cadenas, mediante, la sentencia:
*gets(): Lee una cadena de carácter introducido por el teclado. Se puede introducir caracteres hasta que se de un retorno de carro, (enter); el cual no es parte de la cadena; en su lugar se coloca un terminador nulo \0.
*puts(): Imprime en pantalla, el argumento guardado en la variable que se manda a impresión.
Ejemplo 2.3
Diseñe un programa en C, que lea su nombre; lo salude y mande a impresión su nombre, usando gets e y puts
#include <stdio.h>
#include <conio.h>
main()
{
char nombre[40];
puts("digite su nombre:");
gets(nombre);
puts("BIENVENIDO:");
puts(nombre);
getch();
return 0;
}
NOTA: No haré mucho énfasis en estas instrucciones, ya que más adelante, veremos las instrucciones scanf() y printf(), que son mucho más completas.
Entrada / Salida Por Consola con Formato
Las funciones gets, puts, getch, etc; son utilizadas, en una forma un poco rudimentaria, sin embargo; C posee otra serie de funciones, que son más completas, las cuales nos permiten leer e imprimir (en pantalla), datos con un formato determinado, el cual ha sido definido por el programador.
Salida Hacia Pantalla [printf()]
Se utiliza para imprimir en pantalla cadenas de texto solas, o mandar a pantalla el valor de alguna variable, o constante, o una combinación de las anteriores. Su formato es el siguiente:
Printf("cadena de control", nombre_de_variables);
En donde:
Cadena de control: contiene códigos de formato que se asocian con los tipos de datos contenidos en las variables.


CódigoFormato
%dUn entero
%iUn entero
%cUna caracter
%sUna cadena
%fUn real
%ldEntero largo
%uDecimal sin signo
%lfDoble posición
%hEntero corto
%oOctal
%xHexadecimal
%eNotación Científica
%pPuntero
%%Imprime Porcentaje
TABLA 2.2
Ejemplo:
Int suma=10;
Printf("La suma es %d", suma);
Explicación:
Declaramos primero la variable como entero, con un valor de 10, luego la función printf, el mensaje va entre comillas dobles, luego en el lugar que queremos que aparezca el valor, colocamos el formato de la variable, cerramos comillas, luego una coma y el nombre de la variable. Es importante recalcar, que en la posición que coloquemos el formato es donde aparecerá el valor de la variable en este caso, 10.
Ejemplo:
Char nombre[7]="Manuel";
printf("%s es en creador de este manual", nombre);
NOTA: el número de argumentos que tendrá la función printf() es indefinido, por lo que se puede transmitir cuantos datos sean necesarios.
Ejemplo:
Int x=12, y=15;
char z=’D’;
float v=10.2563;
printf("Estos son números %d %d %f; y esta es una letra %c", x,y,v,z);
También podemos hacer algunos arreglos, al formato de salida, por ejemplo, si deseamos imprimir un número real justificado a la izquierda podemos colocar:

printf("%-f", z);
para justificar colocarle signo: %+f
%20f >> Longitud numérica del campo
%.2f >>Imprime el valor con sólo dos decimales
Secuencias de Escapes
Indica que debe ejecutar algo extraordinario.


Carácter de EscapeExplicación
\nSimula un Enter. Se utiliza para dejar una línea de por medio
\tTabulador horizontal. Mueve el cursor al próximo tabulador
\vTabulador vertical.
\aHace sonar la
alarma del sistema
\\Imprime un carácter de diagonal invertida
\?Imprime el carácter del signo de interrogación
\"Imprime una doble comilla
TABLA 2.3
Ejemplos:
1) printf("Manuel \n Antonio \n Ortez\n\n);
2) int x=15;
printf("El Valor de la variable es %d\n\n", x);
3) float x=8.5689, pi=3.1416;
printf("El valor de x es %.2f\t\n",x);
printf("\t Y el valor de pi es %.2f\n\n", pi);
Entrada Desde Teclado
Se realiza mediante la función scanf(), su formato es:
scanf("Cadena de control", Dirección y nombre de la variable);
Ejemplo 2.4
Diseñe un programa que guarde y muestre la nota del 

examen final de 3 alumnos
#include <stdio.h>
#include <conio.h>
main()
{
float n1, n2, n3;
char nom1[10], nom2[10], nom3[10];
printf("Introduzca el Nombre del Primer alumno:\n");
scanf("%s", nom1);
printf("Introduzca la nota de este alumno:\n");
scanf("%f", &n1);
printf("Digite el nombre del segundo alumno:\n");
scanf("%s", nom2);
printf("Su nota es:\n");
scanf("%f", &n2);
printf("Finalmente el ultimo alumno es:\n");
scanf("%s", nom3);
printf("Y su nota es:\n");
scanf("%f", &n3);
getch();
return 0;
}

Explicación:
Primero, iniciamos con las directivas del preprocesador:
#include <stdio.h>
#include <conio.h>
Con la cual le indicamos al compilador, que de su librería añada a nuestro programa las funciones estándar de entrada y salida; así como las entradas y 

salidas por consola (stadio.h y conio.h, respectivamente).
Luego declaramos la variables, que contendrán las notas como reales (o de punto flotante:
float n1, n2, n3;
Ya que, las notas pueden ser deciamales, por ejemplo 9.6, 8.5; etc.
Luego declaramos las variables, que contendrán las notas, caba aclarar que al momento de las declaraciones las podemos hacer en el orden que deseemos, pueden ser primeros los tipo char y luego los float, o viceversa, pero teniendo el cuidado que las variables que contendrán las nombres lleven la longitud máxima entre corchetes, para nuestro caso, 10. ( [10] ).
Posteriormente, mostramos en pantalla, un mensaje con el cual le indicamos al usuario que introduzca los datos respectivos:
printf("Introduzca el Nombre del Primer alumno:\n");
A continuación, va la función scanf, primero y entre comillas el tipo de dato que va a leer:
scanf("%s", nom1);
como puede notarse, va a leer la cadena de texto que contendrá la variable nom1. cabe aclarar, que cuando se van a leer cadenas de texto, no es necesario colocar la dirección (&), lo cual no sucede con los otros tipos de datos:
scanf("%f", &n1);
Después de haber leído los datos, espera a que se presiones cualquier tecla para finalizar la ejecución del programa.
Ejemplo 2.5
Programa que imprime dos veces, la cadena de texto que se ha introducido:
#include <stdio.h>
#include <conio.h>
main()
{
char cadena[15];
printf("Digite la cadena:\n\n");
scanf("%s", cadena);
printf("\n\t LA CADENA ES LA SIGUIENTE:\n\n");
printf("*\n");

printf("%s\n", cadena);
printf("%s\n", cadena);
printf("*\n");

getch();
return 0;
}
Es importante, que el lector, intente correr, en su máquina estos ejemplos, para que comprenda con mayor facilidad.
NOTA: Cuando la entrada, es una cadena de carácter, no es necesario el operador direccional (&). El nombre de la cadena contiene la dirección.
Ejemplo:
external image Image5737.gif
scanf(), finaliza la captación de la cadena al encontrar un espacio en blanco o fin de línea.
Ejemplo:
char cadena[15];
printf("Digite la cadena:\n\n");
scanf("%s", cadena);
Casos Especiales
*JUEGO DE INSPECCIÓN: Define Un conjunto de caracteres que puede leerse utilizando scanf().
Así:
%[ABC]s: A, B y C son los únicos caracteres que puede leer al encontrar uno diferente, finaliza con un valor nulo.
%[ A-Z ]s: También pueden ser rangos de carácter en este caso sólo acepta mayúsculas.
*JUEGO INVERSO: Aquí se declaran que caracteres NO puede tomar, la función scanf(), se utiliza el circunflejo (^), que acepta cualquiera menos...
Ejemplo:
%[^\n]s: Acepta cualquier carácter menos un salto de línea.
%[^0-9]s: Acepta cualquier carácter menos del 0 al 9.
Ejemplo:
Scanf("%[0-9]s", &edad);
Cuestionario

  1. Mencione y Explique que es la lógica estructurada:_
  2. Para que sirven las funciones getch() y putchar():_
  3. Menciones las diferencias fundamentales entre las funciones de entrada y salida por consola, con las funciones de entrada y salida por consola con formato:_
  4. Escriba algunas restricciones que deben cumplir los Identificadores:_
  5. ¿Cuál es la siferencia entre el tipo de dato %c, y el tipo de dato %s?:_
  6. Para que sirve la directiva <stdio.h>:_
  7. ¿Y la directiva <conio.h>?_
  8. ¿Para que sirve a declaratoria #define?:
  9. Para que sirve el punto y coma (;) en C:_
  10. En C, no existe el tipo de dato string; sin embargo, podemos hacer uso de las cadenas de texto, ¿Por qué?. Explique:_
Ejercicios:
  1. Haciendo uso de las funciones gets y puts, diseñe un programa en C, que se lea el nombre del usuario y lo muestre en pantalla junto con un saludo.
  2. Diseñe un programa en C, que lea y muestre en pantalla el valor de tres variables de tipo Entero.
  3. Diseñe un programa que muestre, los diferentes tipos de datos, usados en C. Primero, debe indicársele al usuario que introduzca un valor, de un tipo dado; luego y después de haber introducido valores en todas las variables, debe imprimirse el contenido de ellas, junto con un mensaje que indique, el tipo de dato:
external image Image5738.gif
4. Diseñe un programa, en el cual se introduzcan el nombre y el peso y de un alumno, y luego la muestre en pantalla. El Nombre debe incluir el apellido, y en el campo del peso, solo deben incluir valores numéricos.
5. Diseñe un programe en C, en el cual después de haber introducido, una tabla de multiplicación cualquiera, imprima ésta en forma de tabla:
2x2=4
2x3=6
2x4=8
. .
.
2x10=20
6. Realice el ejercicio 2.5, tal como se muestra, luego ejecútalo, nuevamente, pero quitándole al código las sentencias: getch() y return 0. ¿Qué observas? Realiza tus propias conclusiones de ello y de la importancia de estas dos funciones.

Capitulo III "Operadores, Expresiones y Estructuras"
Hasta ahora, prácticamente hemos visto, como el protocolo esencial, para realizar un programa en C; y algunas funciones muy importantes, como son las funciones de lectura e impresión (scanf y printf, respectivamente).
Ahora veremos, otros aspectos fundamentales, como lo son los operadores, que pueden ser: lógicos, matemáticos, relacionales, etc. Las expresiones, y las estructuras: de secuenciación, de selección y de iteración.

Operadores
Un operador, es un símbolo que indica al compilador que se lleve a cabo ciertas manipulaciones matemáticas o lógicas.
Operadores Aritméticos



OperadorPropósito
+Suma
-Resta
*Multiplicación
/División
%Resto de la división entera
TABLA 3.1
Todos estos operadores se pueden aplicar a constantes, variables y expresiones. El resultado es el que se obtiene de aplicar la operación correspondiente entre los dos operandos. (Tomado de "Aprenda Lenguaje ANSII C, como si estuviera en primero". Pag. 25).
Los operandos sobre los que actúan los operadores aritméticos deben ser valores Numéricos, es decir datos enteros, punto flotante o de carácter (Int, float y char, respectivamente).
Una aclaración especial, merece el operador "%", que indica el resto de la división entera. Veámoslo con un ejemplo:
Si dividimos 30/3, su cociente es 10, y su residuo es 0. Si dividimos 25/3, su cociente es 8, y tiene un residuo de 1. Entonces de lo que se encarga, este operador, es de devolvernos el valor del residuo de una división. Cabe aclarar que los datos deben de ser tipo entero, y su sintaxis es la siguiente:
25%3
NOTA: Este Operador, NO puede aplicarse a los datos de tipo float.
Una Expresión, Es un conjunto de variable, constantes y otras expresiones más sencillas, relacionadas por algún tipo de operador. De las cuales hablaremos con más detalle, posteriormente.
Operadores de Relaciónales, Lógicos y Unarios
Estos Operadores, los podemos dividir, en varios tipos, entre los cuales están:

  • OPERADORES UNARIOS: C, incluye una clase de operadores que actúan sobre un solo operador para producir un nuevo valor. Por eso el nombre de unarios, por que para poder funcionar solo necesitan de un operador.


OperadorPropósito
-Menos Unario: Es el signo menos que va delante de una variable, constante o expresión.
++Operador Incremento: Hace que la variable, constante o expresión se aumente en uno.
--Operador Decremento: Hace que su variable, constante o expresión disminuya en uno.
TABLE 3.2
Ejemplo:
Int i=1, x=5;
Printf("%d", ++i);
Printf("%d", - -i);
Estos operadores, el incremento y el decremento, pueden utilizarse de dos maneras, eso depende del orden de aparición de los mismos:
-Si el operador precede al operando el valor del operando se modifica antes de ser utilizado.
-Si el operador aparece después del operando, este se modifica después de ser utilizado.
Ejemplo 3.1:
Utilizando los operadores Unarios:
#include <stdio.h>
#include <conio.h>
main()
{
int x=5;
printf("\tPRIMERO OBSERVAREMOS EL RESULTADO DE ++X\n\n");
printf("%d\n", ++x);
printf("%d\n", ++x);
printf("%d\n", ++x);
printf("\tAHORA OBSERVAREMOS EL RESULTADO DE --X\n\n");
printf("%d\n", --x);
printf("%d\n", --x);
printf("%d\n", --x);
printf("\tEL RESULTADO DE X++ ES:\n\n");
printf("%d\n", x++);
printf("%d\n", x++);
printf("\tY EL DE X-- ES:\n\n");
printf("%d\n", x--);
printf("%d\n", x--);
getch();
return 0;
}

  • OPERADORES RELACIONALES O DE COMPARACIÓN:


OperadorSignificado
<Menor que
<=Menor o igual que
>Mayor que
>=Mayor o igual que
==Igual que (Para las comparaciones)
! =No igual a
TABLA 3.3
Estos Operadores se encuentran dentro del mismo grupo de procedencia, que es menor que la de los Operadores Unarios y aritméticos.
La Asociatividad de éstos es de izquierda a derecha. Cabe mencionar la diferencia entre los operadores = y ==, el primero (=), se utiliza para asignaciones de valores, mientras que el otro (==), se usa para comparaciones. Ejemplo: Si x>5, entonces x==6.
3. OPERADORES LÓGICOS: Estos son los que nos permiten unir varias comparaciones: 10>5 y 6==6. Los operadores lógicos son: AND (&&), OR (||), NOT(!).
Operador && (AND, en castellano Y): Devuelve un 1 si se cumplen dos condiciones.
printf( "Resultado: %i", (10==10 && 5>2 );
Operador || (OR, en castellano O): Devuelve un 1 si se cumple una de las dos condiciones.
Operador ! (NOT, negación): Si la condición se cumple NOT hace que no se cumpla y viceversa.
Ver el capítulo Sentencias, sección Notas sobre las condiciones para más información. (Tomado de "Curso de C" por Gorka Urrutia).
Operadores de Asignación
Los Operadores de Asignación, como su nombre lo indica, se encargan de atribuirle, asignarle, confinarle, etc a una variable, el resultado de una expresión o el valor de otra variable.
Se utilizan en forma de expresiones de asignación en los que se asigna en el valor de una expresión a un identificador. El operador de asignación más utilizado es "=" y su formato es:

identificador = expresión;

Donde el identificador representa por lo general una variable y una constante, una variable o una expresión más compleja.
Si los dos operandos de la expresión de asignación son de tipo de datos diferentes el valor de la expresión de la derecha se convertirá automáticamente al tipo de identificador de la izquierda de ésta forma la expresión de asignación será del mismo tipo de datos.
Ejemplo:
*Un valor en coma flotante puede ser truncado, se asigna a un identificador entero.
*Un valor de doble precisión puede ser redondeado si se asigna a un identificador de coma flotante.
En C, están permitidas las asignaciones múltiples, así:
Identificador1 = identificador2 = identificador3.....= identificadorn=expresión
C, posee además los siguientes operadores de asignación:



OperadorExplicación
+=Expresión1+=expresión2. Equivale a: expresión1=expresión1 + expresión2
-=i-=1. equivale a: i=i-1
*=J*=2. Equivale a: j=j*2
/=K/=m, equivale a: k=k/m
%=P%n. Equivale a: p=p%n
TABLA 3.4
Los Operadores de asignación tiene menos procedencia que el resto de los operadores y tienen asociatividad de izquierda a derecha.
Ejemplo 3.2
Programa que calcula el valor de la expresión X^2+X+1
#include <stdio.h>
#include <conio.h>
main()
{
float x, y, z;
clrscr();
printf("\tPROGRAMA QUE CALCULA EL VALOR DE LA ECUACION X^2+X+1\n\n");
printf("Introduzaca el valor de x:\n");
scanf("%f", &x);
y=x*x;
z=y+x+1;
printf("\n");

printf("El valor de la expresi¢n es: %.2f\n", z);
printf("\n");
getch();
return 0;
}
Jerarquía de Operadores

Categoría del OperadorOperador
1. Operadores Unarios-, ++, --, !
2.Operadores Aritméticos:
  1. Multiplicación, división y Resto entero
  2. Suma y Resta
*, /, %
+,-
3. Operadores Relacionales<, <=, >, >=
4. Operadores de Igualdad

=, !

5. Operadores Lógicos&& (Y Lógico),(NO Lógico)
6. Operadores de Asignación=, +=, -=, *=, /?, %=,
TABLA 3.5
REGLAS DE JERARQUÍA:
  1. Se ejecuta primero el operador de más alta jerarquía
  2. Operadores que tienen igual jerarquía se evalúan de izquierda a derecha
  3. si existen expresiones encerradas entre paréntesis, estas se evalúan primero.
  4. si existen paréntesis anidados se evalúan primero los paréntesis más internos.


EXPRESIONES
(Tomado de "Aprenda ANSII C como si estuviera en Primero", Universidad de Navarra. 1998).
Ya han aparecido algunos ejemplos del lenguaje C en las secciones precedentes. Una Expresión es una combinación de variables y/o constantes, y operadores. La expresión es equivalente al resultado que proporciona al aplicar sus operadores a sus operandos. Por ejemplo 1 + 5 es una expresión formada por dos operandos (1 y 5)y el operador (el +); esta expresión es equivalente al valor 6, por lo cual quiere decir que allí donde esta expresión aparece en el programa, en el momento de la ejecución es evaluada y sustituida por su resultado. Una expresión puede estar formada por otras expresiones más sencillas, y puede contener paréntesis de varios niveles agrupando distintos términos. En C, existen diferentes tipos de expresiones. El cual depende del tipo de operadores que se estén utilizando. Por ejemplo: Expresiones lógicas, aritméticas, etc
Se debe hacer hincapié en que, si existen algunas expresiones encerradas entre paréntesis, estas se evalúan primero. Ejemplo:
9*(8+5)
primero sumamos 8+5, cuyo resultado es 13, y este lo multiplicamos por nueve, con lo que la expresión anterior, da cómo resultado: 117.
Si existen expresiones en paréntesis anidadas, es decir, que uno se encuentra dentro de otros paréntesis, se evalúan los más internos. Ejemplo:
2*((20/(12-2))+5)
se evalúa la operación 12-2, que da como resultado 10, luego se divide 20, entre el resultado anterior, es decir 10. el resultado es 2, y a este número se le suma 5, obteniendo 7. ahora se multiplica por dos, para determinar así que la expresión anterior es igual a 14.






ALGORITMOS - PSEUDOCODIGO Y PROGRAMAS C++
DEFINICION DE ALGORITMO
Conjunto de pasos o acciones que se realizan de manera ordenada para llegar a la solución de un problema.
Conjunto de sentencias/instrucciones en lenguaje nativo, las cuales expresan la lógica para la resolución de un problema. 

Conclusión : Es un método para resolver un problema. La resolución de un problema exige el diseño de un algoritmo que resuelva el problema. 
ETAPAS EN LA RESOLUCIÓN DE UN PROBLEMA USANDO UNA COMPUTADORA
Problema à Algoritmo à Programa en computadora

Diseño del algoritmo .- Describe los pasos a seguir para la resolución de un problema dado (análisis y desarrollo del algoritmo)
Programa en computadora .- El algoritmo se expresa mediante un lenguaje de programación en un programa. 

TIPOS DE ALGORITMOS: 
Algoritmo Cualitativo.- Son los algoritmos descritos mediante palabras. Ejm:

  • La elaboración de una receta de cocina
  • El tejido a mano de una chompa.
  • Búsqueda de un numero telefónico.
  • El cambio de una llanta
  • El cambio de un foco quemado.
Algoritmo Cuantitativo.- Son los algoritmos que se basan en cálculos numéricos. Ejm:
  • Pasos a seguir para resolver una ecuación de segundo grado.
  • Pasos a seguir para calcular los sueldos de los empleados de una empresa.
  • Instrucciones para calcular los impuestos a pagar de los vecinos de un municipio.
CARACTERÍSTICAS DE UN ALGORITMO .-
Los algoritmos deben tener estas características:

  • Indicar un orden a seguir en cada uno de sus pasos.
  • Ser definido (confiable), si se ejecuta dos veces debe lograrse el mismo resultado.
  • Ser finito, es decir terminar en un número finito de pasos.
PARTES DE UN ALGORITMO
En un algoritmo se definen tres partes: Entrada, Proceso y Salida. 
external image algori1.gif
Fig. 1 Partes de un algoritmo o programa.

Ejm Cuantitativo: Leer la base y altura de un rectángulo y mostrar el area en pantalla.
Entrada (Lectura de datos):

Se conocen los valores de la Base y la Altura
Proceso (Calculo de Area):
Area = Base * Altura
Salida (Muestra los resultados):
Muestra valor del Area 
Ejm Cualitativo: Un socio de una biblioteca solicita un libro para lectura, si el libro se encuentra se le presta el libro, SINO se devuelve la ficha de pedido.
LEER Ficha de pedido
EXAMINAR el Estante
SI el libro esta en Estante
ENTONCES
Se acepta el pedido
Se recepciona Carnet de socio.
SINO
Se niega el pedido
Se devuelve Ficha de Pedido
FIN SI

DATOS – TIPOS DE DATOS
DEFINICION DE DATOS

Para la computadora es un conjunto o secuencia de bits (digitos 0 y 1 en binario). Sin embargo los lenguajes de alto nivel permiten ignorar los detalles de la representación interna (basándose en laabstracción ).
TIPOS DE DATOS 
Existen dos tipos de datos : los simples ( sin estructura ) y los compuestos (estructurados)
Los tipos de datos simples (sin estructura) :
a) Numéricos ( Entero y Real).
b) Lógicos o boolean.
c) Carácter.
Entre los tipos de datos compuestos se tiene: cadena de caracteres.
a) Datos numéricos .- Conjunto de los valores numéricos. Pueden representarse en dos formas:

Numérico entero ( de punto o coma fijo ) es un subconjunto de los números enteros (+ o -).
Ejm: 5 -56 1340 17 -14
Los máximos y mínimos suelen ser: -32768 a 32767
Numérico real (punto o coma flotante) es un subconjunto de los números reales (+ o -)
Ejm: 0.08 3.7456 -53.456 3.0

Notación científica:Mantisa exponente
67 520 000 000 000 000 000= 6.752 x 1019
0.000 000 000 000 000 234 123 = 2.34123 x 10-16 
Tabla 1. Notación Científica
En algoritmos y en los programas C++, hay que declarar las variables de acuerdo a los datos que puede almacenar. así por ejemplo para datos numéricos:

Algoritmo En C++
Tipo de datovariablesTipo de datovariables
entero numeroPersonas int numeroPersonas ;
entero numeroCajasint numeroCajas;
El numeroPersonas y numeroCajas almacenan datos enteros.
real talladouble talla;
real peso, talla, promPonderadodouble peso, talla, promPonderado;
La talla, peso y PromPonderado almacenan datos reales.
Desea conocer mas sobre tipos numericos en C++ ?
Tabla 2. Declaración de variables que almacenan tipos de datos numericos enteros y reales
b) Datos Lógicos (o booleanos)
Dato que sólo puede tomar dos valores: true (verdadero o 1) y false (falso o 0). Se usa para representar las alternativas a determinadas condiciones:
Ejm:

EjmDatos:
Opcion_continuar Verdadero Falso
Condición_de_recepción_de_carta FalsoVerdadero 
Estado_cancelación_de_factura Verdadero Falso
Mayoria_de_edad FalsoVerdadero 
Empleado_de_licenciaVerdadero Falso
Tabla 3. Ejemplos de variables booleanas.
En algoritmos y en los programas C++, hay que declarar las variables de acuerdo a los datos que puede almacenar. así por ejemplo para datos booleanos:

Algoritmo En C++
Tipo de datovariablesTipo de datovariables
boolean opcionCon bool opcionCon; 
boolean condicionRecbool condicionRec;
boolean estadoFacbool estadoFac;
boolean licenciaEmpbool licenciaEmp;
? opcionCon, condicionRec, estadoFac, licenciaEmp almacenan datos booleanos o lógicos.
Desea conocer mas sobre tipos numericos en C++ ?
Tabla 4. Declaracion de variables que almacenan tipos de datos boolean (que pueden tomar dos valores true o false)
c) Datos carácter
Conjunto finito y ordenado de caracteres que la computadora reconoce. Pueden ser:


Pueden ser:Datos:
Alfabéticos:'A''B''c''E''K''a'....'z''Z'
Numéricos:'0''1''2''3''4''5'...'8''9'
Especiales:' * '' - '' / '' + '' $ ''< '
' # ''@'
Tabla 5. Datos caracter que la computadora reconoce (codigos ASCII)
En algoritmos y en los programas C++, hay que declarar las variables de acuerdo a los datos que puede almacenar. así por ejemplo para datos de tipo caracter:

Algoritmo En C++
Tipo de datovariablesTipo de datovariables
caracter letras char letras ; 
caracter estCivil, nroMeschar estCivil, nroMes;
caracter operacionchar operacion;
caracter opcionchar opcion;
? letras, estCivil, nroMes, operacion, opcion almacenan datos de tipo caracter.
Desea conocer mas sobre tipos caracter C++ ?
Tabla 6 Ejemplos de declaración de variables que almacenan tipos de datos caracter.
Datos Compuestos:
Una cadena de caracteres (cadena o string) sucesión de caracteres, que se encuentran delimitados por apostrofes simples(‘) o dobles(“).
Longitud de una cadena , es el numero de caracteres comprendidos entre los separadores o delimitadores.
Ejm: ‘HOLA AMIGOS’ Longitud = 11
Ejm: “MIURA FERNÁNDEZ” Longitud = 15
En algoritmos y en los programas C++, hay que declarar las variables de acuerdo a los datos que puede almacenar. así por ejemplo para datos de tipo cadena de caracteres o cadena:

Algoritmo En C++
Tipo de datovariablesTipo de datovariables
caracter nombre[30] char nombre[30] ; 
caracter profesion[25]char profesion[25];
caracter* apellidoschar * apellidos;
nombre y profesion almacenan cadena de caracteres de hasta 30 y 25 caracteres respectivamente.
Segun la lectura, se pueden leer datos con espacios en blanco o no. Por ejemplo: Edgar García Fernández (hay que usar gets() para leer este dato o con cin<<para leer solo Edgar )
apellidos pueden asignarseles datos con espacios en blanco. 
Desea conocer mas sobre tipos caracter C++ ?
Tabla 7. Ejemplos de varaibles cadenas de caracteres que almacenan una cadena de caracteres o string
CONSTANTES Y VARIABLES
CONSTANTES

Espacio de la memoria para almacenar un dato que permanece sin cambio durante la ejecución del programa. Puede ser :

  • Constante Numérica que representa un determinado valor o
  • Constante Alfanumérica o literal que representa cualquier combinación de caracteres (dígito, letra, símbolo especial).
Ejm: PI = 3.14159 Ejm: Prefijo = “Srta. “
Ejm: TasaIgv = 0.18 Ejm: Prof = "Dr. "

external image algori4.gif
Fig. 2. Ejemplos de constantes (espacios de memoria).

En algoritmosEn programación C++
const entero x = 500const int x = 50;
const real ti = 0.04const double ti = 0.04;
const caracter Letra = 'A'const char Letra = 'A';
Tabla 8. Declaración de constantes de diversos tipos.
VARIABLES
Espacio de la memoria para almacenar un dato que puede cambiar o no durante la ejecución de un programa. Puede ser : numérico en el que solo se pueden almacenar valores (dígitos) o alfanumérico en el que puede almacenarse cualquier carácter (dígito, letra o símbolo especial)
Se le identifica por los siguientes atributos:
El Nombre (o identificador ) que se le asigna,
El tipo que describe el uso de la variable y
El valor de la variable que es la cantidad que tiene asociada en un determinado momento
external image algori7.gif
external image algori3.gif
Fig. 3. Variables (declaración)
Es decir, la variable que representa la edad de una persona se identifica por el nombre Edad ; los datos que guardan son de tipo real y su valor en un momento determinado puede ser 25.
Nota: Los nombres de las variables deben ser significativos, y tener relación con el objeto que representan. Asi si se desea almacenar pesos, a dicha variable se le asignará el nombre de pesos.
Una variable de un tipo determinado solo puede tomar valores de ese tipo.

Tipos de Variables

Las variables puede ser identificadas de acuerdo a la función que asume en el algoritmo, como:
a) Contador :
Campo o variable que sirve para llevar una cuenta con incrementos constantes, generalmente de 1 en 1. 
Ejm: NroPerMayEdad, variable que cuenta el número de personas mayores de edad
Requiere de las siguientes instrucciones:
NroPerMayEdad = 0 inicializar en cero: 

NroPerMayEdad = NroPerMayEdad + 1 NroPerMayEdad aumenta en uno

b) Acumulador :
Campo o variable que sirve para llevar una suma o cuenta de diferentes valores(acumular).
Ejm: SEdad variable que almacena la suma de las edades de una cantidad de personas.
Requiere de las siguientes instrucciones:
1. SEdad = 0 Inicializa en cero
2. SEdad = SEdad + Edad

SEdad se incrementa en el valor de Edad
Inicializar, significa poner en blanco o en cero una variable o campo antes de su utilización.
Los acumuladores y contadores por lo general se inicializan en cero.
La diferencia entre ellos se puede apreciar en la siguiente vista
c) Variable de Trabajo :

Campo que almacena temporalmente el resultado de alguna operación. No es variable de entrada ni de salida.
Ejm: Si me piden ingresar el radio y altura de un cilindro y requieren calcular el volumen del cilindro. El Area de la base ABase requerida seria una variable de trabajo porque no es variable ni de entrada ni de salida.

external image algori11.gif
Fig. 4. Ejemplo de variables (de entrada, de salida y de trabajo)
FUNCIONES ESTÁNDAR ( INTERNAS ) 
Son funciones que vienen con todos los lenguajes de programación. Se representa así;
external image algori9.gif
Fig. 5. Definición de la función NombreFunción
external image algori10.gif
Fig. 6. Llamada de la función NombreFunción, definida anteriormente
Esta es la llamada a la función, a la que se envia los argumentos (valores de variables o constantes o referencias)

FUNCIONES ARITMETICAS en la definición
Algoritmos (pseudocodigo)Definición en C++
tipoRetorno NombreFuncion(t1 p1, . ,tn pn )
NombreFunciónDescripcióntipo de parámetro y de retorno en algoritmostipo de parámetro y de retorno
en C++
abs(p)valor absoluto, retorna la magnitud de pentero abs (entero p
real abs (real p) 
int abs(int p)
double fabs(double dp))
sqrt(p)raiz cuadrada, retorna la raiz cuadrada depreal sqrt (real p)double sqrt (double p)
pow(p1,p2)potencia del parametro p1 elevado al parametro p2real pow (real p1, real p2)double pow (double p1,double p2)
sin(p)seno, retorna el seno de p expresado en radianesreal sin(real pdouble sindouble p
cos(p)coseno, retorna el seno de p expresado en radianesreal cos(real pdouble cos (double p)
tan(p)tangente, retorna la tangente depexpresado en radianesreal tan (real pdouble tan (double p
atan(p)arco tangente, retorna el angulo en radianes cuya tangente es preal atan (real p)double atan (double p)
exp(p)exponente p, de e, es decir epreal exp( real p );double exp(double p)
log(p)logaritmo neperiano de preal log(real p)double log(double p)
log10(p)logaritmo decimal depreal log10(realp)double log10(double p)
Random()genera un numero entero aleatorio entre 0 y maxEntero.entero rand( )srand () inicializa el generador de aleatorios.
int rand( ) // genera entre 0 y maxInt
entero (p)Parte entera de pentero int (real p)int int (double p)




Tabla 9. Definición de las funciones estandar en seudocódigo y en C++
Aqui tenemos las funciones estandar en el Lenguaje de programación C++ : 

FUNCION EN LA LLAMADA (EN EL PROGRAMA PRINCIPAL)
ALGORITMOSLLamada en el LENGUAJE DE PROGRAMACION C++
DefiniciónNombreFunciontipos de los Argumentos x y resultado r Llamada y asignación en C++
Valor Absoluto de xentero x,r
r = abs (x)
int x , r;
double x, r;
r = abs( x );
r = fabs( x )
Raiz Cuadrada de xreal x,r
r=x 1/2 = sqrt(x)
double x, r ;r = sqrt ( x );
potencia realreal x,n,r
r= xn = pow(x,n)
double x,n,r; 
es decir r = xn
r = pow (x,n);
Exponente de ereal x, r
r = ex = exp(x)
double x, r ; r = exp( x );
Seno de xreal x,r
r = sin (x)
double x, r ; r = sin ( x );
Coseno de xreal x,r
r = cos(x)
doublex, r ; r = cos( x );
Tangente de xreal x,r
r = tan(x)
double x, r ; r = tan( x );
Arco Tangente de xreal x,r
r = atan(x)
doublex, r ; r = atan( x );
Logaritmo Natural o neperiano de xreal x,r
r = log(x)
doublex, r ; r = log( x );
Logaritmo Decimal de xreal x,r
r = log10(x)
doublex, r ; r = log10( x );
Numero aleatorior = random()int r;srand();
r = rand ();
parte_entera (x)real x
entero r
r = entero (x)
double x;
int r;
r = int (x);
Tabla 10. Llamada de las funciones estandar en seudocódigo y en C++
EXPRESIONES ARITMÉTICAS
Son combinaciones de constantes y/o variables unidos por operadores aritméticos paréntesis y nombres de funciones especiales.
Operadores Aritméticos
OperadorSignificadoTipos operandosTipo de resultado 
Potenciación Base entera o real
Exponente Entero
Entero o real
Entero o real
+AdiciónEntero o realEntero o real
-SustracciónEntero o realEntero o real
*MultiplicaciónEntero o realEntero o real
/DivisiónEntero o realReal
divdivision enteraEnteroEntero
moddivision enteraEnteroEntero
Tabla 11. Operadores aritméticos, simbolo y sgnificado en pseudocodigo..
Los Operadores en algoritmos y en C++**
OPERADORES ARITMETICOSALGORITMOS PSEUDOCODIGOC ++
Adición o suma++
Resta o Sustraccion--
Multiplicación**
División Real//
Potencia^
Nota :
Ddo y Dsor se declaran enteros

Divión entera
Ddo = Dsor*Q + R
Modulo(resto) MOD
Ejm: R=Ddo MOD Dsor
%
Ejm: R = (Ddo % Dsor)
Cociente DIV
Ejm: Q= Ddo DIV Dsor
Ejm: Q = (Ddo Dsor)
Q = int (( Ddo - R) / Dsor))
Desea conocer mas acerca de el cociente y el resto de una división entera
Tabla 12. Operadores aritméticos en seudocódigo y en C++
Ejm: a + b – 3 + sqrt(c)
Ejm: pow(sin(x),2) + pow(cos(x),2)
Ejm: c = sqrt( pow(a,2) + pow(b,2) )
Ejm: exp (3) – exp(2)
Ejm: Ln(2.345)
Ejm: Comision = Ventas*0.05
// Objeto result, de la estructura t_div veaDiapositiva
t_div result
resto= result.rem
cociente= result.quot

Reglas de prioridad
1) Las operaciones encerradas entre paréntesis se evaluan primero. Si estan anidados, primero se evaluan los mas internos.
2) Operador exponencial ^ o 

3) Operadores * /
4) Operadores + -
EXPRESIONES RELACIONALES**
Es un conjunto de variables y/o constantes unidas o relacionadas por operadores relacionales.
OPERADORES RELACIONALES
algoritmosSignificadoEn lenguaje C++
OperadorComplementoOperadorComplementoOperadorComplemento
< > =menor quemayor o igual que< > =
<= >menor o igual que mayor que < = >
> < = mayor que menor o igual que > < = 
>= <mayor o igual quemenor que> = <
= ¹igual quedistinto de (diferente) = =! =
¹=distinto de (diferente) 
! == =
Tabla 13. Operadores Relacionales y su complemento, en pseudocódigo y en C++
Ejm en algoritmos y en lenguaje C++

En algoritmosEn C++
Edad > 18Edad > 18
SalBruto <= SalNetoSalBruto <= SalNeto
EstCivil ¹ 'S'EstCivil != 'S'
Tabla 13. Ejemplos de operadores Relacionales en pseudocodigo y en C++
EXPRESIONES LÓGICAS ( o BOOLEANAS )
Se forman combinando constantes lógicas, variables lógicas y otras expresiones lógicas utilizando los operadores lógicos: NO, O, Y, y los operadores relacionales o de comparación.
En algoritmosEn C++
( Edad > 18 ) Y ( Talla < 1.70 ) ( Edad > 18 ) && ( Talla < 1.70 ) 
NO ( sexo = ´F’ ) ! ( sexo == ´F’ ) 
( EstCivil = ‘C’ ) O (Sueldo > 2000)( EstCivil == ‘C’ ) **
  • (Sueldo > 2000)
Tabla 14. Ejemplos de expresiones booleanas
FORMAS DE REPRESENTAR LOS ALGORITMOS
Los algoritmos pueden presentarse en :

  • Diagramas de Flujo,
  • Diagramas de Nassi Sneidermann y
  • pseudocódigo,
Pseudocódigo
Es un lenguaje de especificación de algoritmos. Es similar al lenguaje común. Su traducción a un lenguaje de programación es sencillo.
Utiliza enunciados donde cada uno de ellos representa una instrucción en un programa de computadora.
Ofrece gran facilidad para representar en un lenguaje no formal las instrucciones de un algoritmo que sirve de base para el código o programa fuente

Utiliza palabras reservadas en ingles o en castellano como
Iniciar el algoritmoINICIO
Finalizar el algoritmoFIN
Lectura (permite ingresar los valores de las variables)LEER
Mostrar (permite mostrar los valores de las variables)MOSTRAR
Estructura SelectivaSI (expBooleana) { ... .... } SINO {... .... }

SELECCIONA segun (selector ) { caso v1 : ....... }
Estructura RepetitivaPARA ( ... ; Hasta ; ... con ) { ......... }

MIENTRAS (expBooleana ) { .... } 

DO { .............. } MIENTRAS ( expBooleana )

Tabla 15. Tabla de las principales palabras representativas en pseudocódigo para identificar las estructuras de control, inicio, fin, entrada y salida de datos.

INSTRUCCIONES O SENTENCIAS
a) Instrucción de Asignación

Operación en la cual el computador desarrolla o evalúa una expresión matemática y almacena el resultado final en una determinada variable. En la forma más simple de asignación el computador mueve una constante o el contenido de un campo a otra variable.
Sintaxis:
Nombre_de_la_variable = expresión, variable o constante
Asignación Aritmética:

En algoritmosEn C++
var1 =3+4*2=var1 3+4*2
var2 = 0.65 / 0.2var2 = 0.65 / 0.2
var3 = var1 / var2var3 = var1 / var2
Tabla 16. Ejemplos de asignaciones aritméticas
Asignación Lógica
En algoritmosEn C++
Boolean var1,var2,var3Bool var1,var2,var3;
var1 = 5 < 2var1 = 5 < 2;
var2 = 7 >= 3var2 = 7 >= 3;
var3 = var1 o var2var3 = var1var2 ;
Tabla 16. Ejemplos de asignaciones lógicas o booleanas.


Asignación de Caracteres o cadena de caracteres
En algoritmosEn C++
caracter *vCad, carchar * vCad, car ;
car = 'S'car = 'S';
vCad="25 de diciembre de 1998"=vCad
"25 de diciembre de 1998";
Tabla 17. Ejemplos de asignaciones de caracteres y cadenas de caracteres
NOTA :
= Este simbolo significa asignación e indica que el valor de la parte derecha del enunciado se le asigna a variable de la izquierda

Reglas para la construccion de un enunciado de asignación:


  • Toda variable del lado derecho debe estar definida

  • Después de ejecutarse un enunciado:

  • Solo la variable de la izquierda puede cambiar de valor cuando con anterioridad tiene un valor asignado

  • Las variables del lado derecho conservan su valor..

  • Si la variable de la parte izquierda se encuentra también en la derecha , esta variable cambia de valor por aparecer en la izquierda

b) Instrucción de Entrada y salida de información
En algoritmosEn C++
real v entero v2 caracter sexodouble v; int v2; char sexo;
LEER vcin>> v;
LEER v2cin>>v2;
MOSTRAR vcout<<v;
MOSTRAR v, v2cout<<v<<v2<<endl;
LEER sexocin>>sexo;
caracter nombre[20]char nombre[20]; cadena de caracteres
LEER nombrecin>>nombre; lee un solo nombre sin espacios en blanco

gets(nombre); lee nombre con espacios en blanco
MOSTRAR nombrecout<<nombre; con y sin espacios en blanco
Tabla 18. Entrada y salida de datos en pseudocódigo y en C++ESTRUCTURA Y DISEÑO DE UN ALGORITMO EN PSEUDOCÓDIGOEncabezado .- Empezar con la palabra ALGORITMO seguida por una descripción adecuada de acuerdo al problema a resolver
Ejm: ALGORITMO Calcular Area del Circulo
Inicio del Algoritmo .- Indicar el inicio del Algoritmo
Ejm INICIO
Declaración de Constantes .- Definir los valores que no cambian en el transcurso del algoritmo
Ejm const real Pi = 3.1416

Declaración de las Variables a usar .- Definir las variables (estructuras de datos ) que sean necesarios para resolver el problema, identificándolas con un nombre y determinando sus tipos.
Ejm. Real Radio , Area
Leer Calcular o Imprimir .- Que permite leer, calcular o imprimir tantas veces se quiera.
a) Leer Datos.- Permite introducir los valores de las variables de entrada disponibles como materia prima, para evaluar las variables de salida
Ejm: LEER Radio
b) Calcular .- Permite procesar los valores de entrada para producir la salida adecuada.
Ejm : Area = Pi * Radio * Radio
o Area = Pi * pow ( Radio,2 )
c) Mostrar Resultados (Salida de Datos) .- Permite dar salida a la información requerida.
Ejm: MOSTRAR Area
El algoritmo completo es el siguiente:
Ejm : para el problema del cálculo del area de un rectángulo visto anteriormente, en seudocódigo sería así:

INICIO
Entrada (Lectura) de datos
LEER Base , Altura
Proceso: Calculo de Area
Area = Base * Altura
Salida de resultados
MOSTRAR Area
FIN
external image algori2.gif
Fig. 7. Entrada, proceso y salida de información.Ejm : Hacer un algoritmo que permita calcular el jornal basico de un obrero, si para ello se requiere ingresar por teclado la tarifa horaria y el numero de horas trabajadas. La formula del jornal es : Jornal = TarHora x NroHoras.external image algori5.gifFig. 8. Entrada , Proceso y salidad de información.ALGORITMO CalJornalINICIO
Declaración de las variables
real TarHora, Jornal
entero NroHoras

// Lectura de los Datos de EntradaLEER TarHoraLEER NroHoras

// Calculo del Area del RectanguloJornal = TarHora * NroHoras.

// Muestra Area del RectanguloMOSTRAR JornalFIN
ESTRUCTURAS DE CONTROL
Algoritmo pseudocodigoEn Lenguaje C++
Estructura Selectiva
si ( ExpBooleana ) 
{ Bloque_Verdadero }
sino
{ BloqueFalso }
if ExpBooleana ) 
{ Bloque_Verdadero }
else
{ BloqueFalso }
Estructura switch
Seleccione (selector)
{
caso val1 : Bloque_1;
salto
caso val2 : Bloque_2;
salto
sino : Bloque_n;
}
switch selector )
{
case val1 : Bloque_1
break ;
case val2 : Bloque_2
break ;
default : Bloque_n
}
val1 y val2 son los posibles valores de selector
En caso selector sea val1 , se ejecuta el Bloque_1
En caso selector sea val2 , se ejecuta el Bloque_2
De lo contrario se ejecuta el Bloque_n
Estructura Repetitiva for
Para ( i = vi ; hasta vf ; i=i+inc )
{ Bloque_Repetitivo } 
for ( i = vi ; i <= vf ; i = i+inc )
{ Bloque_Repetitivo }
El valor inicial de i es vi , se ejecuta el Bloque_Repetitivo mientras i sea <=vf , con incrementos de i en inc
El Bloque_Repetitivo deja de ejecutarse, cuando el valor de i > vf
Estructura Repetitiva while
Mientras (expresion_Booleana)
{ Bloque repetitivo }

Hacer 
{ Bloque repetitivo }
Mientras (expresion_Booleana)
while ( Expresión_Booleana)
{ Bloque_Repetitivo }

Evalúa la expresion Booleana antes de ejecutar el Bloque_Repetitivo, si es true ejecuta el Bloque_Repetitivo, de lo contrario ya no ejecuta el bloque_Repetitivo
do
{ Bloque Repetitivo }
while ( expresion_Booleans);
Evalúa la expresion Booleana despues de ejecutarse el Bloque_Repetitivo, si es true continua ejecutando el Bloque_Repetitivo, de lo contrario sale del Bloque_Repetitivo.
El Bloque_Repetitivo, se ejecuta por lo menos 1 vez.
Tabla 19. Tabla de estructuras de control, que facilitan la codificación en el lenguaje C++, a partir de algoritmos hechos en pseudocódigo.



Resolución de problemas de programación





La resolución de un problema mediante un ordenador consiste en el proceso que a partir de la descripción de un problema, expresado habitualmente en lenguaje natural y en términos propios del dominio del problema, permite desarrollar un programa que resuelva dicho problema.
Este proceso exige los siguientes pasos:

  • Análisis del problema.
  • Diseño o desarrollo de un algoritmo.
  • Transformación del algoritmo en un programa (codificación).
  • Ejecución y validación del programa.
Los dos primeros pasos son los más difíciles del proceso. Una vez analizado el problema y obtenido un algoritmo que lo resuelva, su transformación a un programa de ordenador es una tarea de mera traducción al lenguaje de programación deseado.
==Índice==
[ocultar]

Análisis del problema informatico

Cuando un usuario plantea a un programador un problema que resolver mediante su ordenador, por lo general ese usuario tendrá conocimientos más o menos amplios sobre el dominio del problema, pero no es habitual que tenga conocimientos de informática. Por ejemplo, un contable que necesita un programa para llevar la contabilidad de una empresa será un experto en contabilidad (dominio del problema), pero no tiene por qué ser experto en programación.
Del mismo modo, el informático que va a resolver un determinado problema puede ser un experto programador, pero en principio no tiene por qué conocer el dominio del problema; siguiendo el ejemplo anterior, el informático que hace un programa no tiene por qué ser un experto en contabilidad.
Por ello, al abordar un problema que se quiere resolver mediante un ordenador, el programador necesita de la experiencia del experto del dominio para entender el problema. Al final, si se quiere llegar a una solución satisfactoria es necesario que:

  • El problema esté bien definido con el máximo detalle
  • Las especificaciones de las entradas y salidas del problema, deben ser descritas también en detalle:
    • ¿Qué datos son necesarios para resolver el problema?
    • ¿Qué información debe proporcionar la resolución del problema?

Diseño del algoritmo

Un algoritmo consiste en una especificación clara y concisa de los pasos necesarios para resolver un determinado problema, pero para poder diseñar algoritmos es necesario disponer de una notación, que llamaremos ‘notación algorítmica’, que permita:
  • Describir las operaciones puestas en juego (acciones, instrucciones, comandos,...)
  • Describir los objetos manipulados por el algoritmo (datos/informaciones)
  • Controlar la realización de las acciones descritas, indicando la forma en que estas se organizan en el tiempo
Para poder describir cualquier tipo de acción de las que intervienen en un algoritmo, diversos autores proponen el uso de un conjunto de construcciones lógicas (secuencia, decisión e iteración) con las que es posible escribir cualquier programa. Lo que sigue a continuación es la descripción de las diferentes construcciones disponibles para el diseño de algoritmos.

Acciones elementales

Se entiende por acciones elementales aquellas que el ordenador es capaz de realizar y que serán de dos tipos:
  • Aritmético – lógicas: Operaciones que, a partir de unos determinados datos, realizan un cálculo aritmético (suma, resta, multiplicación,...) o un cálculo lógico (mayor que, menor que, igual que,...).Las primeras devuelven un valor numérico (4, -5.67,...) y las segundas un valor lógico (verdadero o falso).
  • De entrada – salida: Acciones que permiten capturar datos para su posterior tratamiento (las de entrada) y guardar los resultados de dicho tratamiento (las de salida).

Secuencia de acciones elementales

Cuando en un algoritmo se deben ejecutar varias acciones sucesivamente, éstas se describen una detrás de otra según el orden en que deban ejecutarse. Si se desea se puede emplear algún tipo de símbolo para separar dos acciones consecutivas. En el siguiente ejemplo se nuestra la descripción de n acciones separadas por punto y coma (símbolo que habitualmente se emplea como separador).
<span style="background-color: #f9f9f9; font-family: monospace,Courier;">//Acción 1;//
//Acción 2;//
//...//
//Acción n;//</span>

Composición condicional

Cuando en un algoritmo se quiere indicar que cierta acción sólo se debe ejecutar bajo cierta condición se indica del siguiente modo:
<span style="background-color: #f9f9f9; font-family: monospace,Courier;">**Si** //Condición// **Entonces**
  //Acción;//
**FinSi**</span>
Sólo si la Condición (operación lógica) es verdadera se ejecutará la Acción. En este caso, la Acción puede referirse tanto a una acción elemental como a un conjunto de ellas.

Composición condicional doble (alternativa)

En ocasiones, se deben ejecutar unas acciones u otras dependiendo de la ocurrencia de una determinada condición. Esta especificación se realiza del siguiente modo:
<span style="background-color: #f9f9f9; font-family: monospace,Courier;">**Si** //Condición// **Entonces**
  //Acción A;//
**SiNo**
  //Acción B;//
**FinSi**</span>
Dependiendo de si la Condición es verdadera o falsa se ejecutará la Acción A o la Acción B respectivamente. De forma análoga a como ocurría en el caso anterior, tanto la Acción A como la Acción B pueden referirse a una acción elemental o a un conjunto de ellas.

Composición condicional múltiple

También es posible que a la hora de especificar la ejecución de una acción haya que escoger ésta entre varias dependiendo del valor de una determinada variable (o indicador). Este caso se expresa del siguiente modo:
<span style="background-color: #f9f9f9; font-family: monospace,Courier;">**Segun** //Indicador// Hacer
  **Caso** //Valor 1//:
    //Acción 1;//
  **Caso** //Valor 2//:
    //Acción 2;//
 ...
  **Caso** //Valor n//:
    //Acción n;//
  [**De Otro Modo**:
    //Acción X;//]
**FinSegun**</span>
En esta construcción Indicador debe tener un determinado valor que en caso de coincidir con alguno de los n valores provocará la ejecución de la acción asociada a dicho valor. Si el valor del Indicador no coincidiera con ninguno de los especificados se ejecutará la Acción X. No tiene por qué haber una Acción X para cuando el Indicador' no coincida con ninguno de los n valores; en ese caso, si el Indicador' no coincide con ningún valor no se ejecutaría ninguna acción.
Al igual que en los casos anteriores, todas las acciones que aparecen en esta estructura (Acción 1Acción 2,..., Acción n y Acción X) pueden referirse a una única acción o a un conjunto de ellas.

Composición iterativa o bucle[editar · editar código]

Cuando una acción o conjunto de acciones debe ejecutarse varias veces se recurre a una estructura iterativa o bucle. En este tipo de estructuras se necesita una condición que determine cuando terminan las iteraciones. Dependiendo de si esa condición se evalúa al principio o al final de la estructura y de si la condición para que las iteraciones continúen debe ser verdadera o falsa, se pueden definir cuatro construcciones iterativas distintas:

La condición de terminación ha de ser FALSALa condición de terminación ha de ser VERDADERA
Condición al principio de la estructura(Estructura 1)
MientrasCondiciónHacer
Acción;FinMientras
(Estructura 2)
HastaCondiciónHacer
Acción;FinHasta
Condición al final de la estructura(Estructura 3)
Hacer
Acción;MientrasCondición;
(Estructura 4)
Hacer
Acción;HastaCondición;
<span style="background-color: #f9f9f9; font-family: monospace,Courier;"> </span>
Sobre las cuatro construcciones que se acaban de presentar cabe hacer las siguientes observaciones:
  • Si en las estructuras 1 y 2, cuando se evalúa la ‘Condición’, ésta toma por primera vez un valor tal que no permita ejecutar la ‘Acción’ (FALSO en la 1 y VERDADERO en la 2), ésta no se ejecutará ninguna vez. Es decir, puede ocurrir que la ‘Acción’, en las estructuras 1 y 2, no se ejecute nunca.
  • En las estructuras 3 y 4, al estar la ‘Condición’ de terminación al final, la ‘Acción’ se ejecutará antes de que la condición se evalúe por primera vez, por lo que aunque la ‘Condición’ tome un valor tal que no se permita realizar más iteraciones, la ‘Acción’ se ejecutará al menos una vez.
  • Si las ‘Condiciones’ de las estructuras 1 y 2 son complementarias, es decir, que siempre que una es verdadera la otra es falsa y viceversa (ejemplo: [a > b] y [a ≤ b] son condiciones complementarias), entonces ambas estructuras son equivalentes ya que en ambas la ‘Acción’ se ejecutará el mismo número de veces.
  • De forma análoga, si las ‘Condiciones’ de las estructuras 3 y 4 son complementarias también ambas estructuras serán equivalentes.
Existe una construcción especial para indicar una repetición de acciones que se suele emplear cuando se quiere que dicha repetición se realice un número determinado de veces:
<span style="background-color: #f9f9f9; font-family: monospace,Courier;">**Para** //i = 1// **Hasta** //n// **Hacer**
  //Acción;//
**FinPara**</span>
En este caso la ‘Acción’ se repetirá n veces e ‘i’ será una variable que tomará todos los valores entre 1 y n (ambos inclusive) en cada una de las sucesivas repeticiones. Esta construcción, aunque de apariencia diferente a las anteriores, se podría expresar como un caso particular de la estructura 1 del siguiente modo:
<span style="background-color: #f9f9f9; font-family: monospace,Courier;">//i = 1;//
**Mientras** //i <= n// **Hacer**
  //Acción;//
  //i = i + 1;//
**FinMientras**</span>

No hay comentarios:

Publicar un comentario