Introducción

Download Report

Transcript Introducción

Introducción
Computación
Objetivo
PROPÓSITO DEL CURSO
Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero
Electrónico.
La programación es una herramienta fundamental en el desarrollo profesional de todo
ingeniero en la actualidad.
Se revisan los conceptos fundamentales de programación en el lenguaje C haciendo
énfasis en la resolución de problemas.
Este curso apoya directamente a los cursos de Programación y Programación Numérica e
indirectamente a todas las materias de su carrera.
OBJETIVOS GENERALES
Describir la estructura de un programa en el lenguaje C.
Analizar problemas y diseñar e implementar soluciones como programas de computadora.
El alumno desarrollará un proyecto de programación y lo implementará utilizando el
lenguaje C.
Al finalizar los alumnos deberán ser capaces de escribir programas en C basados en
consola.
Plan del curso
Temario
Primer parcial
UNIDAD 1. CONCEPTOS BÁSICOS DE PROGRAMACIÓN
Segundo parcial
UNIDAD 2: TOMA DE DECISIONES
UNIDAD 3: ESTRUCTURAS DE REPETICIÓN
UNIDAD 4: ARREGLOS
Tercer parcial
UNIDAD 5: DEFINICIÓN DE FUNCIONES
UNIDAD 6: CADENAS DE CARACTERES
PROYECTO FINAL
Calificación
METODOLOGÍA
Los temas de cada unidad serán impartidos por el profesor. Se incluirán ejemplos prácticos
de cada tema.
EVALUACIÓN
Para la evaluación se realizarán 2 exámenes parciales y un examen final.
Presentación de un proyecto de programación.
CALIFICACIÓN
Cada calificación parcial:
Calificación final:
60% examen
60% examen
40% tareas
40% proyecto
Calificación ordinaria:
1er parcial
2do parcial
final
30%
30%
40%
10% participación
10% participación
BIBLIOGRAFÍA
Como programar en C y C++, Deitel y Deitel. Prentice Hall. Segunda edición.
El lenguaje de programación C, Kernighan, Brian W., Prentice Hall
Computador digital
Es un dispositivo electrónico programable, diseñado para llevar a cabo tareas
de manipulación de información con gran rapidez.
El rango de aplicaciones abarca desde usos comerciales (facturación, control
de inventario, etc) hasta aplicaciones científicas o ingenieriles como control de
experimentos de un laboratorio, extensivos cálculos en dinámica de fluídos, o
el control de naves espaciales hasta juegos altamente entretenidos.
Se utilizan en todas las actividades humanas, sobretodo en las científicas.
Es indispensable para el trabajo de un Ingeniero o científico.
Arquitectura simplificada de un
computador
Hardware
Se denomina así a todos los componentes físicos del computador o sistema
de cómputo.
Los componentes principales de un computador (Hardware) son:
Unidad central de Procesamiento (CPU)
Memoria de acceso aleatorio (RAM)
Memoria de acceso sólo a lectura (ROM)
Dispositivos de Entrada y Salida
Algunos dispositivos de Entrada
Salida
•Medios de almacenamiento masivo (Diskettes, discos magnéticos, ópticos,
magneto-ópticos, cintas magnéticas, memorias USB, etc.) utilizadas como un
medio masivo no volátil de almacenamiento de datos.
•Teclado: Dispositivo de entrada de información.
•Monitor: Dispositivo de salida de información.
•Mouse: Dispositivo de entrada de datos por apunte y selección.
•Impresor: Dispositivo de salida de información en papel.
•Puertos de comunicación: Canales de comunicación de datos entre
computadores.
•Conversores Analógico-Digitales y Digitales-Analógicos de datos: Son canales
de entrada o salida de datos en forma analógica.
Software
Son los programas que dirigen la operación del Hardware para la solución
de un problema, siendo su funcionalidad fácilmente modificable.
Según su funcionalidad se lo puede clasificar en:
•Sistema Operativo (S.O.)
•Aplicaciones
•Sistemas de desarrollo
Sistema Operativo
El sistema operativo es un conjunto de programas que se encargan de
realizar la administración de todos los recursos que posee un
computador. Además provee a los programas de una interfase con el
Hardware.
En los S.O.s modernos se pretende que la programación se independice
del hardware específico del computador sobre el cual corre, permitiendo
transportabilidad de programas entre computadores de arquitectura
disímil.
Aplicaciones
Son programas o conjuntos de programas que llevan a cabo tareas
específicas:
•Manejo de Bases de Datos
•Cálculo científico
•Procesamiento de textos
•Diseño asistido por computador
•Control de procesos
•Planillas de cálculo
•Sistemas de graficación
•Planificación empresarial
•etc.
Sistemas de desarrollo
Son conjuntos de programas destinados a la generación de aplicaciones. Estos
se pueden clasificar de diversas maneras
De acuerdo a su nivel de abstracción
Lenguajes de bajo nivel de abstracción: Son lenguajes en que el
programador debe especificar las tareas que debe realizar el
computador, desde un punto de vista muy cercano al hardware
(Assembler, código de máquina, etc.)
Lenguajes de alto nivel de abstracción: El programador manipula
entidades abstractas, sin involucrarse en los detalles de su
implementación interna (Pascal, Fortran, C, Java, etc).
Sistemas de desarrollo
(continuación)
De acuerdo a las metodologías de programación utilizadas
Lenguajes Imperativos: Son aquellos en que el programador debe
especificar en forma detallada el flujo del programa. (Assembler, C, Basic,
Fortran, Pascal, etc.).
Lenguajes Declarativos: Son aquellos en que el programador debe poner
énfasis en la definición del problema, más que en su solución, descansando
esta última en mecanismos del lenguaje mismo. (Prolog, Lisp, etc).
Lenguajes Orientados a Objetos: El programador define entidades (objetos)
caracterizadas por un estado interno, y un conjunto de mecanismos capaces
de modificarlo. Esto permite abstraer entidades físicas con más facilidad,
brindando una manera más directa para la modelización de un problema.
(C++, Smalltalk, Objective C, Eiffel, CLOOS, ADA, HyperCard, etc.)
Lenguajes Mixtos: Son aquellos que permiten al programador mezclar
metodologías de programación (Mathematica, SMP, Nexpert Object, etc.).
Sistemas de desarrollo
(continuación)
De acuerdo a la manera de ejecutar un programa
Intérpretes: Son aquellos en que existe un proceso adicional al programa,
que se encarga de ir traduciendo las sentencias del programa a lenguaje de
máquina, durante la ejecución misma. Otorgan flexibilidad, pero a costa de
pérdida de eficiencia.
Compiladores: El proceso de traducción a código de máquina se realiza
antes de la ejecución. Esto aumenta considerablemente la eficiencia, a
costa de pérdida en la flexibilidad durante el desarrollo de un programa.
Ambientes de programación: Son ambientes ricos para el programador,
facilitando la tarea de desarrollo, depuración y prueba de un programa.
Tarea
1. Describa brevemente la función de los elementos que constituyen un
sistema de cómputo.
2. Desde su punto de vista, ¿cree usted que sea importante saber
programar una computadora? ¿Por qué si o por que no?
Ejemplo de CPU
EJEMPLO DE PROCESADOR
El procesador contiene un acumulador para
almacenar uno de los operandos antes de realizar
las operaciones binaria y almacenar el resultado
después de éstas.
Memoria
Acumulador
00000000
CPU
dir contenido
00000
00000000
00001
00000000
00010
00000000
...
...
11111
00000000
Formato de las instrucciones
Las instrucciones constan de secuencias de 8 bits.
Los primeros tres bits se utilizan para el código de la
operación.
Los últimos cinco bits representan la dirección del operando.
0 1 1 0 1 1 0 1
Código de la instrucción
Dirección del operando
CONJUNTO DE INSTRUCCIONES
Código
de operación
001
010
011
100
101
110
111
Significado
Load(carga): cópiese el valor de la palabra direccionada en el
acumulador
Store(almacena): cópiese el valor del acumulador en la palabra
direccionada
Add(suma): reemplácese el valor actual del acumulador por la
suma del valor actual y el valor de la palabra direccionada.
Substract(resta): reemplácese el valor actual del acumulador
por el resultado que se obtiene al restar, del valor actual, el
valor de la palabra direccionada.
Branch(salta): Pásese a ejecutar la
instrucción contenida en la palabra direccionada.
Branch if not 0 (salta si no 0): Pásese a ejecutar la
instrucción contenida en la palabra direccionada solamente si
el valor actual del acumulador es diferente de cero.
Halt(alto): termina ejecución.
EJEMPLO DE PROGRAMA
Dirección de la instrucción
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
Código de la operación
001
010
001
011
010
001
100
010
110
111
Operando
01010
01100
01110
01011
01110
01100
01101
01100
00010
00000
Programa con mnemónicos
Direccion
00
01
02
03
04
05
06
07
08
09
Mnemónico
carga
almacena
carga
suma
almacena
carga
resta
almacena
salta si no 0
alto
Operando
10
12
14
11
14
12
13
12
02
CONTENIDO DE LA MEMORIA ANTES DE LA
EJECUCIÓN
Dirección
en binario
Programa
Datos
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
Contenido
00101010
01001100
00101110
01101011
01001110
00101100
10001101
01001100
11000010
11100000
00000011
00000100
00000000
00000001
00000000
00000000
CONTENIDO DE LA MEMORIA DESPUÉS DE
LA EJECUCIÓN
Dirección
en binario
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
Contenido
00101010
01001100
00101110
01101011
01001110
00101100
10001101
01001100
11000010
11100000
00000011
00000100
00000000
00000001
00001100
00000000
Problema de ejemplo
Se desea evaluar la fórmula 3A + 2B – C, con A = 5, B = 8, C = 3.
Se requieren al menos 3 localidades de memoria, una para A, otra para B
y otra para C. Elegimos las localidades con direcciones 10, 11 y 12 para
ese propósito. Para guardar el resultado se usará la dirección 13.
Para evaluar la fórmula se harán los siguientes pasos:
1. Cargar el valor de A en el acumulador
2. Sumarle el valor de A al acumulador
3. Sumarle el valor de A al acumulador
4. Sumarle el valor de B al acumulador
5. Sumarle el valor de B al acumulador
6. Restarle el valor de C al acumulador
7. Almacenar resultado
8. Terminar
}
}
Calcula 3A
Calcula 3A + 2B
Calcula 3A + 2B – C
Programa
Dirección Contenido
Dir
00
01
02
03
04
05
06
07
Mnemónico
carga
suma
suma
suma
suma
resta
almacena
alto
Operando
10
10
10
11
11
12
13
00000
00101010
00001
01101010
00010
01101010
00011
01101011
00100
01101011
00101
10001100
00100
01001101
00111
11100000
Ejemplo 2
Se desea un programa para sumar los primeros 20 números
impares.
En una localidad de memoria se almacenará el impar que se
va a sumar.
Otra localidad almacenara la suma de los impares.
Se usará una localidad para contar el número de impares
sumados (20).
En dos localidades mas se almacenarán las constante
utilizadas, 1 y 2.
Algoritmo
1. Cargar el total
2. Sumar el número impar
3. Guardar el resultado en total
4. Cargar el número impar
5. Sumar 2
6. Guardar el número impar
7. Cargar el contador de impares
8. Restar 1
9. Guardar contador de impares
10. Si no es cero ir al principio del programa (línea 1)
11. Terminar
Programa
Dir
mnemónico
binario
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
carga 19
suma 18
almacena
carga 18
suma 20
almacena
carga 16
resta 17
almacena
salta si
alto
Dir
uso
01000
01001
01010
01011
01100
contador de impares
constante 1
número impar
suma total
constante 2
19
18
16
no 0
00110011
01110010
01010011
00110010
01110100
01010010
00110000
10010001
01010000
11000000
11100000
Datos antes de la ejecución
01000
01001
01010
01011
01100
00001010
00000001
00000001
00000000
00000010
Datos después de la ejecución
01000
01001
01010
01011
01100
100 decimal
00000000
00000001
00010101
01100100
00000010
Tarea
Escriba un programa para la CPU que evalúe la siguiente expresión:
4*A – 3*B + 10
Pruebe el programa para a) A = 5 y B = 4 b) A = 3 y B = 6 explique los
resultados.
001 – load: cargar en el acumulador
010 – store: almacena en memoria
011 – add: suma al acumulador
100 – substract: resta al acumulador
101 – branch: salta a la instrucción direccionada
110 – branch if not 0: salsa si no cero a la instrucción direccionada
111 – halt: detiene
SISTEMA BINARIO
Utiliza solo dos dígitos, 0 y 1. Un número en binario
representa una suma de potencias de 2. Ejemplo:
1101002 = 1x25+ 1x24+ 0x23+ 1x22+ 0x21+ 0x20
= 32 + 16 + 0 + 4 + 0 + 0 = 5210
Para convertir de decimal a binario se sigue el siguiente
esquema:
105
52
26
13
6
3
1
0
2 210 105
52
26
13
6
3
1
0
0
0
1
0
1
1
1
El binario se obtiene de la secuencia inversa de los residuos
El número binario equivalente es: 11010010
discusión
Discuta y defina los siguientes conceptos
CPU
Bit
Memoria
Byte
Dirección de memoria
Número binario
Contenido de una localidad
Programa
Instrucción
Mnemónico
Código de instrucción
Operando de una instrucción
Acumulador
Salto incondicional
Salto condicional
Características de C
C es un lenguaje de programación de propósito general. Sus principales
características son:
•Programación estructurada
•Economía de las expresiones
•Abundancia en operadores y tipos de datos.
•Codificación en alto y bajo nivel simultáneamente.
•Reemplaza ventajosamente la programación en ensamblador (assembler).
•Utilización natural de las funciones primitivas del sistema.
•No está orientado a ningún área en especial.
•Producción de código 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 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 máquina, 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 diseño 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 programación.
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 función main comienza la ejecución del programa
int main()
{
std::cout << "¡Bienvenido a C++!\n";
system(“PAUSE”);
return 0;
// indica que el programa terminó satisfactoriamente
} // fin de la función main
Espera una tecla
Sentencia de salida
Compilar usando Dev-C++
1. Escribir el código
2. Guardar en disco
3. Compilar
4. Ejecutar (correr)
Programa en ejecución
Cambio de línea
std::cout << "¡Bienvenido a C++!\n";
system(“PAUSE”);
return 0;
Error de compilación
Señalamiento
de error
Explicación
del error
expected “;” before “return”
esperaba “;” antes de “return”
Proceso de escritura de programas
Escribir programa en
el editor de texto
Compilar el programa
o
Ctrl-F9
fuente
Hay
errores?
si
no
Ejecutar
el programa
o
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 línea, también endl
\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 <iostream>
using spacename std;
int main()
{
cout << "!Bienvenido a ";
cout << "Dev-C++!\n";
system(”PAUSE”);
return 0;
}
Una línea mediante dos
sentencias
Varias línea 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\tdirección\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\tdirección\ttelefono\njuan\tolmo 204 \t8-12-1234\nmaria\tpino 565 \t8-34-27-16\n";
system("PAUSE");
return 0;
}
tarea
¿Que salida genera el siguiente programa?
int main()
{
cout << “Introducción a\nlas computadoras";
cout << “ y a la\n \t\"programación\"";
cout << “ en\n \tC++\n";
return 0;
}
Escriba un programa que genere la siguiente salida utilizando una sola línea de
salida.
Nombre
Puesto
Sueldo:
Juan
Gerente $10,000
Lety
TIC
$20,000
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:
Declara a, b y c como enteras
int a, b, c;
float r, s;
Declara r y s como reales
Tipos de datos numéricos
La siguiente tabla resume los tipos de datos numéricos 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 numéricas
Las 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: 04567 = 30210
Las constantes 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 con el que
fue declarada la variable.
Para la asignación se utiliza el símbolo =
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 << "Impresión de \"variables\"\n";
cout << "a\tb\tc\td\n";
cout << a << "\t" << b << "\t" << c << "\t" << d << endl;
system(“PAUSE”);
return 0;
}
Salida
Impresión de "variables"
a
b
c
d
45
23
368
345
Tarea
//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 aritméticos
Operación
Operador Ejemplo
Suma
+
5 + 8
Resta
-
5 – 2
Multiplicación
*
4 * 8
División
/
2 / 7
Módulo
%
5 % 3
Reglas de precedencia
El operador () se utiliza para modificar la precedencia de los operadores
Operador
Operación
Precedencia
( )
Paréntesis
Precedencia más
alta. Se evalúan
primero los más
anidados
*, / o %
+ o -
Multiplicación, división, módulo Se evalúan de
izquierda a derecha
Suma o resta
Se evalúan de
izquierda a derecha
Ejemplos de operadores
Notación estándar
ab
d
c
a mod c  d
ab
2c  3
ac
4bc
Notación 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 evaluación
z = p r mod q + w/x-y
c  bd
a
cd
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 
2m g
 2

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
Entrada de datos
Para la lectura de datos desde el teclado puede utilizarse la función cin.
El formato para cin es:
cin >> var;
Al ejecutarse la función cin se detiene la ejecución del programa hasta que
se teclee el valor de la variable solicitada.
Pueden leerse varias variables en una sola línea.
cin >> var1 >> var2 >> var3;
Las variables se leen separadas por espacios o la tecla enter.
Suma de enteros
Declaración de enteros
// Programa de suma.
#include <iostream>
using namespace std;
// la función main comienza la ejecución del programa
int main()
{
int entero1; // primer número que introduce el usuario
int entero2; // segundo número 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; // asignación del resultado a suma
cout << "La suma es " << suma << endl; // impresión de suma
return 0;
// indica que el programa terminó satisfactoriamente
} // fin de la función main
Operación de suma
Concatenación de flujo
Sentencia de entrada
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 triángulo dadas las
coordenadas de sus vértices.
El área se calcula utilizando la siguiente fórmula:
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
Solución
//Programa para calcular el área de un triángulo
#include <iostream>
using namespace std;
int main()
{
float x1,x2,x3,y1,y2,y3; // coordenadas del triángulo
float area;
// área del triángulo
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:
•Declaración de variables y constantes
•Lectura de datos de entrada
•Cálculo de valores de salida
•Impresión 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 declaración de variables
3. Escribir las sentencias de entrada
4. Escribir las expresiones para realizar los cálculos
5. Escribir las sentencias de salida
6. Probar con algunos valores de entrada
Ejemplo
Escriba un programa que lea el radio de un círculo e imprima su
perímetro y área. Defina el valor de pi como 3.141592.
Constates:
pi (3.1416)
Declaración de constante:
float pi = 3.1415926535;
Variables de entrada:
radio – número real
Declaración de variables de entrada:
float radio;
Variables de salida:
area – número real
perimetro – número real
Declaración de variables de salida:
float area, perimetro;
Sentencia de entrada:
cout << “Escriba el radio del círculo: “;
cin >> radio;
Cálculo de área y perímetro:
area = pi*radio*radio;
perimetro = 2*pi*radio;
Sentencias de salida:
cout << “el área del círculo es: “ << area << “\n”;
cout << “el perímetro del círculo es: “ << perimetro << “\n”;
Programa completo
#include <iostream>
using namespace std;
main(){
float pi = 3.1415926535; // valor de pi
float radio; // radio del círculo, variable de entrada
float area, perimetro; // área y perímetro del círculo
cout << “Escriba el radio del círculo: “;
cin >> radio;
area = pi*radio*radio;
perimetro = 2*pi*radio;
cout << “el área del círculo es: “<< area << “\n”;
cout << “el perímetro del círculo es: “<< perimetro << “\n”;
system(“PAUSE”);
}
Tarea
Escriba un programa para calcular la magnitud de la fuerza entre dos
cargas eléctricas dadas las coordenadas de las cargas y la magnitud
de cada carga. La fuerza se calcula con la expresión
q1q2
F k
x2  x1 2   y2  y1 2
k = 8.99x109.
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.
ceil(x)- redondea al entero más
pequeño no menor que x.
cos(x)-
coseno de x.
exp(x)-
ex.
fabs(x)- valor absoluto de x.
floor(x)- redondea al entero más
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)- raíz cuadrada de x.
tan(x)- tangente de x.
Ejemplo
Cálculo del área de un triángulo conocidas las longitudes de los lados
//Programa para calcular el área de un triángulo
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
float a,b,c; // lados del triángulo
float s;
//semiperímetro
float area;
// área del triángulo
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;
}
Solución de cuadrática 1
//Programa para resolver una ecuación cuadrática
#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 función raíz 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 = 4r2)
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 parabólico
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 máxima y el
tiempo de vuelo.
h = altura máxima
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 máxima (tipo float)
R – alcance máximo (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 trigonométricas 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; // conversión a 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
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;
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; // conversión 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 opción de Herramientas (tools) Opciones del compilador (compiler
options) en la opción
Agregar estos comandos a la línea de comandos del enlazador
(Add these commands to the linker command line)
-lconio