Introducción
Antes de empezar, veremos conceptos fundamentales que nos permitiran avanzar adelante en este curso
¡Bienvenido!
Te doy la vienvenida a este curso de fundamentos de la programacion, donde veremos conceptos fundamentales que nos permitiran entender la informatica Este curso esta basado en el curso de SC50 de harvard. considere teminar este curso para obtener un certificado otorgado por iadevs.com software company, por un valor de 30.00$us.- considere terminar este curso para obtener un certificado otorgado por harvard, por un valor de 219.00$us.- si opta por tomar nuestro sertificado otorgado por iadevs.com software company, comuniquese con nosotros
Tiempo
6–18 hours per week, for 12 weeks
- ¡Esta clase es más que programación de computadoras!
- De hecho, ¡esta clase trata sobre la resolución de problemas de una manera extremadamente enriquecedora! Es probable que la resolución de problemas que aprenda aquí se aplique instantáneamente a su trabajo más allá de este curso e incluso a su carrera en general.
- Sin embargo, ¡no será fácil! Estarás “bebiendo de la manguera contra incendios” de conocimientos durante este curso. Te sorprenderá lo que podrás lograr en las próximas semanas.
- Este curso se trata mucho más de hacer avanzar a “usted” desde “donde se encuentra hoy” que de alcanzar algún estándar imaginado.
- La consideración inicial más importante de este curso: dedique el tiempo que necesita para aprender a través de este curso. Cada uno aprende de manera diferente. Si algo no funciona bien al principio, sepa que con el tiempo irá creciendo en sus habilidades.
- ¡No te asustes si esta es tu primera clase de informática! Para la mayoría de tus compañeros, ¡esta también es su primera clase de informática!
¿Qué hay por delante?
Esta semana aprenderás sobre Scratch, un lenguaje de programación visual.
Luego, en las próximas semanas, aprenderá sobre C. Se verá así:
#include <stdio.h> int main(void) { printf("hello, world\n"); }
Además, a medida que avancen las semanas, aprenderá sobre algoritmos.
Aprenderás sobre la memoria.
Aprenderá sobre el código con errores y las causas de los fallos de la computadora.
Aprenderá sobre estructuras de datos como una tabla hash.
Luego, haremos la transición a un nuevo lenguaje de nivel superior llamado Python . Su código se verá así:
print("hello, world")
Esta clase le brindará una sólida comprensión de cómo los lenguajes de programación recientes se desarrollaron a partir de los anteriores.
Aprenderá SQL, JavaScript, HTML y CSS.
También veremos cómo podemos utilizar bases de datos y marcos de terceros para crear aplicaciones web.
¡Comunidad!
- Únete a nuestra nueva comunidad de iadevs.com
- Se Parte de nuestra comunidad iadevs youtube
- Usted es parte de una comunidad de quienes toman este curso en Harvard College, Harvard Extension School y a través de edX.org.
- Puzzle Day y Feria CS50
- Puedes asistir a los almuerzos CS50 y al Hackathon CS50, si eres estudiante en el campus de Harvard.
Ciencias de la Computación
Esencialmente, la programación informática consiste en tomar algunos datos y crear algunos resultados, resolviendo así un problema. Lo que sucede entre la entrada y la salida, lo que podríamos llamar una caja negra, es el foco de este curso.
Por ejemplo, es posible que necesitemos tomar asistencia a una clase. Podríamos utilizar un sistema llamado unario para contar, un dedo a la vez.
Las computadoras hoy cuentan usando un sistema llamado binario . Del término dígito binario surge un término familiar llamado bit . Un bit es un cero o uno: encendido o apagado.
Las computadoras sólo hablan en términos de ceros y unos. Los ceros representan apagado. Los unos representan . Las computadoras son millones, y tal vez miles de millones, de transistores que se encienden y apagan.
Si te imaginas usando una bombilla, una sola bombilla sólo puede contar de cero a uno.
Sin embargo, si tuvieras tres bombillas, ¡tienes más opciones!
Usando tres bombillas, lo siguiente podría representar el cero:
0 0 0
De manera similar, lo siguiente representaría uno:
0 0 1
Según esta lógica, podríamos proponer que lo siguiente es igual a dos:
0 1 0
Ampliando aún más esta lógica, lo siguiente representa tres:
0 1 1
Cuatro aparecerían como:
1 0 0
De hecho, ¡usando sólo tres bombillas podríamos contar hasta siete!
1 1 1
Como heurística, podríamos imaginar que los siguientes valores representan cada lugar posible en nuestro dígito binario :
4 2 1
Las computadoras usan 'base-2' para contar. Esto se puede representar de la siguiente manera:
2^2 2^1 2^0 4 2 1
Por lo tanto, se podría decir que se necesitarían tres bits (el lugar del cuatro, el lugar del dos y el lugar del uno) para representar un número tan alto como siete.
Las computadoras generalmente usan ocho bits (también conocidos como bytes ) para representar un número. Por ejemplo,
00000101
es el número 5 en binario .11111111
representa el número 255.
ASCII
Así como los números son patrones binarios de unos y ceros, ¡las letras también se representan usando unos y ceros!
Dado que existe una superposición entre los unos y los ceros que representan números y letras, se creó el estándar ASCII para asignar letras específicas a números específicos.
Por ejemplo,
A
se decidió asignar la letra al número 65.01000001
Representa el número 65 en binario.Si recibió un mensaje de texto, el binario debajo de ese mensaje podría representar los números 72, 73 y 33. Al asignarlos a ASCII, su mensaje se vería de la siguiente manera:
H I ! 72 73 33
¡Gracias a Dios por estándares como ASCII que nos permiten acordar estos valores!
Aquí hay un mapa ampliado de valores ASCII:
Si lo deseas, puedes aprender más sobre ASCII .
Dado que el binario solo puede contar hasta 255, estamos limitados al número de caracteres representados por ASCII.
Unicode
A medida que pasa el tiempo, hay cada vez más formas de comunicarse a través de mensajes de texto.
Dado que no había suficientes dígitos en binario para representar todos los caracteres que podían ser representados por humanos, el estándar Unicode amplió la cantidad de bits que las computadoras pueden transmitir y comprender. Unicode incluye no sólo caracteres especiales, sino también emoji.
Hay emojis que probablemente uses todos los días. Lo siguiente puede resultarle familiar:
Los informáticos se enfrentaron al desafío de querer asignar varios tonos de piel a cada emoji para permitir una mayor personalización de la comunicación. En este caso, los creadores y contribuyentes de emoji decidieron que los bits iniciales serían la estructura del emoji en sí, seguido del tono de piel.
Por ejemplo, el Unicode para un visto bueno genérico es
U+1F44D
. Sin embargo, lo siguiente representa el mismo pulgar hacia arriba con un tono de piel diferente:U+1F44D U+1F3FD
.Cada vez se agregan más funciones al estándar Unicode para representar más caracteres y emoji.
Si lo deseas, puedes aprender más sobre Unicode .
Si lo deseas, puedes aprender más sobre los emoji .
Representación
Se pueden utilizar ceros y unos para representar el color.
Rojo, verde y azul (llamado
RGB
) es una combinación de tres números.HI!
Los lectores de imágenes interpretarían nuestros 72, 73 y 33 utilizados anteriormente, que decían a través de texto, como un tono claro de amarillo. El valor rojo sería 72, el valor verde sería 73 y el azul sería 33.Además, se pueden utilizar ceros y unos para representar imágenes, vídeos y música.
Las imágenes son simplemente colecciones de valores RGB.
Los vídeos son secuencias de muchas imágenes que se almacenan juntas, como un libro animado.
La música se puede representar a través de datos MIDI.
Algoritmos
La resolución de problemas es fundamental para la informática y la programación informática.
Imagine el problema básico de intentar localizar un solo nombre en una guía telefónica.
¿Cómo podrías hacer esto?
Un enfoque podría ser simplemente leer de una página a otra hasta llegar a la última página.
Otro enfoque podría ser buscar dos páginas a la vez.
Un último enfoque, y quizás mejor, podría ser ir al centro de la guía telefónica y preguntar: "¿El nombre que estoy buscando está a la izquierda o a la derecha?". Luego, repite este proceso, cortando el problema por la mitad y por la mitad y por la mitad.
Cada uno de estos enfoques podría denominarse algoritmos. La velocidad de cada uno de estos algoritmos se puede representar de la siguiente manera en lo que se llama notación O grande :
Observe que el primer algoritmo, resaltado en rojo, tiene una O grande
n
porque si hay 100 nombres en la guía telefónica, podrían ser necesarios hasta 100 intentos para encontrar el nombre correcto. El segundo algoritmo, en el que se buscaban dos páginas a la vez, tiene una O grande de 'n/2' porque buscamos dos veces más rápido en las páginas. El algoritmo final tiene una O grande de log 2 n, ya que duplicar el problema solo daría como resultado un paso más para resolverlo.
Pseudocódigo
La capacidad de crear pseudocódigo es fundamental para el éxito tanto en esta clase como en programación de computadoras.
El pseudocódigo es una versión legible por humanos de su código. Por ejemplo, considerando el tercer algoritmo anterior, podríamos componer el pseudocódigo de la siguiente manera:
1 Pick up phone book 2 Open to middle of phone book 3 Look at page 4 If person is on page 5 Call person 6 Else if person is earlier in book 7 Open to middle of left half of book 8 Go back to line 3 9 Else if person is later in book 10 Open to middle of right half of book 11 Go back to line 3 12 Else 13 Quit
La pseudocodificación es una habilidad tan importante por al menos dos razones. Primero, cuando pseudocodifica antes de crear código formal, te permite pensar de antemano en la lógica de tu problema. En segundo lugar, cuando pseudocodifica, luego puede proporcionar esta información a otras personas que buscan comprender sus decisiones de codificación y cómo funciona su código.
Observe que el lenguaje dentro de nuestro pseudocódigo tiene algunas características únicas. Primero, algunas de estas líneas comienzan con verbos como recoger, abrir, mirar. Más adelante llamaremos a estas funciones .
En segundo lugar, observe que algunas líneas incluyen declaraciones como
if
o.else if.
Estas se denominan condicionales .En tercer lugar, observe cómo hay expresiones que pueden declararse verdaderas o falsas, como “la persona aparece anteriormente en el libro”. A estas las llamamos expresiones booleanas .
Finalmente, observe cómo estas declaraciones son como "volver a la línea 3". A estos los llamamos bucles .
Estos bloques de construcción son los fundamentos de la programación.
En el contexto de Scratch , que se analiza a continuación, utilizaremos cada uno de los componentes básicos de programación mencionados anteriormente.
Inteligencia artificial
Considere cómo podemos utilizar los componentes básicos anteriores para comenzar a crear nuestra propia inteligencia artificial. Mire el siguiente pseudocódigo:
If student says hello Say hello back Else if student says goodbye Say goodbye back Else if student asks how you are Say you're well Else if student asks why 111 in binary is 7 in decimal ...
Observe cómo para programar un puñado de interacciones se necesitarían muchas líneas de código. ¿Cuántas líneas de código se necesitarían para miles o decenas de miles de posibles interacciones?
large language models
observar patrones en grandes bloques de lenguaje. Estos modelos de lenguaje intentan crear una mejor suposición de qué palabras vienen una detrás de otra o una al lado de otra.Como es muy útil en muchos ámbitos de la vida y el trabajo, estipulamos que la utilización de software basado en IA que no sea el propio CS50 no es razonable .
La propia herramienta de software basada en IA de CS50 llamada CS50 Duck es una ayuda de IA que puede utilizar durante este curso. Le ayudará, pero no le revelará todas las respuestas a los problemas del curso.