Códigos de Programas en C

July 28, 2017 | Autor: Omar Palacios | Categoría: Programación, Código, Lenguajes, C
Share Embed


Descripción

´ digos de Programas Co en el lenguaje C++ Efra´ın Soto Apolinar

C´ odigos de Programas en el lenguaje C++ Compilados por

Efra´ın Soto Apolinar PISIS

Monterrey, N.L., M´ exico. 2007

ÿ

´Indice

1 Introducci´ on 1.1

1.2

C´ odigos en C++

7

Conceptos b´ asicos . . . . . . . . . . . . . . . . . . . . . . . . . .

8

1.1.1

Conceptos de programaci´on . . . . . . . . . . . . . . . . .

8

1.1.2

Variables . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

Sintaxis del lenguaje C++ . . . . . . . . . . . . . . . . . . . . . .

11

1.2.1

Palabras reservadas . . . . . . . . . . . . . . . . . . . . .

11

1.2.2

Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . .

11

1.2.3

Tipos de constantes . . . . . . . . . . . . . . . . . . . . .

12

1.2.4

Caracteres especiales . . . . . . . . . . . . . . . . . . . . .

12

1.2.5

Declaraci´ on de variables . . . . . . . . . . . . . . . . . . .

12

1.2.6

Asignaci´ on . . . . . . . . . . . . . . . . . . . . . . . . . .

13

1.2.7

Operaciones matem´aticas . . . . . . . . . . . . . . . . . .

14

1.2.8

Comparaciones . . . . . . . . . . . . . . . . . . . . . . . .

15

1.2.9

Ciclos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

1.2.10 Ejemplos de control de flujo . . . . . . . . . . . . . . . . .

17

Este material NO est´ a listo para su publicaci´ on. Prohibida la reproducci´ on sin permiso previo del autor.

Efra´ın Soto A.

4

1.3

1.4

1.2.11 Operaciones l´ogicas . . . . . . . . . . . . . . . . . . . . . .

21

Funciones en C++ . . . . . . . . . . . . . . . . . . . . . . . . . .

22

1.3.1

Funciones predefinidas . . . . . . . . . . . . . . . . . . . .

22

1.3.2

Funciones definidas por el usuario . . . . . . . . . . . . .

23

Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

2 C´ odigos

31

2.1

Mis primeros programas . . . . . . . . . . . . . . . . . . . . . . .

32

2.2

Programas con funciones . . . . . . . . . . . . . . . . . . . . . . .

38

2.3

Funciones cin, cout . . . . . . . . . . . . . . . . . . . . . . . . . .

39

2.4

if, for, while and the like... . . . . . . . . . . . . . . . . . . . . . .

46

2.5

Mis tareas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

2.5.1

Simulaci´on 1 . . . . . . . . . . . . . . . . . . . . . . . . .

60

2.5.2

C´ alculo anal´ıtico . . . . . . . . . . . . . . . . . . . . . . .

64

2.5.3

Simulaci´on 2 . . . . . . . . . . . . . . . . . . . . . . . . .

65

2.5.4

Simulaci´on 3 . . . . . . . . . . . . . . . . . . . . . . . . .

68

2.5.5

Simulaci´on 4 . . . . . . . . . . . . . . . . . . . . . . . . .

70

2.5.6

Simulacion 5 . . . . . . . . . . . . . . . . . . . . . . . . .

72

2.5.7

Simulacion 6 . . . . . . . . . . . . . . . . . . . . . . . . .

74

2.5.8

Simulacion 7 . . . . . . . . . . . . . . . . . . . . . . . . .

78

2.5.9

Simulacion 8 . . . . . . . . . . . . . . . . . . . . . . . . .

80

2.5.10 Simulaci´on de la distribuci´on binomial . . . . . . . . . . .

84

2.5.11 Introducci´on a la din´amica de poblaciones . . . . . . . . .

87

Proyectos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

89

2.6.1

