>> [REPRODUCCIÓN DE MÚSICA]
>> DAVID MALAN: Muy bien.
Bienvenido de nuevo.
Este es CS50, y esto es Semana Uno, Continuación.
Así que una de las razones por las que hemos estado pasando en torno a tecnologías como
Google Glass es que vienen con algo que se conoce como una API, un
Interfaz de programación de aplicaciones.
Y lo que esto significa es que con la archivos de la derecha y con el derecho
documentación, en realidad se puede escribir software para dispositivos incluso como estos.
>> Y así, lo que tenemos en mente hacia semestres final es, si un proyecto
que implica, por ejemplo, Google Glass podría apelar, ya veremos lo que podemos hacer en
términos de enganchar para arriba con un poco de de hardware de préstamo, así como la
API de acceso público, para que pueda realmente empezar a crear software
que se ejecuta en el mismo Google Glass.
>> Otro dispositivo que hemos estado jugando con los últimos tiempos que pensamos que podría ser
diversión al final del semestre es esta pequeña cosa aquí.
Se llama Salto de movimiento, y lo que está a punto de ver es técnicamente un
anuncio para el dispositivo, pero no hablar de lo que este particular,
dispositivo es capaz de hacer.
Y es, también, viene con un API a través de que se puede escribir software para
controlar su propia computadora de manera bastante como esta película de un minuto aquí.
>> [REPRODUCCIÓN DE VÍDEO]
>> [VIDEO PLAYBACK FIN]
>> Así que ahora mismo, este dispositivo pasa a ser implementado como un pequeño USB
conector que se puede conectar a su ordenador, pero no me sorprendería
si en poco tiempo que tenemos este tipo de tecnologías en el siguiente lote de PCs
y Macs, para que pueda, de hecho, interactuar con él de
una manera así.
De hecho, lo que pensé que lo haría, también, es Acerqué una pequeña demostración
programa que viene con este software.
Así que me he puesto el pequeño sensor frente a mi laptop.
>> Y como se puede ver, ya se da cuenta que mi mano está ahí
controlarla.
Y todo esto lo hace la aplicación es maravillas pequeñas cosas como esta.
Pero se puede ver que, en efecto, Tengo cinco dedos allí.
Si podemos conseguir que haga en los 10, se puede imaginar un piano limpio
de aplicación o similar.
Así que si desea llegar después de las clases hoy y jugar con eso como
así, le invitamos a.
Así que más de que hacia el final de semestre.
>> Así que un par de administrativo anuncios.
Uno, hacer la sección de este viernes al mediodía en cs60.net/section.
Esa es la URL del curso de inicio también.
En el ínterin, sin embargo, supersections debutará este domingo.
Supersections son una cosa de una sola vez, porque nos lleva un poco de tiempo para trabajar
quién está en qué sección y dónde.
>> Así que el próximo domingo, no habrá una sección para los menos cómodo,
una sección para aquellos más cómoda.
Y aquellos de ustedes en algún lugar entre invitamos a ir a
cualquiera o ambos o ninguno.
Ambos serán filmados.
Van a estar en un auditorio más grande que una sección normalmente sería pulg
Pero el objetivo aquí es para equiparlo con un poco de consuelo con problema establece una,
con C, con el aparato CS50, este fin de semana, incluso antes de que usted descubre que su
asignación de la sección oficial.
Así que te encontrarás con tu TF y su menor grupo de sectionmates en aproximadamente
tiempo de una semana.
>> El horario de oficina, por su parte, han estado ocurriendo.
No tomar ventaja de ellos esta noche o mañana por la noche si le gustaría.
Problema establecido 0 vence el viernes.
Este es un día más tarde de la regularmente programada el jueves.
Pero con un problema conjunto 1, verá que incluye algunas de calentamiento
ejercicios con los que tú mismo puede ampliar su
Jueves plazo a viernes.
Problema set 1, por su parte, hará su debut en la página web del curso próximo
Viernes, si desea acurrucarse con como lo hice alguna vez tarde
Viernes por la noche en su habitación.
>> Así cs50.net/appliance es el lugar donde usted puede conseguir el aparato CS50
que comenzamos a usar el lunes.
Vamos a utilizar un poco más hoy.
Pero tenga la seguridad de que el problema set 1 especificación le guiará a través de
precisamente los pasos que debe para conseguir que la marcha y funcionando.
Así que no se preocupe por hacer que antes de Juego de parámetros 1 si usted preferiría no hacerlo.
>> Está bien.
Así que buscamos el lunes en el código fuente, pero en el contexto de un nuevo
lenguaje de programación, a saber, C. Y C, a diferencia de los arañazos, no es gráfica.
No es los pedazos del rompecabezas.
Es más sintaxis similar al Inglés.
Y hay un par de pasos involucrados en realidad, la escritura y la ejecución de un
programa en C, ya que además de fuente código como este, necesita algo
llamado un compilador.
Y en términos simples, lo que Qué hace un compilador para nosotros?
Sí.
>> ESTUDIANTE: Convierte el código que se escribe en 0s y 1s.
>> DAVID MALAN: Good.
Por lo tanto, convierte el código que escribimos a 0s y 1s.
Convierte llamado código fuente a código objeto, el último de los cuales se ve
un poco de algo como esto.
Y es su CPU, los cerebros dentro de su equipo, que debido a la
personas que crearon esos equipos, saber cuáles son esas secuencias
de 0 y 1 significa.
>> Tal vez signifique impresión.
Tal vez signifique adición.
Tal vez signifique restar.
Tal vez signifique que aparezca un gráfico.
Hay patrones predefinidos de bits de que el mundo ha decidido media
ciertas cosas.
Pero en su mayor parte en este curso, vamos a trabajar en un nivel superior, y
vamos a dar por sentado que existen cosas como los compiladores que pueden
hacer nuestra función de código fuente en la forma en que pretendemos.
>> Así que el programa que escribió primero la semana pasada y luego comenzó a puerto, por así
hablar, C pasado Lunes, era esto.
Cuando hace clic en bandera verde, saludar.
Esto era, por supuesto, escrito en Scratch.
Y yo decía que el equivalente programa en C se veía un poco
algo como esto.
>> Así que lo que pensé que lo haríamos en un principio, es decir, vamos a desmenuzar lo que parece, a primera
vista, sin duda, la forma más justa arcana sintaxis, pero usted comenzará a notar
patrones bastante rapidez.
Lo que también vamos a hacer hoy es proporcionar que con un modelo mental para algunos
, algunas construcciones estándar canónicas en la programación.
Y luego vamos a realmente en nuestras manos sucia con algunos ejemplos también.
>> Así que para aquellos de ustedes más cómodo, darse cuenta de que esta semana y luego la siguiente
semana puede muy bien ser un poco de revisión.
Pero sobre todo cuando la edición pirata del problema de conjunto 1 se apaga en el
la página web del curso el viernes, yo creo usted encontrará que incluso cuando usted completa
algunos espacios en blanco durante la próxima semana o dos, usted comenzará a acercarse cada vez más
desafiado y encuentro nuevas y más nuevas cosas.
>> Así que vamos burlan de este programa, aparte unas pocas líneas a la vez.
En la parte superior, tenemos lo que es técnicamente se llama una
directiva de preprocesador.
Esto es sólo una línea de código que dice para incluir el contenido de un archivo,
llamada I estándar / N, entrada estándar - o, lo siento, E / S estándar, estándar
de entrada / salida,. h, dentro de de mi propio programa.
>> En otras palabras, si yo escribí este programa con un simple editor de texto como
gedit, el equivalente más simple de algo como Microsoft Word, que
instrucción # include stdio.h, es sólo va a indicar al compilador, tome el
contenido de ese otro archivo, stdio.h, y pegarlos aquí.
>> Ahora, ¿por qué me importa?
¿Qué fue lo que decimos que hay dentro de este archivo llamado stdio.h, que se almacena
en algún lugar de mi disco duro, o en este caso, en alguna parte del aparato CS50?
Alguien lo puso allí para mí.
Pero lo que está en él?
>> Sí, por lo que es una declaración de una función llamada printf.
Así printf recuerda la función que muestra las palabras y los caracteres y
los números en la pantalla a mis órdenes.
Pero yo no lo escribí.
CS50 no lo escribió.
Hace años alguien escribió, y que básicamente nos dio la receta para que
en un archivo llamado stdio.h.
Así que la primera línea justo me da acceso a las funciones que otra persona
escribió hace años, entre que son printf.
>> Ahora, la línea siguiente que voy a saludar a mi mano, por lo menos hasta la próxima semana.
Pero por ahora, sabemos que int main (void) es esencialmente el equivalente de esta
pieza del rompecabezas de color amarillo cuando bandera verde hizo clic.
El mundo, hace años, decidió que si usted está escribiendo un programa en el
lenguaje llamado C, se inicia su programa con una línea
que se parece a eso.
En casi una semana, que va a hacer sentir lo que int es, lo que es vacío.
Pero por ahora, sólo pensar en ello ya que esta pieza del rompecabezas de color amarillo.
>> Ahora siguiente, tenemos una llave seguido por otra llave de cierre,
por así decirlo.
Y veremos a lo largo de estos programas en C, así como
JavaScript y PHP.
Y estos sólo encapsulan líneas relacionadas de código.
La llave de apertura en esencia dice, aquí viene algo de código.
Y la llave de cierre, que es en ángulo en la otra dirección, sólo
medios, eso es todo por el código correspondiente.
>> Así que la jugosa en este primer programa es el último, printf,
entre comillas, hola mundo.
Y llamé a la cosa entre cita a lo que la última vez?
Así que es una cadena.
Y una cadena es sólo el aficionado a la tecnología plazo para una secuencia de
personajes, una palabra, una frase.
Incluso una sola carta podría estar entre comillas dobles.
Pero es una secuencia de cero o más caracteres.
>> Backslash-n, sin embargo, se ve un poco extraño.
Pero simplemente significaba algo sencilla al ordenador.
¿Qué es la barra invertida-n?
Nueva línea.
Así que eso es sólo la secuencia especial de personajes que el mundo ha decidido
medios poner un salto de línea justo ahí, porque el compilador conseguirá realmente
confuso, por lo general, si, muy como es comprensible, pero incorrectamente, simplemente
comenzar a golpear Enter para poner nuevas líneas en su código.
¡Tienes que ser un poco más explícita con barra invertida-n.
>> Y veremos que hay algunos otros tales patrones de caracteres especiales.
Por ejemplo, si desea dejar que su mente vagar a un caso de la esquina,
Supongo que quería imprimir un comillas dobles en la pantalla durante
la razón que sea, eso parecería ser un poco problemático, ¿no?
Porque si pongo una doble cita en el medio de "hola, mundo", para lo que
razón, ¿por qué tiene eso parece potencialmente problemático?
Se rompe la cadena.
>> El compilador es sólo un programa.
Un programa como un compilador es sólo va leer su código de arriba a abajo,
izquierda a derecha.
Y si ve tres comillas dobles en lugar de dos, no va a saber
si te refieres a que la cosa a la izquierda debe ser la cadena, o lo que hay que
la derecha, o la cosa entera.
Es ambiguo, por lo que lo que es un típico compilador no es sólo asuste,
y le dará algún mensaje de error, y hacer a lidiar con el problema.
>> Así que teniendo en cuenta que la barra invertida-n significa un nuevo line, lo que haría con sus instintos ahora
comenzará a ser si querías incluir algo anómalo como una doble
Interior de la cita de esta cita de otra manera- cuerda?
Quote-Barra invertida doble.
Y así que veremos este tipo de patrón también.
>> Si quieres hacer algo un poco extraño, usted encontrará que la
soluciones suelen seguir un patrón, y la barra invertida
denota una secuencia de escape.
Y sólo significa algo especial que tenemos que representar en un
diferente manera.
En cuanto a cómo usted representa una barra invertida, bueno, vamos a
Volveré sobre este punto.
Pero la respuesta, también, es en realidad un poco obvio.
>> Así que ahora vamos a introducir alguna otra construcciones de programación
que vio en Scratch.
Usted probablemente ha tomado por sentado ya si ya ha buceado en
problema establece 0.
Pero ahora vamos a introducir la sintaxis de C para éstos de otra manera bastante intuitiva
ideas, al menos algunos de ellos.
>> Así que esta noción de una condición o una rama, mientras que antes nos
representado con el código que se veía como esta a la izquierda en Scratch -
si x es menor que y, entonces dígalo -
en cambio ahora en C - permítanme afilar en en el caso más sencillo -
estamos simplemente va a decir, si, abierto paréntesis, algo es cierto - un
Expresión booleana se va a ir donde he dicho estado -
paréntesis de cierre, a continuación, hacer lo que es dentro de esas llaves.
>> Así que aquí, también, las llaves son una especie de Scratch
Piezas de un rompecabezas en forma de U.
Haz lo que hay dentro de estas llaves.
En este caso, slash slash.
Y note que este es un avance recortar, no una barra invertida.
Barra inclinada, barra inclinada, para aquellos que han programado
antes, sólo significa -
es sólo un comentario.
Un comentario no es una línea de código, per se.
Es una línea de Inglés que usted, el humana, han escrito a usted para
tal vez le recuerde a hacer algo, explicar a ti mismo, para explicar a los
otra persona, lo que su código está haciendo.
Es sólo un comentario descriptivo.
>> Ahora, por supuesto, podemos tener una de dos vías tenedor en la carretera justo al hacer esto, un
de tres vías tenedor en el camino haciendo esto, y si continúa esta
patrón, usted puede tener de cuatro vías, cinco vías, seis posiciones bifurcaciones en el camino si
usted necesita para manejar, de hecho, que muchas condiciones.
Y luego notar el paralelismo aquí -
if (condición), else if (condición), y el único que es un poco
extraño es la última, que es sólo que más.
Pero de nuevo, esto es idéntico, conceptualmente, a lo que hemos hecho
ya, a pesar de que la sintaxis se tomar un poco acostumbrarse.
>> Ahora, en este ejemplo, hay alguna otra sintaxis extraña.
Vemos printf nuevo, paréntesis de apertura, y paréntesis de cierre.
Y en el interior de haya una cadena entre comillas.
Los paréntesis, en el contexto de printf, vaya a la izquierda
y el derecho de qué?
¿Qué es lo que describimos el indicado cadena como más en general?
>> Así que es un argumento.
Cada vez que tenga una función, al igual que printf, y luego un paréntesis de abiertos y una
cerca paren y algo dentro de que, si se trata de una cadena, o un
número entero, o cualquier otra cosa, la cosa en entre los paréntesis, se llama
un argumento.
>> Y un argumento sólo influye el comportamiento de la función.
En este caso, es bastante claro cómo.
x <y es lo que está pasando en, por así decirlo, como un argumento.
Y printf va a imprimir exactamente eso.
Porque sin duda, hace los años-persona quien implementado printf no tenía ni idea
lo que los sucesores humanos eran va a usar printf para.
Así que por eso existen argumentos, a influyen en el comportamiento después de una función
ha escrito.
>> Ahora bien, la expresión booleana.
Hemos visto estos antes de Scratch.
Resulta que en C también puede "o" juntos, por así decirlo.
Dos barras verticales significa que este bloque del código, esto lo hace, se
ejecutar si la primera condición es verdadera o la segunda condición es verdadera.
Y a pesar de que no podría haber hecho esto en Scratch, usted podría de hecho
hacer esto en Scratch, y también puede expresarse de manera diferente -
Si la primera condición y la segunda condiciones son verdaderas, entonces ¿cuál es
dentro de las llaves.
>> Y así como un aparte, la razón es un signo doble y un doble
barra vertical, ya veremos con el tiempo que una sola barra vertical y una
signo único en realidad tienen diferentes significado en C. Así que por ahora,
que la duplicación de símbolos es intencional.
>> Así que vamos a introducir brevemente este otro poco de sintaxis.
Esto no acaba de llevar a Cero, pero afirmo que puedo
poner en práctica la idea de un caso más, si otra cosa, si bien, si else utilizando
algo que se llama una sentencia switch.
Y la única razón de que esto realmente existe es que usted acaba de dar, el programador, un
ligeramente diferente manera de resolver algunos problema, aunque, lógicamente,
no te da ningún nuevas capacidades.
>> Con esto quiero decir esto.
Cuando dices interruptor, y luego un espacio, y luego un par de paréntesis, dentro de
de los cuales pasa una expresión -
y esto podría ser un poco no evidente al principio, pero esto no es un argumento,
técnicamente, porque el interruptor no es una función.
Así que por ahora, sólo suponemos que estamos utilizando paréntesis en diferentes lugares
por diferentes razones.
>> Así interruptor en la expresión significa que puedo poner una variable dentro de los
paréntesis donde dice expresión.
Y luego, si esa variable -
supongamos que se llama x, y es sólo un número entero -
Entonces puedo enumerar en mi diapositiva aquí algo como esto.
Si x es mi variable y yo querer hacer algo si x
es igual a 1, no puedo hacer eso.
>> Si en lugar quiero hacer algo si x es 2, no puedo hacer eso.
Si no, si quiero hacer algo más por completo, puedo tener un caso por defecto en
cuyo caso lo hago otra cosa.
Así que en ese sentido, que es equivalente a un si x es igual a es igual a 1, de lo contrario, si los demás,
pero lo menciono ahora porque vamos a ver de nuevo.
Pero, por ahora, sólo sé que existe.
>> Está bien.
Así que estos últimos son un poco más complejo a primera vista, pero lo hacen
algo bastante sencillo.
Un bucle for en C es un trozo de código que apenas hace algo nuevo y
una y otra vez.
Y la única cosa molesta de esto es es decir que es un poco críptico
de expresarse en este cíclica patrón, pero el mundo estandarizado en
de la siguiente manera.
>> Cuando se utiliza un bucle for, tienes un par de paréntesis más.
Y note los dos puntos y comas en ese país.
Esos dos puntos y comas separan tres diferentes expresiones dentro del
paréntesis.
Uno de ellos es los llamados inicializaciones.
Una de ellas es la condición llamada.
Y uno es el llamado actualizaciones.
>> Mirado en abstracto, esto es completamente no-obvio, así que echemos un vistazo
en un ejemplo concreto.
En los arañazos que tenía un bloque de repetición.
Y este bloque dijo repita 10 veces, dicen "Hola, mundo". Permítanme reclamo para
ahora, y vamos a volver a esto, y esto, también, se pondrá más familiar para
que en poco tiempo, el equivalente C código podría decirse que esta -
una instrucción y un espacio, un par de paréntesis, observe los puntos y comas en
allí, que separan tres canales distintos cosas, la inicialización, el
condición, y la actualización.
>> Y tomar una conjetura de lo el primero está haciendo.
Int i = 0.
En términos sencillos áspero, lo que es que hacer para nosotros, probablemente?
Así que sí.
Se declara una variable llamada i, y que está dando lo que de valor?
0.
Así que está creando una variable llamada i, almacenar el valor 0 en el mismo.
Esa es la llamada de inicialización.
>> Muy bien, ahora lo alegó ante que la cosa medio, i
<10, es la condición.
Entonces, ¿qué está haciendo?
Pues bien, lo que el bucle for hace cuando un programa con un bucle se ejecuta, es
cada vez que el equipo se ejecuta a través de este bucle, de arriba abajo, de arriba a
parte inferior, al igual que ustedes hicieron cuando contando a sí mismos y se sentó,
una y otra vez y otra vez, el equipo va
para comprobar dicha condición.
Y si i es menor que 10, lo hará de nuevo.
Si i es menor que 10, lo hará de nuevo.
Si i es inferior a diez, lo hará de nuevo.
Así que parece sugerir que espero i está cambiando.
De lo contrario, tendríamos un bucle infinito.
Y, de hecho, i está cambiando, porque la Lo pasado, después del punto y coma que hay
es la sintaxis un tanto críptica de i + +.
Pero aquellos de ustedes que han hecho esto antes, eso sólo significa
sencillamente, qué?
>> ESTUDIANTES: [VOCES interponiendo].
>> DAVID MALAN: Agrega 1 a i.
Incrementar i.
Así que vimos un rompecabezas de Scratch piece Para eso, en realidad.
No se veía como i + +, pero eso sólo medios, simplemente, incrementar el
valor i en 1 cada vez que se hace esto.
Así que, literalmente, se empieza por inicializar i a 0.
A continuación, comprueba su estado.
Es 0 a menos de 10?
Sí.
Vamos a través del bucle.
>> Lo siguiente que reclamo el ordenador del vamos a hacer es que va
para incrementar i.
Así que ahora es de 1.
Se comprueba la condición.
Es 1 menor de 10?
Por supuesto.
Así lo hace de nuevo.
Luego se incrementa i + + a 2.
Es 2 menos de 10?
Sí.
Y una y otra vez y otra vez.
Y finalmente, debido a la plus-plussing, llegamos a i es igual a 10.
Es 10 menor que 10?
Bueno, obviamente no.
Y ese es el punto en el que el bucle sólo se detiene.
Y si tiene más código en el pantalla de abajo, el equipo
procede a ejecutar ese código en su lugar.
>> Así que de nuevo, a pesar de que esto va a verse y sentirse un poco extraño al
primero, sin duda para aquellos de ustedes que nunca han programado antes,
literalmente reduce conceptualmente a lo que es por lo demás un muy
rompecabezas sencillo pieza en Scratch.
>> Muy bien, me prometí que no habría haber otros análogos en los arañazos.
Hay esta también.
Y vimos brevemente esta última vez.
Pero recuerde siempre el bloquear en cero?
Simplemente hace algo para siempre?
Afirmé que usted podría aplicar esto en esta forma.
Y en realidad se puede poner en práctica esta en un montón de diferentes maneras.
>> Pero el bucle while es sólo una diferente forma en C de expresarse.
Al final del día, no se puede hacer cualquier cosa con un bucle while que
no puede con un bucle for.
Así que están al final de la día funcionalmente la misma.
Pero permite que usted se exprese un poco diferente en
de la siguiente manera.
>> Con el bucle while, que es lo que está en paréntesis que se comprueban una y otra
una y otra vez.
Y tan pronto como la expresión es falsa, a continuación, el bucle deja de ejecutarse,
y el ordenador procede a ejecutar cualquier otro código que
tener en su archivo.
>> Pero lo que es interesante aquí es que literalmente escribí cierto.
Y fiel es un tipo de valor booleano, un valor verdadero o falso.
Así que podrían convertirse en realidad nunca false si tengo literalmente
modificable en mi programa?
Así que no.
Es un poco extraño que yo hice esto.
Pero cierto es cierto.
No hay más-plussing.
No hay uso de variables aquí.
Así que porque hardcodeada mientras es verdad, esto bucle siempre va a evaluar
una y otra vez y otra vez.
>> Entonces, ¿cuántas veces es hola mundo va a imprimir en la pantalla?
Para siempre.
Un número infinito de veces hasta que el batería se agota o alguna otra externa
evento ocurre.
Así que esto no es probablemente el mejor programa para escribir, porque si el usuario
nunca puede salir del programa, es probablemente no es lo que usted pretende.
>> Pero a veces, los programas deberían tener un bucle infinito.
Por ejemplo, si el equipo tiene un reloj en él, sin duda sería
bueno si el reloj que no seguir actualizando sí para siempre, aunque una vez al
segundos o una vez por minuto o algo así.
Así que incluso bucles infinitos tienen su lugar.
>> Está bien.
Por último, esta.
Y éste es un poco diferente funcionalmente, y vamos a volver a
esto probablemente en juego de parámetros 1.
Pero hay otro tipo de bucle llamado bucle do while.
Y la única diferencia aquí entre un hacer mientras bucle y, por ejemplo, un bucle while,
es que la condición no se comprueba antes de ejecutar el código, pero después
se ejecuta el código.
Así que en la parte superior, mientras que para el lazo, mientras que el do while
comprueba que en la parte inferior.
>> Y esto sólo significa que el bucle while típicamente ejecutar más veces
o menos veces de las que un bucle while?
Potencialmente más veces, porque un do while está diciendo claramente lo hace,
sólo después de ese momento usted comprueba si la condición interior de la
paréntesis, es cierto.
>> Así que vamos a ver esto de nuevo probablemente en juego de parámetros 1.
Si alguna vez quieres hacer algo al menos una vez y luego tal vez un poco más
veces, este es un buen construir a utilizar.
Pero un bucle while, por el contrario, se comprobar su estado primero.
Y eso es todo por bucles en c, mientras que, al tiempo, y los bucles.
Y de nuevo, se asignan bastante bien de nuevo a la altura, a menos que éste no
bastante tener el mismo análogo en Scratch.
>> Bueno, ¿qué, ahora, las variables?
Así que así es como me declaré una variable sintácticamente el otro día.
Tuve un int, que reclamé es un número entero.
Entonces tuve una variable llamada contador, y luego un punto y coma.
Entonces, ¿qué es esta línea de código hace?
Esto es, simplemente, que declara una variable -
es decir, pedir a la computadora, dame algo de memoria, dame algunos bits - en
que puedo almacenar qué?
Un int.
Y el punto y coma sólo significa final de la línea de código.
>> Ahora, la segunda línea es probablemente bastante fácil de adivinar.
¿Qué es el contador = 0; haciendo?
Está asignando 0 al marcador.
Y así, esta es la otra cosa eso es un poco molesto
en comparación, por ejemplo, el álgebra.
Mientras que en el álgebra, significa el signo igual iguales, aquí en C, la igualdad de
señal significa asignación.
Por lo tanto, significa poner lo que está en la derecha en lo que está en la izquierda.
Y vamos a ver otro símbolo, es igual iguales, cuando queremos probar en realidad
por la calidad, un tanto molesto.
>> Pero esto es un poco ineficiente.
Es un poco molesto que tengo para declarar una variable y
y luego darle un valor.
Así que en realidad C nos permite simplificar este y acaba de hacerlo todo a la vez.
Usted puede declarar la variable a la izquierda.
Usted todavía puede hacer el trabajo en la derecho al poner ese signo de igual
el medio.
Así que al final de la día, estos dos son equivalente, pero éste, francamente,
es probablemente el mejor hábito para entrar sólo porque es un poco menos
código, que es un poco más fácil de leer, y que sólo se contrae
su código, por así decirlo.
>> Cualquier pregunta hasta el momento en los bucles, sobre las variables, las condiciones, en
Booleanos, ya sea técnicamente o conceptual?
Está bien.
Así que ahora esta próxima consigue un poco más interesante.
Y este es el ejemplo que puse última tiempo que sólo asigna un ejemplo de Scratch
a C.
>> Por lo tanto una función.
En términos sencillos, ¿qué es una función?
Tengo que ser más audaces con su respuesta.
¿Qué es una función?
>> ESTUDIANTE: ¿Tiene algo.
>> DAVID MALAN: ¿Qué es eso?
>> ESTUDIANTE: ¿Tiene algo.
>> DAVID MALAN: ¿Tiene algo.
Aceptar.
Vamos a empezar por ahí.
Así que una función no hace algo.
Así que es un pedazo de código que es esencialmente implementado en otros lugares que
En efecto, dice algo.
Ahora, lo interesante de una función es que puede tomar la entrada,
y se puede producir una salida.
Y seamos realmente toman un vistazo a esto.
>> Así que el hombre detrás de la cortina fue deliberada hace un momento.
Aquí tenemos una tabla.
Pero supongamos que esta realidad representa una gran caja.
Así que este es un llamado cuadro de negro.
Y, en general, en el diseño, en el ordenador ciencia, cajas negras sólo se refieren a
piezas de funcionalidad que alguien ha puesto en marcha, y no hacer
necesariamente sabe ni le importa cómo es implementado bajo la campana.
Sólo importa que este cuadro de negro, que ahora empezaremos a llamar a un
función, hace algo.
>> Así, por ejemplo, si este cuadro negro en la etapa de aquí representa printf, una
función, que sé de los ejemplos anteriores printf que lleva uno o más
argumentos y el primero de los argumentos deben ser una cadena, como
"Hola, mundo". Bueno, si yo soy la persona escribir el programa, y ​​quiero
utilizar printf, yo, por ejemplo, podría tome un pedazo de papel en blanco aquí y un
marcador negro y escribe en él -
Lo escribo mal "mundo" -
H-E-L-L-O.
>> Así que voy a tomar mi marcador negro y voy a escribir, tan grande y legible como pueda en
este pedazo de papel, "hola, mundo", y Ahora afirmo que esta es mi argumento.
Esta es una cadena representada con una hoja de papel blanco.
Y mi entrada ahora a la función printf va a ser esto.
Así que estoy llamando printf, pasando ese argumento como entrada a la misma.
>> Y ahora, yo no sé cómo la persona que escribió printf hizo hace años, pero
Yo sé de su documentación que su propósito en la vida es imprimir lo que
proporcionar a la misma como entrada.
Y así, a pesar de que esta implementación es sin yo saberlo
debajo de la capilla, ahora Ya veo, oh, se hace.
Se ha impreso algo en la pantalla.
Y ahora el control del programa, si hay eran más líneas de código, se
Ahora han vuelto a mí.
Y así, el hecho de que Colton -
bendito sea, se esconde aquí bajo una mesa delante de todos ustedes -
es deliberada en que no lo sé y no me importa cómo printf es
implementado.
Sólo sé que, de nuevo, a partir de su documentación, lo que hace y cómo lo
Se supone que debo usarlo.
>> Ahora, recordemos que printf podría conseguir un poco más sofisticado.
De nuevo, sólo estamos hablando de la equivalente del bloque de Say de Scratch.
Pero también lo hice la última vez.
Yo quería hacer mi programa hola un poco más dinámica y no sólo difícil
código de algo así como "mundo", y Código definitivamente no dura algo
arbitraria como D-A-V-I-D en el programa.
Quería preguntarle al usuario para su nombre, y luego hacer algo con
esa cadena que proporcionan.
>> Así que hay algo un poco diferente aquí. printf, hace un momento,
no, de hecho, hacer algo, pero no arrojó nada para mí.
¿Cierto?
Colton no me entregue nada espalda, ningún pedazo de papel.
Hubo sólo un efecto secundario.
Mi proporcionar "hola, mundo" como un argumento para Colton dio lugar a la
efecto secundario de una palabra, algunas palabras, que aparece en la pantalla.
>> getString, sin embargo, es un poco de diferente. getString es también un
funciona, pero devuelve algún valor.
No sólo tiene un efecto secundario estética.
En realidad, me da, la persona llamando o utilizando la función,
algo a cambio.
Así que en este caso, es getString llamado con getString abierta
paren, paren cerca.
¿Tiene getString, por lo tanto, tomar cualquier argumento o la entrada?
No, no lo parece.
Su propósito en la vida es sólo para obtener una cadena.
No necesita más detalle que eso.
Así que déjame ir adelante y pretendo que, de nuevo, esta caja de negro no es printf,
pero getString, y me dejó, la persona la redacción de este programa, llame o utilizar
getString con sólo escribir G-E-T-S-T-R-Me-N-G, paren abiertas, cerca
paren, getString.
>> Ahora, no tengo ni idea de cómo el personal CS50 implementado getString, pero sé que
si espero lo suficiente, se hará todo lo cosa debajo de la capilla, tal vez usando
algunas variables, quizás utilizando algunos condiciones, quizás utilizando algunos bucles,
tal vez el uso de algunas funciones, tal vez utilizando -
simplemente tratando de ganar - tal vez usando algunas otras características de programación.
Pero si espero el tiempo suficiente - en realidad, en el ordenador, esto sucede
super rápido -
si espero lo suficiente, esta función getString va a obtener una cadena
desde el usuario, que está presumiblemente escribiendo hacia fuera en su teclado, y
entonces, cuando GetString se hace llegar los personajes del usuario
y su almacenamiento en una cadena, que función, getString, va a tener
listo para mí alguna salida que soy va a recuperar por medio de la
operador de asignación.
>> Y si me fuere, de hecho, en la salida aquí, Obosi tiene generosamente
participado, sin saber esto en avanzar, escribiendo su nombre en este
variable, que representa a una cadena.
Ahora, se entiende el operador de asignación, incluso aunque esto podría sentirse un poco
redundante, yo en realidad necesito para hacer mi propia copia de este.
Debido a que en la mano izquierda lado - ¡Vaya! -
cuenta de que yo tengo esencialmente cadena nombre en el lado izquierdo.
Así que yo también voy a hacer mi propia copia de este.
Y esto es un poco de una mentira piadosa, porque vamos a ver en una semana o dos de
momento en que las cadenas no son en realidad lo que parecen ser.
>> Pero por ahora, aquí está el valor de retorno.
Aquí está mi propia copia de la misma después de utilizando el operador de asignación.
Y ahora, ¿qué es lo que quiero hacer a continuación?
Ahora tenemos la segunda de dos líneas de código.
Así que ahora quiero llamar a printf.
Vamos a suponer ahora que el negro cuadro está de vuelta otra vez a ser
printf y no GetString.
>> Printf esta vez va a tomar el número de argumentos?
Así que mira, es como dos.
Hay dos comas en allí, pero uno de esos comas, es
dentro de las comillas.
Así que el primer argumento es, literalmente, va a ser esto.
H-E-L-L-O, coma, ciento s, la barra invertida-n.
Y ahora estoy ofreciendo no un argumento, pero dos argumentos para printf.
>> Y lo que se supone printf que ver con estas dos entradas después de que les pase en
como argumentos?
Se supone que debe tomar la segunda de ellos, lo que he llamado el nombre, por lo que el
segundo trozo de papel escribí Hace un momento se llama nombre.
Se va a conectar en el interior del valor de esa variable en el espacio,
% S, por lo que, de nuevo, en solo un momento de vez, vamos a ver un efecto secundario de
habiendo llamado printf, por el que ahora nos ver no "hola, mundo", sino "hola,
Obosi ".
>> Así, un gran aplauso a los dos nuestros voluntarios, sólo uno de los cuales sabían
esto estaría sucediendo.
Está bien.
Así que, tal vez, tan simple como eso era, Ciertamente, si usted ya está familiarizado
con tal, espero que usted nunca olvidar que visual particular de cómo
funciones de trabajo.
>> Así que hay algo más que getString.
En el interior de la biblioteca CS50, hay una manojo entero de funciones, todos los cuales
se capitalizan sólo para dejar en claro que escribimos estas funciones.
Por lo general, en C, casi todos los demás función que vamos a usar es minúscula.
Pero usamos deliberadamente mayúsculas sólo para dejar en claro que estos
están entrenando ruedas del tipo que vamos a utilizar para tan sólo unas semanas que
simplificar el proceso de obtención de entrada del usuario.
>> La biblioteca CS50 no hace nada que ustedes mismos no se podía hacer por
simplemente usando el código C a partir de una libro de texto de la vieja escuela.
Pero, de nuevo, los utilizamos como entrenamiento ruedas de las clases para sólo un par de
semanas para que podamos deshacernos de la complejidad que pronto entenderá
usted mismo de hacer algo como relativamente sencillo como conseguir
entrada de un usuario.
>> Así que saber que usted tendrá acceso a GetChar, GetDouble -
doble.
Como se llame - y luego GetFloat.
¿Qué es un flotador?
Vamos a empezar por ahí.
>> ESTUDIANTE: [inaudible].
>> DAVID MALAN: Si.
Es un número con un punto decimal.
Así que mientras que un int es un entero, que es sólo un número con un 0 al 9,
cierto número de repeticiones de los mismos, un flotador es algo
con un punto decimal.
Y un doble, por su parte, es también un número con un punto decimal, pero más
números después de la coma decimal señalar, potencialmente.
>> Así que nos pondremos en contacto con este poco tiempo.
Pero por lo general, cada uno de estos tipos de datos, cada uno de estos tipos de variables
que una biblioteca como la nuestra puede volver a usted, use un número diferente de bits para
almacenar información.
Típicamente, un Char, que sólo significa un carácter, utiliza 8 bits.
Y eso es realmente consistente con nuestra byte de voluntarios la semana pasada que
se acercó y representado a un De caracteres ASCII a la vez.
Así que una de Char es de 8 bits.
>> Un flotador pasa a ser 32 bits, por lo general.
Y un matrimonio, como ya habrás adivinado, es en realidad 64 bits, lo cual es sólo más,
lo que significa que usted puede tener mayor números o más de precisión.
Pero, de nuevo, más sobre esto en otro momento.
GetLongLong, por su parte, aunque estúpidamente nombre, es en realidad un
entero que es el doble de grande, el doble de largo, potencialmente, como regular
entero, 64 bits en lugar de 32.
Y GetString que hemos estado usando.
>> Pero resulta que, en la biblioteca CS50, que se implementa, como veremos, en
la forma de los dos archivos, uno de los cuales se llama cs50.h, tiene otros dos
tipos de datos en el mismo.
Booleanos no existen en C. Puede simular ellos sólo por el uso 0s y 1s
a través de sus programas.
Pero en la biblioteca CS50 hemos creado los símbolos "verdadero" y "falso"
para representar 1 y 0 para que no te tener que codificar algo
gustaría literalmente, 1 y 0.
Pero vamos a ver los de nuevo.
>> Cadena, también, no existe.
Y es por eso que he mencionado es un poco de una mentira piadosa por ahora.
Pero vamos a pelar que capa de poco.
Pero, por ahora, una cadena es un secuencia de caracteres.
>> Mientras tanto, en C, que de hecho tener diferentes tipos de datos.
AVISO Estos son minúsculas.
Así que las funciones que se vio hace un momento son funciones escritas por CS50 que
volverá a usted un valor que cae en una de estas categorías.
>> Un par de trucos hojas sólo para plantar la semilla aquí. printf hace no sólo
tome% s como marcadores de posición.
Se necesita% d para enteros decimales, o% i funcionaría también.
% F está flotando valores de punto. % C es para un char, si quieres simplemente conecte un
carácter en una cadena con formato previo como lo hemos estado haciendo, puede usar% c.
>> Y luego, un poco molesto,% lld es durante mucho tiempo entero, decimal,
que simplemente significa que si usted necesita un muy número grande y usted está usando algo
llamado un largo tiempo, lo que vamos a venir de nuevo a un conjunto de procesadores, puede utilizar% lld a
decirle printf, enchufe en una muy grande enteros aquí por medio de su segunda o
algún otro argumento.
>> Y por último, me prometí que hay algunos otros de escape
secuencias que printf apoyos.
Hemos visto barra invertida-n.
Backslash-r puede ver.
Es una especie de una cosa de la vieja escuela.
Si alguna vez ha utilizado un verdadero año de máquina de escribir hace y te sacó de la manivela
que no sólo hace girar la rueda para mover la línea, también se trasladó la
Todo esto todo el camino de regreso a la izquierda, así, la barra invertida-r simplemente
esencialmente mueve el cursor hacia atrás al inicio de la línea
sin moverla hacia abajo.
Pero, de nuevo, más en eso, tal vez, en el futuro.
>> Backslash-cita, cita-barra invertida doble, barra invertida-barra invertida es el
solución para el pequeño pequeño acertijo He aludido antes.
Y la barra invertida-0 es en realidad bastante interesante.
Pero vamos a volver a que en poco tiempo.
>> Así que déjame ir a, ahora, el CS50 aparato, y vamos a hacer realidad un
rápida en calor con uno de los ejemplos nos movimos ya y luego a
algo un poco más complejo.
Así que si abro mi programa llamado gedit -
este es mi editor gráfico.
Y yo puedo hacer eso -
Déjenme cerrar esa ventana allí -
por medio de este icono aquí abajo, gedit, en la parte inferior izquierda
esquina al lado del menú.
>> Voy a seguir adelante y avanzar, y guardar este ejemplo en, por ejemplo, John
Carpeta de Harvard.
Carpeta de John Harvard es sólo su casa directorio en el que todos sus archivos en vivo
de forma predeterminada.
Y yo voy a guardar esto como un archivo denominado hola-0.C.
Y yo he elegido este nombre sólo por lo que se alinea con el código de ejemplo en la
la página web del curso y en el YouTube videos en línea.
>> Así que ahora voy a empezar a escribir mi primer programa.
Permítanme ampliar la imagen durante la legibilidad.
Y yo voy a seguir adelante y decir int void main, que es igual que
pieza del rompecabezas de color amarillo que se inicia un programa.
He caído en el hábito durante el años de la apertura de mi corchete, a continuación,
También cerrarlo y luego volver a donde quiero poner mi código, sólo
porque me ayuda a mantener todo equilibrada, especialmente como mi
programa se hace largo.
>> Y ahora, aquí, voy a seguir adelante y decir, printf, entre comillas,
hola mundo, la barra invertida-n, cerca de la cita, paréntesis de cierre, punto y coma.
Así que sólo estoy repitiendo todo lo que hemos estado tomando por sentado hasta ahora.
Ahora me voy a alejar el zoom.
>> Y esta ventana de terminal hasta aquí, lo que me permite hacer en este negro
y ventana en blanco?
¿Qué puedo usar?
Así que aquí es donde me quedo comandos y donde puedo compilar cosas.
Y yo voy a mantener la sencillez.
Voy a utilizar un programa de Marca llamada, que no es
técnicamente un compilador.
El compilador de llamada Clang, pero vamos a volver a eso en un
semana o el tiempo de dos.
>> Por ahora, sólo voy a escribir make hola-0, Pero aquellos de vosotros que estabais
comparando en sus mentes lo que acabo de escrito a lo que debería haber escrito puede
sé ya que lo hice algo mal aquí.
Ahora, claramente hay algunos errores.
Antes de que siquiera miro a lo que son, cualquier pensamientos acerca de lo que hice mal?
>> ESTUDIANTES: [VOCES interponiendo].
>> DAVID MALAN: Si.
Me falta el archivo de cabecera de la biblioteca.
Cualquiera de estos archivos. H se denominan encabezado archivos, y que colectivamente
pertenecer a cosas llamadas bibliotecas.
Las bibliotecas son sólo trozos de código que otras personas escribieron.
Así el estándar [? i] biblioteca? es un colección de archivos que contienen código
que otras personas escribieron.
>> Así que me falta eso.
Entonces, ¿por qué obtengo un error?
Bueno, déjame retroceder en mi ventana de terminal aquí.
Y, por desgracia, en C, como en una gran cantidad de lenguajes de programación, especialmente
si todo es nuevo para usted, el error mensajes son precisas, pero también son
bastante críptico.
Y el error aquí, en rojo, es "Declarando implícitamente la función de biblioteca
printf con el tipo ", y luego se desplaza a la siguiente línea, "int const char *,
... "Simplemente se pone realmente abrumadora rápidamente.
>> Pero lo que usted debe comenzar a hacer, si, nuevo, nuevo en todo esto, es sólo para
comenzar a buscar palabras clave.
Está claro que yo no podría entender la mitad de las palabras que estoy viendo por el momento.
Usted, sin embargo, en el tiempo de una semana.
Pero veo printf.
Y eso debería comenzar, en poco tiempo, a refresque la memoria, de acuerdo, printf.
Algo está mal con printf.
¿Escribí mal?
No, no se ve como - oh.
No puedo usarlo a menos que enseño el compilador que existe.
Y así, una vez más, sigue tus instintos, incluso si usted no entiende realmente
los mensajes de error reales.
>> Y, de hecho, la solución en este caso es simplemente incluirlo en la parte superior del archivo
así, volver a guardar mi archivo con Control-S o en el menú Archivo.
Y si ahora vuelvo aquí, Voy a aclarar esto.
Control-L es sólo una manera agradable para borrar la pantalla.
Y luego voy a escribir "hola hacer 0 "entrar, y ahora sigo sin ver una
secuencia críptica de símbolos, pero vamos a volver a eso.
Eso es lo que hace que está haciendo por usted.
Se automatizar el proceso de tomar un comando bastante molesto que implica
Clang, el compilador real.
Pero el hecho de que yo tengo de ninguna manera los errores que esto debería funcionar.
>> Así que ahora voy a hacer - déjame el zoom de nuevo -
./hello-0 entrar, y de hecho, no veo "Hola, mundo". Así que ahora vamos a mejorar
esta muy ligeramente sólo para replicar las medidas que pretendía.
Voy a cambiar el nombre de esta con Guardar como para hello1.c.
Y ahora me voy a declarar una variable nombre, el nombre de la cadena por lo que,
y me voy a poner en ella la valor entre comillas
D-A-V-I-D y coma close-quote.
Y ahora me voy a reemplazar "mundo" con lo que marcador de posición para una cadena?
% S.
>> Y ahora, ¿cuántos argumentos deben printf tomar este tiempo?
Así que dos.
Así que me voy fuera de las comillas.
Escribo "nombre", después de una coma.
Pero yo he hecho algo cosa mal esta vez.
Pero vamos a suponer que no lo hice darse cuenta de que todavía.
Déjame ir aquí.
>> Y fíjense, también, me estoy poniendo un poco aburrido de escribir "make hola 0" todo el
tiempo, "hacer" y todo esto.
Así, resulta que, en Linus puedas menudo golpeó la flecha hacia arriba en su
teclado, y en realidad se puede desplazar a través de todos los comandos que he
ejecutado antes de este momento.
Así que si hago eso, Arriba, Arriba, no hacen hola 0.
Yo no quiero eso.
Sólo quiero cambiar eso a hola 1 esta vez, Enter.
Con el tiempo, que se ahorrar algo de tiempo.
>> Está bien.
Desafortunadamente, no es un error.
Así que permítanme desplazarse hacia arriba.
Esto parece como si realmente masacrado este programa.
Quiero decir, mi dios, se trata de dos líneas de código, y sus 10 líneas de errores.
Pero mira el de arriba primero.
El uso de cadena de identificador no declarado.
¿Me refiero estándar i n?
No, no lo hice.
Me refería a la cadena.
>> Pero ¿dónde está la variable de cadena tipo declarado, DD decimos?
Así que es en el CS50 la biblioteca.
Por lo tanto, no es suficiente, en estos primeros par de semanas, sólo para usar
lo que C nos da.
También voy a subir aquí, y yo podría poner por encima o por debajo, pero lo voy a hacer
si prefieres algo alfabético para mantener las cosas en orden.
Voy a incluir cs50.h, que es pre-instalado para
que en el aparato CS50.
Y es de código abierto, por lo que incluso las personas en el Internet puede usarlo en su
ordenadores propios.
Pero viene con el aparato CS50.
>> Así que ahora déjame volver y volver a compilar esto con compone hola 1.
Maldita sea.
Aún otro error.
Permítanme desplazo hasta la primera, sin embargo.
Éste es un poco compleja.
Multi-carácter constante de caracteres.
Eso no me está ayudando.
Pero aviso, Clang es al menos un poco poco decente, por lo que con un poco de
acento circunflejo verde, que está diciendo aquí es donde la he cagado.
¿Por qué se apunta, con esa pequeña flecha verde, a la única oferta siguiente
a mi nombre?
>> Así que esta es una de las cosas que acaba de Hay que acostumbrarse a, especialmente si usted ha estado
programación en Python o JavaScript, o en otros idiomas, donde este detalle
no importa.
En C, sí importa.
Si declara una cadena, que es una secuencia de 0 o más caracteres,
en realidad se debe utilizar comillas dobles.
Así que en realidad necesito cambiar esto de nuevo para abrir la cita, cerca de la cita, con
comillas dobles.
Las comillas simples tienen su lugar, pero sólo cuando se está utilizando individuo
caracteres, pero más de eso en otro momento.
Por ahora, las comillas dobles son necesarios.
>> Así que ahora, déjame volver a mi terminal ventana, haga hola 1.
¿Y quién confía?
¿Este programa ahora va para compilar correctamente?
Aceptar.
Así que tres de nosotros piensa que eso.
Está bien.
Intro.
Y lo que realmente hizo.
Así que no hay ningún error esta vez, incluso aunque este programa ha vuelto un poco
más complejo.
Si yo ahora qué punto slash hola 1, Enter, que va a decir "hola, David."
>> Pero vamos a hacer la tercera iteración de este, en el que el
programa es realmente dinámica.
Déjenme seguir adelante y cambiar el archivo nombre, sólo por coherencia con el
archivos que usted tendrá disponible para que después en línea.
Intro.
Y ahora me voy a ir y no tienda de "David" duro codificado aquí.
¿Qué podía hacer para muy simple mejorar este programa?
>> Podría llamar a getString.
Puede ser que sea un poco lo de no evidente a punto de suceder, así que voy
para agregar realmente otra línea, printf, y diga el nombre, colon, cerca de cotización, tal
para dar al usuario un mensaje en la pantalla.
Y ahora me voy a ir aquí, y estoy va a usar mi atajo de teclado.
Voy a ir para arriba, para arriba, y el cambio hola hola 1 a 2, Enter.
Y gracias a Dios, estoy progresando.
>> Y ahora voy a subir poner los puntos sobre barra hola y
cambiar eso a 2, Enter.
Y ahora mi programa -
Voy a acercar un - es cada vez un poco más bonito.
Nombre va a ser, digamos Rob esta vez, Enter, hola, Rob.
Podemos hacerlo de nuevo.
Nombre, Lauren, Enter.
Nombre: José, Intro.
Nombre, vamos a tratar de ser difícil, Intro.
Eh.
En realidad no es un error.
Así que es un poco feo.
Así que tal vez podríamos resolver este en el futuro, no ahora.
>> Pero, ¿cómo lo haría instintivamente ir sobre la dirección de
ese desafío particular?
Sólo se ve estúpido.
¿Cómo evitar las cosas parecer estúpido?
Así que podríamos hacer, OK, he oído un par de las cosas, una condición y un bucle.
Nos vendría bien, uno, una condición, para comprobar lo que es la longitud de la cadena
el usuario nos dio?
Y si es 0, es sólo entre comillas, simplemente pulse Enter, luego
tal vez debería gritar en ellos y le pedirá de nuevo.
Pero, ¿cómo un símbolo de nuevo?
Bueno, yo también oído lazo, y yo pude hacer eso una y otra vez y otra vez
preguntar al usuario por la misma cosa.
>> Bueno, vamos a hacer otro ejemplo utilizando un diferente
funcionar en la biblioteca CS50.
Déjenme cerrar este archivo.
Voy a crear una nueva.
Y lo llamaré adder.c, sólo porque es fácil hacer la aritmética simple,
a pesar de que esta será completamente decepcionante, con lo que podría hacer
con cualquier ordenador moderno.
>> Pero déjame ir adelante ahora y -
He aprendido la lección la última vez - incluir cs50.h, incluir stdio.h, int
void main, que, por ahora, sólo voy a tomamos en la fe ciega, pero vamos a suponer
que va a entender lo que eso significa que en poco tiempo.
Y voy a decir algo como "dame un int."
>> Y ahora, ¿cómo puedo obtener un int?
Quiero declarar en última instancia una variable llamado x de tipo int y
almacenar en ella un número entero de al usuario.
Así que fue un bocado.
Pero si alguien quiere proponer, cómo yo anuncio un entero llamado x?
Int x.
>> Así que lo que realmente es así de simple.
Dame un int.
Llámalo x.
Ahora uso el operador de asignación.
¿Y cómo debo guardar desde el dejó un valor de usuario?
No quiero llamar a getString, obviamente, sino más bien getInt.
Cualquier argumento?
No.
Así que es paren abrir, cerrar paren inmediatamente, y luego un
punto y coma termina la línea.
>> Ahora déjame hacer esto de nuevo.
Dame otra int.
Esta vez lo haré int, vamos a llamar a, es igual getint.
Y ahora déjame hacer algo súper sencillo como algo de matemáticas.
Así printf, la suma de% d es la marcador de posición para un int.
Y% d, tiempo, barra invertida-n.
>> Está bien.
Así que eso no es realmente matemáticas.
Pero si quiero decir que la suma de esta valor más este valor es igual a este
otro valor, el número de argumentos en totales debería estar dando printf,
en última instancia?
Así que cuatro, ¿no?
Esta cadena y luego los tres valores.
Así que x es el primero que quiero ser enchufado por primera vez al% d.
y va a ser el próximo.
>> Y ahora como que quiero decir z, z, pero no existe.
Pero eso no es una gran cosa.
Porque, ¿qué harías por instinto, especialmente si has tenido una
calculadora gráfica, ¿qué es lo que escribe?
¿Qué hay de x más y?
Así que no es una variable real.
Es sólo la suma de dos otras variables.
Y eso es perfectamente legítimo.
C entiende ciertamente sencilla aritmética como este.
>> Punto y coma, ahorrar.
Ahora déjame bajar aquí y escribir make víbora, Intro.
No hay error, así que eso es progreso también.
Escriba víbora.
Y otro atajo de teclado, si usted comienza a aburrirse
con todos los comandos -
si comienza a escribir un comando, como punto slash anuncio, y ahí es donde su
aburrimiento entra en acción, por lo general puede golpear Tab para tener acabado el equipo del
resto de la frase para usted si no es lo ambiguo debe venir después del anuncio.
>> Así que déjame ir adelante ahora y hacer clic en Enter.
Dame un int, 1, 2, y gracias a Dios, que es 3.
Pero como siempre, poniendo a prueba los programas no debe reducir al
tratando una vez.
Déjame probar un caso de la esquina, como negativo 1, dame 1, y que uno
comprueba hacia fuera también.
Y probablemente quiero hacer algo más rigurosas pruebas, pero estoy bastante
cómodo con el lugar donde eso es a.
>> Bueno, ahora vamos a tratar de otro programa que esta vez utiliza un
poco de otra sintaxis.
Déjame crear un nuevo archivo.
Voy a llamar a este conditions0.c a la línea con un código de ejemplo en línea.
Y déjame seguir adelante y hacer incluir cs50.h, incluye
stdio.h, en void main -
Aceptar.
Eso es.
Tenemos nuestro texto modelo estándar.
>> Y esta vez lo voy a decir printf, "Me gustaría un int, por favor," sólo para
hacer que el indicador un poco más amigable.
Y ahora quiero conseguir una int del usuario.
Voy a llamarlo n este momento, sólo porque n suena como número.
getInt, y ahora, ¿qué hacer Lo que quiero hacer con él?
Bueno, si n es - y voy a hacer un zoom -
si n es mayor que 0, quiero para hacer lo siguiente -
printf "Usted escogió un número positivo." Si no, voy a escribir printf "Usted
elegido un negativo
número. "Muy bien.
Así que este programa, a pesar de que lo hice rápido, se ve bien sintácticamente.
Déjame probar esto.
Hacer condición 0.
Parece correrse.
Condición 0, entrar.
Vamos a darle un int de 50.
Cogí un número positivo.
Vamos a intentarlo de nuevo.
Condición 0.
Negativo 50.
Cogí un número negativo.
>> Pero ahora, vamos a escoger lo que vamos a seguir llamar a un caso de esquina, que es más
un interesante caso de que usted piensa podría darle un poco de problemas, 0.
Ahora, estoy bastante seguro de que este es uno de esos casos extremos donde es cero
ni positivo ni negativo, por lo que mi programa, aunque en sintácticamente
correcta - que compila, se ejecuta - no es lógicamente correcto.
Así que ¿cuál es la solución simple aquí si quiero para detectar, si quiero manejar n
es igual a 0 por separado?
>> Así que si n es igual a 0, entonces quiero decir algo así como printf "Usted cogió 0."
Déjame probar esto ahora.
Déjame volver aquí, claro mi ventana, y recompilar.
Hm.
Generar uno de error.
Pero yo te quiero comprobar si n es igual a 0.
>> Así que de nuevo, otra cosa estúpida para acostumbrarse a ellos, igual signo es
el operador de asignación.
Así que este es en realidad error en que, técnicamente, a pesar de que el compilador
me protegió de mí mismo, nos gustaría técnicamente ser copiado 0 en n, que
No es lo que quiero.
Quiero comprobar la igualdad con iguales iguales.
Y así que ahora podría ser mi mejor solución.
>> Déjame en realidad volver a guardar esto como, por ejemplo, condiciones1, sea nuevo y mejorado.
Así que ahora si a compilar este, tendría condiciones -
whoops - hacer slash dot condiciones1 condiciones1, ENTER, "Me gustaría un int,
por favor. "Voy a ir por delante y el tipo 50.
Sigue siendo bueno.
Negativo 50, sigue siendo buena.
0, y que, de hecho, detectada que recogí 0.
>> Entonces, ¿qué más puedo ahora hacer con esto?
Bueno, sin duda podemos hacer cada vez más cosas complejas.
Pero lo que me gustaría proponer es que terminamos en esta nota aquí.
Si nos detenemos esto, usted verá, tal vez, una caricatura favorite suya
hasta hoy en día se podría nunca han entendido.
Y eso es por la calidad de la risa usted debe conseguir con chistes CS.
Así que eso es correcto.
>> Pero lo más convincente, pensé que me había darnos un poco bromista para el lunes.
Así que hemos empezado a utilizar los números enteros.
Nos hemos referido a los flotadores.
Incluso nos hemos referido a los dobles, que, de nuevo, le dará los números
después decimales.
>> Pero resulta que flota y dobles, y, en realidad, las computadoras,
fundamentalmente, no pueden expresar algunos valores de precisión.
Sabemos por las clases de matemáticas que usted puede tener cualquier número de números después de la
punto decimal.
E incluso se puede poner una barra vertical decir que estos van para siempre.
>> Desafortunadamente, usted no puede realmente hacer eso en un ordenador.
Y así surgen casos de esquina.
Por ejemplo, supongamos que usted es haciendo algo financiera.
Lo estás haciendo matemáticas con porcentajes, y
con dólares y centavos.
Y esos centavos no lo hacen necesariamente alineados.
Bueno, resulta que las fracciones de centavos pueden empezar a sumar cuando
modelada con un sistema informático de tal manera que inteligente
los seres humanos pueden aprovechar.
>> Y aquellos de ustedes que no han visto, me gustaría darle un 30-segundo teaser del
una película maravillosa conocida como Office Space, que pintar un cuadro de un
problema que abordaremos Lo primero que el lunes.
Si pudiéramos aumentar el volumen un poco, te doy 30
segundos de espacio de oficinas.
>> [REPRODUCCIÓN DE VÍDEO]
>> -Quiero decir, usted, usted no ha estado mostrando y usted tiene que mantener su trabajo.
>> -En realidad, estoy siendo promovido.
>> -Yo podría programar un virus que había rasgar ese lugar a lo grande.
>> -Bueno, ¿cómo funciona?
>> -Cada vez que hay una transacción bancaria donde se calcula interés, y hay
miles al día, los extremos de ordenador con estas fracciones de un centavo.
>> -Pero yo no voy a hacer nada ilegal.
>> -Ilegal?
Samir, esto es Estados Unidos.
>> -Tenemos que jurar a Dios.
>> -Si nadie sabe de esto pero nosotros, ¿de acuerdo?
No hay miembros de la familia, no novias, nadie.
>> -Por supuesto.
>> -De acuerdo.
>> -No te preocupes, hombre.
No le diré a nadie.
>> [VIDEO PLAYBACK FIN]
>> DAVID MALAN: Así que este es, entonces, CS50, que fue espacio de oficina, y todo va a
tener sentido para el Lunes.
Nos vemos entonces.
>> NARRADOR: En la próxima CS50, Rob ajusta a estar fuera de la
Plan de comidas de Harvard.