Publicidad
Publicidad

Más contenido relacionado

Publicidad

Introducción al lenguaje c

  1. PROGRAMACION EN C++ 1
  2. ESTRUCTURA DE UN PROGRAMA Todo programa en C se construye básicamente mediante tres tipos de objetos: Funciones. Variables. Tipos de datos. 2
  3. ESTRUCTURA DE UN PROGRAMA 3 < comandos del preprocesador> <definición de tipos> <prototipos de funciones> <variables> <funciones> Las funciones a la vez tienen la siguiente estructura: <tipo>nombre_de_la_función(<declaración de parámetros>) { <declaraciones locales> <sentencias> } De todas las funciones que se declare, una debe ser llamada main, éste es El cuerpo principal del programa, desde aquí se pueden llamar a otras Funciones. ENCABEZADO CUERPO
  4. ESTRUCTURA DE UN PROGRAMA 4 /*Variantes de Definición*/ #include<nombre_de_la_biblioteca> #define nombre_de_la_constante //Función principal void main() { definición de variables locales; instrucciones del programa; } #include <biblioteca1.h> #include <biblioteca2.h> ... declaraciones de funciones ... ... definiciones (cuerpos de funciones) ... ... declaraciones de variables globales ... main() { ... cuerpo del main ... } ... otras definiciones de funciones ... Definición de Cabecera y/o Ficheros Declaración de Datos Función Principal Otras Funciones y/o Procedimientos
  5. ESTRUCTURA DE UN PROGRAMA El inicio del programa debe llevar: El símbolo de numeral (#) la sentencia “include”, y entre signos de mayor y menor que (<>) el nombre de la librería o fichero. Seguidas de las librerías, para que “Incluya” en el programa la directiva la cual contiene las funciones para procesar datos. #include <fichero> 5
  6. ESTRUCTURA DE UN PROGRAMA #include <stdio.h>.- Contiene las funciones de entrada y salida de datos. #include <conio.h>.- Declara varias funciones usadas llamando la consola del sistema operativo. #include <string.h>.- Manejo de cadenas. #include <stdlib.h >.- Memoria dinámica. #include <math.h >.- Rutinas matemáticas. 6
  7. Ejemplo #include<stdio.h> int a,b; main() { a=5; b=12; suma=a+b; suma=suma+b; } 7 Comandos del preprocesador Definición de variables Función principal Cuerpo de la función (sentencias)
  8. TIPOS DE DATOS 8 TIPO TAMAÑO EN BITS RANGO MINIMO CARÁCTER char 8 -128 a 127 unsigned char 8 0 a 255 signed char 8 -128 a 127 E N T E R O int 16 -32768 a 32767 unsigned int 16 0 a 65535 signed int 16 Igual que int short int 16 Igual que int unsigned short int 16 0 a 65535 signed shor int 16 Igual que short int long int 32 -2147483648 a 2147483647 signed long int 32 Igual que long int unsigned long int 32 0 a 42949667295
  9. TIPOS DE DATOS 9 TIPO TAMAÑO EN BITS RANGO MINIMO PUNTO FLOTANTE float 32 ±(3.4e-38 a 3.4e+38) 6 dígitos de precisión double 64 ±(1.7e-308 a 1.7e+308 ) 10 dígitos de precisión long double 80 ±(3.4e-4932 a 3.4e+4932) 10 dígitos de precisión SIN TIPO void 0 Sin valor
  10. Conversiones de Tipos de Datos • Cuando en una expresión se mezclan constantes y variables de distintos tipos de datos, todas ellas se convierten a 1 solo tipo. Tipos de conversion Automática Moldes (casting)
  11. Conversión Automática • Se realiza la conversión automática de todos los operadores al mismo tiempo La categoria de los tipos esta dado por su tamaño en bytes el de mayor valor tiene mayor categoría Long double louble float unsigned long int long int unsigned int int unsigned char char
  12. Conversión Automática • El operador de menor categoría se convierte al de mayor categoría. Este proceso se llama promoción de tipo
  13. Conversión Automática • El resultado de una sentencia de asignación se convierte al tipo de la variable a la que se asigna el valor de la expresión. Promoción de Tipo int i; char ch; ch=i; i se convierte en char Pérdida de rango int i; float f; f=i; i se convierte en punto flotante
  14. Conversión Automática Tipo Destino Tipo Expresión Posible perdida información signed char char Si valor >127, destino negativo char short int 8 bits mas significativos char int 8 bits mas significativos char long int 24 bits mas significativos int long int 16 bits mas significativos float double Precisión, resultado redondeado double long double Precisión, resultado redondeado
  15. Moldes (Casting) • Se puede especificar por concreto la conversión a la que se desee. • La forma general del molde es: (tipo) expresion • Por ejemplo: (float) i/j; Donde i y j son enteros.
  16. CONSTANTES 16 Son valores fijos que no pueden ser alterados por el programa. Constantes Carácter (char) Pueden representar un único carácter (código ASCII) y van encerradas entre apóstrofes. Ejemplo: ‘b’, ‘*’. Constante Cadena Es una secuencia de caracteres encerrada entre comillas. “Ejemplo de una cadena” “a” es una cadena ‘a’ es un caracter
  17. CONSTANTES 17 Constantes Enteras Especifica números enteros, es decir sin parte fraccionaria. 10, -100 Octal: Una constante octal comienza por el carácter 0, Ejm: 020 (16 en decimal) Hexadecimal: Una constante hexadecimal comienza por los caracteres 0x, Ejm: 0x20 (32 en hexadecimal) Usando un sufijo se puede especificar de forma precisa el tipo de una constante entera: SUFIJO TIPO DE DATO CONSTANTE U Unsigned int 34500U L Long int 34500L F Float -123F L Long double 1550.1L
  18. IDENTIFICADORES 18 Son los nombres utilizados para referencia las constantes, variables, funciones, etiquetas y otros objetos definidos por el usuario. • La longitud de un identificador puede variar entre uno y varios caracteres • El primer caracter debe ser siempre una letra o el caracter de subrayado, los restantes pueden ser números, letras o el subrayado. • Las letras minúsculas y mayúsculas se tratan como distintas. DECLARACION DE VARIABLES Las variables deben ser declaradas antes de poder ser usadas: tipo lista_variables; tipo: tipo de dato válido con cualquier modificador Lista_variables: Nombres de identificadores separados por comas ; , la sentencia de declaración siempre finaliza con ; Ejm: int, a,b,c; float contador, valido, calculo; char nombre, curso;
  19. CONSTANTES SIMBOLICAS 19 Existen dos formas de definir constantes simbólicas: • Preprocesador #define Esta comienza por #, se sitúa normalmente fuera de las funciones, al inicio, estas no terminan con punto y coma, siempre va una sentencia por línea. Ejm: #define PI 3.141516 • El modificador const Se declara utilizando la palabra const antes de las palabras claves para identificar el tipo: int, float, double, además como no puede ser cambiada se debe inicializar su declaración. Ejm: const float PI = 3.141516; const int MAX =100, MIN = 1;
  20. CONSTANTES SIMBOLICAS 20  Para definir las constantes de tipo carácter asociadas a caracteres especiales se usan secuencias de escape: ▪ ‘b’: Retroceso (back space). ▪ ‘f’ : Salto de página ▪ ‘n’: Salto de línea ▪ ‘r’ : Retorno de carro ▪ ‘t’ : Tabulación horizontal ▪ ‘v’: Tabulación vertical ▪ ” : Comillas ▪ ’ : Apóstrofe ▪ : Barra invertida ▪ 0 : Nulo ▪ a : Alerta
  21. COMENTARIOS 21  Los comentarios en C pueden ocupar varias líneas y se encuentran delimitados entre /* y */. int main() { /* Esto es un comentario de varias lineas.*/ return(0); }
  22. OPERADORES ARITMETICOS 22  El operador de asignación es el igual (=).  Los operadores aritméticos son:  Suma (+)  Resta (-)  Multiplicación (*)  División (/)  Módulo o resto (%)  Incremento (++)  Decremento (--)
  23. OPERADORES ARITMETICOS 23  División entera vs división real:  Depende de los operandos: 4 / 3 --> 1 entero 4.0 / 3 --> 1.333 real 4 / 3.0 --> 1.333 real 4.0 / 3.0 --> 1.333 real
  24. Pre/post incrementos 24 Los operadores unarios (++) y (--) representan operaciones de incremento y decremento, respectivamente. a++; /* similar a a=a+1 */ Ejemplos: a=3; b=a++; /* a=4, b=3 */ a=3; b=++a; /* a=4, b=4 */ a=3; b=a--; /* a=2, b=3 */
  25. OPERADORES DE ASIGNACION 25 El operador de asignación en C++ es el igual(=) a=b+3; Existen otras variantes de asignación: a+=3; /* Equivalente a a=a+3 */ a*=c+d; /* Equivalente a a=a*(c+d) */ a/=a+1; /* Equivalente a a=a/(a+1) */ Para las asignaciones entre variables o expresiones de tipos diferentes se recomienda hacer casting: a=(int)(x/2.34);
  26. OPERADORES RELACIONALES 26 Los operadores de relación son:  Igual (==)  Distinto (!=)  Mayor (>) y Mayor o igual (>=)  Menor (<) y Menor o igual (<=) El resultado de un operador de comparación es un valor entero (0 es falso) y (distinto de 0 verdadero). a=3>7 /* a vale 0 (falso) */
  27. OPERADORES LOGICOS 27 Sobre expresiones booleanas (enteros) se definen los siguientes operadores lógicos:  And lógico (&&)  Or lógico (||)  Negación lógica (!) Ejemplo a=(3>2 || 5==4) && !1 /* Falso */
  28. ENTRADA Y SALIDA DE DATOS Se utiliza las funciones de biblioteca: “scanf” para la entrada de valores. Sintaxis es la siguiente: Lee el valor y lo guarda en una variable. “printf” para la salida de información. Sintaxis es la siguiente: Imprime en pantalla el texto y el valor 28 scanf ("%d", &variable); printf ("El valor es %d", variable);
  29. Entrada scanf() Codigo Formato %c Leer Carácter %d Leer un Entero Decimal con signo %i Leer Entero Decimal con signo %e Leer un número Punto flotante %f Leer un número Punto flotante %g Leer un número Punto flotante %o Leer un numero octal %s Leer una Cadena %u Leer Entero decimal sin signo %x Leer número hexadecimal %p Leer un puntero %n Recibe un valor entero igual al numero de caracteres leidos. %[] Juego de inspección, define un conjunto de caracteres que pueden leerse utilizando scanf(
  30. • Para leer 2 o mas variables al mismo tiempo se escribe: scanf(¨%d%f¨, &numero, &promedio);
  31. Entrada scanf() Modificadores de formato Longitud de campo scanf(«%20s»,cad) scanf(«%2d»,&i); Lectura de enteros Se aplican a formatos d, i, o, x. Leer entero largo ld Leer entero corto hd Lectura en punto flotante Se aplica a formatos f, e, g. ´l´ asigna los datos a una variable double ´L´ asigna los datos a una variable long double
  32. CODIGO FORMATO %c Carácter %d Entero Decimal con signo %i Entero Decimal con signo %e Punto flotante en notación científica (imprime e) %E Punto flotante en notación científica (imprime E) %f Punto flotante en notacion decimal %g Usa %e o %f, el mas corto (imprime e) %G Usa %E o %f, el mas corto (imprime E) %o Entero octal con sin signo %s Cadena de caracteres %u Entero decimal sin signo %x Entero hexadecimal sin signo (imprime minusculas) %X Entero hexadecimal sin signo (imprime mayusculas) %p Mostrar un puntero %n El argumento asociado es un puntero a entero al que se asigna el numero de caracteres escritos hasta que aparezca %n. %% Imprime el carácter %
  33. Salida printf() Modificadores de formato Modifican la salida de los especificadores. Se colocan entre el símbolo % y el codigo de formato. Especificador de longitud mínima de campo printf(‟%12”,567) printf(‟%012”,56 7) Especificador de precisión Punto flotante printf(‟%10,4”,7,9645) Carácter printf(‟%8,12”,‟Texto sencillo para imprimir) Ajuste a la Salida printf("%10,2fn", 341,566);
  34. Salida printf() Modificador l y h Se aplican a especificadores de formato d, i, o, u, x %lh, imprime entero largo %hd, imprime entero corto %hud, imprime un entero corto sin signo
  35. ENTRADA Y SALIDA DE DATOS ENTRADA DE TIPO CARÁCTER. Se declara una variable de tipo carácter y se guarda en: getch() o getche(). La diferencia es que getche() muestra en pantalla el carácter introducido. getch() lo mantiene oculto. Sintaxis: char opc; opc=getch(); opc=getche(); 35
  36. Programa que calcula el área y perímetro de un circulo. #include <stdio.h> #include <conio.h> #include <math.h> void main() { double r, a, p; printf ("Programa que calcula el área y perímetro de un circulo"); printf ("nIntroduce el radio: "); scanf ("%lf", &r); a = M_PI * pow(r,2); p = M_PI * (r+r); printf ("nEl área es: %5.2lf", a); printf ("nEl perímetro es: %lf", p); getch(); } 36
  37. MULTIPLICACIÓN /* Programa para multiplicar dos números */ #include <stdio.h> /* Esta funcion devuelve la suma de los enteros a y b */ int sumar(int a, int b) { return a + b; } /* Linea principal del programa */ int main(void) { int a, b; printf("Introduce dos numeros enteros y pulsa enter: "); scanf("%d %d", &a, &b); printf("La suma de %d y %d es %dn", a, b, sumar(a,b)); return 0; } 37
  38. FORMATOS DE LECTURA O IMPRESIÓN 38 %d Si el dato que se imprimirá o leerá será un número entero. %f Si el dato que se imprimirá o leerá será un número real. %c Si el dato que se imprimirá o leerá será un carácter. %s Si el dato que se imprimirá o leerá será una cadena.
  39. 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. 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 39
  40. VARIABLES 40 Variable Global Variable Local #include <stdio.h> int x; int main() { } #include <stdio.h> int main() { int x; }
  41. ESTRUCTURA DE DECISIÓN Estructura de decisión If-Else Esta estructura de decisión evalúa una expresión condicional y si se cumple, se ejecuta la sentencia s; si no, se ejecuta la sentencia t. La segunda parte de la condición, else <t>, es opcional. SINTAXIS if (condición) Instrucciones a ejecutar cuando la condición es verdadera; Si se trata de dos o más instrucciones, estas van entre llaves { } else Instrucciones a ejecutar cuando la condición es falsa; 41
  42. Programa para determinar si un año es bisiesto. #include <stdio.h> #include <conio.h> void main() { int year; clrscr(); //Limpia la pantalla printf ("Programa para determinar si un año es bisiesto"); printf ("nIntroduce un numero de añon"); scanf ("%i", &year); if (year%4 == 0 && year%100 != 0 || year%400 == 0) printf ("aanEl año %i si es bisiesto", year); else printf ("anEl año %i no es bisiesto", year); getch(); } 42
  43. CONDICIONES ANIDADAS IF ANIDADAS if (condición) if (condición) Instrucciones a ejecutar cuando la condición es verdadera; else Instrucciones a ejecutar cuando la condición es falsa; else Instrucciones a ejecutar cuando la condición es falsa; 43
  44. EJEMPLO #include <stdio.h> #include <conio.h> void main() { int a, b, c, d, mayor; clrscr (); printf ("Programa que indica cual de 4 numeros es el mayorn"); printf ("Introduce 4 numeros enteros:n"); scanf ("%i%i%i%i", &a, &b, &c, &d); if (a > b) if (a > c) if (a > d) mayor = a; else mayor = d; else if (c > d) mayor = c; else mayor = d; else if (b > c) if (b > d) mayor = b; else mayor = a; else if (c > d) mayor = c; else mayor = d; printf ("El mayor es %i", mayor); getch(); } 44
  45. ESTRUCTURA SWITCH Evalúa una expresión que puede tomar n valores distintos, según con cual de estos valores coincida, se ejecutaran ciertas acciones. SINTAXIS switch (valor) { case valor1: <sentencias> case valor2: <sentencias> ... default: <sentencias> } 45
  46. #include<stdio.h> void main() { int dia; printf("ingrese un número entre 1 y 7........ "); scanf("%d",&dia); switch(dia) { case 1: printf(" LUNES n"); break; case 2: printf(" MARTES n"); break; case 3: printf(" MIERCOLESn"); break; case 4: printf(" JUEVESn"); break; case 5: printf(" VIERNESn"); break; case 6: printf(" SABADOn"); break; case 7: printf(" DOMINGOn"); break; default: printf(" SOLO NÚMEROS ENTRE 1 Y 7........ "); } } 46
  47. ESTRUCTURAS DE CONTROL WHILE La estructura while ejecuta la condición de continuación del ciclo al principio de este, antes de ejecutar las condiciones del bucle. SINTAXIS while (condición) { Instrucciones que se repetirán mientras la condición sea verdadera; Instrucciones adicionales; } 47
  48. EJEMPLO Las sentencias se ejecutan si la expresión es verdadera. La comprobación es al inicio del bucle. #include<stdio.h> int a; main() { a=3; while(a<10) { scanf(“%d”,&a); a=a+1; printf("%d",a); } } 48
  49. LA SENTENCIA do-while Verifica la condición al finalizar el bucle. SINTAXIS do { Sentencias; } while(condición); 49
  50. EJEMPLO Leer números desde el teclado hasta que uno de ellos es menor que o igual a 100: main() { int num; do { scanf("%d", &num); } while ( num>100 ); } Do-While puede ser útil en el desarrollo de programas con menús. 50
  51. SENTENCIA FOR Permite inicializar los controles del bucle. SINTAXIS for(indice=inicio bucle; indice=fin bucle; indice incrementa++) { sentencias dentro del bucle } 51
  52. EJEMPLO #include<stdio.h> void main { int num,mayor,menor,x; mayor=0; menor=10000; for(x=1; x<=8;x++) { printf("INGRESAR NÚMERO %dn",x); scanf("%d",&num); if(mayor<num) mayor=num; if(menor>num) menor=num; } printf("NÚMERO MAYOR: %d MENOR: %d n",mayor,menor); 52
  53. Arreglos
  54. ¿Arreglos o arrays? Un arreglo (array) es una colección de datos del mismo tipo, que se almacenan en posiciones consecutivas de memoria y reciben un nombre común.
  55. Arreglos Para referirse a un determinado elemento de un array se deberá utilizar un índice, que especifique su posición relativa en el array. Un arreglo es una colección finita, homogénea y ordenada de elementos.
  56. ARREGLOS •Finita:Todo arreglo tiene un límite; es decir,debe determinarse cuál será el número máximo de elementos que podrán formar parte del arreglo. •Homogénea: Todos los elementos del arreglo deben ser del mismo tipo. •Ordenada: Se puede determinar cuál es el primer elemento, el segundo, el tercero,.... y el n-ésimo elmento.
  57. ARREGLOS Los arreglos se clasifican de acuerdo con el número de dimensiones que tienen. Así se tienen los: •Unidimensionales (vectores) •Bidimensionales (tablas o matrices) •Multidimensionales (tres o más dimensiones)
  58. Unidimensionales y bidimensionales
  59. ARREGLOS
  60. ARREGLOS O ARRAY VECTORES Es un array unidimensional, es decir, solo usa un índice para referenciar a cada uno de los elementos. Se declara: tipo nombre [tamaño]; 60
  61. EJEMPLO int num[100]; /*Arreglo de tipo entero compuesto de 100 posiciones*/ char nom[80]; /*Texto de 80 caracteres*/ float x[12]; /*arreglo de 12 elementos punto flotantes */ 61
  62. EJERCICIO Lea un vector de 10 posiciones, luego determine si la quinta posición es positiva, si la primera posición es negativa y si la ultima posición es cero. #include <cstdlib> #include <iostream> #include <stdio.h> #include <conio.h> #define N 10 using namespace std; int main(int argc, char *argv[]) { float x[N]; int i; for(i=0; i<N; i++) { printf("Ingrese el valor %d:n", i); scanf("%f", &x[i]); } if(x[4]>0) printf("La quinta Posici¢n es Positivann"); if(x[0]<0)printf("La 1era Posici¢n es Negativonn"); if(x[N-1]==0) printf("La última posición es cero"); getch(); system("PAUSE"); return EXIT_SUCCESS; } 62
  63. Elprogramadebeleerelnombreysus3calificacionesparacadaestudiante.Debecalcularelpromedioparacadauno ydespuésdeterminarsielestudianteaprobóono;serequiereunpromediodealmenos12paraaprobar.Laprimera partedelasalidaenelpapeldebeserelnombredelestudiante,3calificaciones,promedioyunmensaje(aprobadoó desaprobado).Lasegundapartedesalidadebedarelnúmerodeestudiantesqueaprobaronyelnúmerodelosque obtuvieron al menos 18 de nota. #include<string.h> main(void) { int i,n1,n2,n3; float promedio; int naa,na18; char nombre[20]; int condicion; naa=0; na18=0; for(i=1;i<=40;i++) {printf("ingrese el nombre "); scanf("%s",nombre); printf("ingrese el nota1: "); scanf("%d",&n1); printf("ingrese el nota2: "); scanf("%d",&n2); printf("ingrese el nota3: "); scanf("%d",&n3); promedio=(n1+n2+n3)/3; if(promedio>12) {condicion=1; naa=naa+1; } else { condicion=2; } if(condicion==1) printf("%s nota1: %d nota2: %d, Nota3: %d, promedio: %lf condicion :aprobado n",nombre,n1,n2,n3,promedio); else printf("%s nota1: %d nota2: %d, Nota3: %d, promedio: %lf condicion :desaprobado n",nombre,n1,n2,n3,promedio); if(promedio>=18) na18=na18+1; } printf("hay aprobados: %d y aprobados con mas de 18 %d:n",naa,na18); } 63
  64. MATRICES Son arreglos bidimensionales y deben ser declarados con corchetes independientes para cada subíndice. SINTAXIS tipo nombre[numero_filas][numero_columnas]; 64
  65. Programa que lee una matriz de 3*3 y determina la suma de cada unadelasfilasyalmacenaenunvectorllamadosuma. #include <stdio.h> #include <conio.h> #define F 6 #define C 6 Void main() { int matriz[F][C], i,j, vector [F]={0,0,0,0,0,0}; for(i=0; i<F; i++) for(j=0; j<C; j++) { printf("Ingrese el elemento F=%d y Columna=%d de la matriz:n", i,j); scanf("%d", &matriz[i][j]); vector[i]=vector[i]+matriz[i][j]; } printf("La Matriz generada es:nn"); for(i=0; i<F; i++) { for(j=0; j<C; j++) { printf("*%d*", matriz[i][j]); } printf("n"); } printf("Y el vector suma de las filas es:nn"); for(i=0; i<F; i++) printf("%dt", vector[i]); getch(); } 65
  66. Programa que intercambia los valores de dos variables. #include<stdio.h> void intercambio(int x,int y); int temp,a,b; main(void) { printf("ingrese a: "); scanf("%d",&a); printf("ingrese a: "); scanf("%d",&b); intercambio(a,b); } void intercambio(int x, int y) { temp=x; x=y; y=temp; printf("nuevos avlores de a:=%d y b:=%d",x,y); } 66
Publicidad