Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lenguaje C
Breve Historia
El lenguajes C nació en los Laboratorios Bell de AT&T, asociado con el
Sistema Operativo UNIX.
• Comentarios.
• Identificadores.
• Constantes.
• Variables.
• Operadores.
• Sentencias o instrucciones.
• Macros del pre-procesador.
Comentarios
• Comentarios multi-línea
– Comienzan con /* y terminan con */
– No puede anidarse un comentario dentro de
otro.
• Comentarios de una sola línea.
– Comienzan al principio de la línea con //
• Ejemplo:
//Esto es un comentario
/* Esto también es
Dfjgfgl
un comentario */
Identificadores
• Se utilizan para nombrar variables, funciones,
etiquetas y elementos definidos por el usuario.
• Los primeros seis caracteres deben ser
significativos (distinguirse de otro similar) y
máximo puede tener hasta 31 caracteres.
• El primer carácter debe de ser una letra o
subguión (_). Posteriormente pueden ser letras,
números, signos de subrayado.
• Existe diferencia entre mayúsculas y
minúsculas.
• No pueden emplearse palabras reservadas
como identificadores.
Identificadores - Convenciones
• Empezar los nombres de funciones y de
variables con una letra minúscula.
• Las constantes escritas con #define van con
mayúsculas como #define PI 3.1416
• Las palabras intermedias comienzan con
mayúsculas. sumaMatrices
• Utilizar el subguión para separar palabras
intermedias. suma_Matrices
• Emplear nombres cortos para optimizar. (i, j, k,
cont)
Constantes
• Constantes de carácter. Ejemplo:
‘a’, ‘1’, ‘\0x5’, ‘\0’, ‘\n’, ‘\t’, ‘$’, ’\\’, NULL
Nota: El resultado del operador de división (/) depende del tipo de dato que
son los operandos, si son enteros el resultado se trunca (entero) y si son
fraccionarios es fraccionario, por ejemplo: 5.0 / 2.0 = 2.5.
Operadores relacionales
Operador Nombre Descripción
== Igual a if (a==‘s’)
!= Diferente de if (a!=null)
> Mayor que if (a>0.5)
< Menor que if (a<2l)
>= Mayor o igual que if (a>=2f)
<= Menor o igual que if (a<=3)
Imprime Imprime
5, 8.500000 y= 15
Asignación con otros Operadores
Operador Abreviado No Abreviado
++ n++; n=n+1;
-- n--; n=n-1;
+= n+=2; n=n+2;
-= n-=2; n=n-2;
*= n*=2; n=n*2;
/= n/=2; n=n/2;
%= n%=2; n=n%2;
Nota:
++ Es el incremento en uno de la variable asociada.
-- Es el decremento en uno de la variable asociada
Precedencia de Operadores
( ) [ ] -> Alta prioridad
! ~ + - ++ -- & * sizeof Unarios
* / %+- Aritméticos
<< >> Corrimiento de bits
< <= > >= == != Relacionales
& ^ | && || ?: Bits / Lógicos / Condicional
= *= /= %= += -= &= Asignación
^= |= <<= >>=
, Evaluación
Reglas de precedencia
El operador () se utiliza para modificar la precedencia
de los operadores
MÁS
ALTO
Operador Operación Precedencia
( ) Paréntesis Precedencia más alta.
Se evalúan primero los
más anidados
*, / o % Multiplicación, Se evalúan de
división, módulo izquierda a derecha
MÁS
+ o - Suma o resta Se evalúan de
BAJO izquierda a derecha
Uso de operadores
Notación estándar Notación en C
d
ab a + b – d/c
c
a mod c d a % c + d
ab
2c 3
(a + b)/(2*c + 3)
ac (a - c)/(4*b*c) o
4bc (a - c)/4/b/c
Orden de evaluación
z = p r mod q + w/x-y z = p * r % q + w / x – y
6 1 2 4 3 5
a = (c + b * d)/(c – d)
c bd 5 2 1 4 3
a
cd a = c + b * d / c – d ERROR
5 3 1 2 4
Tarea
Escriba las siguientes expresiones en C
R1R2
R
R1 R2
1 2 2 M
y h R w m
2mg 2
m1m2
F G 2
r
Sentencias (instrucciones)
• Una sentencia es una instrucción o expresión en C
que tiene una consecuencia.
• Pueden ser asignaciones, operaciones, llamadas a
funciones.
• Todas las sentencias terminan con el signo de
punto y coma ;
• Pueden ser simples o compuestas. Las
compuestas van entre llaves:
{
sentencia1;
sentencia2;
:
sentencian;
}
Primer ejemplo
Definición de librerías
Sentencia
de salida
1. Escribir el código
Cambio de línea
Señalamiento
de error
Explicación
del error
Análisis
Diseño
Pruebas
Codificación
Proceso de escritura de programas
Escribir programa en
el editor de texto
Compilar el programa
o Ctrl-F9
fuente
Hay errores?
si
no
Verificar errores Ejecutar o Ctrl-F10
y corregirlos
el programa
Probarlo y verificar que
funciona conforme a las
especificaciones del problema
Salida de datos
Función printf
Imprime un mensaje por pantalla, utiliza una "cadena de
formato" que incluye las instrucciones para mezclar
múltiples cadenas en la cadena final a mostrar por
pantalla.
Esta función pertenece a la librería stdio.h
Ejemplos:
Instrucción Salida en pantalla
printf(“Hola mundo…”); Hola mundo…
printf("El valor es %d.\n", contador); El valor es 25
printf(“Precio= $%5.2f”, precio); Precio= $ 123.98
\n Salto de línea
\t tabulación horizontal
\r retorno de línea
\\ diagonal invertida
\” imprime comillas
\OOO visualiza un carácter cuyo código ASCII es OOO en
octal.
\xHHH visualiza un carácter cuyo código ASCII es HHH en
hexadecimal.
Ejemplos de secuencias de escape
#include <stdio.h> Una línea mediante dos
#include <stdlib.h> sentencias
int main() {
printf("!Bienvenido a ");
printf("Dev-C++!\n");
system(”PAUSE”);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main() {
pritf(“Nombre\tDirección\tTelefono\n”);
pritf(“Juan\tOlmo 204 \t8-12-12-34\nMaria\tPino 565 \t8-34-27-16\n“);
system("PAUSE");
return 0;
}
En la instrucción se mandan a imprimir las
dos líneas de la salida en pantalla
Ejemplo secuencias escape
//Ejemplo de secuencias de escape
#include <stdio.h>
#include <stdio.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\tb\tc\td\n“);
printf(“%d\t%d\t%d\t%d\n“, a, b, c, d);
system(“PAUSE”);
return 0;
}
Impresión de "variables"
Salida a b c d
45 23 368 345
Ejemplo Asignaciones
//Ejemplo de asignaciones
#include <stdio.h>
#include <stdlib.h>
int main() {
int a,b,c; // 3 variables enteras
float x,y,z; //3 variables reales
a = 5;
b = -2;
c = 8;
x = a;
a = b;
y = x;
z = 8.5;
x = z;
printf("a=%d\nb=%d\nc=%d\n", a, b, c);
printf(“x=%f\ny=%f\nz=%f\n", x, y, z);
system(“PAUSE”);
return 0;
}
Escribir el código en el DevC++ (escribir NO COPIAR), compilar, quita
Tarea errores en caso de que los marque e indicar ¿Qué valores se imprimen?
tarea
¿Que salida genera el siguiente programa?
int main() {
printf(“Introducción a\nlas computadoras“);
printf(“ y a la\n \t\"programación\"“);
printf(“ en\n \tC++\n“);
return 0;
}
entero1 38
Variables
entero2 54 Contenido
(direcciones
de memoria)
suma 92
Esquema de un programa simple
Constantes Declaraciones
PI – 3.14159265 #define PI 3.141592
Entradas
radio – numero fracc. (float) float radio;
Salidas
area – área del círculo (float) float area;
perim – perímetro del c. (float) float perim;
Proceso ejemplo Círculo
area x1 y2 x2 y3 x3 y1 x1 y3 x2 y1 x3 y2
1
2
Variables de entrada
Variables de salida
x1, x2, x3
area
y1, y2, y3
Nota:
x1, y1: Coordenadas del vértice uno.
x2, y2: Coordenadas del vértice dos.
x3, y3: Coordenadas del vértice tres.
Ejemplo Triangulo vértices
#include <stdio.h>
#include <stdlib.h>
int main() {
float x1,x2,x3,y1,y2,y3; // coordenadas
float area; // área del triángulo
printf("Teclee coordenadas primer vertice: “);
scanf(“%f %f“, &x1, &y1);
printf("Teclee coordenadas segundo vertice: “);
scanf(“%f %f“, &x2, &y2);
printf("Teclee coordenadas tercer vertice: “);
scanf(“%f %f“, &x3, &y3);
area=(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2)/2.0;
v02sen2 0
R = alcance R
g
2v0sen 0
T = tiempo de vuelo T
g
Tiro parabólico - Análisis de datos
Constantes
PI – 3.14159265
g - 9.81
Entradas Salidas
v0 – velocidad inicial (float) h – altura máxima (float)
ang – ángulo del disparo (float) R – alcance máximo (float)
T – tiempo de vuelo (float)
Declaraciones
float vo, ang; // datos de entrada
float h,R,T; // datos de salida
Tiro parabólico - Lectura de datos
La velocidad inicial la supondremos en m/s.
El ángulo del tiro lo supondremos en grados.
NOTA:
Las funciones trigonométricas suponen el argumento en
radianes.
Cálculo de resultados
h = v0*v0*sin(ang)*sin(ang)/2/g;
R = v0*v0*sin(2*ang)/g;
T = 2*v0*sin(ang)/g;
Salida de resultados
printf( “Altura maxima: %5.2\n”, h);
printf(“Alcance maximo: %5.2\n”, R);
cout << “tiempo de vuelo: %5.2\n”, T);
Programa Tiro parabólico
Biblioteca de manejo de entrada y salida
Lectura
datos
Cálculos
Salida
de datos
Pausa final
Ejecución de programa Tiro parabólico
Ejecutar y probar que el programa funciona
correctamente dando datos de entrada que
permitan probar manualmente que el programa
funciona correctamente.
Ejemplo de ejecución:
Ejemplo Esfera
//calcula el área y el volumen de una esfera
#include <stdio.h>
#include <stdlib.h>
main(){
//variables radio, area y volumen de la esfera
float r,area,volumen;
printf(“Proporciona el valor del radio: “);
scanf(“%f”, &r);
area = 4*3.1416*r*r;
volumen = 4*3.1416*r*r*r/3;
printf("el radio de la esfera es %f\n“, r);
printf("el área de la esfera es %f\n “, area);
printf("el volumen de la esfera es %f\n“,
volumen);
system("PAUSE");
}
area 4 r 2 area = 4*3.1416*r*r;
Formulas: volumen 4 r 3 volumen = 4*3.1416*r*r*r/3;
3
Ejemplo Triángulo lados
Cálculo del área de un triángulo conocidas las longitudes de
los lados
//Programa para calcular el área de un triángulo
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main() {
float a,b,c; // lados del triángulo
float s; //semiperímetro
float area; // área del triángulo
printf("Teclee las longitudes de los lados: “);
scanf(“%f %f %f”, a, b, c); // lee los lados
s = (a + b + c)/2.0;
area = sqrt(s*(s-a)*(s-b)*(s-c));
printf(“Area: %5.2f\n", area);
return 0;
}
Ejemplo cuadrática
//Programa para resolver una ecuación cuadrática
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(){
float a,b,c; // coeficientes
float d; //discriminante
float x1,x2; // raices
printf("Teclee los coeficientes a,b y c: “);
scanf(“%f %f %f”, &a, &b, &c);// lee coeficientes
d = pow(b,2)-4*a*c;
x1 = (-b-sqrt(d))/2/a;
x2 = (-b+sqrt(d))/2/a;
printf("x1: %5.2f\n“, x1);
printf("x2: %5.2f\n", x2);
system("PAUSE");
return 0;
}
Funciones matemáticas
La biblioteca math.h contiene la definición de
muchas funciones matemáticas útiles. El siguiente es
un listado breve de algunas funciones.
d x2 x1 2 y2 y1 2
Tarea
Escriba un programa para calcular la fuerza entre dos masa
m1 y m2. Utilice G = 6.7 x 10–11, utilice m1 = 2.5 kg m2 = 4.8
kg y r = 7.2 cm, la fuerza está dada por
m1m2
F G 2
r
q1q2
F k
x2 x1 2 y2 y1 2
k = 8.99x109.
Tarea