Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Programación C Lic. María Luisa Juárez Aguilar, M.T. Tema: Fundamentos del Lenguaje C/C++ • Introducción al lenguaje C Historia Biblioteca estándar de C Programación estructurada • Estructura básica de un programa en C Historia • Dennis Ritchie inventó y escribió el primer compilador de C. � • Lenguajes antecesores de C: ALGOL 60, CPL, BCPL, B. • C está basado en el concepto de funciones. • Lenguaje de nivel medio, ya que combina elementos de lenguajes de alto nivel con la funcionalidad del ensamblador. Historia • Originalmente era ut i l izado para la programación de sistemas operativos (UNIX), intérpretes, editores, gestores de bases de datos, etc. • Actualmente, los paquetes más populares se realizan en C: Windows, Office y el mismo C. • Productos que utilizan una interfaz con C: Oracle, Visual Basic, programación de sockets para comunicación de datos entre diversas plataformas (AS400 hasta UNIX). Historia • Sus herederos: C++, Java, C#, etc. • Prácticamente todo el software profesional del mercado está escrito en algún dialecto de C o proporciona una interfaz con C. Entorno de C/C++ Editor Disco Preprocesador Disco Compilador Disco Editor de enlaces Disco Entorno de C/C++ Cargador Disco Pone el programa ejecutable en memoria Memoria principal CPU Memoria principal La CPU ejecuta las instrucciones en la memoria Primer ejemplo #include <stdio.h> /*Librería para entrada y salida estandar*/ #include <conio.h> /*Librería para manejo de consola*/ int main() /*función principal*/ { printf(”Curso de programación C \n”); /*función de salida estandar*/ getch(); /*función de entrada de un carácter*/ return 0; /*sentencia return para terminar la función principal*/ } Programación estructurada • Es el conjunto de técnicas que incorporan: – Recursos abstractos, – Diseño descendente (top-down), – Estructuras básicas. Programación estructurada • Recursos abstractos: consiste en descomponer una determinada acción compleja en acciones más simples. • Diseño descendente (top-down): es el proceso mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento(stepwise). • Se descompone el problema en etapas o estructuras jerárquicas. • Cada estructura tiene dos puntos de vista: ¿Qué hace? y ¿Cómo lo hace? Programación estructurada Diseño descendente (top-down) Programación estructurada • Considere un nivel n de refinamiento, las estructuras se consideran de la siguiente manera: Nivel n: vista desde el exterior, ¿Qué hace? Nivel n+1: vista desde el interior, ¿Cómo lo hace? Estructura básica de un programa en C • Comentarios (enunciado del programa) • Directivas del preprocesador • Declaraciones globales • función main() • Funciones definidas por el usuario Estructura básica de un programa en C /*Aqui ́ va la redacción del problema y la fecha siempre */ /* directivas del preprocesador */ /*Declaraciones globales de variables y funciones (sus prototipos)*/ /* Función principal main( ) */ void main( ) { /*declaraciones de variables locales*/ sentencias; } /* definiciones de funciones creadas por el usuario programador */ tipo nombre_función(parámetros) { /*declaraciones de variables locales; */ sentencias; } Ejemplo /* Programa que imprime un mensaje de bienvenida y nombre*/ #include <stdio.h> void main() { printf(“ \n\n\n \t\tBienvenido al curso de programación en C :”); printf(“ \n \t\t\t\tMaryLu Juárez “); } Bibliotecas estándar de C • Todas las versiones del lenguaje C ofrecen una biblioteca estándar de funciones en tiempo de ejecución que proporcionan soporte para operaciones utilizadas con mas frecuencia. • Estas funciones permiten realizar una operación con solo una llamada a la función (sin necesidad de escribir su código fuente). Bibliotecas estándar de C • Las funciones estándar o predefinidas se dividen en grupos; todas las funciones que pertenecen al mismo grupo se declaran en el mismo archivo de cabecera. • Los nombres de los archivos de cabecera estándar utilizados en nuestros programa se muestran a continuación encerrados entre ángulos: Archivos de cabecera <assert.h> <ctype.h> <errno.h> <float.h> <limits.h> <math.h> <setjmp.h> <signal.h> <stdarg.h> <stdef.h> <stdio.h> <string.h> <time.h> <stdlib> <conio.h> Archivos de cabecera • Algunos de los grupos de funciones de biblioteca más usuales son: • E/S estándar (para operaciones de entrada/ salida); • Matemáticas (para operaciones matemáticas); • Fecha y hora; • De interfaz; • Diversas; • Manipulación de cadenas; • Gráficos. Direc9vas • Son instrucciones que se le dan al compilador antes de que el programa se compile. • Aunque las directivas pueden definir macros, nombres de constantes, archivos fuente adicionales, etc., su uso más frecuente en C es la inclusión de archivos de cabecera. • Las directivas no son instrucciones de programa sino instrucciones que se dan al compilador, obsérvese que su línea no termina en punto y coma ;. Directiva #include • Para utilizar una función de biblioteca se hace mediante la directiva del preprocesador #include: • Formato: #include <nombreArchivo> Comentarios • Un comentario es un breve enunciado para documentar una línea del programa. Son necesarios porque es la documentación del programa fuente. • Un comentario en C se encierra entre /* y */. Puede contener cualquier can9dad de líneas. • También puede u9lizar // para comentarios de una sola línea ya que el compilador u9lizado es de C++. Ejemplos • /* Este es un ejemplo de un comentario en lenguaje C y contiene dos líneas */ • //ejemplo de un comentario de C++ • //Solo puede contener una línea • //solamente se usan al principio del comentario Iden9ficadores • Un identificador es una secuencia de caracteres, para dar nombres a variables, constantes, funciones, etc. • El primer caracter debe ser una letra o caracter de subrayado. Las letras mayúsculas son diferentes de las minúsculas. • Pueden seguirle más letras, números y subrayado. Ejemplos • I • indice • dia_de_vencimiento • elemento_mayor • cantidad_total • fecha_de_compra • habitacion120 • A • Alfa • ALFA • Alfa Palabras clave • Las palabras clave son propias del lenguaje por lo que no pueden u9lizarse como iden9ficadores. • Las palabras clave deben escribirse con minúsculas por lo que si se desea escribir un iden9ficador con el nombre de una palabra clave, éste debe contener al menos una mayúscula para diferenciarlo. Palabras clave and do int short typed auto double long signed union bool else namespace sizeof unsigned break enum new static using case extern not struct virtual catch false operator switch void char float or template wchar_t class for private this while const friend protected throw xor continue goto public true defaultif register try delete inline return typedef Variables Las variables permiten almacenar valores de diferentes tipos. Sus características son: nombre – un identificador válido tipo – int, float, double, char, etc. valor – el valor almacenado En C es necesario definir todas las variables que se utilicen. Las variables se declaran con la siguiente sintaxis: tipo var1, var2, … ; Ejemplos: int a, b, c; float r, s; /*Declara a, b y c como enteras*/ /*Declara r y s como reales*/ Tipos de datos numéricos Tipo Ejemplo Tamaño en bytes Rango Mínimo..Máximo char ‘C’ 1 0..255 short -15 2 -128..127 int 1024 2 -32768..32767 unsigned int 42325 2 0..65535 short int -100 2 -128..127 long 262144 4 -2147483648..21474 83637 usigned long 4085466200 4 0..4294967295 float 10.5 4 3.4e-38..3.4e38 double 0.00045 8 1.7e-308..1.7e308 long double 1e-8 8 Igual que double Constantes numéricas • Enteras pueden escribirse en decimal, hexadecimal u octal. • Decimal – secuencias de dígitos decimales con o sin signo (+, -). • Hexadecimal – secuencias de dígitos hexadecimales (0..9, a..f, o A..F) que inicia con 0x. Ejemplo: 0x00ff o 0x00FF = 255 • Octal – secuencias de dígitos octales (0..7) que inicia con 0. Ejemplo: 0456 = 302 • Reales se especifican como secuencias de dígitos decimales y el punto decimal. • Los números en notación científica se expresan indicando el multiplicador de 10 mediante E+nn o e+nn. Ejemplo: 12.4 x 104 = 12.4E+4 o 12.4E4 Operación de asignación • La operación básica para el uso de variables es la asignación • El tipo de constante a asignar debe de ser congruente con el tipo de dato con el que fue declarada la variable. • Para la asignación se utiliza el símbolo = • Ejemplos: a = 5; b = 8; Ejemplo //Ejemplo de uso de variables y operador de asignación #include <stdio.h> #include <conio.h> int main() { int a,b,c,d; //4 variables enteras a = 45; b = 23; c = 368; d = 345; printf("Impresión de \"variables\"\n”); printf(”a= %d\t b=%d \t c=%d \t d=%d”,a,b,c,d); getche(); return 0; } Impresión de "variables" a= 45 b=23 c=368 d=345 Salida Operadores • C es un lenguaje muy rico en operadores. Se clasifican en los siguientes grupos: • Aritmé9cos • Relacionales y lógicos • Asignación • Manipulación de bits • Otros Operadores aritmé9cos Operador Nombre Propósito Ejemplo + Más unario (positivo) Valor positivo de x x = +y; - Menos unario (negativo) Valor negativo de x x = -y; + Suma Suma x e y z = x + y; - Resta Resta y de x z = x – y; * Multiplicación Multiplica x por y z = x * y; / División Divide x por y z = x / y; % Módulo Resto de x dividido por y z =x % y ++ Incremento en 1 Incrementa x después de usar x++; -- Decremento en 1 Decrementa x antes de usar --x; Operadores de incremento y decremento variable++; //posincremento ++variable; //preincremento variable--; //posdecremento --variable; //predecremento Ejemplos: ++x; equivale a x = x + 1; --x; equivale a x = x – 1; • Los formatos postfijos se comportan de modo diferente según la expresión en que se aplica: • x = ++y; equivale a x = y + 1; x = y; //x igual a y incrementado • x = y++; equivale a x = y; y = y + 1; /* x igual al valor de y sin incrementar*/ Operadores relacionales • Los operadores relacionales se utilizan para construir expresiones que determinan la toma de decisiones en un lenguaje de programación. Operador Nombre Ejemplo < Menor que I < 0 <= Menor o igual que I <= 0 > Mayor que J > 50 >= Mayor o igual que J >= 8.5 == Igual a X == 10 != Diferente que C != ‘*’ ?: Asignación relacional K = (i < 5)? 1 : i; Operadores relacionales • Formato: expresión1 operador expresión2 • Donde expresión1 y expresión2 pueden ser una constante, una variable o un conjunto de ellas unidas por operadores aritméticos. Operadores lógicos • Los operadores lógicos se utilizan para unir expresiones relacionales que determinan la toma de decisiones en un lenguaje de programación. Operador Nombre Ejemplo && AND (y) lógico A && B || OR (o) lógico C || D ! NOT (no) lógico !C Operadores lógicos • Formato: expresión1 operador expresión2 • Donde expresión1 y expresión2 son expresiones relacionales. Operador condicional ?: • Formatos: 1. (condición) ? expresión1 : expresión2; • Expresión1 y expresión2 pueden ser cualquier instrucción que se quiera ejecutar (una solamente) 2. Variable = (condición) ? expresión1 : expresión2; • La expresión condicional comprueba la condición. Si esa condición es verdadera, se asigna expresión1 a variable; en caso contrario se asigna expresión2 a variable. Evaluaciones booleanas • Cuando se evalúan expresiones lógicas el resultado será un valor booleano (falso o verdadero) de acuerdo al operador lógico utilizado Expresión A Expresión B A && B A || B 1 1 1 1 1 0 0 1 0 1 0 1 0 0 0 0 Operadores de asignación • C proporciona operadores de asignación que combinan operadores de asignación y otros diferentes produciendo operadores tales como: Operador Formato largo Formato corto += x = x + y; x += y; -= x = x – y; x -= y; *= x = x * y; x *= y; /= x = x / y; x /= y; %= x = x % y; x %= y; Operadores de asignación • Ejemplos: • A += b; equivale a A = A + b • A *= A + b; equivale a A * (A +b) • Expresiones equivalentes: • n = n + 1; • n += 1; • n++; • ++n; Prioridad y asocia9vidad Operador Asociatividad Prioridad () Izquierda-derecha 1 - +(unarios) ! ++ -- Derecha-izquierda 2 */% Izquierda-derecha 3 +- Izquierda-derecha 4 < <= > >= Izquierda-derecha 5 == != Izquierda-derecha 6 && Izquierda-derecha 7 || Izquierda-derecha 8 ?: Derecha-izquierda 9 = += -= *= %= /= Derecha-izquierda 10 Conversiones de tipo (Casting) • Es un proceso que convierte un tipo de dato a otro tipo de dato. • Tipos de casting: � – Implícito – Explícito Conversiones de tipo (Casting) • Casting implícito: • Se realiza de forma automática cuando un tipo de menor capacidad se asigna a un tipo de mayor capacidad, también llamado promoción numérica. • byte -> short -> int -> long -> float -> double • Ejemplo: double n; int x = 7; n = x / 3; n = 2.0 (se realizó la conversión de tipos, el resultado está en formato double pero no se muestran las decimales significativas) Conversiones de tipo (Casting) • Casting explícito: Es necesario utilizar un operador de tipo cast. • Formato: (tipoDato) expresión • Ejemplo: double n; int a = 7; n = (double) a / 3; n = 2.333 (se realizó el casting explísito por lo que sí se mostrarán las decimales significativas) Conversiones de tipo (Casting) int x = 6, y = 10; double cociente; • Como soluciónse usaría la siguiente conversión de tipo: cociente = (double) x / y; (debe realizarse casting explícito ya que la división de dos valores enteros da como resultado un entero por lo que se almacenaría en la variable cociente solo la parte entera del resultado, esto es 0 y no 0.6) Conversiones de tipo (Casting) • ¿Cuál de las siguientes formas es la forma correcta de realizar el casting y por qué? a) int n; double x = 2.1; n = x; b) int n; double x = 2.1; n = (int) x;
Compartir