Regresi´on lineal . . . . . . . . . . . . . . . . . . . . . . . .

89

2.6.2

Regresi´on cuadr´atica . . . . . . . . . . . . . . . . . . . . .

91

Librer´ıa Estad´ıstica . . . . . . . . . . . . . . . . . . . . . . . . . .

96

2.6

2.7

Efra´ın Soto A.

Este material NO est´ a listo para su publicaci´ on. Prohibida la reproducci´ on sin permiso previo del autor.

C´odigos en C++

5 2.8

Implementaci´ on . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8.1

96

Ejemplos de uso . . . . . . . . . . . . . . . . . . . . . . . 139 2.8.1.1

funiforme(total, archivo) . . . . . . . . . . . . . 139

2.8.1.2

funiforme(total, archivo, A, B) . . . . . . . . . . 140

2.8.1.3

fnormal(total, archivo) . . . . . . . . . . . . . . 142

2.8.1.4

fnormal(total, archivo, media, SD) . . . . . . . . 143

2.8.1.5

fexponencial(total, lambda, archivo) . . . . . . . 144

2.8.1.6

fgeometrica(total, p, archivo) . . . . . . . . . . . 145

2.8.1.7

fpoisson(total, alpha, archivo) . . . . . . . . . . 145

2.8.1.8

fweibull(total, archivo, c, k) . . . . . . . . . . . . 146

2.8.1.9

frayleigh(total, archivo, media) . . . . . . . . . . 147

2.8.1.10 histograma(archivo, intervalos) . . . . . . . . . . 148 2.8.1.11 PchiUniforme(archivo, No Int) . . . . . . . . . . 154 2.8.1.12 PchiNormal(archivo, No Int) . . . . . . . . . . . 156 2.8.1.13 PchiExponencial(archivo, Num Int, lambda) . . 157 2.8.1.14 PchiWeibull(Archivo, Num Int, C, K) . . . . . . 159 2.8.1.15 PchiRayleigh(archivo, Num Int, media) . . . . . 161 2.8.1.16 RL(archivo) . . . . . . . . . . . . . . . . . . . . 162 2.8.1.17 RC(archivo) . . . . . . . . . . . . . . . . . . . . 163 2.8.2

C´ odigos en C++

Otras funciones . . . . . . . . . . . . . . . . . . . . . . . . 165 2.8.2.1

uniforme() . . . . . . . . . . . . . . . . . . . . . 165

2.8.2.2

uniforme(a,b) . . . . . . . . . . . . . . . . . . . . 166

2.8.2.3

weibull(c,k) . . . . . . . . . . . . . . . . . . . . . 167

2.8.2.4

rayleigh(media) . . . . . . . . . . . . . . . . . . 168

2.8.2.5

normal() . . . . . . . . . . . . . . . . . . . . . . 169

2.8.2.6

normal(media, desviacionStd)

2.8.2.7

exponencial(lambda) . . . . . . . . . . . . . . . . 171

. . . . . . . . . . 170

Este material NO est´ a listo para su publicaci´ on. Prohibida la reproducci´ on sin permiso previo del autor.

Efra´ın Soto A.

2.8.2.8

geometrica(p) . . . . . . . . . . . . . . . . . . . 172

2.8.2.9

poisson(alpha) . . . . . . . . . . . . . . . . . . . 173

2.8.2.10 media(archivo), desviacionStd(archivo) . . . . . 174 2.8.3

Simulaci´on del recurso e´olico . . . . . . . . . . . . . . . . 176 2.8.3.1

2.8.4

2.9

Energ´ıa extraida del viento . . . . . . . . . . . . 176

Distribuci´on del viento . . . . . . . . . . . . . . . . . . . . 178 2.8.4.1

Distribuci´on Weibull . . . . . . . . . . . . . . . . 178

2.8.4.2

Distribuci´on Rayleigh . . . . . . . . . . . . . . . 179

2.8.4.3

Distribuci´on de energ´ıa . . . . . . . . . . . . . . 180

