Páginas

miércoles, 19 de febrero de 2020

Saitou y el arte japonés de no mariconear con corchetes

Una vez llorando yo ,de niño, mi viejo me dijo: callate pendejo maricón dejá mirar el super clasico Maradona7Pelé.
55 años mas tarde me creo la persona idonea para decirte lo mismo, pero dejá de usar corchetes.

En el capítulo anterior de su serie de tv favorita de bajo presupuesto, vimos que un array es en realidad un apuntador, más concretamente el nombre como tal es un apuntador, los corchetes son como un sugar daddy sintax. Traducido al espanglish como sintexis salada, no? hmm

Un coso de sintaxis azucarada es una maña para que se mire bien la cosa y no sea enquilombante programar. Pero bueno, no seamos putos, C++ es más feo para escribir que el árabe.

recordemos entonces que:

owo 

Eso sería la verdadera identidad del arreglo en si. Ahora vamos a definir un arreglo de chars (como podria ser de cualquier cosa, como Sanguches o Menemistas) y vamos a mostrar los elementos usando la tecnica ancestral de:

ARITMETICA PARA giles APUNTADORES!

First need un arreglo de toa la vida:


Este arreglo es un arreglo de caracteres que si quiseramos mostrarlo, debieramos saber el tamaño e iterar dentro de un for o un while o un do/while.
Para saber el tamaño usamos un operador coreano oculto entre las hojas que se llama, dividi el entero por su minima (???????)
eto: int TAM = sizeof(arreglo) / sizeof(char);
tam es igual al tamaño en bytes de arreglo dividido el tamaño que ocupa un char.
Esta técnica funciona para todos los datos del C++. Usalo son sabiduría Piter.

Ahora sabiendo el tamaño, ponemos un for y mostramos la cuea:


jasta nani todo bien, usamos arreglo[i] para mostrar el caracter que corresponde al indice i. PORFAVOR no me comenten diciendo pelotudeces como "se te olvidó poner el nulo al final" , o "te falto el \0" NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO *expltota*.

Ahora, la aritmetica de apuntadores solo sirve dentro del mismo apuntador, puesto que vamos a recorrer de atras pa adelante la variable.
internamente estos operadores, como ser el + y el -, suman y restan una cantidad de bytes equivalente al elemento que compone al array. Osea, que si papito tiene un array de ints, hacer:
arreglo_de_ints + 2;

sumaría los bytes que ocupa un int en tu PC multiplicado por dos. Eso haría que desde la posicion en memoria de "arreglo_de_ints" se muevan tantos bytes, que quede entonces posicionado en donde se almacena el tercer elemento.

recordemos tres cosas:
1) el nombre de un arreglo es un apuntador a su primer elemento, osea es lo mimo que si yo pusiera: arreglo_de_ints[0] = *arreglo_de_ints
2) el primer elemento es arreglo[0], el segundo es arreglo[1] , el tercero es arreglo[2], exetera
3) tu mamá me llama

Probemos traducir el codigo a coreano para obtener un resultado de coreano programando en coreano:


acá basicamente lo que hicimos es sumar i a la variable arreglo, osea que va sumando 1byte * i. (Un char ocupa exactamente 1 byte). Entonces después lo desreferenciamos porque estamos diciendo que si " arreglo" es un apuntador a la primer direccion, "array + i" sigue siendo un apuntador, por ello hay que desreferenciarlo para saber que wea tiene atroden.

Podés, si te sentís asiatico, multiplicar también un valor, o mas sensisho pero no amarisho, restarle, dividir. Operaciones aritmeticas faciles de primer gradiola.
Eso si, nada, pero absolutamente NADIEN te asegura que se te vaya al pingo el indice "i" y quedés afuera de los limites xd
Y vos te estarás preguntando : "sirve para algo"
mi respuesta sincera es: "xd"

nos vemos en otra entrega camaradens!


viernes, 17 de enero de 2020

