Está en la página 1de 45

Breve Historia Lenguaje C

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 asembler
apenas haya sido utilizado en UNIX.

Este lenguajes 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.
Caractersticas del lenguaje 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 (;-)).
Ejemplo de un programa en C
// 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
Biblioteca para entrada y salida
Sentencia de salida
Espera una tecla
Compilar programas usando Dev-C++
1. Escribir el cdigo
2. Guardar en disco
3. Compilar
4. Ejecutar (correr)
Ejecucin de un programa en C
std::cout << "Bienvenido a C++!\n";
system(PAUSE);
return 0;
Cambio de lnea
Errores 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
fuente
Hay
errores?
Ejecutar
el programa
si
no
o Ctrl-F9
o Ctrl-F10
Secuencias de escape para 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.
Sirven para modificar la salida de datos
Se utilizan con cout para formatear la salida
Ejemplos de secuencias de escape
#include <iostream>
using spacename std;
int main()
{
cout << "!Bienvenido a ";
cout << "Dev-C++!\n";
system(PAUSE);
return 0;
}
#include <iostream>
using namespace std;
int main()
{
cout << "Bienvenido\n\"a\"\nC++!\n";
system(PAUSE);
return 0;
}
Una lnea mediante dos
sentencias
Varias lnea mediante
una sentencia
#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
int main()
{
cout << Introduccin a\nlas computadoras";
cout << y a la\n \t\"programacin\"";
cout << en\n \tC++\n";
return 0;
}
Que salida genera el siguiente programa?
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;
Declara a, b y c como enteras
Declara r y s como reales
Tipos de datos numricos
Tipo Longitud Rango
unsigned char 8 bits 0 a 255
char 8 bits -128 a 127
enum 16 bits -32,768 a 32,767
unsigned int 16 bits 0 a 65,535
short int 16 bits -32,768 a 32,767
int 16 bits -32,768 a 32,767
unsigned long 32 bits 0 a 4,294,967,295
long 32 bits -2,147,483,648 a 2,147,483,647
float 32 bits 3.4*(10^-38) a 3.4*(10^+38)
double 64 bits 1.7*(10^-308) a 1.7*(10^+308)
long double 80 bits 3.4*(10^-4932) a 1.1*(10^+4932)
La siguiente tabla resume los tipos de datos numricos en Turbo C++
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: 0456
7
= 302
10
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 10
4
= 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;
}
Impresin de "variables"
a b c d
45 23 368 345
Salida
Ejercicios
//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
Operacin Operador Ejemplo
Suma
+ 5 + 8
Resta
- 5 2
Multiplicacin
* 4 * 8
Divisin
/ 2 / 7
Mdulo
% 5 % 3
Operadores aritmticos
Reglas de precedencia
Operador Operacin Precedencia
( )
Parntesis Precedencia ms
alta. Se evalan
primero los ms
anidados
*, / o %
Multiplicacin, divisin, mdulo Se evalan de
izquierda a derecha
+ o -
Suma o resta Se evalan de
izquierda a derecha
El operador () se utiliza para modificar la precedencia de los operadores
Ejemplos de operadores
c
d
b a +
Notacin estndar
Notacin en C
a + b d/c
d c a + mod
a % c + d
3 2 +
+
c
b a
(a + b)/(2*c + 3)
bc
c a
4

(a - c)/(4*b*c) o
(a - c)/4/b/c
Ejemplo
2
4 r area t =
#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");
}






3
3
4
r volumen t =
Orden de evaluacin
d c
bd c
a

+
=
z = p r mod q + w/x-y
z = p * r % q + w / x y
1 2 3 4 5 6
a = (c + b * d)/(c d)
1 2 3 4 5
a = c + b * d / c d
1 2 3 4 5
ERROR
Ejercicio
2
2 1
r
m m
G F =
Escriba las siguientes expresiones en C
Escriba un programa para calcular la fuerza entre dos masa m
1
y m
2
. Utilice
G = 6.7 x 10
11
, utilice m
1
= 2.5 kg m
2
= 4.8 kg y r = 7.2 cm, la fuerza est
dada por
|
.
|

\
|
+ =
+
=
m
M
w R
mg
h y
R R
R R
R
2 2
1
2 2
2 1
2 1
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
// 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

} // fin de la funcin main
Declaracin de enteros
Sentencia de entrada
Asigna valor a variable
desde el teclado
Operacin de suma
Concatenacin de flujo
Memoria del programa de suma
38
integer1
54
integer2
92
suma
Contenido
Variables
(direcciones
de memoria)
Ejemplo
( )
2 3 1 2 3 1 1 3 3 2 2 1
2
1
y x y x y x y x y x y x area + + =
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:
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)
Variables de entrada:
radio nmero real
Variables de salida:
area nmero real
perimetro nmero real
Declaracin de variables de salida:
float area, perimetro;
Declaracin de variables de entrada:
float radio;
Declaracin de constante:
float pi = 3.1415926535;
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);
}
Ejercicio
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
( ) ( )
2
1 2
2
1 2
2 1
y y x x
q q
k F
+
=
k = 8.99x10
9
.
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)- e
x
.
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)- x
y
.
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;
}

Ejercicio
( ) ( )
2
1 2
2
1 2
y y x x d + =
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 = 4tr
2
)

Escriba un programa que lea las coordenadas de dos puntos en el plano xy
y calcule y despliegue la distancia entre dichos puntos.

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
T = tiempo de vuelo
g
v
h
2
sen
0
2 2
0
u
=
g
v
R
0
2
0
sen2u
=
g
v
T
0 0
sen 2 u
=
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 angulo 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 maxima: << h<< endl;
cout << alcance maximo: << R<< endl;
cout << tiempo de vuelo: << T<< endl;

#include <iostream>
#include <conio2.h>
#include <math.h>

using namespace std;

main(){
float PI = 3.14159265;
float g = 9.81;
float v0,ang;// datos de entrada
float h,R,T; // datos de salida

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

Color de fondo
Color de texto
Borra
Pantalla
Biblioteca para manejo de
entrada y salida
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

También podría gustarte