Introducci贸n a los algoritmos

1

驴Qu茅 aprender谩s sobre algoritmos y pensamiento l贸gico?

2

La importancia de entrenar tu pensamiento l贸gico

3

驴Qu茅 entiende una computadora?

4

驴Qu茅 es el sistema binario?

5

Metodolog铆a para construir un algoritmo: requerimientos y proceso mental

Tipos de datos y operadores l贸gicos

6

驴Qu茅 son Bits y Bytes?

7

驴Qu茅 son variables, constantes y tipos de datos?

8

Identifica las variables seg煤n los requerimientos de negocio

9

Strings (texto) y concatenaci贸n

10

N煤meros y operaciones matem谩ticas b谩sicas

11

Operaciones matem谩ticas compuestas: par茅ntesis y orden de evaluaci贸n

12

True y false: booleanos y tablas de la verdad

13

Arrays y funciones sobre arrays

14

驴C贸mo dise帽ar algoritmos con diagramas de flujo?

15

Define el tipo de dato seg煤n los requerimientos de negocio

Estructuras de control

16

If y Else: condicionales y comparaciones para proteger tus algoritmos

17

Switch y Case: condicionales en forma de casos

18

Excepciones y errores: Throw y Try Catch

19

驴Qu茅 es un ciclo? While, For y Do While

20

Diagrama de flujo con condicionales

21

Diagrama de flujo con ciclos

22

Tutorial de algoritmos de programaci贸n

23

Dise帽a algoritmos para resolver problemas de tu vida diaria

Encapsula tu c贸digo en funciones

24

驴Qu茅 es una funci贸n?

25

驴C贸mo desarrollar tu l贸gica de programaci贸n?

26

Modularizaci贸n de c贸digo

27

Flujo de funciones para encapsular algoritmos

28

Nomenclaturas de programaci贸n: camelCase, PascalCase, snake_case

29

驴Qu茅 es recursividad? Funciones que se llaman a s铆 mismas

30

Convierte algoritmos con ciclos a funciones recursivas

31

Resolviendo acertijos

Traduce tus algoritmos a lenguajes de programaci贸n

32

Diferencias entre lenguajes de programaci贸n

33

C贸mo escribir c贸digo en cualquier lenguaje de programaci贸n

34

C贸mo programar en JavaScript, Python y PHP

35

Introducci贸n al ejercicio en JavaScript

36

Programando en JavaScript

37

Introducci贸n al ejercicio en Python

38

Programando en Python

39

Introducci贸n al ejercicio en PHP

40

Programando en PHP

41

C贸mo programar en Java y Lenguaje C

42

Introducci贸n al ejercicio en Java

43

Programando en Java

44

Introducci贸n al ejercicio en C

45

Programando en Lenguaje C

46

Traduce diagramas de flujo a c贸digo en lenguajes de programaci贸n

Conclusiones

47

Pr贸ximos pasos para aprender programaci贸n profesionalmente

C贸mo programar en JavaScript, Python y PHP

34/47

Lectura

C贸mo programar en JavaScript, Python y PHP

Este grupo de lenguajes han mantenido su popularidad con el tiempo, algunos por el impacto que generan en los procesos de aprendizaje, otros porque han sido implementados por grandes exponentes de la industria de la tecnolog铆a.

En esta lectura aprender谩s c贸mo implementar en cada uno de estos lenguajes los elementos b谩sicos que utilizar谩s en tu d铆a a d铆a como desarrolladora de software.

Variables

En todos los lenguajes, las variables almacenan temporalmente un valor y pueden presentarse de diferentes tipos, sin embargo, su alcance y definici贸n cambian entre un lenguaje y otro enfoc谩ndose en la necesidad de tu aplicaci贸n y la l贸gica que est茅s deseando implementar.

En JavaScript encontrar谩s que var, let y const ser谩n la manera en la cual puedes definir variables y van a permitirte almacenar algo, pero su uso difiere y se ver谩 extendido o limitado de acuerdo a la que uses, por ejemplo:

Si defines una variable usando 鈥var鈥 tendr谩s un alcance global, esto quiere decir que el valor de esa variable podr谩 ser accedido, alterado o bloqueado por procesos dentro del documento donde lo hayas definido.

let鈥 tiene un alcance m谩s corto y solo estar谩 disponible dentro del bloque de c贸digo donde fue definido, de esta manera puedes tener otra variable fuera de ese alcance incluso con el mismo nombre y valor pero no se cruzar谩n ni generar谩n conflicto alguno.

