You are on page 1of 46

CIC-IPN

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>

// la funcin main comienza la ejecucin del programa


int main()
{
std::cout << "Bienvenido a C++!\n";
system(PAUSE);
return 0;

// indica que el programa termin satisfactoriamente

} // fin de la funcin main

Espera una tecla

Sentencia de salida

Compilar usando Dev-C++


2. Guardar en disco

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

expected ; before return


esperaba ; antes de return

Proceso de escritura de programas


Escribir programa en
el editor de texto

Compilar el programa

Ctrl-F9

fuente

si

Hay
errores?
no
Ejecutar
el programa

Ctrl-F10

Secuencias de escape para la


salida
Sirven para modificar la salida de datos
Se utilizan con cout para formatear la salida

\n

Salto de lnea, tambin endl

\t

tabulacin horizontal

\r

retorno de lnea

\\

diagonal invertida

imprime comillas

\OOO

visualiza un carcter cuyo cdigo ASCII es OOO en


octal.

\xHHH

visualiza un carcter cuyo cdigo ASCII es HHH en


hexadecimal.

Ejemplos de secuencias de escape


#include <iostream>
using spacename std;
int main()
{
cout << "!Bienvenido a ";
cout << "Dev-C++!\n";
system(PAUSE);
return 0;
}

Una lnea mediante dos


sentencias

Varias lnea mediante


una sentencia

#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:

Declara a, b y c como enteras

int a, b, c;
float r, s;

Declara r y s como reales

Tipos de datos numricos


La siguiente tabla resume los tipos de datos numricos en Turbo C++

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 -

Multiplicacin, divisin, mdulo Se evalan de


izquierda a derecha
Suma o resta

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

} // fin de la funcin main

Operacin de suma

Concatenacin de flujo

Asigna valor a variable


desde el teclado

Memoria del programa de suma


integer1

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:

x1, x2, x3, y1, y2, y3

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;
}

Esquema de programa simple


Un programa simple tiene el siguiente esquema general:
Declaracin de variables y constantes
Lectura de datos de entrada
Clculo de valores de salida
Impresin de resultados

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

Declaracin de variables de entrada:


float radio;

Variables de salida:
area nmero real
perimetro nmero real

Declaracin de variables de salida:


float area, perimetro;

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.

fabs(x)- valor absoluto de x.


floor(x)- redondea al entero ms
grande no mayor que x.
log(x)- logaritmo natural de x.
log10(x)- logaritmo base 10 de x.

pow(x,y)- xy.
sin(x)-

seno de x.

sqrt(x)- raz cuadrada de x.


tan(x)- tangente 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

Ejemplo de tiro parablico


Haga un programa que lea la velocidad inicial de un proyectil y el ngulo
respecto al eje x y calcule el alcance del proyectil, la altura mxima y el
tiempo de vuelo.
h = altura mxima
R = alcance

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

Biblioteca para manejo de


entrada y salida
Color de fondo

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

En la opcin de Herramientas (tools) Opciones del compilador (compiler


options) en la opcin
Agregar estos comandos a la lnea de comandos del enlazador
(Add these commands to the linker command line)
-lconio

You might also like