La verdad sobre la tierra hueca y el arrais

Ha, estás acá de vuelta, te quedaste con hambre, hambre de conocimiento, veni golosa, veni  que te doy masa

masarticulos de blog, eh, malpensado!

Alguna vez se preguntaron de donde sale tanto pelotudo suelto, si, del centro de la tierra, listo misterio desvela2. Otro dia desvelo el misterio de la tierra plana.
Ahora sigamos con los arrays.

El otro dia hablando un poco de los arrays, les dijen que eran como cagaditas que se acomodaban uno al lado del otro bien apretao, como cuando se llena de viejas chotas la iglesia y ninguna quiere estar parada.
Eso, un array en C++ es una tira de variables homogeneas una al costao de la otra.
Recordemos que un array, es una variable. Y al ser una variable, entonces se almacena en memoria y si está en memoria le puedo poner un chumbo en el mate, o mejor un apuntador.

Esto nos dice que si yo apunto a un array, y si un array es una seguidilla de variables una al lado de otra entonces, puedo mirar más allá del array, puedo mirar más profundamente puedo crear una variable introspectiva, puedo ser DIOS. No tanto pero:

hostia puta, el fantasma de la B era un apuntador todo este tiempo!

hay muchas cosas que en C++ moderno no se dicen, sos el choripibe que cree que el país se arregla con planes sociales, con la ayuda sosial con el voleto grati con el choripene. Ese sos vos, porque te crees todo lo que escuchas en el diario y lo que mirás en la radio.
Y como tal, hay cosas que no te dicen en los manuales modernos del C++ y es que, un array es un apntador.
ALA CHAVAL, PERO QUE GÜAY, NO?!

La semejanza de un apuntador un array y papa noel

Papa noel no esiste y el arrai tampoco. Un array es un apuntador que apunta al primer elemento de esa tan famosa cadena de elementos.

Si vo va al compilador y haces:


El compilador te va a mostrar la chota un valor en hexadecimal, como cuando trabajábamos con apuntadores, esto es porque ni el array ni papanoel, ni boquita existen.
El nombre de un array es tu papá disfrazado un apuntador.
Los corchetes son humo, son cuentos, son fruto de la viveza criolla, un chamuyo pero nunca el sueño americano de un pais primer mundista. 

En Asia, mas concreatamente en Corea, no usan corchetes, vos vás a laburar desarrollando software allá y le decis a tu colega compañero:
- Che, chino puto, me parece que te comiste los corchetes acá.
- Chino lo unico que él comelse sel tu helmana, chino no sel malica, chino usal puntelos. Colchete pala sudaca cagón.

Y vos así como de NANI !? y como no querés quedar como un pitochico, seguramente te interese saber usar la técnica ancestral samurai de:

Resultado de imagen para gif manos naruto

TECNICA SECRETA JUTSU NO CORCHETE DE LA ALDEA OCULTA ENTRE LOS PUNTEROS 

O más conocida en la jerga negra como: aritmética de apuntadores.

Chau, chau putooo chau putooo! ♫♪


No me apuntes con eso! D:

Sabés cual es el problema con la gente de hoy? Es que se volvieron todos una manga de putos y maricones.
No pará no hablo del movimiento elgetevé. Hablo de otra cosa.

Mucha gente le tiene miedo al concepto de "apuntador" o "puntero" dicen que es dificil, dicen que no se entiende, dicen que soy aburrido.
Yo lo único que te puedo decir es que bobo, gordo y un cagón. No servís ni para ir a la cancha.
    No hay peor ciego que aquel que no quiere escuchar.

Las malas lenguas dicen que fueron los Coreanos quienes inventaros semejante salvajada, pero no, los punteros existen desde que la gente maleducada decidió apuntar con el dedo.