Con el uso de 鈥const鈥 hay un punto interesante porque estamos haciendo referencia a un valor que ser谩 de s贸lo lectura, es decir, que esta variable no podr谩 ser reasignada. Por lo tanto, debemos hacer un uso adecuado correspondiente a su naturaleza.

Para el caso de PHP, se define una variable usando el signo $ seguido del nombre que le des. Adem谩s, no es obligatorio definir variables antes de inicializarlas para poder usarlas (aunque 茅sta sea una buena pr谩ctica), por ejemplo:

En lugar de escribir:


$saludo;

$saludo = 鈥淗ola, soy un saludo鈥;

Puedes escribir:


$saludo = 鈥淗ola, soy un saludo鈥;

$numero = 8;

$nombre = 鈥淛uanito鈥;

La definici贸n de variables en Python es igualmente muy simple y 煤til pues no es requerido indicar el tipo de variable o alg煤n s铆mbolo antes de definirla, simplemente tienes que indicar el nombre y en seguida asignarle un valor si as铆 lo deseas, por ejemplo:


saludo = 鈥淗ola, yo tambi茅n soy un saludo en Python鈥

nombre = 鈥淢i nombre es Juanito鈥

Funciones

Para definir funciones hay una similitud muy marcada entre JavaScript y PHP porque su estructura base es simplemente escribir la palabra reservada 鈥渇unction鈥 seguido por el nombre de la funci贸n y par茅ntesis que bien pueden estar vac铆os si no recibe ning煤n valor o incluir los par谩metros separados por comas.

Sin embargo, en PHP puedes definir el alcance de la funci贸n; si ser谩 p煤blica, privada o est谩tica, pero si no se lo indicas expl铆citamente, de manera autom谩tica se crear谩 p煤blica.

Con Python esta definici贸n es distinta, pues solo utiliza 鈥渄ef鈥, seguido por el nombre de la funci贸n y los par谩metros que recibe, al igual que los lenguajes anteriormente mencionados. Adicionalmente, un bloque de c贸digo no empieza por las t铆picas llaves, sino por dos puntos ( : ) que indican que debajo empiezan sus instrucciones a ejecutar.

Estructuras de control

C贸mo ya has visto, cada lenguaje tiene su propia forma de escribir las cosas. No obstante, las estructuras de control son un punto en com煤n. A pesar de que las instrucciones empiecen con llaves, con dos puntos o que las l铆neas de c贸digo terminen en punto y coma o no, la forma del contenido en las estructuras de control no cambia su l贸gica, suceden de la misma forma y ofrecen el mismo servicio en los tres lenguajes.

El condicional 鈥渋f鈥 en todos los casos eval煤a una condici贸n basada en operadores l贸gicos de comparaci贸n. Los ciclos tambi茅n siguen con este mismo patr贸n porque incluso su definici贸n cumple con la misma estructura y respetan la forma en la cual funciona. Es esta la magia de saber programaci贸n primero que un lenguaje espec铆fico.

El proceso de debugging

El muy conocido debugging o depuraci贸n es una actividad que realizamos cuando estamos probando un c贸digo en un punto muy espec铆fico del cual necesitamos ver un resultado o una salida en consola para conocer espec铆ficamente qu茅 puede estar pasando en un punto cr铆tico de nuestra aplicaci贸n.

Para realizar esta inspecci贸n, utilizamos normalmente alguna instrucci贸n que nos muestre algo que definamos y dependiendo del lenguaje que utilicemos contamos diferentes herramientas.

En JavaScript existe el muy popular console.log() que dentro de sus par茅ntesis recibe el valor que va a mostrar justo cuando la ejecuci贸n de la aplicaci贸n llegue a donde est谩 ubicado y mostrar谩 este valor en consola. Sin embargo, no es el 煤nico m茅todo pues tambi茅n se puede utilizar debugger para detener la ejecuci贸n de la aplicaci贸n justo en el punto donde lo hayamos ubicado.


console.log(鈥淨uiero ver esto en consola鈥)

Con PHP hay varias formas y la que utilices depender谩 del contexto en el cual quieres ver este mensaje o valor de referencia para la depuraci贸n adem谩s del tipo de dato que devolver谩.

Se puede hacer uso de 鈥echo鈥 que es la forma m谩s cl谩sica de mostrar cadenas de texto en PHP. Sin embargo, no ser谩 煤til si deseas mostrar valores de tipo objeto o algo m谩s complejo, en este caso puedes usar var_dump para conocer el tipo de dato que devuelves o print_r para imprimir lo que sea que traiga.


echo 鈥淨uiero ver esto cuando el c贸digo pase por aqu铆鈥;

var_dump($soyunavariable);

print_r([鈥淗ola鈥漖);

Python, por supuesto, tambi茅n ofrece herramientas para hacer esta actividad de depuraci贸n, como es el uso de la librer铆a pdb, con la cual se pueden crear breakpoints sobre los cuales hacer pausas en la ejecuci贸n y probar esas fracciones de manera f谩cil y controlada.

Puedes igualmente usar el cl谩sico 鈥渞etorno de mensajes鈥, pero tambi茅n tienes una herramienta que lo puede hacer por ti.

M茅todos de arrays

Con todo lo que has aprendido, ya puedes entender que la programaci贸n es la base y los lenguajes solo son caminos sint谩cticos que pueden ayudarte en ciertos proyectos o necesidades muy espec铆ficas.

Los arrays son secuencias de valores contenidas en un mismo espacio y adem谩s comparten su mismo tipo, pero, adem谩s de ello, pueden ordenarse, medirse, accederse y realizar muchas acciones m谩s.

En todos los lenguajes lo puedes hacer pero variar谩 la sintaxis que debas usar para lograrlo, algunos m茅todos de arrays que encontrar谩s:

  • Upper para pasar a may煤sculas uno o varios valores de un array.

  • Lower para pasar a min煤sculas uno o varios valores de un array.

  • Sort para ordenar los valores.

  • Length para conocer la cantidad de posiciones del array.

Ejemplo de UpperCase en JavaScript para pasar a may煤sculas toda una oraci贸n:


const cadenaMinuscula = 'espero que tengas un gran dia';

cadenaMinuscula.toUpperCase() //ESPERO QUE TENGAS UN GRAN DIA

Ejemplo de tolower en C para pasar a min煤sculas toda una palabra:


cadena = 'MARIA';

resultado = tolower(cadena); // maria

Ejemplo de sort en PHP:


$frutas = array("lim贸n", "pi帽a", "naranja", "fresa");

sort($frutas); // fresa, lim贸n, naranja, pi帽a

Ejemplo de length en Python:


frase = 鈥淨uiero saber cu谩ntos caracteres tengo鈥

len(frase) //37

Adem谩s, podr谩s encontrar muchas m谩s en la documentaci贸n oficial del lenguaje que uses adem谩s de su implementaci贸n y sintaxis adecuada.


隆Te espero en las siguientes clases para programar ejemplos un poco m谩s complejos con estos lenguajes de programaci贸n!

Aportes 56

Preguntas 6

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Ya les di un acercamiento en la clase pasada, pero para poner m谩s datos acerca de estos lenguajes:
.
En JavaScript, aunque hacemos mucho 茅nfasis en "usa con cuidado el const" la verdad es que no importa, en la mayor铆a del tiempo dentro de tu c贸digo de JavaScript vas a declarar tus variables como const y es porque realmente rara vez vas a crear una variable cuyo valor realmente vaya a cambiar. De hecho, mi mejor consejo es que siempre que puedas uses const, y si realmente necesitas que una variable cambie ah铆 si usa let, pero NUNCA usas var, escrib铆 un tutorial ense帽谩ndote sobre esto:
.
隆Deja de usar var en JavaScript! 驴Por qu茅 no es buena pr谩ctica usarlo?
.
Pas谩ndonos al lado de PHP, cuando lleguen a usar una cosa maravillosa llamada 鈥淟aravel鈥, ver谩n que existe una hermosa funci贸n llamada dd() que facilita inmensamente el debuging, es una funci贸n que te genera un elemento HTML interactivo para debuguear cualquier cosa que le pases, es simplemente hermoso 馃憖

馃搶 Cuando aprendas un lenguaje de programaci贸n conscientemente, te dar谩 habilidades para aprender otro de forma m谩s sencilla. Los lenguajes de programaci贸n por lo general tendr谩n estructuras similares en alg煤n punto.

Pienso que esta introducci贸n hubiera sido mucho mejor explicada en un video鈥 Saludos

Bueno la verdad si me hubiera gustado un videito que explicara m谩s.

Resumen de la clase 32 y 34 馃槂

Les recomiendo a las personas que no han tenido un acercamiento grande en estos conceptos que puedan empezar con lenguajes como C o C++ 驴Por que? Esto es fundamental para entender todos los lenguajes, lenguajes como python son muy f谩ciles de utilizar pero hay varias cosas que no sabr谩s por que pasan a menos de que antes hayas pasado por un lenguaje de nivel intermedio como lo puede ser c.

Me quedo con la frase: 鈥淧rogramaci贸n es la base y los lenguajes son los caminos鈥. 馃槃

Valoro cada uno de los comentarios de la comunidad, ya que algunos tienen m谩s experiencia que otros y siempre aportan algo que es muy complementario con la clase actual, de verdad muchas gracias!

buena explicaci贸n, sin embargo, tambi茅n se debe ser consiente de que existen lenguajes de programaci贸n de distintas generaciones, y as铆 como hay algunos muy intuitivos hay otros que requieren un cierto conocimiento t茅cnico a la hora de su implementaci贸n, un ejemplo es Fortran.

Empec茅 con JavaScript y me ha parecido interesante, se que Python se ve un poco m谩s sencillo, luego seguir茅 con el cuando domine bien JS.

Si no fuera por los aportes estar铆a el doble de perdida de lo que estoy ahora. Creo que esta forma de presentar la informaci贸n no ayuda mucho a los que somos principiantes.

en serio, lo hacen de lo mas complicado鈥 que les cuesta poner el mismo ejemplo, en distitnos lenguajes, para que podamos ver las diferencias? y qu茅 tal llevar el orden? usen la l贸gica!

no me gusto que en la parte de m茅todos de arrays de repente salieran con un ejemplo de lenguaje C, cuando s贸lo est谩bamos viendo Javascript, Python y PHP

llevo un par de semanas estudiando y aun no comprendia bien la diferencia entre var, let, const y gracias a platzi se me aclaran estos conceptos!

var:alcanze global se puede llamar desde todo el codigo.
let: alcanze para el mismo bloque,objeto y/o funcion que se ejecutara en el momento.
const: es un tipo de variable que no cambiara en el transcurso del codigo,se podra usar para funciones y operaciones pero su nombre no se podra cambiar

Sugiero cambiar esta parte a un video de introducci贸n y luego poner como extra tambi茅n el texto.

Muy buen post!. Platzi deber铆a crear algo as铆 donde los profesores y estudiantes mas dedicados puedan crear contenido educativo con el fin de ayudar a toda la comunidad, mientras mas ense帽as mas aprendes!

PHP es un lenguaje de programaci贸n de uso general que se adapta especialmente al desarrollo web.鈥 Fue creado inicialmente por el programador dan茅s-canadiense Rasmus Lerdorf en 1994.鈥 En la actualidad, la implementaci贸n de referencia de PHP es producida por The PHP Group

Creo que ser铆a mucho m谩s f谩cil entender las diferencias entre los distintos lenguajes de programaci贸n, si nos pusieran a pasar el mismo ejercicio varias veces, pero cada vez con un lenguaje de programaci贸n diferente.
.
Por ejemplo, que nos dieran la instrucci贸n 鈥淒eclara una variable que contenga el valor 123鈥 y que tuvieramos que hacer lo mismo pero cada vez con un lenguaje distinto.
.
Entender estos conceptos con pura teor铆a no es suficiente. Deber铆an poner ejercicios pr谩cticos que ayuden a comprender los conceptos.

me imagino que cada lenguaje tendr谩 sus fortalezas, espero mas adelante poder usarlos de manera adecuada dependiendo del programa que vaya a desarrollar.

Con esta lectura se puede entender que por lo menos en lo fundamental, los leguajes de programaci贸n no son muy distantes el uno del otro, sin embargo me deja la duda sobre que tan parecidos son cuando se abordan conceptos mas profundos.

Esta excelente la introducci贸n para empaparse un poco antes de entrar de lleno esa parte del curso

Mir谩 que le pongo garra eh鈥 pero no entiendo鈥 no s茅 que es JavaScript鈥 y ya me dicen lo que encontrar茅 ah铆鈥 qu茅 me perd铆? vengo del curso de computaci贸n b谩sica. No entiendo. Pens茅 que por fin iba a explicar qu茅 es un lenguaje de programaci贸n y sigue agreg谩ndome data sin contexto. Es como que te pida que me ense帽es a construir y te limites a tirarme el cemento por la cabeza, y de poquitos, de a piedritas, me tires el martillo, el casco, pero nunca me expliques nada.

Me ha encantado este articulo, siempre me gusto esta idea de ver las similitudes entre lenguajes, es mucho mas facil y rapido aprender varios a la vez, y no aprenderlos invidualmente donde se repiten muchos terminos de programacion que ya conocemos.

Por lo que veo Python es uno de esos lenguajes que simplifica mucho el hecho de no declarar el tipo de dato de una variable suena bien pero a larga te olvidas que tipo de dato pusiste.
PHP me encanta, el simple hecho de que sus variables empiecen con el signo del d贸lar($) le da cierta exclusividad.

Muy buena informacion con relacion a cada lenguaje.

Esta muy buena la informacion,pero de todas formas me hace falta verla en la pr谩ctica, se aprende mejor al visualizar y practicar. Espero ver esto en pr谩ctica en otra clase.

Me di cuenta de que en Python se usa la funci贸n len() para saber el n煤mero de elementos de un array, pero en JavaScript para saber lo mismo, se consulta el atributo o propiedad .length porque en JavaScript creo que todo es un objeto.

Interesante estos lenguajes de tipado din谩mico, ya aqu铆 me doy cuenta de que es verdad lo que dicen sobre el hecho de que cuando se domina un lenguaje ya los dem谩s son m谩s f谩ciles.

Como recomendaci贸n personal les aconsejo aprender primero un lenguaje de alto nivel, como JavaSscript, Python, PHP, Go, etc. Luego se busquen algo m谩s complejo como C o C#, ya que se les har谩 m谩s f谩cil entender qu茅 es lo que est谩 pasando. Los lenguajes de nivel medio y nivel bajo son muy complejos a veces para alguien que reci茅n empieza a aprender.

Por ahora me llama mucho JS y Python
馃煛JS: por que es muy clasico
馃數Python: he escuchado que es muy facil de aprender y puedes hacer muchas cosas m谩s que, solamente hacer web, apps, tipo Data Science, etc.

En mis primeros intentos de programar quise empezar con Python, y nunca tuve la exposici贸n necesaria para notar las similitudes o lo que comparten estos tres lenguajes

No existen los operadores l贸gicos de comparaci贸n; existen los operadores l贸gicos, los operadores de comparaci贸n y los operadores aritm茅ticos. 隆Saludos y gracias por el curso!

bastante extenso e informativo

Excelente ya quiero empezar a programar!!

Super este post!, me gust贸 mucho ver diferentes lenguajes para darse una idea de lo que viene.

La verdad no seguir茅 este curso de algoritmos, fue bastante frustrante la manera en que se llev贸 la progresi贸n del tema, decepcionante como se llev贸 el tema de algoritmos y abrumante el cambio a javascribt, la idea de empezar desde un curso b谩sico es ir paso a paso de manera progresiva, espero se mejore sustancialmente.

Me hubiera gustado que estos m贸dulos fueran explicados en v铆deo ya que a mi parecer es mejor ver al profesor en acci贸n, de esa manera vemos los conceptos de los que se hablan.

a mi me gustan las lecturas, de hecho a veces entiendo mas leyendo. me gusta mucho js creo q mi siguiente puede ser C

en php tengo un conocimiento pero me gustaria aprenderlo a dominar

Recomendable.

隆Deja de usar var en JavaScript! 驴Por qu茅 no es buena pr谩ctica usarlo?

馃Cuando aprendas un lenguaje de programaci贸n conscientemente, te dar谩 habilidades para aprender otro de forma m谩s sencilla.

馃Los lenguajes de programaci贸n por lo general tendr谩n estructuras similares en alg煤n punto.

Tuve que leerlo 2 veces para entender. hubiese sido bueno que lo explique en video.

Esta informacion esta super, pero no lo niego, fuera estado mas chimba en un video xd

gran panorama

Interensante lecci贸n

No s茅 si a los demas les paso, pero estaria bueno que el texto se pueda expandir para verlo de una forma m谩s completa.

un v铆deo hubiese quedado mejor

Muy buena lectura!

Buen art铆culo. 馃憤馃徎

Me agrada Python

excelente post informativo

Buena explicaci贸n.

excelente intro!

Que buena informaci贸n

muy buena explicaci贸n