
Introducción a Dev-C++

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>
**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
Configuración de la librería
Prueba de la librería
| 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:

- 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.

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

Consideraciones finales
- 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 
Expandit todo 
Contraer 
Seleccionar todo
- Ve a Proyecto -> Opciones del Proyecto -> Parámetros, fíjate que en la ventana Linker no tengas algo como:
- 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 
Expandit todo 
Contraer 
Seleccionar todo
- 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:
||
| ¿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 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:
![]() *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.
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:
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
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 | ||||
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í:

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

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ódigo | Formato |
| %d | Un entero |
| %i | Un entero |
| %c | Una caracter |
| %s | Una cadena |
| %f | Un real |
| %ld | Entero largo |
| %u | Decimal sin signo |
| %lf | Doble posición |
| %h | Entero corto |
| %o | Octal |
| %x | Hexadecimal |
| %e | Notación Científica |
| %p | Puntero |
| %% | Imprime Porcentaje |
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 Escape | Explicación |
| \n | Simula un Enter. Se utiliza para dejar una línea de por medio |
| \t | Tabulador horizontal. Mueve el cursor al próximo tabulador |
| \v | Tabulador vertical. |
| \a | Hace 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 |
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:

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
- Mencione y Explique que es la lógica estructurada:_
- Para que sirven las funciones getch() y putchar():_
- Menciones las diferencias fundamentales entre las funciones de entrada y salida por consola, con las funciones de entrada y salida por consola con formato:_
- Escriba algunas restricciones que deben cumplir los Identificadores:_
- ¿Cuál es la siferencia entre el tipo de dato %c, y el tipo de dato %s?:_
- Para que sirve la directiva <stdio.h>:_
- ¿Y la directiva <conio.h>?_
- ¿Para que sirve a declaratoria #define?:
- Para que sirve el punto y coma (;) en C:_
- En C, no existe el tipo de dato string; sin embargo, podemos hacer uso de las cadenas de texto, ¿Por qué?. Explique:_
- 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.
- Diseñe un programa en C, que lea y muestre en pantalla el valor de tres variables de tipo Entero.
- 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:

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
| Operador | Propósito |
| + | Suma |
| - | Resta |
| * | Multiplicación |
| / | División |
| % | Resto de la división entera |
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.
| Operador | Propó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. |
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:
| Operador | Significado |
| < | Menor que |
| <= | Menor o igual que |
| > | Mayor que |
| >= | Mayor o igual que |
| == | Igual que (Para las comparaciones) |
| ! = | No igual a |
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:
| Operador | Explicació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 |
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
TABLA 3.5
REGLAS DE JERARQUÍA:
- Se ejecuta primero el operador de más alta jerarquía
- Operadores que tienen igual jerarquía se evalúan de izquierda a derecha
- si existen expresiones encerradas entre paréntesis, estas se evalúan primero.
- 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.
- 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.
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.
En un algoritmo se definen tres partes: Entrada, Proceso y Salida.

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 |
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 dato | variables | Tipo de dato | variables |
| entero numeroPersonas | int numeroPersonas ; | ||
| entero numeroCajas | int numeroCajas; | ||
| ? El numeroPersonas y numeroCajas almacenan datos enteros. | |||
| real talla | double talla; | ||
| real peso, talla, promPonderado | double peso, talla, promPonderado; | ||
| ? La talla, peso y PromPonderado almacenan datos reales. | |||
| & Desea conocer mas sobre tipos numericos en C++ ? | |||
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:
| Ejm | Datos: | |
| Opcion_continuar | Verdadero | Falso |
| Condición_de_recepción_de_carta | Falso | Verdadero |
| Estado_cancelación_de_factura | Verdadero | Falso |
| Mayoria_de_edad | Falso | Verdadero |
| Empleado_de_licencia | Verdadero | Falso |
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 dato | variables | Tipo de dato | variables |
| boolean opcionCon | bool opcionCon; | ||
| boolean condicionRec | bool condicionRec; | ||
| boolean estadoFac | bool estadoFac; | ||
| boolean licenciaEmp | bool licenciaEmp; | ||
| ? opcionCon, condicionRec, estadoFac, licenciaEmp almacenan datos booleanos o lógicos. | |||
| & Desea conocer mas sobre tipos numericos en C++ ? | |||
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: | ' * ' | ' - ' | ' / ' | ' + ' | ' $ ' | '< ' | ' # ' | '@' | |
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 dato | variables | Tipo de dato | variables |
| caracter letras | char letras ; | ||
| caracter estCivil, nroMes | char estCivil, nroMes; | ||
| caracter operacion | char operacion; | ||
| caracter opcion | char opcion; | ||
| ? letras, estCivil, nroMes, operacion, opcion almacenan datos de tipo caracter. | |||
| & Desea conocer mas sobre tipos caracter C++ ? | |||
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 dato | variables | Tipo de dato | variables |
| caracter nombre[30] | char nombre[30] ; | ||
| caracter profesion[25] | char profesion[25]; | ||
| caracter* apellidos | char * 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++ ? | |||
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: TasaIgv = 0.18 Ejm: Prof = "Dr. "

