Logo Studenta

Programacion_C (1)

¡Este material tiene más páginas!

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;

Continuar navegando

Materiales relacionados

560 pag.
curso-de-programacion-cc---fco-javier-ceballos

Escola Municipal Getulio Vargas

User badge image

Alicia Castillo

23 pag.
Lenguaje Python Parte 1

User badge image

Maria Cancelado Ortiz

80 pag.
Lenguaje-C

UBAM

User badge image

Contenidos Muy Locos