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.
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.
int main(void)
¡Uf! Cubrimos muchas cosas en esta lección, pero usarlas nos permite hacer todo tipo de cosas extravagantes. Vamos a ponerlo en uso.
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;
}
}
#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.