Qué es un apuntador?
Un apuntador es una variable que apunta a otra. Es decir si yo tengo una variable entera con un valor pongamosle:
int edad = 3;
Mi variable de apuntador, pude hacer referencia a la variable "edad":
int *puntero_a_entero = &edad;
Y usarse para mostrar el valor, de "edad" pero usando la variable "puntero_a_entero":
cout << *puntero_a_entero;

Lo cual mostraría el valor de 3.

Resultado de imagen para shrek face  
RE util

Y ... es medio como cuando tu viejo maneja, digamos... tiene la luz de guiño pero no la usa para nada el cornudo.

Cómo uso una variable de apuntador?

Como ya se dijo antes, la variable de apuntador (o puntero) se usa principalmente para apuntar a otra variable.
Una variable de apuntador sigue las mismas reglas que una variable normal, en cuanto a alcance(o ámbito), nomenclatura y tiempo de vida. Sin embarguen la variablen no almacena un tipo de dato concreto sino mas bien una direccion de memoria.

Si una variable de tipo int es capaz de almacenar un valor numerico,. Una variable de apuntador es capaz de almacenar una dirección de memoria.

Angora, para obtener la dirección de memoria de otra variable se usa el operador coreano de obtencion de dirección en memoria RAM, el operador AMPERAND-SAMAA
ete  que etá acá:

&

Vos usando esa cagadita y el nombre de una variable de cualquier tipo, ya sea int, char, float, double, incluso otro puntero, te devuelve la dirección de memoria en la que se aloja dicha variable.
Osea, si yo hago esto en mi programa de C++:
cout << &edad;
Te tiene que salir un numero en hexadecimal, que representaría la posición en memoria en donde está la variable edad.
Recordemos que una variable es un espacio en memoria ram capaz de almacenar un valora por vez. El operador de direccion & me devielve esa direccion.

Volviendo al ejemplo de mas arriba de la cara de chuerk, teniamos que:

int edad = 30;
Ahora si yo quiero crear un apuntador que apunte a la variable edad, usaríamos el operador coreano de peticion de dirección, recordemos pues, que una variable de apuntador contiene una direccion de memoria.
La morfologia de un apuntador, tiene adicionalmente en nombracion un asterisco:

*
Si yo quiero apuntar, en este caso a una variable entera. Entonces mi apuntador debe parecerse así como esto:

int * ptr;


Lo cual nos dice "ptr es un apuntador a un entero". Esto de anteponer el tipo de dato, es escencial puesto que los diferentes tipos, ya sea int, char, float, etc, en memoria ocupan diferente espacio en bytes, entonces es necesario antes especificar el tipo de dato a apuntar.
Ahora, de nuevo la variable apuntador recibe como valor una direccion de memoria, no te olvides no seas boludo, no te hagas poner un 1 de arriba en la prueba.

Luego, cuando creamos el puntero tenemos que inicializarlo con la dirección de alguna variable.
Entonces tenemos que:
int edad = 30;
int *ptr= &edad;

Ya con eso mi variable petero, perdon ptr, apunta a "edad", pero pasa algo genial si hacemos:
cout << ptr;

Y es que nos va a mostrar la direccion de la variable "edad", esto porque como dije 4 veces arriba, las variable de puntero almacenan una direccion en memoria, por lo tanto vamos a mostrar justamente eso, su contenido, una direccion de memoria.

Operador coreano de resolucion de diresion:

El operador de resolución de direccion o indireccion es un asterisco también.
Y sirve para resolver la direccion de una variable. En nuestro ejemplo anterior ptr al contener una direccion, muestra un numero en hexadecimal. Si nosotros quisieramos mostrar la variable a la cuál apunta le tenemos que anteponer el operador de indireccion, osea un asterisco:

cout << *ptr;
 Y listo, chau a tomar la leche.

Visto así como así no tiene mucho uso un apuntador, en estos ejemplos petes, pero creeme que cuando veamos más de arreglos, te vas a querer tijeretear las pelotas.

Salu3 gatonautas.


