Aprendiendo a programar con Haiku - Lección 3

Fuente original: https://github.com/pulkomandy/programming-with-haiku 



Hasta ahora hemos estado aprendiendo acerca de los conceptos básicos de programación, tales como cómo escribir una función y cómo comenzar a buscar errores en nuestro código. Esta vez aprenderemos sobre los diferentes tipos de datos y las formas de almacenar y transmitirlos.

Solo se puede hacer tanto con la manipulación directa como el retorno 1 + 1; Por eso tenemos variables en la programación. Una variable es simplemente un contenedor de almacenamiento de información, y al igual que cualquier contenedor del mundo real, vienen en diferentes formas, tamaños y usos.

Crear una variable es simplemente una cuestión de declarar su existencia, como se ve a continuación.


#include <stdio.h>

int main(void)
{
// Declarando una variable entero nombrado a
int a;
// Declarando dos a la vez: b and c
int b, c;
a = 1;
b = 2;
c = 3;
// Imprimiendo en pantalla los valores de nuestras variables
printf("a is %d, b is %d, and c is %d.\n",a,b,c);
return a + b + c;
}



Las variables se pueden declarar de una en una, como nuestra variable a, o varias a la vez, como b y c. Además de declarar variables para nuestro uso en funciones, muchas veces las obtendremos de forma gratuita porque muchas funciones requieren datos de entrada para hacer su trabajo. Estas variables se llaman parámetros o argumentos.

Los parámetros de función se declaran tanto en la declaración como en la definición de una función. Se enumeran en una lista separada por comas. Las funciones que no toman ningún argumento usan la palabra void para decirlo.


// Declaración de una función con dos argumentos.
int SomeFunction(int someNumber, int anotherNumber);

// Definición de una función con dos argumentos.
int MultiplyNumbers(int value, int secondValue)
{
return value * secondValue;
}

//Una función que no necesita ningún argumento. Debe ser una función muy tranquila.

int main(void)
{
return MultiplyNumbers(2,3);
}


Cuando llamamos a una función con parámetros, como MultiplyNumbers () en el ejemplo anterior, no listamos el tipo al lado de cada uno. El compilador realiza un seguimiento de los tipos y nos advierte cuando cometemos errores.

Hablando de tipos, hay más tipos de datos que solo enteros en C ++. Cada tipo ocupa una cantidad diferente de espacio en la memoria, medida en bytes. Es importante recordar esto porque la cantidad de bytes que ocupa una variable tiene un impacto directo en la cantidad de información que puede contener. Esta diferencia es evidente en el rango de valores que un personaje puede mantener en lugar de un corto. Los tamaños de los tipos varían de una plataforma a otra, pero aquí hay una lista bastante buena para Haiku en un procesador de 32 bits.




Type Size (bytes) Range Descripción
char 1 -128 to 127 Letras – cada variable caracter solo contiene una letra
unsigned char 1 0 to 255 Letras – cada variable caracter solo contiene una letra
short 2 –32,768 to 32,767 Numeros enteros
unsigned short 2 0 to 65, 535 Números enteros
int 4 –2,147,483,648 to 2,147,483,647 Números enteros
unsigned int 4 0 to 4,294,967,295 Números enteros
long 4 –2,147,483,648 to 2,147,483,647 Números enteros
long long 8 –9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 Números enteros
unsigned long long 8 0 to 18,446,744,073,709,551,615 Números enteros
float 4 3.4E +/- 38 (7 digits) Números con una parte fraccional  (floating point/ Punto flotante)
double 8 1.7E +/- 308 (15 digits) Números con una parte fraccional  (floating point/ Punto flotante)
long double 12

Números con una parte fraccional  (floating point/ Punto flotante)
bool 1 True or false Verdadero or falso
wchar_t 2 or 4 As either short or int “Wide” characters, which can support international characters.. As with char, each variable only holds 1 letter.

Utilizando printf ()

¿Recuerdas la rareza que vimos hace poco con printf ()? Vamos a echarle otro vistazo.

#include <stdio.h>

int main(void)
{
int a;
int b, c;
a = 1;
b = 2;
c = 3;
printf("a is %d, b is %d, and c is %d.\n",a,b,c);

return a + b + c;
}


printf es una de las pocas funciones que toma un número variable de argumentos. Su primer parámetro es siempre una cadena. Sin embargo, dependiendo de la cantidad de marcadores de posición en la cadena, puede o no tener parámetros adicionales después de la cadena. Por ejemplo, en nuestro ejemplo anterior, la cadena tiene tres marcadores de posición% d, uno para a, b y c. Tres marcadores de posición, tres parámetros "extra". Aquí hay otros posibles marcadores de posición para printf que usaremos más adelante. Tenga en cuenta que esta no es una lista exhaustiva para imprimir, ya que hay muchas más opciones, pero estas serán suficientes por ahora.





Placeholder Type Sample output
%c Character a
%d, %i Signed decimal integer 234
%e, %E Scientific notation using e/E 1.7e+5, 1.7E+5
%f Floating point number 3,14
%g Double precision number 3,14
%o Integer in octal notation 711
%u Unsigned integer 255
%x, %X Integer in hexadecimal notation 0xff, 0xFF
%% Percent sign %

Los operadores

Los operadores nos dan formas de trabajar con variables y números sin llamar a funciones. +, - y * son todos ejemplos de operadores, pero C ++ tiene muchos más que estos. Aquí están los operadores aritméticos que necesitaremos por ahora.

Operator Operation Description
a + b addition suma b con a
a - b subtraction sustrae b desde a
a * b multiplication multiplica a por b
a / b division divide a por b
a % b modulo the remainder of a / b
a = b assignment sets a to the value of b
++a pre-increment adds 1 to a before the rest of the expression is evaluated
a++ post-increment adds 1 to a after the rest of the expression is evaluated
--a pre-decrement subtracts 1 from a before the rest of the expression is evaluated
a-- post-decrement subtracts 1 from a after the rest of the expression is evaluated
a += b assign with addition Short for a = a + b
a -= b assign with subtraction Short for a = a - b
a *= b assign with multiplication Short for a = a * b
a /= b assign with division Short for a = a / b
a %= b assign with modulo Short for a = a % b


Los operadores - y ++ necesitan un poco más de explicación de lo que es posible en la tabla. Echemos un vistazo a un código para explicarlo mejor.


#include <stdio.h>

int main(void)
{
int a = 1;
int b = 2;
// The result here will be 3 because we add 1 to a
// after a + b is calculated
printf("a++ + b = %d\n",a++ + b);
// Because we added 1 to a, this prints a 4.
printf("a + b = %d\n",a + b);
// This is 5 because the compiler will add 1 to a before calculating
// a + b
printf("++a + b = %d\n",++a + b);
return 0;
}



¡Uf! Cubrimos muchas cosas en esta lección, pero usarlas nos permite hacer todo tipo de cosas extravagantes. Vamos a ponerlo en uso.




#include <stdio.h>

// math.h gives us access to a lot of mathematical functions. We're
// including it here so we can access sqrt(), which calculates
// square roots.
#include <math.h>

double hypotenuse(int a, int b)
{
return sqrt((a*a) + (b*b));
}

int main(void)
{
int a = 3;
int b = 4;
printf("For the triangle with legs %d and %d, the hypotenuse will be %g\n",
a,b,hypotenuse(a,b));
return 0;

}

La hipotenusa () devuelve un doble porque queremos algún tipo de precisión más allá de los números enteros. También es el tipo de retorno para sqrt ().


Cacería de Bug 

Cacería #1

Code

int sum(int first, int second, int third)
{
return first + second + third;
}

int main(void)
{
int a = 3;
int b = 4;
printf("The sum is %d\n", sum(a,b,c));
return 0;
}

Errors

foo.cpp: In function ‘int main()’:
foo.cpp:14: error: ‘c’ was not declared in this scope

Cacería #2

Code

#include <stdio.h>

double distance(int x1, int y1, int x2, int y2)
{
int deltax = x2 - x1;
int deltay = y2 - y1;
return sqrt((deltax * deltax) + (deltay * deltay));
}

int main(void)
{
int x1,y1,x2,y2;
x1 = 3;
y1 = 3;
x2 = 8;
y2 = 3;
printf("The distance between (%d,%d) and (%d,%d) is %g\n", x1,y1, x2,y2,
distance(x1,y1,x2,y2));
return 0;
}


Errors

foo.cpp: In function ‘double distance(int, int, int, int)’:
foo.cpp:8: error: ‘sqrt’ was not declared in this scope


Proyecto

Usando la ecuación Interés = Principal * rate * time, calcule e imprima el interés simple incurrido en un principal de $ 20000 a una tasa del 5% por mes durante 24 meses. Utilice una función para hacer los cálculos de intereses reales.

Hora de Libertad

Post a Comment

Previous Post Next Post