2.8.4.4

Anem´ometros digitales . . . . . . . . . . . . . . 180

2.8.4.5

Predicci´on del recurso e´olico . . . . . . . . . . . 180

2.8.5

Un caso espec´ıfico . . . . . . . . . . . . . . . . . . . . . . 181

2.8.6

Implementaci´on . . . . . . . . . . . . . . . . . . . . . . . . 181

2.8.7

Resultados de la simulaci´on . . . . . . . . . . . . . . . . . 186

Esqueletos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

2.10 Lecciones aprendidas . . . . . . . . . . . . . . . . . . . . . . . . . 193 3 End matter

195

3.1

Fuentes bibliogr´aficas . . . . . . . . . . . . . . . . . . . . . . . . . 196

3.2

T´erminos de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

3.3

Cr´editos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

3.4

Simbolog´ıa utilizada . . . . . . . . . . . . . . . . . . . . . . . . . 200

1 Introducci´ on

C´ odigos en C++

Este material NO est´ a listo para su publicaci´ on. Prohibida la reproducci´ on sin permiso previo del autor.

Efra´ın Soto A.

8

Introducci´ on

1.1

´ sicos Conceptos ba

En este apartado se dan algunos conceptos que necesitas conocer para poder aprovechar la lectura de este material. Se presentan diversas secciones con contenidos igual de importantes. Los primeros tienen que ver con las bases de programaci´on y despu´es se incluyen los que conciernen al lenguaje C++ .

1.1.1

Conceptos de programaci´ on

Los conceptos que debes entender para iniciarte en el arte de la programaci´on son:

Definici´ on 1.1.1. Algoritmo Una sucesi´ on ordenada de instrucciones para resolver un problema o una tarea. Puedes pensar en un algoritmo como si se tratara de una receta. Es el procedimiento que se debe realizar para resolver un problema espec´ıfico.

Definici´ on 1.1.2. Compilador Es el programa de computadora que traduce las instrucciones que nosotros le damos en un lenguaje espec´ıfico.

Definici´ on 1.1.3. Programa fuente Es el c´ odigo que t´ u vas a escribir. En este texto encontrar´as el programa fuente para resolver muchos problemas. El programa fuente tambi´en se conoce como c´ odigo fuente.

Definici´ on 1.1.4. ´ digo Co Es un conjunto de instrucciones en alg´ un lenguaje de alto nivel. En este material solamente encontrar´ as c´odigo en C++ . El c´ odigo no necesariamente es un programa completo, puede tratarse solamente de una parte del programa.

Efra´ın Soto A.

Este material NO est´ a listo para su publicaci´ on. Prohibida la reproducci´ on sin permiso previo del autor.

C´odigos en C++

1.1 Conceptos b´ asicos

9

Definici´ on 1.1.5. Sintaxis Son las reglas de acuerdo a las cuales debes escribir el programa fuente. Cada lenguaje de programaci´ on tiene su sintaxis. Puedes imaginar que la sintaxis son las reglas de gram´ atica de ese lenguaje.

Definici´ on 1.1.6. Compilar Indicar a la computadora que verifique que el programa fuente no contenga errores. Esta tarea siempre la realizar´a un software (el compilador).

Definici´ on 1.1.7. Correr (un programa) Ordenar a la computadora que ejecute las instrucciones indicadas por el c´odigo de un programa. Evidementemente, un programa en C++ debe correrse en un compilador de ese lenguaje. (Yo utilizo el Dev-C++ , que es gratuito.)

Nota 1.1.1. Algunas veces el compilador no encontrar´a errores, pero existe la posibilidad de que s´ı existan. Por ejemplo, en el caso de que t´ u hayas cometido el error de escribir un + en lugar de un *, el compilador no se da cuenta, porque no sabe realmente qu´e debe hacer el programa. En otras palabras, las computadoras todav´ıa no pueden leer tu mente.