Fig. 2. Ejemplos de constantes (espacios de memoria).
| En algoritmos | En programación C++ |
| const entero x = 500 | const int x = 50; |
| const real ti = 0.04 | const double ti = 0.04; |
| const caracter Letra = 'A' | const char Letra = 'A'; |
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


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.

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í;

Fig. 5. Definición de la función NombreFunción

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ón | Descripción | tipo de parámetro y de retorno en algoritmos | tipo de parámetro y de retorno en C++ |
| abs(p) | valor absoluto, retorna la magnitud de p | entero abs (entero p) real abs (real p) | int abs(int p) double fabs(double dp)) |
| sqrt(p) | raiz cuadrada, retorna la raiz cuadrada dep | real sqrt (real p) | double sqrt (double p) |
| pow(p1,p2) | potencia del parametro p1 elevado al parametro p2 | real pow (real p1, real p2) | double pow (double p1,double p2) |
| sin(p) | seno, retorna el seno de p expresado en radianes | real sin(real p) | double sin( double p) |
| cos(p) | coseno, retorna el seno de p expresado en radianes | real cos(real p) | double cos (double p) |
| tan(p) | tangente, retorna la tangente depexpresado en radianes | real tan (real p) | double tan (double p) |
| atan(p) | arco tangente, retorna el angulo en radianes cuya tangente es p | real atan (real p) | double atan (double p) |
| exp(p) | exponente p, de e, es decir ep | real exp( real p ); | double exp(double p) |
| log(p) | logaritmo neperiano de p | real log(real p) | double log(double p) |
| log10(p) | logaritmo decimal dep | real 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 p | entero int (real p) | int int (double p) |
Aqui tenemos las funciones estandar en el Lenguaje de programación C++ :
| FUNCION EN LA LLAMADA (EN EL PROGRAMA PRINCIPAL) | |||
| ALGORITMOS | LLamada en el LENGUAJE DE PROGRAMACION C++ | ||
| Definición | NombreFuncion | tipos de los Argumentos x y resultado r | Llamada y asignación en C++ |
| Valor Absoluto de x | entero x,r r = abs (x) | int x , r; double x, r; | r = abs( x ); r = fabs( x ) |
| Raiz Cuadrada de x | real x,r r=x 1/2 = sqrt(x) | double x, r ; | r = sqrt ( x ); |
| potencia real | real x,n,r r= xn = pow(x,n) | double x,n,r; es decir r = xn | r = pow (x,n); |
| Exponente de e | real x, r r = ex = exp(x) | double x, r ; | r = exp( x ); |
| Seno de x | real x,r r = sin (x) | double x, r ; | r = sin ( x ); |
| Coseno de x | real x,r r = cos(x) | doublex, r ; | r = cos( x ); |
| Tangente de x | real x,r r = tan(x) | double x, r ; | r = tan( x ); |
| Arco Tangente de x | real x,r r = atan(x) | doublex, r ; | r = atan( x ); |
| Logaritmo Natural o neperiano de x | real x,r r = log(x) | doublex, r ; | r = log( x ); |
| Logaritmo Decimal de x | real x,r r = log10(x) | doublex, r ; | r = log10( x ); |
| Numero aleatorio | r = random() | int r; | srand(); r = rand (); |
| parte_entera (x) | real x entero r r = entero (x) | double x; int r; | r = int (x); |
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 | |||
| Operador | Significado | Tipos operandos | Tipo de resultado |
| ^ | Potenciación | Base entera o real Exponente Entero | Entero o real Entero o real |
| + | Adición | Entero o real | Entero o real |
| - | Sustracción | Entero o real | Entero o real |
| * | Multiplicación | Entero o real | Entero o real |
| / | División | Entero o real | Real |
| div | division entera | Entero | Entero |
| mod | division entera | Entero | Entero |
Los Operadores en algoritmos y en C++**
| OPERADORES ARITMETICOS | ALGORITMOS PSEUDOCODIGO | C ++ |
| 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 | ||
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 | |||||
| algoritmos | Significado | En lenguaje C++ | |||
| Operador | Complemento | Operador | Complemento | Operador | Complemento |
| < | > = | menor que | mayor o igual que | < | > = |
| <= | > | menor o igual que | mayor que | < = | > |
| > | < = | mayor que | menor o igual que | > | < = |
| >= | < | mayor o igual que | menor que | > = | < |
| = | ¹ | igual que | distinto de (diferente) | = = | ! = |
| ¹ | = | distinto de (diferente) | ! = | = = | |
Ejm en algoritmos y en lenguaje C++
| En algoritmos | En C++ |
| Edad > 18 | Edad > 18 |
| SalBruto <= SalNeto | SalBruto <= SalNeto |
| EstCivil ¹ 'S' | EstCivil != 'S' |
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 algoritmos | En C++ | |
| ( Edad > 18 ) Y ( Talla < 1.70 ) | ( Edad > 18 ) && ( Talla < 1.70 ) | |
| NO ( sexo = ´F’ ) | ! ( sexo == ´F’ ) | |
| ( EstCivil = ‘C’ ) O (Sueldo > 2000) | ( EstCivil == ‘C’ ) ** |
|
FORMAS DE REPRESENTAR LOS ALGORITMOS
Los algoritmos pueden presentarse en :
- Diagramas de Flujo,
- Diagramas de Nassi Sneidermann y
- 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 algoritmo | INICIO |
| Finalizar el algoritmo | FIN |
| Lectura (permite ingresar los valores de las variables) | LEER |
| Mostrar (permite mostrar los valores de las variables) | MOSTRAR |
| Estructura Selectiva | SI (expBooleana) { ... .... } SINO {... .... } |
| SELECCIONA segun (selector ) { caso v1 : ....... } | |
| Estructura Repetitiva | PARA ( ... ; 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 algoritmos | En C++ |
| var1 =3+4*2= | var1 3+4*2 |
| var2 = 0.65 / 0.2 | var2 = 0.65 / 0.2 |
| var3 = var1 / var2 | var3 = var1 / var2 |
Asignación Lógica
| En algoritmos | En C++ | |
| Boolean var1,var2,var3 | Bool var1,var2,var3; | |
| var1 = 5 < 2 | var1 = 5 < 2; | |
| var2 = 7 >= 3 | var2 = 7 >= 3; | |
| var3 = var1 o var2 | var3 = var1 | var2 ; |
Asignación de Caracteres o cadena de caracteres
| En algoritmos | En C++ |
| caracter *vCad, car | char * vCad, car ; |
| car = 'S' | car = 'S'; |
| vCad="25 de diciembre de 1998"= | vCad "25 de diciembre de 1998"; |
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 algoritmos | En C++ | ||||
| real v | entero v2 | caracter sexo | double v; | int v2; | char sexo; |
| LEER v | cin>> v; | ||||
| LEER v2 | cin>>v2; | ||||
| MOSTRAR v | cout<<v; | ||||
| MOSTRAR v, v2 | cout<<v<<v2<<endl; | ||||
| LEER sexo | cin>>sexo; | ||||
| caracter nombre[20] | char nombre[20]; cadena de caracteres | ||||
| LEER nombre | cin>>nombre; lee un solo nombre sin espacios en blanco | ||||
| gets(nombre); lee nombre con espacios en blanco | |||||
| MOSTRAR nombre | cout<<nombre; con y sin espacios en blanco | ||||
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

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.
Fig. 8. Entrada , Proceso y salidad de información.ALGORITMO CalJornalINICIODeclaració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 pseudocodigo | En 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. | |
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.
==Í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
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 1, Acció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[ · ]
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 FALSA | La 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.
<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