INFORMATICA

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 18

INFORMATICA – CS50

Bienvenidos
 Cuando David estaba en primer año, estaba demasiado intimidado para tomar
cursos de informática. Para cuando era estudiante de segundo año, encontró el coraje de
tomar el equivalente de CS50, pero solo pasa / falla.
 De hecho, dos tercios de los estudiantes de CS50 nunca han tomado un curso de
CS antes.
 Y lo más importante también:
Lo que finalmente importa en este curso no es tanto dónde terminas en relación con tus
compañeros de clase sino dónde terminas en relación contigo mismo cuando
comenzaste

¿Qué es la informática?


La informática es fundamentalmente la resolución de problemas.
 Podemos pensar en la resolución de problemas como el proceso de tomar algo
de entrada (detalles sobre nuestro problema) y generar algo de salida (la solución a
nuestro problema). La "caja negra" en el medio es informática.

Necesitamos una forma de representar las entradas, de modo que podamos almacenar y trabajar
con información de manera estándar.

Binario

 Una computadora, en el nivel más bajo, almacena datos en binario, un sistema


de numeración en el que solo hay dos dígitos, 0 y 1.
 Cuando aprendimos a contar por primera vez, podríamos haber usado un dedo
para representar una cosa. Ese sistema se llama unario. Cuando aprendimos a escribir
números con los dígitos del 0 al 9, aprendimos a usar el decimal.
 Por ejemplo, sabemos que lo siguiente representa ciento veintitrés.

1 2 3


o El 3está en la columna de las unidades, el 2está en la columna de las
decenas y el 1está en la columna de las centenas.
o Entonces 123es 100 × 1 + 10 × 2 + 1 × 3 = 100 + 20 + 3 = 123.
o Cada lugar para un dígito representa una potencia de diez, ya que hay
diez dígitos posibles para cada lugar.
 En binario, con solo dos dígitos, tenemos potencias de dos para cada valor
posicional:
 4 2 1
0 0 0
o Esto todavía sería igual a 0.
 Ahora, si cambiamos el valor binario a, digamos 0 1 1, el valor decimal sería 3.

4 2 1
0 1 1
Si quisiéramos representar 8, necesitaríamos otro dígito:
8 4 2 1
1 0 0 0
 Y el binario tiene sentido para las computadoras porque las alimentamos con
electricidad, que puede estar encendida o apagada, por lo que cada bit solo necesita estar
encendido o apagado. En una computadora, hay millones o miles de millones de
interruptores llamados transistores que pueden almacenar electricidad y representar un
poco al estar "encendidos" o "apagados".
 Con suficientes bits o dígitos binarios, las computadoras pueden contar hasta
cualquier número.
 8 bits forman un byte .

Representando datos

 Para representar letras, todo lo que tenemos que hacer es decidir cómo se
asignan los números a las letras. Algunos humanos, hace muchos años, decidieron
colectivamente un mapeo estándar llamado ASCII . La letra "A", por ejemplo, es el
número 65, y "B" es 66, y así sucesivamente. El mapeo también incluye signos de
puntuación y otros símbolos. Otros caracteres, como letras con acento y emoji, son parte
de un estándar llamado Unicode que usa más bits que ASCII para acomodar todos estos
caracteres.
o Cuando recibimos un emoji, nuestra computadora en realidad solo recibe
un número decimal como 128514( 11111011000000010en binario, si puede leerlo más
fácilmente) que luego se asigna a la imagen del emoji.
 Una imagen también se compone de muchos puntos cuadrados más pequeños, o
píxeles, cada uno de los cuales se puede representar en binario con un sistema llamado
RGB, con valores de luz roja, verde y azul en cada píxel. Al mezclar diferentes
cantidades de cada color, podemos representar millones de colores:


o Los valores rojo, verde y azul se combinan para obtener un color
amarillo claro:

 Podemos ver esto en un emoji si nos acercamos lo suficiente:

 Y los programas de computadora saben, según el contexto de su código, si los


números binarios deben interpretarse como números, letras o píxeles.
 Y los videos son muchas, muchas imágenes que se muestran una tras otra, a
cierto número de cuadros por segundo. La música también puede representarse
mediante las notas que se reproducen, su duración y su volumen.
Algoritmos= un grupo finito de operaciones organizadas de manera lógica y
ordenada que permite solucionar un determinado problema

Entonces ahora podemos representar entradas y salidas. El cuadro negro anterior


contendrá algoritmos , instrucciones paso a paso para resolver un problema:

 Digamos que queríamos encontrar a un amigo, Mike Smith, en una guía