Definici´ on 1.1.8. Mensaje de error Es un mensaje que el compilador te dar´a cuando encuentre errores en el programa fuente. Estos mensajes te ayudan a corregir el c´odigo.

Definici´ on 1.1.9. ´ xis Error de sinta Ocurre cuando el c´ odigo no est´ a completamente escrito de acuerdo a las reglas de sintaxis del mismo. Por ejemplo, si escribes, Go To en lugar de GOTO, cometiste un error de sintaxis (de acuerdo a la sint´axis del lenguaje GWBasic).

C´ odigos en C++

Este material NO est´ a listo para su publicaci´ on. Prohibida la reproducci´ on sin permiso previo del autor.

Efra´ın Soto A.

10

Introducci´ on

Definici´ on 1.1.10. ´ gicos Errores lo Los que comete el programador cuando traduce el algoritmo al lenguaje C++ . El programa realmente no hace lo que el algoritmo indica. Tal vez no tenga errores de sint´ axis... simplemente no realiza la tarea que debe realizar. Cuidado con esto.

1.1.2

Variables

Definici´ on 1.1.11. Identificador Es el nombre que el programador asigna a un valor dentro de un programa. En C++ , un identificador debe empezar con una letra o el s´ımbolo: ’ ’ y los dem´as caracteres deben ser letras, d´ıgitos o el s´ımbolo ’ ’.

Definici´ on 1.1.12. Variable Es una herramienta de programaci´on utilizada para asignar valores (no necesariamente num´ericos) a letras o cadenas de letras. Las variables se clasifican de acuerdo al tipo de valor que almacenan.

Definici´ on 1.1.13. Constante Es un valor que no cambia durante la ejecuci´on del programa. Una constante puede ser de cualquiera de los tipos de datos definidos en C++ .

Efra´ın Soto A.

Este material NO est´ a listo para su publicaci´ on. Prohibida la reproducci´ on sin permiso previo del autor.

C´odigos en C++

1.2 Sintaxis del lenguaje C++

1.2 1.2.1

11

Sintaxis del lenguaje C++ Palabras reservadas

!

En C++ , las siguientes son consideradas reservadas:

asm auto bool break case char catch class const const cast continue default delete

do double dynamic cast else enum explicit extern false float for friend goto if

inline return int short log signed long sizeof mutable static namespace static cast new struct operator switch private template protected this public throw register true reinterpret cast try

typedef typeid typename union unsigned using virtual void volatile while

esto significa que no se permite utilizar alguna de las palabras que se enlistaron antes como un identificador.

1.2.2

!

Tipos de datos

En C++ hay varios tipos de datos que podemos definir para las variables y constantes que utilicemos en nuestros programas.

! Variable short int unsigned int float double long double char string bool

Rango −32 767 a 32 767 −2 147 483 647 a 2 147 483 647 −2 147 483 647 a 2 147 483 647 10−38 a 1038 10−308 a 10308 10−4932 a 104932 No aplica No aplica False/True

Precisi´ on No Aplica No Aplica No Aplica 7 d´ıgitos 15 d´ıgitos 19 d´ıgitos No aplica No aplica No aplica

Ejemplo 23 −4 4 3.1416 3.141592654 2.718281828 ’a’ ’Hola Amigo.’ False

Tipos de datos. C´ odigos en C++

Este material NO est´ a listo para su publicaci´ on. Prohibida la reproducci´ on sin permiso previo del autor.

Efra´ın Soto A.

12

Introducci´ on Decidir c´ omo definir una variable depende del uso que se le va a dar. Cuando vayas a definir una variable trata de pensar en qu´e le va a pasar durante la ejecuci´ on del programa.

1.2.3

Tipos de constantes

