Professional Documents
Culture Documents
Propedutico
Programacin en Lenguaje C
Dr. Hiram Calvo
propc12@likufanele.com
Caractersticas de C
C es un lenguaje de programacin de propsito general. Sus principales
caractersticas son:
Programacin estructurada
Economa de las expresiones
Abundancia en operadores y tipos de datos.
Codificacin en alto y bajo nivel simultneamente.
Reemplaza ventajosamente la programacin en ensamblador (assembler).
Utilizacin natural de las funciones primitivas del sistema.
No est orientado a ningn rea en especial.
Produccin de cdigo objeto altamente optimizado.
Facilidad de aprendizaje (;-)).
Breve Historia
El lenguajes C naci en los Laboratorios Bell de AT&T
Asociado con el Sistema Operativo UNIX
Su eficacia y claridad han hecho que el lenguaje ensamblador apenas haya
sido utilizado en UNIX.
Este lenguaje est inspirado en el lenguaje B escrito por Ken Thompson en
1970
B era un lenguaje evolucionado e independiente de la mquina, inspirado en la
lenguajes BCPL concedido por Martin Richard en 1967.
En 1972, Dennis Ritchie, modifica el lenguaje B, creando el lenguaje C y
reescribiendo el UNIX en dicho lenguaje.
La novedad que proporcion el lenguaje C sobre el B fue el diseo de tipos y
estructuras de datos.
En suma
Una de las peculiaridades de C es su riqueza de operadores,
Tiene sus inconvenientes:
Carece de instrucciones de entrada/salida, de instrucciones para manejo de
cadenas de caracteres.
La excesiva libertad en la escritura de los programas puede llevar a errores
en la programacin.
C ha demostrado ser un lenguaje extremadamente eficaz y expresivo.
Primer ejemplo
Biblioteca para entrada y salida
// Fig. 1.2: fig01_02.cpp
// Primer programa en C++.
#include <iostream>
Sentencia de salida
3. Compilar
4. Ejecutar (correr)
1. Escribir el cdigo
Programa en ejecucin
Cambio de lnea
std::cout << "Bienvenido a C++!\n";
system(PAUSE);
return 0;
Error de compilacin
Sealamiento
de error
Explicacin
del error
Compilar el programa
Ctrl-F9
fuente
si
Hay
errores?
no
Ejecutar
el programa
Ctrl-F10
\n
\t
tabulacin horizontal
\r
retorno de lnea
\\
diagonal invertida
imprime comillas
\OOO
\xHHH
#include <iostream>
using namespace std;
int main()
{
cout << "Bienvenido\n\"a\"\nC++!\n";
system(PAUSE);
return 0;
}
#include <iostream>
using namespace std;
int main(){
cout << "nombre\tdireccin\ttelefono\n";
cout << "juan\tolmo 204 \t8-12-12-34\n";
cout << "maria\tpino 565 \t8-34-27-16\n";
system("PAUSE");
return 0;
}
#include <iostream>
using namespace std;
int main()
{
cout << "nombre\tdireccin\ttelefono\njuan\tolmo 204
\t8-12-12-34\nmaria\tpino 565 \t8-34-27-16\n";
system("PAUSE");
return 0;
}
Ejercicio
Que salida genera el siguiente programa?
int main()
{
cout << Introduccin a\nlas computadoras";
cout << y a la\n \t\"programacin\"";
cout << en\n \tC++\n";
return 0;
}
Escriba un programa que genere la siguiente salida utilizando una sola lnea de
salida.
Nombre
Puesto
Sueldo:
Juan
Gerente $10,000
Lety
TIC
$20,000
Variables
Las variables permiten almacenar valores de diferentes tipos.
Sus caractersticas son
nombre un identificador vlido
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;
Tipo
Longitud
unsigned char 8 bits
char
8 bits
enum
16 bits
unsigned int 16 bits
short int
16 bits
int
16 bits
unsigned long 32 bits
long
32 bits
float
32 bits
double
64 bits
long double 80 bits
Rango
0
-128
-32,768
0
-32,768
-32,768
0
-2,147,483,648
3.4*(10^-38)
1.7*(10^-308)
3.4*(10^-4932)
a
a
a
a
a
a
a
a
a
a
a
255
127
32,767
65,535
32,767
32,767
4,294,967,295
2,147,483,647
3.4*(10^+38)
1.7*(10^+308)
1.1*(10^+4932)
Constantes numricas
Las constantes numricas enteras pueden escribirse en decimal,
hexadecimal u octal.
Decimal secuencias de dgitos decimales con o sin signo (+, -).
Hexadecimal secuencias de dgitos hexadecimales (0..9, a..f, o A..F) que
inicia con 0x.
Ejemplo: 0x00ff o 0x00FF = 255
Octal secuencias de dgitos octales (0..7) que inicia con 0.
Ejemplo: 04567 = 30210
Las constantes reales se especifican como secuencias de dgitos decimales
y el punto decimal.
Los nmeros en notacin cientfica se expresan indicando el multiplicador
de 10 mediante E+nn o e+nn.
Ejemplo: 12.4 x 104 = 12.4E+4 o 12.4E4
Operacin de asignacin
La operacin bsica para el uso de variables es la asignacin
El tipo de constante a asignar debe de ser congruente con el tipo con el que
fue declarada la variable.
Para la asignacin se utiliza el smbolo =
Ejemplos:
a = 5;
b = 8;
cout << a << b;
Imprime
58
Ejemplo
//Ejemplo de secuencias de escape
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d; //4 variables reales
a = 45;
b = 23;
c = 368;
d = 345;
cout << "Impresin de \"variables\"\n";
cout << "a\tb\tc\td\n";
cout << a << "\t" << b << "\t" << c << "\t" << d << endl;
system(PAUSE);
return 0;
}
Salida
Impresin de "variables"
a
b
c
d
45
23
368
345
Ejercicio
//Ejemplo de asignaciones
#include <iostream>
using namespace std;
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;
cout << "a=" << a << "\nb=" << b << "\nc="<< c << "\n";
cout << "x=" << x << "\ny=" << y << "\nz="<< z << "\n";
system(PAUSE);
return 0;
}
Que valores se imprimen?
Algunos operadores en C
Operadores aritmticos
Operacin
Operador Ejemplo
Suma
5 + 8
Resta
5 2
Multiplicacin
4 * 8
Divisin
2 / 7
Mdulo
5 % 3
Reglas de precedencia
El operador () se utiliza para modificar la precedencia de los operadores
Operador
Operacin
Precedencia
( )
Parntesis
Precedencia ms
alta. Se evalan
primero los ms
anidados
*, / o %
+ o -
Se evalan de
izquierda a derecha
Ejemplos de operadores
Notacin estndar
a+b
d
c
a mod c + d
a+b
2c + 3
ac
4bc
Notacin en C
a + b d/c
a % c + d
(a + b)/(2*c + 3)
(a - c)/(4*b*c) o
(a - c)/4/b/c
Ejemplo
#include <iostream>
//calcula el rea y el volumen de una esfera
using namespace std;
main(){
float r,area,volumen;//radio, area y volumen de la esfera
r = 4.5;
area = 4*3.1416*r*r;
volumen = 4*3.1416*r*r*r/3;
cout << "el radio de la esfera es " << r << "\n";
cout << "el rea de la esfera es " << area << "\n";
cout << "el volumen de la esfera es " << volumen << "\n";
system("PAUSE");
}
area = 4 r 2
volumen = 43 r 3
Orden de evaluacin
z = p r mod q + w/x-y
c + bd
a=
cd
z = p * r % q + w / x y
6
1
2
4
3
5
a = (c + b * d)/(c d)
5
2
1
4
3
a = c + b * d / c d
5
3
1
2
4
ERROR
Tarea
Escriba las siguientes expresiones en C
R1 R2
R=
R1 + R2
y = h
1
M
R 2 w2 + m
2mg
2
Escriba un programa para calcular la fuerza entre dos masa m1 y m2. Utilice
G = 6.7 x 1011, utilice m1 = 2.5 kg m2 = 4.8 kg y r = 7.2 cm, la fuerza est
dada por
F =G
m1m2
r2
Entrada de datos
Para la lectura de datos desde el teclado puede utilizarse la funcin cin.
El formato para cin es:
cin >> var;
Al ejecutarse la funcin cin se detiene la ejecucin del programa hasta que
se teclee el valor de la variable solicitada.
Pueden leerse varias variables en una sola lnea.
cin >> var1 >> var2 >> var3;
Las variables se leen separadas por espacios o la tecla enter.
Suma de enteros
Declaracin de enteros
// Programa de suma.
#include <iostream>
using namespace std;
// la funcin main comienza la ejecucin del programa
int main()
{
int entero1; // primer nmero que introduce el usuario
int entero2; // segundo nmero que introduce el usuario
int suma;
// variable en la que se almacena la suma
cout << "Digite el primer entero\n"; // indicador
cin >> entero1;
// lee un entero
cout << "Digite el segundo entero\n"; // indicador
cin >> entero2;
// lee un entero
suma = entero1 + entero2; // asignacin del resultado a suma
cout << "La suma es " << suma << endl; // impresin de suma
return 0;
// indica que el programa termin satisfactoriamente
Sentencia de entrada
Operacin de suma
Concatenacin de flujo
38
integer2
54
suma
92
Variables
(direcciones
de memoria)
Contenido
Ejemplo
Se desea un programa para calcular el rea de un tringulo dadas las
coordenadas de sus vrtices.
El rea se calcula utilizando la siguiente frmula:
area =
1
(x1 y2 + x2 y3 + x3 y1 x1 y3 x2 y1 x3 y2 )
2
Variables de entrada:
Variables de salida:
area
Solucin
//Programa para calcular el rea de un tringulo
#include <iostream>
using namespace std;
int main()
{
float x1,x2,x3,y1,y2,y3; // coordenadas del tringulo
float area;
// rea del tringulo
cout << "Teclee las coordenadas del primer punto: ";
cin >> x1 >> y1;
cout << "Teclee las coordenadas del segundo punto: ";
cin >> x2 >> y2;
cout << "Teclee las coordenadas del tercer punto: ";
cin >> x3 >> y3;
area = (x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2)/2.0;
cout << "rea: " << area << endl;
return 0;
}
Pasos a seguir
Los pasos a seguir para elaborar un programa simple son:
1. Determinar las constantes, variables de entrada y de salida y su
tipo
2. Escribir la declaracin de variables
3. Escribir las sentencias de entrada
4. Escribir las expresiones para realizar los clculos
5. Escribir las sentencias de salida
6. Probar con algunos valores de entrada
Ejemplo
Escriba un programa que lea el radio de un crculo e imprima su
permetro y rea. Defina el valor de pi como 3.141592.
Constates:
pi (3.1416)
Declaracin de constante:
float pi = 3.1415926535;
Variables de entrada:
radio nmero real
Variables de salida:
area nmero real
perimetro nmero real
Sentencia de entrada:
cout << Escriba el radio del crculo: ;
cin >> radio;
Clculo de rea y permetro:
area = pi*radio*radio;
perimetro = 2*pi*radio;
Sentencias de salida:
cout << el rea del crculo es: << area << \n;
cout << el permetro del crculo es: << perimetro << \n;
Programa completo
#include <iostream>
using namespace std;
main(){
float pi = 3.1415926535; // valor de pi
float radio; // radio del crculo, variable de entrada
float area, perimetro; // rea y permetro del crculo
cout << Escriba el radio del crculo: ;
cin >> radio;
area = pi*radio*radio;
perimetro = 2*pi*radio;
cout << el rea del crculo es: << area << \n;
cout << el permetro del crculo es: << perimetro << \n;
system(PAUSE);
}
Tarea
Escriba un programa para calcular la magnitud de la fuerza entre dos
cargas elctricas dadas las coordenadas de las cargas y la magnitud
de cada carga. La fuerza se calcula con la expresin
q1q2
F =k
(x2 x1 )2 + ( y2 y1 )2
k = 8.99x109.
Funciones matemticas
La biblioteca math.h contiene la definicin de muchas funciones
matemticas tiles. El siguiente es un listado breve de algunas funciones.
ceil(x)- redondea al entero ms
pequeo no menor que x.
cos(x)-
coseno de x.
exp(x)-
ex.
pow(x,y)- xy.
sin(x)-
seno de x.
Ejemplo
Clculo del rea de un tringulo conocidas las longitudes de los lados
//Programa para calcular el rea de un tringulo
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
float a,b,c; // lados del tringulo
float s;
//semipermetro
float area;
// rea del tringulo
cout << "Teclee las longitudes de los lados: ";
cin >> a >> b >> c;
// lee los lados
s = (a + b + c)/2.0;
area = sqrt(s*(s-a)*(s-b)*(s-c));
cout << "rea: " << area << endl;
return 0;
}
Solucin de cuadrtica 1
//Programa para resolver una ecuacin cuadrtica
#include <iostream>
#include <math.h>
using namespace std;
int main(){
float a,b,c; // coeficientes
float d;
//discriminante
float x1,x2;
// raices
cout << "Teclee los coeficientes a,b y c: ";
cin >> a >> b >> c;
// lee los coeficientes
d = pow(b,2)-4*a*c;
x1 = (-b-sqrt(d))/2/a;
x2 = (-b+sqrt(d))/2/a;
cout << "x1: " << x1 << endl;
cout << "x2: " << x2 << endl;
system("PAUSE");
return 0;
}
Tarea
Utilice la funcin raz cuadrada de C para los siguientes programas
Escriba un programa que lea el valor del rea de la superficie de una esfera
y calcule e imprima el valor del radio. (rea = 4r2)
Escriba un programa que lea las coordenadas de dos puntos en el plano xy
y calcule y despliegue la distancia entre dichos puntos.
d=
(x2 x1 )2 + ( y2 y1 )2
v02sen 2 0
h=
2g
T = tiempo de vuelo
v02sen2 0
R=
g
2v0sen 0
T=
g
Constantes:
PI 3.14159265
g - 9.81
Los datos de entrada son la velocidad inicial y el ngulo del disparo:
v0 velocidad inicial (tipo float)
ang ngulo del disparo (tipo float)
Los datos de salida son:
h altura mxima (tipo float)
R alcance mximo (tipo float)
T tiempo de vuelo (tipo float)
Declaraciones
float vo, ang; // datos de entrada
float h,R,T; // datos de salida
Lectura de datos:
La velocidad inicial la supondremos en m/s.
El ngulo del tiro lo supondremos en grados
NOTA: las funciones trigonomtricas suponen el argumento en radianes.
cout << Teclee velocidad inicial (en m/s): ;
cin >> v0;
cout << Teclee ngulo del tiro (en grados): ;
cin >> ang;
ang = ang*PI/180; // conversin a radianes
Clculo 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
cout << altura mxima: << h<< endl;
cout << alcance mximo: << R<< endl;
cout << tiempo de vuelo: << T<< endl;
#include <iostream>
#include <conio2.h>
#include <math.h>
using namespace std;
Borra
main(){
float
float
float
float
Pantalla
PI = 3.14159265;
g = 9.81;
v0,ang;// datos de entrada
h,R,T; // datos de salida
Color de
textbackground(LIGHTGRAY);
clrscr();
textcolor(RED);
cout << "TIRO PARABOLICO\n";
cout << "Teclee velocidad inicial (en m/s): ";
cin >> v0;
cout << "Teclee angulo del tiro (en grados): ";
cin >> ang;
ang = ang*PI/180; // conversin a radianes
h = v0*v0*sin(ang)*sin(ang)/2/g;
R = v0*v0*sin(2*ang)/g;
T = 2*v0*sin(ang)/g;
cout << "altura maxima: " << h << " m" << endl;
cout << "alcance maximo: " << R << " m" << endl;
cout << "tiempo de vuelo: " << T << " s" << endl;
system("PAUSE");
}
texto