viernes, 10 de enero de 2020

Enlistame en la lista e historias listas sobre listas enlistadas

Hooooola bandurria, tanto time sin writing en este blog, que te cuento... casi que pierdo el correo para entrar xd que pelotubi.
Lo más sorprendente? hace años, me mandé el correo mas pelotudo del mundo: yo, diciendo "para entrar a blogspot usa tantocorreo@gmail" XDD
No caigo la verdad, ni yo me acordaba de eso, y buscando lo encontré de pe2.

A lo que vamos, mucha gente en la audiencia me preguntó que como se come una vector o array en C++. Bueno, para vuestra sorpresa no se come , se lo mete por el cul...

Qué es un vector?
Vector también llamado Array, tambien llamado Arreglo, también llamado lista estática, también llamado eso que se ve una vez y después no sirve pa aca.

Tenía un profesor en la Universidad que decia: "chico, etudien, dejen de pelotudiá, son el futuro del pais."
(Hoy 2020 Argenzuela is real)

No mentira. El viejo decia: "chico, un vetor es como una caja donde vos pones valores".
Mira cumpa, yo de valores y caja no entiendo mucho, siempre fui de poner pesos bajo el colchón, a lo mejor eso hizo en parte se devalue mi peso querido. *llora mirando la foto de San Martin libertador*

Un vector, a mi entender, es un colección de variables de tipo homogénea. Homogénea se entiende por una colección de variables del mismo tipo, que pueden ser enteros, decimales, charachteres o manzanas.

que e esa banderita q tene ahi...
-Eso?, Eso é un vector!

y decir una colección de variables de un tipo común es medio... medio pete, porque en realidad no es tan así.
Mira pendeja, vos cuando vas a declarar un vector de toda la vida:

En realidad lo que hace el se-másmás o el compilador o Dios, es poner tantos valores enteros en memoria adyacente. Es decir, una al lado de otra, entonces cuando uno vá recorriendo el vector, internamente, se usa lo que en el bajo mundo se conoce como Aritmetica de Apuntadores o como dicen en corea:     당신의 여자 친구는 창녀입니다

Resumiendo, las variables van una al lado de otra para que se puedan acceder easy.

Eso es una lista, ya tá, hay que ser pelotudo si no entendés. No tiene más magia, es una tira de valores uno al lao del otro pa q la wea se ordene y lito, chau a la casa, tené 10. No vemo el año que viene.

Ah eso si, la facilidad radica en que para acceder a un valor, solamente tenés que poner el nombre del vector y el indice al cual hacer referencia.
Por ejemplo del array anterior, si sho pongo:

cout << v[4];

El programa me va a mostar en pantasha: 5
Recordemos una cosa importante y es que los indices de los vectores comienzan en cero. Es decir para el indice cero, el valor es 0.
Para el indice uno el valor es 1.
Para el indice dos el valor es 2.
Para el indice tres el valor es 3.
Para el indice cuatro el valor es 5.

Ahora, no se te vaya a ocurrir, de meter la pata cuando estés en un exámen y te digan: "A ver Pepito cual es el valor del segundo elemento?"
Y ahi, tenés que tener cuidado, porque el elemento número 2 y el segundo elemento son distintos.
El elemento numero dos, sería v[2], el cual vale 2.
Pero, el segundo elemento sería v[1] el cual vale 1.
Recordemos que el primer elemento es v[0] porque los vectores en C++ comienzan desde el indice cero.

Guarda eh? yo te avisé, son bravas las viejas, te hacen preguntas chotas para mandarte a rendir a Diciembre. Sisi, yo entiendo que hay veces que hay ganas de meterle un turrón de navidad en el culo, pero es verdad, que muchas veces uno estudia como la mierda y quiere aprobar diciendo pelotudeces.
Hashtag, no a la guitarreada.

#LaGuitarraEsParaLosPetesYoMeEstudioElManualEntero