Una variable, por definici´on, puede cambiar de valor durante la ejecuci´on de un programa. Por el contrario una constante no cambia de valor durante la ejecuci´ on del programa. Bueno, muchos se preguntan, “si nunca cambia de valor, para qu´e utilizar un identificador y utilizar m´as memoria...” Ok. Acepto el argumento. Sin embargo, algunas veces un valor constante aparece en muchas partes del c´odigo de un programa, por ejemplo, la tasa de cambio. Si cambia de un d´ıa para otro este valor, es una buena idea definirlo como constante, y cambiar su valor... porque si nos decidimos cambiar todos los lugares donde aparezca esta constante, existe la posibilidad de que omitamos uno o varios cambios. Adem´as, existe tambi´en la posibilidad de que otra constante tenga el mismo valor y eso pueda ocasionar m´as errores todav´ıa.

i

Cuando una variable del tipo bool toma el valor true, este resultado no es una cadena de caracteres, es decir, no es una variable del tipo string. De manera que si quieres enga˜ nar al compilador o a la computadora asignando a una constante del tipo bool la cadena ’true’, al compilar te dar´a el correspondiente mensaje de error.

1.2.4

!

Caracteres especiales

En C++ se definen los siguientes caracteres especiales.

Caracter especial Salto de l´ınea Tabulaci´on Nulo Diagonal inversa

Constante ’\n’ ’\t’ ’\0’ \\

Caracteres especiales.

1.2.5

Declaraci´ on de variables

En C++ , estas obligado a declarar cualquier variable antes de poder utilizarla. La sintaxis para declarar una variable es la siguiente: Efra´ın Soto A.

Este material NO est´ a listo para su publicaci´ on. Prohibida la reproducci´ on sin permiso previo del autor.

C´odigos en C++

1.2 Sintaxis del lenguaje C++

13

Tipo_de_variable variable1;

Tambi´en puedes declarar dos o m´ as variables al mismo tiempo separ´andolas por comas: Tipo_de_variable variable1, variable2, variable3;

Igual, podemos declarar una constante, anteponiendo la palabra const a la declaraci´ on.

o

Ejemplos:

int contador, dia, mes, edad; // Variables tipo double promedio, precio, masa, volumen; // con char nombre[15], apellido_m[15], apellido_p[15]; const double e = 2.718281828; // Constante tipo

1.2.6

int (entero) punto decimal // Cadenas double

Asignaci´ on

En C++ , para hacer una asignaci´ on de un valor al identificador de una variable, necesariamente debemos escribir primero (i.e., a la izquierda) el valor del identificador que almacenar´ a el valor y a la derecha el valor o una expresi´on matem´ atica correctamente codificada en C++ . Como es costumbre, en medio debemos escribir el s´ımbolo ’=’. La sint´ axis es la siguiente:

variable = expresion;

o

Ejemplos:

total = total + incremento; edad = year_actual - year_de_nac; area = 3.1416 * radio * radio; importe = precio_unitario * no_articulos; aceleracion = (v_f - v_i) / t;

C´ odigos en C++

Este material NO est´ a listo para su publicaci´ on. Prohibida la reproducci´ on sin permiso previo del autor.

Efra´ın Soto A.

14

Introducci´ on Tambi´en podemos asignar un valor a un identificador a la hora de declarar la variable. Hay dos formas igualmente aceptables para hacer esto. La sintaxis es la siguiente:

Tipo\_de\_variable variable1 = valor\_1, variable2 = valor\_2, var3 = valor\_3;\\ Tipo\_de\_variable variable4 (valor\_4), variable5 (valor\_5), var6 (valor\_6);

o

Ejemplos:

int contador= 1, factor_de_conversion = 12; double alpha(0.32), delta_Cu(375.23); char respuesta = ’c’;

1.2.7

Operaciones matem´ aticas

En C++ est´ an definidas las operaciones aritm´eticas b´asicas: +, −, ×, ÷. Para la suma y la resta usamos los signos + y −, respectivamente. Para la multiplicaci´ on usamos el s´ımbolo ’*’ y para la divisi´on, el s´ımbolo: /. Es importante utilizar signos de agrupaci´on para definir correctamente las operaciones.

o

