






























Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Lección 1: Lenguaje de programación Dev C++. 1.1 Introducción al lenguaje Dev C++ y Estructura secuencial. 1.2 Estructuras de decisión if then else y switch ...
Tipo: Apuntes
1 / 38
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!































Asignatura: PROGRAMACIÓN
Código: TE
Prerrequisitos: Algebra Lineal (S)*
Intensidad horaria: 80 H.P.S.
Introducción: Dev-C++ es un Entorno Integrado de Desarrollo para el lenguaje de programación C/C++ que usa Mingw (Minimalist GNU for Windows, www.mingw.org ) de GCC (GNU Compiler Collection www.gnu.org/home.es.html ). Es un software de libre distribución (www.bloodshed.net) sujeto a los términos de la Licencia Pública General (GPL) de GNU.
Algunas de las características de Dev-C++ son:
http://www.uhu.es/javier.fernandez/El%20Entorno%20DevC.pdf
Objetivos:
Introducción al lenguaje Dev C++ y Estructura secuencial Estructura de decisión (if then else) Estructuras repetitivas (for, while y do while) Conversión de un algoritmo a función Programa menú funciones
Contenido
Lección 1: Lenguaje de programación Dev C++
1.1 Introducción al lenguaje Dev C++ y Estructura secuencial 1.2 Estructuras de decisión if then else y switch case 1.3 Estructuras repetitivas for, while y do while
Lección 2: Menú funciones
2.1 Conversión de un algoritmo a función 2.2 Programa menú funciones con anidamientos
Tema 1.1: Introducción al lenguaje Dev C++ y Estructura secuencial
El lenguaje de programación C es un lenguaje de alto nivel que se puede caracterizar por los siguientes aspectos:
Es de propósito general, esto significa que puede ser usado tanto para el desarrollo de sistemas operativos como para programas científicos, programas de aplicación o programas de educación y juegos. Posee una alta transportabilidad ya que los programas escritos en C pueden ser llevados de un tipo de ordenador a otro y funcionarán. Los cambios que hay que realizar son mínimos. Los compiladores generan ejecutables más pequeños porque por norma general, los programas escritos en lenguaje C poseen menos líneas de código que otros lenguajes de programación de alto nivel. El lenguaje de programación C es un lenguaje imperativo o procedimental. Esto significa que indica secuencias de acciones con el fin de llegar a un objetivo. Generalmente los lenguajes imperativos o procedimentales contienen una parte declarativa. El lenguaje C da órdenes a la máquina. Es un lenguaje estructurado ya que los programas escritos con él se pueden organizar en módulos.
http://recursostic.educacion.es/observatorio/web/ca/software/programacion/745- introduccion-a-la-programacion-con-el-lenguaje-c
Objetivos: Introducción al lenguaje Dev C++ y Estructura secuencial Estructuras de decisión if then else y switch case Estructuras repetitivas for, while y do while Conversión de un algoritmo a función Programa con menú funciones
o Palabras reservadas en lenguaje C
Las palabras reservadas tienen un significado especial para el compilador y representan una
instrucción propia de su lenguaje, no se pueden utilizar para identificar variables y se escriben
siempre en minúsculas. Ver Tabla 1.
Tabla 1. Palabras reservadas en lenguaje C
Asm Auto^ Bool^ break^ Case^ catch Char Class Const const_cast continue default Delete Do Double dynamic_cast Else enum Explicit Extern False float For friend Goto If Inline int Long mutable namespace New Operator private protected Public Register reinterpret_cast Return short Signed Sizeof Static static_cast Struct switch template This Throw True Try typedef Typeid Typename Unión Unsigned Using while Void Volatile
Con la función system(“pause”) se utiliza para pausar un programa una vez esté corriendo y
reemplaza a la función getch() de la librería #include. Ambas hacen lo mismo y se
colocan la final antes de cerrar el programa principal.
#include: contiene los prototipos de las funciones y macros de clasificación de caracteres. Ver Tabla 5.
Tabla 5. Archivos que utiliza la librería < string.h > memchr memcmp memcpy memmove memset strcat strchr memchr strcmp strcoll strcpy strcspn strerror strlen strmcat strcmp strmcmp strmcpy strpbrk strrchr strspn strstr strtok strmcmp strxfrm strxfrm
#include: contiene varias funciones para comprobación de tipos y transformación de caracteres. Ver Tabla 6
Tabla 6. Archivos que utiliza la librería < ctype.h > tolower toupper
Toupper instrucción que convierte a mayúscula por ejemplo [ s -> S ]
#include: contiene los prototipos de las funciones y otras definiciones para el uso y manipulación de funciones matemáticas. Ver Tabla 7
Tabla 7. Archivos que utiliza la librería < math.h > acos asin atan atan2 ceil cos cosh exp fabs floor fmod frexp ldexp log log10 modf pow sin sinh sqrt tan tanh
#include: contiene los prototipos de las funciones, macros, y tipos para manipular la hora y la fecha del sistema. Ver Tabla 8.
Tabla 8. Archivos que utiliza la librería < time.h > asctime clock ctime difftime Gmtime localtime mktime strftime time
#include: contiene los prototipos de las funciones, macros, y constantes para preparar y manipular la consola en modo texto en el entorno de MS-DOS®. Ver Tabla
Tabla 9. Archivos que utiliza la librería < conio.h > cgets clreol clrscr cprintf cputs cscanf delline
getche getpass gettext gettextinfo gotoxy highvideo inport
insline Getch lowvideo movetext normvideo outport putch
puttext setcursortype textattr textbackground textcolor textmode ungetch
#include: en esta librería residen los flujos stream (cin y cout) acompañados del operador de inserción (<<) y de extracción (>>) respectivamente y se utiliza para datos de entrada y salida como printf y scanf de la librería ****. Las { } en ambos ejemplos indican el comienzo y el final del programa principal o función principal.
Ejemplo comparativo utilizando la librería ****.
*/ cuadrado de un numero real */
main() { float x, cuadrado; printf("Teclee un numero real: "); scanf("%f",&x); cuadrado=xx; printf("su cuadrado es %f : ",cuadrado); getch(); }*
Se puede escribir el mismo código con la librería .
**// cuadrado de un numero real
main() { float x, cuadrado; cout<<"Teclee un numero real: " ; cin>>x; cuadrado=xx; cout<<"su cuadrado es: " << cuadrado; getch(); }*
o Cadenas de formato: las cadenas de formatos como printf, permite dar formato específico a la salida y a cada símbolo cuando le antecede un %. Un dato es la expresión general que describe los objetos con los cuales opera una computadora. Los tipos de datos más comunes son: char, int, float, long, short, doublé, void etc. Ver Tabla 10.
Tabla 10. Cadenas de formatos %d,% i entero decimal con signo, (eje: 38) %o entero octal sin signo, (eje: o43) %u entero decimal sin signo, (eje: 47) %x entero hexadecimal sin signo (en minúsculas) , (eje: 0x32) %X entero hexadecimal sin signo (en mayúsculas) , (eje: 0X32) %f Coma flotante en la forma [-]dddd.dddd ,^ (eje:^ - 3.2, 56.896) %e Coma flotante en la forma [-]d.dddd e[+/-]ddd, (eje: 2.3e4, 4.879e-4) %g Coma flotante según el valor
o Operadores unarios: los operadores unarios admiten un único argumento y cuentan con operador de cambio de signo (-) y también con los de incremento (++) y decremento (- -) y son una forma fácil de sumar o restar 1 a una variable.
Tabla 13. Operadores unarios
variable ++ Postincremento ++variable Preincremento variable - - Postdecremento
Ejemplos:
++a; a=a+1; - -b; b=b-1;
Los formatos postfijos se conforman de modo diferente según la expresión en que se aplica,
ejemplos:
b=++a; a=a+1; b=a; b=a++; b=a; a=a+1; int i,j,k=5; k++; k ahora vale 6, es igual que ++k; --k; k vale ahora 4, es igual que k--; i=4k++; k vale ahora 5 e i= j=4++k; k vale ahora 6 e j=
o Operadores aritméticos: los operadores aritméticos se utilizan para hacer cálculos aritméticos. Ejemplos: División entera 19%6= 19/6= 15/2= 15%2= División real 10/3=3.
Tabla 14. Operadores aritméticos
Nombre Función Multiplicación * División / Módulo o resto de una división entera % Suma + Resta -
Ejemplo : cuántos pares e impares hay, utilizando el modulo división entera?
/* cuantos pares e impares hay?*/ #include #include main() { system("COLOR F1"); int a,b,c,impar,par,ed,ef,eg; printf("Digite tres números enteros\n"); scanf("%d %d %d",&a,&b,&c); impar=((a%2)+(b%2)+(c%2)); par=3-impar; ed=(a%2); ef=(b%2); eg=(c%2); printf("\nHay %d numero(s) impar(es)\n\n",impar); printf("\nHay %d numero(s) par(es)\n\n",par); printf("\nporque en el modulo de una division entera 0 es par y 1 es impar "); printf("\nentonces hay %d %d %d \n\n ",ed,ef,eg); system("pause"); }
Código ascii: la siguiente figura 1, muestra el código ascii imprimibles y no imprimibles.
Figura 1. Código ascii
http://ticslevalle.blogspot.com/2013/04/codigo-ascii.html
La sentencia #include no es una instrucción C. El símbolo # la identifica como una directiva, es decir, una orden para el preprocesador de C, responsable de realizar ciertas tareas previas a la compilación.
Los archivo *.h se denominan archivos de cabecera. Todos los programas C requieren la inclusión de uno o varios archivos de este tipo, por lo que normalmente es necesario utilizar varias líneas #include.
main ()
Es el nombre de una función. Un programa C se compone de una o más funciones, pero al menos una de ellas debe llamarse main() , pues los programas C empiezan a ejecutarse por esta función.
Los paréntesis identifican a main() como una función. Generalmente, dentro de ellos se incluye información que se envía a la función. En este caso no hay traspaso de información por lo que no hay nada escrito en su interior; aun así son obligatorios. El cuerpo de una función (conjunto de sentencias que la componen) va enmarcado entre llaves { y }. Ese es el significado de las llaves que aparecen en el ejemplo.
int docena;
Es una sentencia declarativa. Indica que se va a utilizar una variable llamada docena que es de tipo entero. La palabra int es una palabra clave de C que identifica uno de los tipos básicos de datos que tiene C. En C es obligatorio declarar todas las variables antes de ser utilizadas. El " ; " identifica la línea como una sentencia C.
docena = 12;
Es una sentencia de asignación. Almacena el valor 12 a la variable docena. Obsérvese que acaba con punto y coma. Como en la mayoría de los lenguajes, el operador de asignación en C es el signo igual " = ".
printf ("Una docena son %d unidades\n", docena);
Esta sentencia es importante por dos razones: en primer lugar, es un ejemplo de llamada a una función. Además ilustra el uso de una función estándar de salida: la función printf().
La sentencia consta de dos partes:
La función printf() funciona de la siguiente forma: el primer argumento es una cadena de formato. Esta cadena será lo que, básicamente, se mostrará en pantalla. En la cadena de formato pueden aparecer códigos de formato y caracteres de escape.
Un código de formato comienza por el símbolo % e indica la posición dentro de la cadena en donde se imprimirá el segundo argumento, en este caso, la variable docena.
Más adelante estudiaremos todos los códigos de formato de Turbo C o Dev-C++. En este ejemplo, %d indica que en su lugar se visualizará un número entero decimal. Un carácter de escape comienza por el símbolo **. Son caracteres que tienen una interpretación especial. La secuencia \n es el carácter nueva línea y equivale a la secuencia LF+CR (salto de línea + retorno de cursor).
La función printf() pertenece a la biblioteca estándar de C. Las definiciones necesarias para que funcione correctamente se encuentran en el archivo stdio.h , de ahí que sea necesaria la sentencia **#include **.
Ejemplo 2: scanf()
El siguiente programa realiza la conversión de pies a metros usando la equivalencia: 1 pie = 0.3084 metros El programa solicita por teclado el número de pies y visualiza en pantalla los metros correspondientes.
/ Ejemplo 2. Programa PIES.C / #include main () { int pies; float metros; printf ("\n¿Pies?: "); scanf ("%d", &pies); metros = pies * 0.3084; printf ("\n%d pies equivalen a %f metros\n", pies, metros); } Este programa hace aparecer en pantalla:
¿Pies?: 24 24 pies equivalen a 7.315200 metros
Estudiaremos ahora las novedades que aparecen en este programa.
float metros;
Es una sentencia declarativa que indica que se va a utilizar una variable llamada metros , que es del tipo float. Este tipo de dato se utiliza para declarar variables numéricas que pueden tener decimales.
printf ("\n¿Pies?: ");
Es la función printf() comentada antes. En esta ocasión sólo tiene un argumento: la cadena de control sin códigos de formato. Esta sentencia simplemente sitúa el cursor al principio de la siguiente línea ( \n ) y visualiza la cadena tal como aparece en el argumento. scanf ("%d", &pies);
Este programa hace aparecer en pantalla:
Teclee dos números enteros: 23 4 El resultado es 92
Las novedades que se presentan en este programa se comentan a continuación.
scanf ("%d %d", &a, &b); La cadena de control de scanf() contiene dos códigos de formato. Al igual que ocurre en printf() , se precisan dos argumentos más, uno por cada código de formato. Los dos números se teclean separados por espacios en blanco, tabuladores o por la tecla Intro.
return (c);
La palabra clave return se usa dentro de las funciones para salir de ellas devolviendo un valor. El valor devuelto mediante return es el que asume la función. Eso permite tener sentencias como producto = multiplica (int a, int b);
es decir, sentencias en las que la función está a la derecha del operador de asignación. Para nuestros propósitos actuales podemos decir (aunque esto no sea exacto) que después de la sentencia return la función multiplica() actúa como si fuese una variable que almacena el valor devuelto.
Los paréntesis son opcionales, se incluyen únicamente para clarificar la expresión que acompaña a return. No deben confundirse con los paréntesis de las funciones.
*Ejemplo 4: Calcular el área de un círculo con printf y scanf / Programa para calcular el área de un círculo */
main() { float radio, area; printf("Radio =? "); scanf("%f",&radio); area=3.1416radioradio; printf("Area = %f",area); getch(); }**
Este programa hace aparecer en pantalla: Radio =? 4 Area = 50.
Ejemplo 5: Cadenas de un vector con printf o puts /cadenas en un vector/ #include #include **
main() { char nombre[15], apellido1[15], apellido2[15];
printf("Introduce tu nombre: "); scanf("%s",nombre); printf("Introduce tu primer apellido: "); scanf("%s",apellido1); printf("Introduce tu segundo apellido: "); scanf("%s",apellido2);
/para obtener la salida puedo decir/
printf("Usted es %s %s %s\n",nombre,apellido1,apellido2);
/* o escribir la salida utilizando la directiva puts (colocar)*/
puts(nombre); puts(apellido1); puts(apellido2);
/Al final cierro con esta directiva que regresa un carácter tan pronto se oprime una tecla sin esperar que el usuario oprima Enter /, y se coloca antes de cerrar el programa para poder visualizarlo.
getch (); }
cadena[0]='L'; cadena[1]='e'; cadena[2]='t'; cadena[3]='r'; cadena[4]='a'; cadena[5]='s'; cadena[6]=0; /* Carácter nulo, significa el fin del texto */
printf("La cadena es: %s\n", cadena); printf("La tercera letra de la cadena es: %c\n", cadena[2]); printf("Las últimas tres letras de la cadena son: %s\n", &cadena[3]); getch ();
}
Ejemplo 3: cadenas en un vector
/cadenas en un vector/
#include
#include
main()
{
char nombre[15], apellido1[15], apellido2[15];
printf("Introduce tu nombre: "); scanf("%s",nombre); printf("Introduce tu primer apellido: "); scanf("%s",apellido1); printf("Introduce tu segundo apellido: "); scanf("%s",apellido2); printf("Usted es %s %s %s\n",nombre,apellido1,apellido2);
printf("o escribirlo por filas con puts: ");
puts(nombre); puts(apellido1); puts(apellido2); getch ();
}
Estructuras de decisión o selección
Las sentencias de decisión o también llamadas estructuras de control que realizan una pregunta la cual retorna verdadero o falso (evalúa una condición) y selecciona la siguiente instrucción a ejecutar dependiendo la respuesta o resultado.
Figura 2: estructura de decisión o alternativa simple
#include #include int main() { int num; printf( "Introduce un número " ); scanf( "%i", &num ); if (num==10) { printf( "El número es correcto\n" ); } getch(); }
Figura 3: estructura de decisión o alternativa doble
#include #include int main() {
Anidamientos de estructuras de decisión. Se anidan colocando una estructura en el interior de otra estructura, no debe haber solapamiento. También se cumple para las demás estructuras repetitivas. Ver figura 5.
Figura 5. Anidamientos
Estructura switch-case (según-caso)
La estructura según caso, es una estructura de decisión múltiple. Se evalúa una expresión y en función del valor resultante se realiza una determinada tarea o conjunto de tareas. En caso de existir un valor no comprendido entre 1 y n, se realiza una acción excluyente o por defecto (default). En la figura 6, se muestra el diagrama de flujo de esta estructura.
Figura 6. Estructura switch case (según caso)
Código fuente: switch (expresion) { case 1: instruccion; break; case 2: instruccion; break; case 3: instruccion; break; case n: instruccion; break; default : }
Cuando se ejecuta la instrucción switch, la expresión se evalúa y se transfiere el control directamente al grupo de instrucciones cuya etiqueta case tenga el mismo valor de expresión. Si ninguno de los valores de las etiquetas case coincide con el valor de expresión, entonces no se seleccionará ninguno de los grupos de la instrucción switch o se realizara la instrucción por defecto (default). El valor por defecto (default) es una forma conveniente de generar un mensaje de error en caso de tener entradas inválidas.
break: es una sentencia de salto que se utiliza cuando se requiere salir de un ciclo incondicionalmente antes de que se termine la iteración actual.
Probar las estructuras según caso y entenderlas
Ejemplo 7: introduce un número #include #include int main() { int num; printf( "\nIntroduce un numero entero \n\n " ); printf( "\n1-Verifique si es el número " ); printf( "\n2-Verifique si es el número " ); printf( "\n3-Verifique si es el número " ); printf( "\n4-por defecto \n\n " ); scanf( "%i", &num ); switch( num ) { case 1: printf( "\nEs un 1\n" ); break; case 2: printf( "\nEs un 2\n" ); break; case 3: printf( "\nEs un 3\n" );