telefónica.
o Podríamos comenzar hojeando el libro, una página a la vez, hasta
encontrar a Mike Smith o llegar al final del libro.
o También podríamos pasar dos páginas a la vez, pero si vamos demasiado
lejos, tendremos que saber volver atrás.
o Pero una forma aún más eficiente sería abrir la guía telefónica en el
medio, decidir si Mike estará en la mitad izquierda o la mitad derecha del libro (porque
el libro está alfabetizado) e inmediatamente tirar la mitad del problema. Podemos repetir
esto, dividiendo el problema a la mitad cada vez. Con 1024 páginas para comenzar, solo
necesitaríamos 10 pasos de dividir por la mitad antes de que solo nos quede una página
para verificar.
 De hecho, podemos representar la eficiencia de cada uno de esos algoritmos con
un gráfico:
 Nuestra primera solución, una página a la vez, es como la línea roja: nuestro
tiempo para resolver aumenta linealmente a medida que aumenta el tamaño del
problema.
 La segunda solución, dos páginas a la vez, es como la línea amarilla: nuestra
pendiente es menos empinada, pero aún lineal.
 Nuestra solución final es como la línea verde: logarítmica, ya que nuestro
tiempo para resolver aumenta cada vez más lentamente a medida que aumenta el
tamaño del problema. En otras palabras, si la guía telefónica pasara de 1000 a 2000
páginas, necesitaríamos un paso más para encontrar a Mike. Si el tamaño se duplicara
nuevamente de 2000 a 4000 páginas, solo necesitaríamos un paso más.

Pseudocódigo= para omitir secciones de Código o para dar una explicación


del paradigma que tomó el mismo programador para hacer sus códigos.

Podemos escribir pseudocódigo , una sintaxis informal que es solo una versión más específica
del inglés (u otro lenguaje humano) que representa nuestro algoritmo:
Levante la guía telefónica
2 Abierto a la mitad de la guía telefónica
3 Mira la página
4 Si Smith está en la página
5 Llama a Mike
6 De lo contrario si Smith está más temprano en el libro
7 Abierto a la mitad de la mitad izquierda del libro
8 Regrese a la línea 3
9 De lo contrario, si Smith está más tarde en el libro
10 Abierto a la mitad de la mitad derecha del libro
11 Regrese a la línea 3
12 más
13 Salir

Algunas de estas líneas comienzan con verbos o acciones. Comenzaremos llamando a


estas funciones 
Levante la guía telefónica
2 Abierto a la mitad de la guía telefónica
3 Mira la página
4 Si Smith está en la página
5 Llama a Mike
6 De lo contrario si Smith está más temprano en el libro
7 Abierto a la mitad de la mitad izquierda del libro
8 Regrese a la línea 3
9 De lo contrario, si Smith está más tarde en el libro
10 Abierto a la mitad de la mitad derecha del libro
11 Regrese a la línea 3
12 más
13 Salir

También tenemos sucursales que conducen a diferentes caminos, como bifurcaciones en el


camino, que llamaremos condiciones :
Levante la guía telefónica
2 Abierto a la mitad de la guía telefónica
3 Mira la página
4 Si Smith está en la página
5 Llama a Mike
6 De lo contrario si Smith está más temprano en el libro
7 Abierto a la mitad de la mitad izquierda del libro
8 Regrese a la línea 3
9 De lo contrario, si Smith está más tarde en el libro
10 Abierto a la mitad de la mitad derecha del libro
11 Regrese a la línea 3
12 más
13 Salir

Y las preguntas que deciden a dónde vamos se llaman expresiones booleanas , que finalmente
resultan en un valor de verdadero o falso:
Levante la guía telefónica
2 Abierto a la mitad de la guía telefónica
3 Mira la página
4 Si Smith está en la página
5 Llama a Mike
6 De lo contrario si Smith está más temprano en el libro
7 Abierto a la mitad de la mitad izquierda del libro
8 Regrese a la línea 3
9 De lo contrario, si Smith está más tarde en el libro
10 Abierto a la mitad de la mitad derecha del libro
11 Regrese a la línea 3
12 más
13 Salir

Finalmente, tenemos palabras que conducen a ciclos, donde podemos repetir partes de nuestro
programa, llamadas bucles :
Levante la guía telefónica
2 Abierto a la mitad de la guía telefónica
3 Mira la página
4 Si Smith está en la página
5 Llama a Mike
6 De lo contrario si Smith está más temprano en el libro
7 Abierto a la mitad de la mitad izquierda del libro
8 Regrese a la línea 3
9 De lo contrario, si Smith está más tarde en el libro
10 Abierto a la mitad de la mitad derecha del libro
11 Regrese a la línea 3
12 más
13 Salir

Rasguño

 Podemos escribir programas con los bloques de construcción que acabamos de


descubrir:
o funciones
o condiciones
o Expresiones booleanas
o bucles
 Usaremos un lenguaje de programación gráfico llamado Scratch , donde
arrastraremos y soltaremos bloques que contengan instrucciones.
 Más adelante en nuestro curso, pasaremos a lenguajes de programación textuales
como C, Python y JavaScript. Todos estos idiomas, incluido Scratch, tienen
características más potentes como:
o variables
 la capacidad de almacenar valores y cambiarlos
