Introduccin Computacin Objetivo PROPSITO DEL CURSO Este curso
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 40% tareas 40% proyecto Calificación ordinaria: 1 er parcial 2 do parcial final 30% 40% 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, Hyper. Card, 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. Acumulador 0000 CPU Memoria dir contenido 000000001 0000 00010 0000 . . . 11111 0000
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 Código de la instrucción 0 1 1 0 1 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 000001 00010 00011 00100 00101 00110 00111 01000 01001 Código de la operación 001 010 001 100 010 111 Operando 01010 01100 01110 01011 01110 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 Programa Datos
CONTENIDO DE LA MEMORIA DESPUÉS DE LA EJECUCIÓN
Problema de ejemplo Se desea evaluar la fórmula 3 A + 2 B – 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 3 A + 2 B – C
Programa Dirección Contenido Dir 00 01 02 03 04 05 06 07 Mnemónico carga suma resta almacena alto Operando 10 10 10 11 11 12 13 00000 00101010 00001 01101010 00010 01101010 00011 01101011 00100 01101011 00101 10001100 001001101 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 000001 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 0011 01110010 010100110010 01110100 01010010 00110000 10010001 01010000 11000000 11100000 Datos antes de la ejecución 01000 01001 01010 01011 01100 00001010 00000001 00000010 Datos después de la ejecución 01000 01001 01010 01011 01100 decimal 000000010101 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 = 1 x 25+ 1 x 24+ 0 x 23+ 1 x 22+ 0 x 21+ 0 x 20 = 32 + 16 + 0 + 4 + 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 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: fig 01_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++ 2. Guardar en disco 3. Compilar 4. Ejecutar (correr) 1. Escribir el código
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-F 9 fuente si Hay errores? no Ejecutar el programa o Ctrl-F 10
Secuencias de escape para la salida Sirven para modificar la salida de datos Se utilizan 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. x. HHH 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 << "¡Bienvenidon"a"n. C++!n"; system(“PAUSE”); return 0; }
#include <iostream> using namespace std; int main(){ cout << "nombretdirecciónttelefonon"; cout << "juantolmo 204 t 8 -12 -12 -34n"; cout << "mariatpino 565 t 8 -34 -27 -16n"; system("PAUSE"); return 0; } #include <iostream> using namespace std; int main() { cout << "nombretdirecciónttelefononjuantolmo 204 t 8 -12 -1234nmariatpino 565 t 8 -34 -27 -16n"; system("PAUSE"); return 0; }
tarea ¿Que salida genera el siguiente programa? int main() { cout << “Introducción anlas computadoras"; cout << “ y a lan t"programación""; cout << “ enn t. C++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 var 1, var 2, … ; 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 enum 16 bits unsigned int 16 bits short int 16 bits unsigned long 32 bits float 32 bits double 64 bits long double 80 bits Rango 0 -128 -32, 768 0 -2, 147, 483, 648 3. 4*(10^-38) 1. 7*(10^-308) 3. 4*(10^-4932) a a a 255 127 32, 767 65, 535 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 0 x. Ejemplo: 0 x 00 ff o 0 x 00 FF = 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. 4 E+4 o 12. 4 E 4
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 << "atbtctdn"; 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 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"); }
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) 5 2 1 4 3 a = c + b * d / c – d 5 3 1 2 4 ERROR
Tarea 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
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 >> var 1 >> var 2 >> var 3; 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 entero 1; // primer número que introduce el usuario int entero 2; // segundo número que introduce el usuario int suma; // variable en la que se almacena la suma cout << "Digite el primer enteron"; // indicador cin >> entero 1; // lee un entero cout << "Digite el segundo enteron"; // indicador cin >> entero 2; // lee un entero suma = entero 1 + entero 2; // 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 integer 1 38 integer 2 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: Variables de entrada: x 1, x 2, x 3, y 1, y 2, y 3 Variables de salida: area
Solución //Programa para calcular el área de un triángulo #include <iostream> using namespace std; int main() { float x 1, x 2, x 3, y 1, y 2, y 3; // coordenadas del triángulo float area; // área del triángulo cout << "Teclee las coordenadas del primer punto: "; cin >> x 1 >> y 1; cout << "Teclee las coordenadas del segundo punto: "; cin >> x 2 >> y 2; cout << "Teclee las coordenadas del tercer punto: "; cin >> x 3 >> y 3; area = (x 1*y 2+x 2*y 3+x 3*y 1 -x 1*y 3 -x 2*y 1 -x 3*y 2)/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; 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; 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 k = 8. 99 x 109.
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. log 10(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 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 x 1, x 2; // raices cout << "Teclee los coeficientes a, b y c: "; cin >> a >> b >> c; // lee los coeficientes d = pow(b, 2)-4*a*c; x 1 = (-b-sqrt(d))/2/a; x 2 = (-b+sqrt(d))/2/a; cout << "x 1: " << x 1 << endl; cout << "x 2: " << x 2 << 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 pr 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 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 T = tiempo de vuelo
Constantes: PI – 3. 14159265 g - 9. 81 Los datos de entrada son la velocidad inicial y el ángulo del disparo: v 0 – 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 >> v 0; cout << “Teclee angulo del tiro (en grados): ”; cin >> ang; ang = ang*PI/180; // conversión a radianes
Cálculo de resultados h = v 0*sin(ang)*sin(ang)/2/g; R = v 0*sin(2*ang)/g; T = 2*v 0*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 <conio 2. h> #include <math. h> using namespace std; Borra main(){ float Pantalla PI = 3. 14159265; g = 9. 81; v 0, 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 PARABOLICOn"; cout << "Teclee velocidad inicial (en m/s): "; cin >> v 0; cout << "Teclee angulo del tiro (en grados): "; cin >> ang; ang = ang*PI/180; // conversión a radianes h = v 0*sin(ang)*sin(ang)/2/g; R = v 0*sin(2*ang)/g; T = 2*v 0*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
- Slides: 75