Por ejemplo, supongamos que tenemos que realizar el siguiente c´alculo: √ −b + b2 − 4 ac x1 = 2a En C++ esta misma expresi´on se codifica como sigue:

x_1 = (- b + sqrt(b * b - 4 * a * c))/(2 * a);

La funci´ on sqrt() est´a definida en una librer´ıa de C++ (math.h)1 . En el caso de la f´ ormula: yf =

o

1 2 a t + v0 t + yi 2

se codifica como: 1 M´ as

sobre funciones y librer´ıas en los siguientes temas.

Efra´ın Soto A.

Este material NO est´ a listo para su publicaci´ on. Prohibida la reproducci´ on sin permiso previo del autor.

C´odigos en C++

1.2 Sintaxis del lenguaje C++

15

y_f = a * t * t / 2 + v_0 * t + y_i;

En la programaci´ on es muy com´ un utilizar la operaci´on incremento. Es decir, incrementamos el valor de una variable en 1, digamos un contador. Debido a esto, en C++ hay varias operaciones matem´aticas unitarias, en el sentido que se realizan con solamente una variable, no dos, en cuyo caso ser´ıan binarias. Ejemplo: contador++; reg −−; decenas += 10; p Neto −= desc; factor *= celcuis; residuo %= divisor; mejor *= calif1 + calif2;

o

Equivalente a: contador = contador + 1; reg = reg − 1 decenas = decenas + 10; p Neto = p Neto − desc; factor = factor * celcius; residuo = residuo % divisor; mejor = mejor * (calif1 + calif2);

Operaciones unitarias

1.2.8

Comparaciones

En la mayoria de los programas se requiere hacer comparaciones para controlar el flujo del procedimiento. En seguida se muestra la tabla que contiene los tipos de comparaciones. S´ımbolo Matem´ atico = 6= < ≤ > ≥

En Espa˜ nol Igual a Distinto a Menor a Menor o igual a Mayor a Mayor o igual a

En C++ == != < >=

Ejemplo Pr´ actico x == 0 x != 0 x < 0 x 0 x >= 0

Equivalente a x=0 x 6= 1 x0 x≥0

Operadores de Comparaci´ on Las instrucciones que nos ayudan a realizar operaciones de comparaci´on (booleanas) son las siguientes: If then else if (Expresi´ on Booleana){ // Aqu´ ı van las instrucciones que

C´ odigos en C++

Este material NO est´ a listo para su publicaci´ on. Prohibida la reproducci´ on sin permiso previo del autor.

Efra´ın Soto A.

!

16

Introducci´ on // debe realizar en caso de que la // expresi´ on Booleana sea verdadera

} else{ // Aqu´ ı van las instrucciones que // debe realizar en caso de que la // expresi´ on Booleana sea falsa

}

1.2.9

Ciclos

While while (Expresi´ on Booleana){ // Algo debe ocurrir aqu´ ı // Varias veces para que el ciclo // cumpla con su funci´ on... } // Este ciclo no requiere punto y coma al final...

do...while do{ // Algo debe ocurrir aqu´ ı // Varias veces para que el ciclo // cumpla con su funci´ on... } while (Expresi´ on Booleana); // Nota el punto y coma al final...

for for (incializaci´ on ; Expresi´ on booleana ; Incremento){ // Algo debe ocurrir aqu´ ı // Varias veces para que el ciclo // cumpla con su funci´ on...

} // Este ciclo tampoco requiere punto y coma al final...

Efra´ın Soto A.

Este material NO est´ a listo para su publicaci´ on. Prohibida la reproducci´ on sin permiso previo del autor.

C´odigos en C++

1.2 Sintaxis del lenguaje C++

1.2.10

17

Ejemplos de control de flujo



if...then...else 1 2

#include #include

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

using namespace std; int main(void){ char respuesta; cout > respuesta; if (respuesta == ’S’){ // dice que s´ ı... cout
Lihat lebih banyak...

Comentarios

Copyright © 2017 DATOSPDF Inc.