o hilos
 la capacidad de nuestro programa de hacer varias cosas a la vez
o eventos
 la capacidad de responder a cambios en nuestro programa o
entradas
o ...
 El entorno de programación para Scratch se ve así:

o A la izquierda, tenemos piezas de rompecabezas que representan


funciones o variables, u otros conceptos, que podemos arrastrar y soltar en nuestra área
de instrucción en el centro.
o A la derecha, tenemos un escenario que nuestro programa mostrará a un
humano, donde podemos agregar o cambiar fondos, personajes (llamados sprites en
Scratch) y más.
 Podemos arrastrar algunos bloques para que Scratch diga "hola, mundo":

o El bloque "cuando se hace clic en la bandera verde" es el comienzo de


nuestro programa, y debajo de este bloqueamos un bloque "decir" y escribimos "hola,
mundo".
 También podemos arrastrar el bloque "preguntar y esperar", con una pregunta
como "¿Cuál es tu nombre?", Y combinarlo con un bloque "decir" para la respuesta:
Pero no esperamos después de decir "Hola" con el primer bloque, por lo que podemos usar el
bloque "decir () durante () segundos":

Podemos usar el bloque "join" para combinar dos frases para que Scratch pueda decir "hola,
David":

o Tenga en cuenta que podemos anidar instrucciones y variables.


 De hecho, el bloque "decir" en sí mismo es como un algoritmo, donde
proporcionamos una entrada de "hola, mundo" y produjo la salida de Scratch (el gato)
"diciendo" esa frase:
El bloque "preguntar" también toma una entrada (la pregunta que queremos hacer) y produce la
salida del bloque "respuesta":

Entonces podemos usar el bloque "respuesta" junto con nuestro propio texto, "hola", como dos
entradas al algoritmo de unión ...
... que pasamos nuevamente como entrada al bloque "decir":

Podemos intentar hacer que Scratch (el nombre del gato) diga miau:

Pero cuando hacemos clic en la bandera verde, escuchamos el maullido una y otra vez de
inmediato. Nuestro primer error o error! Podemos agregar un bloque para esperar, para que los
maullidos suenen más normales.
Podemos hacer que Scratch apunte hacia el mouse y avance hacia él:

Veremos una oveja que puede contar:

o Aquí, counterhay una variable, cuyo valor podemos establecer, usar y


cambiar.
 También podemos tener Scratch miau si lo tocamos con el puntero del mouse:
Alternativamente, podemos tener un rugido Scratch si lo hacemos:

o Aquí, tenemos dos ramas diferentes, o condiciones, que se repetirán para


siempre. Si el mouse lo toca, Scratch "rugirá", de lo contrario solo maullaría.
 Podemos hacer que Scratch se mueva hacia adelante y hacia atrás en la pantalla
con algunos bloques más que podemos descubrir mirando alrededor:

o Incluso podemos grabar nuestro propio sonido para jugar.


 Con dos diferentes "disfraces" o imágenes de Scratch con sus patas en diferentes
posiciones, incluso podemos simular un movimiento animado para caminar:
Observamos otro programa, ladrar, donde podemos usar la barra espaciadora para silenciar a un
león marino:

Tenemos una variable muted, eso es falsepor defecto. Y nuestro programa verificará


constantemente si se presiona la barra espaciadora y se silenciará falsesi es
así trueo trueno. De esta manera, podemos alternar si el sonido se reproduce o no, ya que
nuestro otro conjunto de bloques para el león marino verifica la mutedvariable:

Con múltiples sprites o personajes, podemos tener diferentes conjuntos de bloques para cada
uno de ellos:

o Para una marioneta, tenemos estos bloques que dicen "Marco!", Y luego
un bloque de "evento de transmisión". Este "evento" se utiliza para que nuestros dos
sprites se comuniquen entre sí, como enviar un mensaje secreto. Así que nuestro otro
títere puede esperar a que este evento diga "¡Polo!":

 Ahora que conocemos algunos conceptos básicos, podemos pensar en el diseño


o la calidad de nuestros programas. Por ejemplo, podríamos querer que Scratch tose tres
veces repitiendo algunos bloques:
 Si bien esto es correcto, podemos evitar repetir bloques con un bucle:

 El siguiente paso es abstraer parte de nuestro código en una función, o hacer que
sea reutilizable de diferentes maneras. Podemos hacer un bloque llamado "tos" y poner
algunos bloques dentro de él:
o Ahora, todos nuestros sprites pueden usar el mismo bloque de "tos", en
tantos lugares como queramos.
 Incluso podemos poner varias veces en nuestra función de tos, por lo que solo
necesitamos un solo bloque para toser cualquier cantidad de veces:

 Vemos algunos ejemplos y discutimos cómo podríamos implementar


componentes de ellos con diferentes sprites que siguen el cursor del mouse, o causar
que algo más suceda en el escenario.
 ¡Bienvenido a bordo!

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy