1 00:00:00,000 --> 00:00:03,353 >> [Música tocando] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 DAVID Malan: Ola, todos. 4 00:00:06,050 --> 00:00:07,777 Este é supersection de CS50. 5 00:00:07,777 --> 00:00:09,860 Seccións atribuídas non vai comezar por unha semana. 6 00:00:09,860 --> 00:00:11,580 E así, hoxe, estou aquí com-- 7 00:00:11,580 --> 00:00:12,122 >> MARIA: María. 8 00:00:12,122 --> 00:00:14,163 DAVID Malan: --to realmente Bótalle un ollo problema 9 00:00:14,163 --> 00:00:16,110 definir un, o curso de primeiras semanas de material, 10 00:00:16,110 --> 00:00:19,780 se orientado con CS50 IDE, un pouco Linux, o sistema operativo que é 11 00:00:19,780 --> 00:00:22,290 rodando en IDE, así como ollar para algúns da transición 12 00:00:22,290 --> 00:00:25,730 a partir de cero para C liderado ata un conxunto de problemas. 13 00:00:25,730 --> 00:00:28,340 >> Así, sen máis delongas, nun conxunto de problemas, 14 00:00:28,340 --> 00:00:30,520 vai ser CS50 presentou a IDE, que 15 00:00:30,520 --> 00:00:33,230 é esta programación baseada en web ambiente que usamos en orde 16 00:00:33,230 --> 00:00:34,280 para escribir programas. 17 00:00:34,280 --> 00:00:37,280 Foi deseñado para ollar moi reminiscente dun ordenador típico 18 00:00:37,280 --> 00:00:39,430 sistema executando unha operación sistema chamado Linux. 19 00:00:39,430 --> 00:00:42,440 Pero é na chamada nube, o que significa que todos na clase 20 00:00:42,440 --> 00:00:45,100 pode realmente ter o seu propia conta e usalo, tamén. 21 00:00:45,100 --> 00:00:48,950 >> Así, a maioría de vostedes probablemente nunca usou un ambiente Linux antes ou que 22 00:00:48,950 --> 00:00:50,447 mesmo un ambiente de liña de comandos. 23 00:00:50,447 --> 00:00:52,280 E unha liña de comandos ambiente é diferente. 24 00:00:52,280 --> 00:00:53,200 É todo textual. 25 00:00:53,200 --> 00:00:54,730 É todo comandos de teclado. 26 00:00:54,730 --> 00:00:59,480 E non é mousing, hai iconas, sen fiestras de diálogo, non hai menús. 27 00:00:59,480 --> 00:01:00,212 É puramente texto. 28 00:01:00,212 --> 00:01:01,920 Así, nun primeiro momento, o tipo de se sente como un paso 29 00:01:01,920 --> 00:01:04,434 atrás en termos de sofisticación. 30 00:01:04,434 --> 00:01:06,600 Pero acaba sendo moi máis poderoso, certamente, 31 00:01:06,600 --> 00:01:08,510 para un científico da computación, en última instancia. 32 00:01:08,510 --> 00:01:09,540 >> Entón, imos dar un ollo. 33 00:01:09,540 --> 00:01:13,850 Aquí estou a CS50.io, a través do cal pode poñerse en CS50 IDE. 34 00:01:13,850 --> 00:01:17,414 E así como no scratch, hai tres áreas principais para esta pantalla. 35 00:01:17,414 --> 00:01:20,080 Así, na parte esquerda, temos o que vai ser o navegador de ficheiros. 36 00:01:20,080 --> 00:01:22,413 E hai esa carpeta no top, que é agora baleira 37 00:01:22,413 --> 00:01:24,690 dende que eu me librei de toda a miña arquivos antes supersection. 38 00:01:24,690 --> 00:01:27,599 E é aí onde nós imos gardar arquivos C que escribimos. 39 00:01:27,599 --> 00:01:30,890 Na parte superior dereita, temos un lugar onde todo o noso código se ve escrito. 40 00:01:30,890 --> 00:01:34,610 E, de feito, se eu premer este plus, esta permitirá que escolla Novo ficheiro. 41 00:01:34,610 --> 00:01:38,310 E aquí podo comezar a escribir código C ou, realmente, calquera número de outras linguas. 42 00:01:38,310 --> 00:01:42,670 >> E, a continuación, na parte inferior, onde di jharvard @ ide50-- e vostedes van 43 00:01:42,670 --> 00:01:45,080 dicir que un simple diferente-- o que foi este chamado? 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 Fiestra de terminal. 46 00:01:49,310 --> 00:01:49,570 Si. 47 00:01:49,570 --> 00:01:51,810 Así, a fiestra de terminal a liña de comandos chamada 48 00:01:51,810 --> 00:01:55,540 interface a través da cal se pode interactuar co sistema operativo subxacente. 49 00:01:55,540 --> 00:01:58,220 E, por agora, imos fan moi pouco uso isto-- 50 00:01:58,220 --> 00:02:01,170 só para compilar, para ollar mensaxes de erro que vemos, 51 00:02:01,170 --> 00:02:02,347 e para realizar os nosos programas. 52 00:02:02,347 --> 00:02:04,680 Pero, ao final, imos a facelo moito máis, tamén. 53 00:02:04,680 --> 00:02:07,490 E aínda pode instalar software e administrar o seu espazo de traballo 54 00:02:07,490 --> 00:02:09,066 dentro CS50 IDE, así. 55 00:02:09,066 --> 00:02:10,440 Pero máis sobre iso noutro momento. 56 00:02:10,440 --> 00:02:12,689 >> Entón, imos adiante e escribir un programa moi sinxelo só 57 00:02:12,689 --> 00:02:15,064 que pasar por un warm-up de ola.c, que é quizais 58 00:02:15,064 --> 00:02:16,480 o programa máis simple que podemos escribir. 59 00:02:16,480 --> 00:02:18,330 Eu xa abriu unha nova guía. 60 00:02:18,330 --> 00:02:24,310 Eu estou indo a ir adiante e din inclúen io.h. estándar 61 00:02:24,310 --> 00:02:25,325 Logo int main (void). 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 E entón printf ("Ola, mundo" barra invertida n, multimedia preto, 64 00:02:35,200 --> 00:02:39,480 pechar parénteses, e coma. 65 00:02:39,480 --> 00:02:39,990 >> Todo ben. 66 00:02:39,990 --> 00:02:41,700 Entón agora entender miña xanela é sen título. 67 00:02:41,700 --> 00:02:44,840 Entón, eu estou indo moi rápido para ir ata Arquivo, Gardar. 68 00:02:44,840 --> 00:02:46,910 E é importante que Eu chamo iso non "Ola". 69 00:02:46,910 --> 00:02:49,243 Así, un erro moi común, especialmente nun conxunto de problemas, 70 00:02:49,243 --> 00:02:52,530 é accidentalmente pode conectar ao seu programa "auga" ou "ganancioso" ou "Mario" 71 00:02:52,530 --> 00:02:53,890 ou "crédito" ou similar. 72 00:02:53,890 --> 00:02:55,970 Pero o que realmente quere facer se ten a extensión de ficheiro 73 00:02:55,970 --> 00:02:58,928 porque esta é a única forma que o compilador e tamén o editor de código 74 00:02:58,928 --> 00:03:00,710 sabe que é realmente escribindo código C. 75 00:03:00,710 --> 00:03:02,280 Entón deixe-me ir adiante e prema Gardar. 76 00:03:02,280 --> 00:03:05,710 >> E agora, tamén, o que CS50 IDE fixo por nós é tamén é 77 00:03:05,710 --> 00:03:07,120 sintaxe destaque todo. 78 00:03:07,120 --> 00:03:08,822 Entón, está feito todo moi colorido. 79 00:03:08,822 --> 00:03:10,780 E todo o propósito de que non é funcional. 80 00:03:10,780 --> 00:03:14,290 É só para deseñar os ollos para o conceptualmente diferentes pezas 81 00:03:14,290 --> 00:03:15,310 deste programa. 82 00:03:15,310 --> 00:03:17,570 Entón, imos adiante e compilar iso. 83 00:03:17,570 --> 00:03:19,490 E podo compilar este nun par de formas. 84 00:03:19,490 --> 00:03:22,010 E unha semana, o xeito old-school que fixemos 85 00:03:22,010 --> 00:03:26,250 era literalmente no mando linha-- "hello.c clang". 86 00:03:26,250 --> 00:03:27,596 E entón eu prema Intro. 87 00:03:27,596 --> 00:03:29,720 E nada parece ocorrer na ventá do terminal. 88 00:03:29,720 --> 00:03:32,654 Pero o que fixo o cambio no IDE? 89 00:03:32,654 --> 00:03:35,320 Onde, de novo, só significa IDE Integrated Development Environment. 90 00:03:35,320 --> 00:03:38,360 É un xeito elegante de dicir este desenvolvemento integrado 91 00:03:38,360 --> 00:03:40,620 ambiente para o desenvolvemento de software. 92 00:03:40,620 --> 00:03:42,477 Entón, o que cambiou na interface de usuario? 93 00:03:42,477 --> 00:03:44,310 O que notou que é diferente, María? 94 00:03:44,310 --> 00:03:47,100 >> MARIA: Eu notei algo baixo a IDE50 cartafol aquí. 95 00:03:47,100 --> 00:03:47,850 >> DAVID Malan: Yeah. 96 00:03:47,850 --> 00:03:50,230 Entón, aquí enriba, non só temos "hello.c". 97 00:03:50,230 --> 00:03:53,120 Tamén temos "a.out", que é tipo de nome mudo para un programa. 98 00:03:53,120 --> 00:03:56,430 Pero, en realidade, é o nome por defecto para un programa cando acaba de compilar o código 99 00:03:56,430 --> 00:03:59,110 e non dicir o compilador o ficheiro de saída. 100 00:03:59,110 --> 00:04:01,790 Entón, se eu queira realizar isto, eu Debe dicir ao compiler-- 101 00:04:01,790 --> 00:04:05,340 ou mellor, eu teño dicir o espazo de traballo que eu 102 00:04:05,340 --> 00:04:09,780 quere executar o programa chamado "a.out". 103 00:04:09,780 --> 00:04:10,550 Intro. 104 00:04:10,550 --> 00:04:12,474 E non hai "Ola, mundo ". Agora, o" ./ ". 105 00:04:12,474 --> 00:04:13,390 é realmente importante. 106 00:04:13,390 --> 00:04:16,050 Aínda que normalmente temos só escribir os nomes dos comandos, 107 00:04:16,050 --> 00:04:19,060 cando é un programa que escrito, quere dicir "./" 108 00:04:19,060 --> 00:04:22,460 porque que di explicitamente Linux que quere executar un programa chamado 109 00:04:22,460 --> 00:04:26,930 "a.out" que está neste, onde dot significa que este directorio que estou actualmente 110 00:04:26,930 --> 00:04:31,600 in, que pasa a ser chamado espazo de traballo, "a.out. 111 00:04:31,600 --> 00:04:35,410 Porque se eu só dixo: "a.out", Intro, Eu estou indo a obter "a.out comando non 112 00:04:35,410 --> 00:04:38,035 atopado "porque o Computador-- porque eu inventei "a.out"; 113 00:04:38,035 --> 00:04:40,910 el non veu co Computador-- non sabe onde mirar para el, 114 00:04:40,910 --> 00:04:43,590 aínda que sexa á dereita embaixo do meu nariz, por así dicir. 115 00:04:43,590 --> 00:04:44,090 Aceptar. 116 00:04:44,090 --> 00:04:49,910 Así poderiamos cambiar isto para ser "clang -o Ola hello.c". 117 00:04:49,910 --> 00:04:53,030 E se eu prema Intro, o programa é que isto vai saída para min? 118 00:04:53,030 --> 00:04:55,710 Cal é o nome do ficheiro? 119 00:04:55,710 --> 00:04:57,500 Si, na parte de atrás. 120 00:04:57,500 --> 00:04:58,479 Iso é certo. "Ola". 121 00:04:58,479 --> 00:05:00,520 Así, "Ola" será o nome do programa 122 00:05:00,520 --> 00:05:04,610 porque usamos un chamado argumento da liña de comandos, que é só 123 00:05:04,610 --> 00:05:08,120 un modo de cambiar o comportamento o compilador para realmente saída 124 00:05:08,120 --> 00:05:09,450 o nome do ficheiro específico. 125 00:05:09,450 --> 00:05:12,400 E, de feito, se eu aumentar para fóra, e mirar para arriba aquí, 126 00:05:12,400 --> 00:05:17,430 agora eu teño non só "a.out" e "hello.c", pero tamén "Ola", como ben. 127 00:05:17,430 --> 00:05:22,410 Entón agora podo facer "./hello," Enter. 128 00:05:22,410 --> 00:05:23,640 E non hai "Ola, mundo". 129 00:05:23,640 --> 00:05:25,640 Pero lastly-- e esta agora será a convención 130 00:05:25,640 --> 00:05:27,590 usan todo o semestre, typically-- 131 00:05:27,590 --> 00:05:30,070 é tamén pode simplemente dicir "facer Ola". 132 00:05:30,070 --> 00:05:33,370 E, de feito, está dicindo que é superior a data porque xa existe. 133 00:05:33,370 --> 00:05:37,860 Deixe-me ir adiante e eliminar, con o comando rm, tanto "a.out" - 134 00:05:37,860 --> 00:05:39,644 e dicir "eliminar a.out ficheiro regular?" 135 00:05:39,644 --> 00:05:41,810 Isto significa só que é vostede seguro de querer borralo? 136 00:05:41,810 --> 00:05:42,880 Eu vou dicir que si. 137 00:05:42,880 --> 00:05:46,690 E entón eu estou indo a eliminar "Ola", pero non "hello.c". 138 00:05:46,690 --> 00:05:49,920 Eu estou indo a dicir "si" explicitamente, pero de "y" é suficiente, como ben. 139 00:05:49,920 --> 00:05:52,140 >> E agora entender se eu escriba ls-- que, recall, 140 00:05:52,140 --> 00:05:55,540 significa lista-- el mostra todos dos arquivos no meu cartafol. 141 00:05:55,540 --> 00:05:57,850 E, de feito, se eu aumentar para fóra, e mire na esquina superior esquerda, 142 00:05:57,850 --> 00:05:59,730 confirma que o que é neste cartafol, mesmo 143 00:05:59,730 --> 00:06:04,990 aínda que é etiquetado como IDE50-se aquí e non espazo de traballo, é só "hello.c". 144 00:06:04,990 --> 00:06:09,152 Entón agora aquí abaixo, se eu que "facer Ola," Enter, 145 00:06:09,152 --> 00:06:12,360 agora vexo un comando moito máis tempo, pero un mando máis sofisticado que está pasando 146 00:06:12,360 --> 00:06:13,940 para ser útil nas semanas que virán. 147 00:06:13,940 --> 00:06:16,720 E agora podo dicir "./hello." 148 00:06:16,720 --> 00:06:19,257 >> Entón, imos dar un rápido paseo Ordes dalgún outro Linux. 149 00:06:19,257 --> 00:06:21,840 Entón por que non damos un paso para atrás e realmente ollar para C máis 150 00:06:21,840 --> 00:06:25,020 xeralmente, a transición desde cero a C, e, a continuación, completar cunha mirada 151 00:06:25,020 --> 00:06:27,305 no primeiro problema definido C. Todo ben. 152 00:06:27,305 --> 00:06:30,430 Entón, eu estou indo a ir adiante e só limpa o meu espazo de traballo con Control-L só 153 00:06:30,430 --> 00:06:31,429 para manter a pantalla limpa. 154 00:06:31,429 --> 00:06:33,520 Pero iso non ten funcional impacto doutra forma. 155 00:06:33,520 --> 00:06:35,820 >> Lembre que vimos algúns comandos agora. 156 00:06:35,820 --> 00:06:39,900 Entón vimos clang, que xeralmente se non terá que realizar manualmente máis. 157 00:06:39,900 --> 00:06:41,650 Nós en vez vou usar make. 158 00:06:41,650 --> 00:06:45,290 Pero vimos tamén ls, que mostra unha Lista dos ficheiros no meu directorio. 159 00:06:45,290 --> 00:06:48,750 E agora por que existen dúas há-- arquivos agora, "Ola" e "hello.c". 160 00:06:48,750 --> 00:06:52,240 Por que hai unha estrela ou un asterisco tras "Ola"? 161 00:06:52,240 --> 00:06:54,900 O que isto significa, en base no que vimos nunha semana? 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 Que pensas? 164 00:07:00,400 --> 00:07:02,742 O que a estrela significa? 165 00:07:02,742 --> 00:07:04,614 >> MARIA: For-- o programa "Ola"? 166 00:07:04,614 --> 00:07:05,530 DAVID Malan: "Ola *". 167 00:07:05,530 --> 00:07:06,330 Si. 168 00:07:06,330 --> 00:07:07,760 Ah, si? 169 00:07:07,760 --> 00:07:08,639 Oh, executable. 170 00:07:08,639 --> 00:07:09,180 Iso é certo. 171 00:07:09,180 --> 00:07:10,890 Entón isto significa que "Ola" é executable. 172 00:07:10,890 --> 00:07:13,430 Entón, en realidade, é por iso Podo facer "./hello." 173 00:07:13,430 --> 00:07:13,930 Todo ben. 174 00:07:13,930 --> 00:07:15,179 Entón, o que máis podo facer aquí? 175 00:07:15,179 --> 00:07:17,290 Ben, resulta que eu poida tamén crear directorios. 176 00:07:17,290 --> 00:07:20,924 Entón deixe-me ir adiante e crear, por exemplo, un directorio "pset1". 177 00:07:20,924 --> 00:07:23,590 E o problema especificación definida terá que facer exactamente iso, 178 00:07:23,590 --> 00:07:25,260 así que non ten que lembrar hoxe. 179 00:07:25,260 --> 00:07:27,340 Pero "pset1 mkdir" parece non ter ningún impacto. 180 00:07:27,340 --> 00:07:30,540 Pero, de novo, ningunha mensaxe de erro xeralmente é bo. 181 00:07:30,540 --> 00:07:34,060 Entón, se eu escribir "ls" agora-- ah, agora Eu teño un arquivo executable chamado 182 00:07:34,060 --> 00:07:36,570 "Ola", un arquivo C chamado "hello.c". 183 00:07:36,570 --> 00:07:40,860 E, a continuación, a barra final, por así falar, quere dicir que este é un directorio. 184 00:07:40,860 --> 00:07:42,510 >> Entón, en realidade, agora quero abrilo. 185 00:07:42,510 --> 00:07:45,730 E eu non facer dobre clic sobre el como nunha GUI, un ambiente gráfico. 186 00:07:45,730 --> 00:07:48,550 I en vez dicir "cd pset1." 187 00:07:48,550 --> 00:07:49,640 Intro. 188 00:07:49,640 --> 00:07:53,100 Nada interesante parece aconteceu, excepto o meu pequeno alerta 189 00:07:53,100 --> 00:07:57,300 aqui-- esta é a forma de Linux de lembrar me onde estou, entón o que carpeta é aberta. 190 00:07:57,300 --> 00:08:00,080 É só me dicir explicitamente en oposición a graficamente. 191 00:08:00,080 --> 00:08:05,100 E se eu escribir "ls", por que vexo outro solicitar inmediatamente, pensas que, 192 00:08:05,100 --> 00:08:07,269 cando incluír o contido pset1? 193 00:08:07,269 --> 00:08:09,310 MARIA: Probablemente non facer ten algo alí dentro. 194 00:08:09,310 --> 00:08:09,630 DAVID Malan: Yeah. 195 00:08:09,630 --> 00:08:11,510 Entón non temos obviamente creado algo alí dentro 196 00:08:11,510 --> 00:08:13,150 porque eu só creou o directorio. 197 00:08:13,150 --> 00:08:17,690 Agora, se eu quería crear un file-- para exemplo, eu podería crear un novo ficheiro. 198 00:08:17,690 --> 00:08:20,190 E entón eu podería ir Gardar e salva-o como, 199 00:08:20,190 --> 00:08:23,090 como, "mario.c" se está facendo a edición estándar do pset un. 200 00:08:23,090 --> 00:08:27,610 E entón, como calquera Mac ou PC, só escoller o "pset1 cartafol, Gardar. 201 00:08:27,610 --> 00:08:28,740 E agora o arquivo está baleiro. 202 00:08:28,740 --> 00:08:31,160 Pero imos facer zoom novo para un segundo. 203 00:08:31,160 --> 00:08:32,470 Imos facer ls aquí. 204 00:08:32,470 --> 00:08:34,470 Agora vemos "mario.c". 205 00:08:34,470 --> 00:08:37,850 >> Polo tanto, hai algúns outros comandos que paga a pena ter en conta ao longo do tempo-- 206 00:08:37,850 --> 00:08:41,200 claro, ou Control-L é o que eu teño foi bater; mkdir vimos; 207 00:08:41,200 --> 00:08:45,240 rm vimos, tamén, o que é para eliminar ou borrar un arquivo. 208 00:08:45,240 --> 00:08:49,310 Coidado pode Também-- e se ollar en tutoriais en liña, vai rm-rf 209 00:08:49,310 --> 00:08:52,630 é unha forma moi común de dicir eliminar un cartafol que ten cousas nel. 210 00:08:52,630 --> 00:08:54,280 Só ten que ser super, super coidadosa. 211 00:08:54,280 --> 00:08:58,780 rf significa de forma recursiva eliminar todo o que é 212 00:08:58,780 --> 00:09:01,150 estás eliminar e forzosamente excluílo. 213 00:09:01,150 --> 00:09:04,630 Entón recursiva medios se é un cartafol con un cartafol con un cartafol con un cartafol, 214 00:09:04,630 --> 00:09:05,690 eliminar todos eles. 215 00:09:05,690 --> 00:09:08,680 E forzosamente significa nin sequera preguntarme si ou non, estou seguro? 216 00:09:08,680 --> 00:09:11,960 Polo tanto, é un xeito super perigosa de borrar unha morea de cousas rapidamente. 217 00:09:11,960 --> 00:09:17,210 Pero beware-- demasiado frecuentemente fai un intrépido estudante borrar accidentalmente, digamos, pset 218 00:09:17,210 --> 00:09:18,000 un, por exemplo. 219 00:09:18,000 --> 00:09:19,833 >> MARIA: E no caso de que só facer -r, van 220 00:09:19,833 --> 00:09:21,870 para preguntar-lles sobre cada ficheiro único. 221 00:09:21,870 --> 00:09:22,790 >> DAVID Malan: Cal é moderadamente irritante. 222 00:09:22,790 --> 00:09:23,480 >> MARIA: Si. 223 00:09:23,480 --> 00:09:25,813 >> DAVID Malan: Entón é por iso moitos de nós, a auto incluído, 224 00:09:25,813 --> 00:09:27,070 teño o costume de utilizar o -rf. 225 00:09:27,070 --> 00:09:27,861 Pero é perigoso. 226 00:09:27,861 --> 00:09:29,010 Así, o comprador ten coidado. 227 00:09:29,010 --> 00:09:31,050 E entón mv é unha especie de curiosamente chamado. 228 00:09:31,050 --> 00:09:33,600 Entón que é o mando de movemento, que se sente un pouco raro 229 00:09:33,600 --> 00:09:37,260 porque realmente pode usalo para mover arquivos dun lugar a outro. 230 00:09:37,260 --> 00:09:39,970 Por exemplo, supoñamos que eu errei. 231 00:09:39,970 --> 00:09:43,660 Supoña que eu creei un novo ficheiro para o pset. 232 00:09:43,660 --> 00:09:46,320 E eu salva-lo como "greedy.c." 233 00:09:46,320 --> 00:09:49,970 Pero supoñamos que eu accidentalmente salve- en IDE50-- así no meu propio espazo de traballo 234 00:09:49,970 --> 00:09:51,580 e non en pset1. 235 00:09:51,580 --> 00:09:53,960 >> Podes ver tanto na esquina superior esquerda. 236 00:09:53,960 --> 00:09:55,284 Hai "greedy.c." 237 00:09:55,284 --> 00:09:56,450 E hai algunhas solucións. 238 00:09:56,450 --> 00:09:58,324 Entón, un, podo utilizar o forma agradable super- 239 00:09:58,324 --> 00:09:59,740 de só arrastrando e soltando o. 240 00:09:59,740 --> 00:10:01,910 E iso, en realidade, corrixir este problema. 241 00:10:01,910 --> 00:10:04,967 Pero hoxe, estamos intentando buscar as formas máis misteriosas, pero poderosas 242 00:10:04,967 --> 00:10:05,550 de facelo. 243 00:10:05,550 --> 00:10:07,880 Entón deixe-me tomar "ls" no pset1. 244 00:10:07,880 --> 00:10:09,690 E eu só vexo "mario.c." 245 00:10:09,690 --> 00:10:13,450 Deixe-me ir adiante e facer "cd ..". 246 00:10:13,450 --> 00:10:15,320 Entón CD novo é cambiar directorio. 247 00:10:15,320 --> 00:10:18,130 ".." Significa que, aínda? 248 00:10:18,130 --> 00:10:21,100 A última vez dixen "cd pset1 "para entrar en pset1. 249 00:10:21,100 --> 00:10:24,360 Polo tanto, cando digo "cd ..", o que estou facendo? 250 00:10:24,360 --> 00:10:24,910 Atrás. 251 00:10:24,910 --> 00:10:25,150 Si. 252 00:10:25,150 --> 00:10:26,750 >> Entón vai para o pai chamada. 253 00:10:26,750 --> 00:10:29,730 Ir un nivel superior, como saír dun cartafol. 254 00:10:29,730 --> 00:10:30,500 Entón Intro. 255 00:10:30,500 --> 00:10:31,900 E, de feito, mire o que fixo. 256 00:10:31,900 --> 00:10:37,070 Me cambiou só no espazo de traballo, no canto de en pset1, que é en espazo de traballo. 257 00:10:37,070 --> 00:10:39,710 E agora, se eu escribir "ls", hai unha morea de cousas. 258 00:10:39,710 --> 00:10:41,650 No existe "greedy.c". 259 00:10:41,650 --> 00:10:48,720 Entón, agora déixeme usar mv para, literalmente, mover "greedy.c" en pset1. 260 00:10:48,720 --> 00:10:51,120 E entón unha morea de comandos de Linux funcionan exactamente como este. 261 00:10:51,120 --> 00:10:54,470 Eles non teñen argumentos ou toman unha argumento ou toman dous liña de comandos 262 00:10:54,470 --> 00:10:55,449 argumentos e así por diante. 263 00:10:55,449 --> 00:10:57,240 E neste caso, é literalmente facendo o que 264 00:10:57,240 --> 00:11:01,670 el di que, aínda que succinctly-- mover greedy.c en pset1. 265 00:11:01,670 --> 00:11:02,310 Intro. 266 00:11:02,310 --> 00:11:03,310 Nada parece ocorrer. 267 00:11:03,310 --> 00:11:06,180 Pero se eu fai un ls novo, ganancioso está desaparecido. 268 00:11:06,180 --> 00:11:12,437 E se eu fai "cd pset1", Intro e, a continuación, ls novo, agora é o lugar seguro. 269 00:11:12,437 --> 00:11:14,270 Como un aparte, para algunha razón especial 270 00:11:14,270 --> 00:11:16,194 se ten intermitente liña de rede 271 00:11:16,194 --> 00:11:18,360 ou está camiñando por aí campus coa súa tapa do portátil 272 00:11:18,360 --> 00:11:20,180 pechada e, a continuación, abrilo de novo e do seu espazo de traballo 273 00:11:20,180 --> 00:11:21,730 parece un pouco fóra de sincronía, non é gran cousa. 274 00:11:21,730 --> 00:11:23,646 Só actualizar o seu navegador fiestra, e que debería 275 00:11:23,646 --> 00:11:26,339 resync de xeito que o lado esquerdo navegador de ficheiros parece exactamente 276 00:11:26,339 --> 00:11:27,380 como a ventá do terminal. 277 00:11:27,380 --> 00:11:27,921 Non se preocupe. 278 00:11:27,921 --> 00:11:31,460 En caso de dúbida, recargar a páxina, así desde que salvo os ficheiros xa. 279 00:11:31,460 --> 00:11:31,960 Aceptar. 280 00:11:31,960 --> 00:11:34,710 Entón mv tamén se pode usar para renomear arquivos. 281 00:11:34,710 --> 00:11:36,760 E imos dar un ollo este comando final aquí. 282 00:11:36,760 --> 00:11:39,950 Así suppose-- e esta é Super común, tamén, dende o principio. 283 00:11:39,950 --> 00:11:46,400 Algúns estudantes, en ocasións, crear un arquivo chamado, imos dizer-- o que é unha? 284 00:11:46,400 --> 00:11:47,730 Como "WATER.C." 285 00:11:47,730 --> 00:11:51,080 Entón eu vou berrar, para ningunha razón, en todo tapóns. 286 00:11:51,080 --> 00:11:53,190 Pero isto non é o nome correcto para o arquivo 287 00:11:53,190 --> 00:11:56,660 soamente porque o noso conxunto de problemas especificación non lle dixo 288 00:11:56,660 --> 00:11:59,430 para gardar o ficheiro como todas as tapas "WATER.C." 289 00:11:59,430 --> 00:12:01,320 Pola contra, esperamos "water.c" en minúsculas. 290 00:12:01,320 --> 00:12:03,140 E, de feito, este é problemático porque check50, 291 00:12:03,140 --> 00:12:04,370 un programa que vai reunirse en problema 292 00:12:04,370 --> 00:12:07,350 definir un que examina automaticamente a corrección do seu código 293 00:12:07,350 --> 00:12:11,615 vai berrar con vostede se non pode atopar "water.c" en todas as minúsculas. 294 00:12:11,615 --> 00:12:12,712 >> Entón, eu teño fixar iso. 295 00:12:12,712 --> 00:12:14,920 Tantos camiños diferentes para facelo, a primeira das cales 296 00:12:14,920 --> 00:12:18,330 sería a de Control prema co botón dereito do rato ou o nome do ficheiro e só cambiar Renomear. 297 00:12:18,330 --> 00:12:19,740 Totalmente ben para facelo. 298 00:12:19,740 --> 00:12:21,820 Pero, de novo, hoxe, imos facelo un pouco máis extravagante. 299 00:12:21,820 --> 00:12:26,680 Imos usar mv para cambiar "WATER.C" a "water.c." 300 00:12:26,680 --> 00:12:30,690 Entón, tamén se pode usar o primeiro argumento renome-lo para o segundo argumento 301 00:12:30,690 --> 00:12:34,455 o segundo argumento non, está realidade, un cartafol ou un nome de directorio. 302 00:12:34,455 --> 00:12:35,120 >> Todo ben. 303 00:12:35,120 --> 00:12:39,560 E, por último, un pouco trick-- polo que estou en meu directorio do espazo de traballo no momento. 304 00:12:39,560 --> 00:12:43,660 Se eu queira entrar nun pset, Eu certamente podo escribir "cd pset1." 305 00:12:43,660 --> 00:12:47,260 Pero é tan tedioso para escribir "pset1" ou máis nomes de ficheiros ou nomes de directorio 306 00:12:47,260 --> 00:12:47,980 aínda. 307 00:12:47,980 --> 00:12:51,960 Entón, moitas veces en Linux, que podes facer é comezar a escribir "PSE" 308 00:12:51,960 --> 00:12:56,100 e só se cansar, Tab bater, e deixá- a figura de ordenador para fóra para ti. 309 00:12:56,100 --> 00:12:58,190 Super útil para entrar na ese hábito. 310 00:12:58,190 --> 00:13:01,079 O único problema é se ten varios arquivos ou carpetas dende 311 00:13:01,079 --> 00:13:02,870 coa letra "P" ou "ps", pode que 312 00:13:02,870 --> 00:13:05,525 para escribir un pouco máis antes de ordenador sabe o que facer. 313 00:13:05,525 --> 00:13:06,820 >> MARIA: Gústanos atallos. 314 00:13:06,820 --> 00:13:08,695 >> DAVID Malan: Esta vontade aforrar moito tempo. 315 00:13:08,695 --> 00:13:11,930 E tamén, como dixemos na clase, pode rolar para arriba na historia, para arriba e abaixo, 316 00:13:11,930 --> 00:13:15,461 para atopar recentemente executada comandos, como ben. 317 00:13:15,461 --> 00:13:15,960 Todo ben. 318 00:13:15,960 --> 00:13:20,904 Entón, agora, imos voltar a nosa atención ao para un programa sinxelo, Ola mundo. 319 00:13:20,904 --> 00:13:22,195 Entón, nós compilamos esta exactamente. 320 00:13:22,195 --> 00:13:24,050 E agora, por que non tomamos un ollar para os tipos de datos 321 00:13:24,050 --> 00:13:26,776 e, a continuación, a transición de algunha correspondente bloques cero para C. 322 00:13:26,776 --> 00:13:27,400 MARIA: Awesome. 323 00:13:27,400 --> 00:13:30,031 Polo tanto, agora que comezou escribir programas en C, 324 00:13:30,031 --> 00:13:32,530 imos comezar a falar sobre tipos de datos e variables. 325 00:13:32,530 --> 00:13:37,570 Así, algúns tipos de datos que gustaríame saber a partir de agora 326 00:13:37,570 --> 00:13:39,400 son os que son destacada en azul. 327 00:13:39,400 --> 00:13:42,420 Polo tanto, temos int en primeiro lugar, que significa enteiro. 328 00:13:42,420 --> 00:13:46,075 E que mantén enteiros, como Pode que guessed-- para 1, 2, 3, 329 00:13:46,075 --> 00:13:47,950 e outros enteiros que pode pensar. 330 00:13:47,950 --> 00:13:48,730 >> DAVID Malan: E tamén negativo. 331 00:13:48,730 --> 00:13:50,220 >> MARIA: E tamén os negativos, si. 332 00:13:50,220 --> 00:13:51,450 E 0. 333 00:13:51,450 --> 00:13:54,250 Entón temos Carrozas, que son números de punto flotante. 334 00:13:54,250 --> 00:13:58,360 Entón, iso é todo números reais que teñen puntos decimais. 335 00:13:58,360 --> 00:14:03,960 Entón, 5.0, 5.2, e aínda máis díxitos despois do punto decimal, 336 00:14:03,960 --> 00:14:05,620 ben, e tamén os negativos. 337 00:14:05,620 --> 00:14:07,530 Entón temos de char que é un personaxe. 338 00:14:07,530 --> 00:14:10,240 Entón eu creo que falamos de isto charla hoxe. 339 00:14:10,240 --> 00:14:15,682 Pero temos cartas, para example-- A, B, C-- que pode ser almacenado como un char. 340 00:14:15,682 --> 00:14:18,390 Pero, entón, temos moito máis símbolos que pode ser almacenado como un char. 341 00:14:18,390 --> 00:14:22,380 E os almacénanse como ASCII. 342 00:14:22,380 --> 00:14:25,280 >> E entón temos bool, que son Booleans. 343 00:14:25,280 --> 00:14:29,067 E os avaliar como True ou Falso ou 1 e 0 respectivamente. 344 00:14:29,067 --> 00:14:31,650 DAVID Malan: E lembre que booleano vén desde a biblioteca CS50. 345 00:14:31,650 --> 00:14:33,300 Polo tanto, non está construído en C, pero é super útil 346 00:14:33,300 --> 00:14:34,850 para ter a noción de certo e falso. 347 00:14:34,850 --> 00:14:36,990 E aínda que pode penso-- feito divertido. 348 00:14:36,990 --> 00:14:43,700 Un bool tecnicamente precisa cantos bits, verdadeiramente, para representar certo contra Falso? 349 00:14:43,700 --> 00:14:47,910 Cantos bits pensas necesitará dun máximo? 350 00:14:47,910 --> 00:14:48,790 Si, só un. 351 00:14:48,790 --> 00:14:52,077 Así, verifícase que C non pode dar-lle só un pouco. 352 00:14:52,077 --> 00:14:54,160 A menor unidade de medida pode obter é oito. 353 00:14:54,160 --> 00:14:57,090 Entón é un pouco unha perda que é utilizando un byte de toda, ou oito bits, 354 00:14:57,090 --> 00:14:58,340 para representar Verdadeiro ou Falso. 355 00:14:58,340 --> 00:15:01,807 Pero iso é só a forma que é aplicado en C na biblioteca de CS50. 356 00:15:01,807 --> 00:15:04,890 MARIA: E entón os que estamos non vai falar sobre como extensivamente 357 00:15:04,890 --> 00:15:08,060 agora-- dereito dobre, isto é para Carrozas maiores. 358 00:15:08,060 --> 00:15:09,811 Longo longo e curto son tamén para números enteiros. 359 00:15:09,811 --> 00:15:10,643 DAVID Malan: De feito. 360 00:15:10,643 --> 00:15:13,190 Na edición de hackers de pset un, nós realmente usar longo, longo. 361 00:15:13,190 --> 00:15:15,801 Pero para a edición estándar, que non deben ser necesarias. 362 00:15:15,801 --> 00:15:16,300 MARIA: Cool. 363 00:15:16,300 --> 00:15:17,361 Aceptar. 364 00:15:17,361 --> 00:15:20,110 Entón ten que ser operators-- Probablemente está familiarizado coa maioría destes. 365 00:15:20,110 --> 00:15:22,620 Adicionalmente, +; resta, -. 366 00:15:22,620 --> 00:15:24,070 Para a multiplicación, ten por *. 367 00:15:24,070 --> 00:15:25,900 Polo tanto, non o X que adoitamos empregar. 368 00:15:25,900 --> 00:15:27,840 División, temos a barra invertida. 369 00:15:27,840 --> 00:15:31,380 E módulo é o noso último operador que imos falar agora. 370 00:15:31,380 --> 00:15:35,610 É un operador que nos permite levar o resto dunha división. 371 00:15:35,610 --> 00:15:40,630 Entón, se temos 4% 2, 4 dividido por 2 é 2 cun resto de 0. 372 00:15:40,630 --> 00:15:41,740 Así 4% 2? 0. 373 00:15:41,740 --> 00:15:42,950 4% 3 é 1. 374 00:15:42,950 --> 00:15:44,870 4% 5 é de 4, como podería ter imaxinado. 375 00:15:44,870 --> 00:15:48,860 E recorda se cando se utiliza todos estes os operadores a utilizaren as normas PEMDAS. 376 00:15:48,860 --> 00:15:54,060 >> DAVID Malan: Entón, para ser claro, se facer 2 a 4%, por que é que 0, exactamente? 377 00:15:54,060 --> 00:15:57,480 >> MARIA: Por 4 dividido por 2 é 2 cun resto de 0. 378 00:15:57,480 --> 00:16:00,752 Entón modulo dános esa resto como oposición ao resultado da división. 379 00:16:00,752 --> 00:16:02,960 DAVID Malan: E, de feito, o que imos atopar este útil 380 00:16:02,960 --> 00:16:05,640 para é que en algúns problemas iso non é necesariamente un, 381 00:16:05,640 --> 00:16:08,040 se quere ter o efecto restrinxir-se 382 00:16:08,040 --> 00:16:10,720 para unha gama de números como 0 a algo, 383 00:16:10,720 --> 00:16:13,904 pode utilizar o módulo para embrulhar arredor máis cedo do que como a 2 mil millóns 384 00:16:13,904 --> 00:16:16,320 ou o valor de 4 millóns que falamos sobre a charla. 385 00:16:16,320 --> 00:16:16,870 >> MARIA: Si. 386 00:16:16,870 --> 00:16:19,429 E mesmo en "ganancioso", poderiamos. 387 00:16:19,429 --> 00:16:21,345 DAVID Malan: Si, en un conxunto de problemas, tamén. 388 00:16:21,345 --> 00:16:22,520 MARIA: Si, bo. 389 00:16:22,520 --> 00:16:24,340 DAVID Malan: Boa información. 390 00:16:24,340 --> 00:16:25,750 MARIA: Sentímolo. 391 00:16:25,750 --> 00:16:28,590 Boolean expressions-- así para os operadores booleanos, 392 00:16:28,590 --> 00:16:31,770 imos falar sobre todo deses que ve aquí. 393 00:16:31,770 --> 00:16:35,310 Entón, agora temos dous sinais de igual recollidos para iguais. 394 00:16:35,310 --> 00:16:38,650 Polo tanto, estas son para comparación. 395 00:16:38,650 --> 00:16:40,830 Ata agora, só vin un sinal de igual. 396 00:16:40,830 --> 00:16:44,870 Isto é cando atribuímos un valor a unha variable. 397 00:16:44,870 --> 00:16:50,160 Entón, se nós vimos int n = 5, a continuación, temos asignado 5 para a variable n. 398 00:16:50,160 --> 00:16:55,600 Pero, se queremos usar == para comparación, podemos comprobar que n == 5. 399 00:16:55,600 --> 00:16:58,310 E se n == 5, a continuación, iso é verdade. 400 00:16:58,310 --> 00:17:01,950 >> Así, os operadores booleanos permítennos basicamente 401 00:17:01,950 --> 00:17:04,670 para avaliar booleano expresións como True ou False. 402 00:17:04,670 --> 00:17:07,819 Polo tanto, non temos a equals-- signo de admiración e iguais. 403 00:17:07,819 --> 00:17:14,240 Entón, nós tamén podería comprobar que n non é igual a 5-- así n! = 5. 404 00:17:14,240 --> 00:17:17,640 Menos que, a menos que ou igual a, maior que, maior que ou igual a, 405 00:17:17,640 --> 00:17:20,720 e, a continuación, temos a lóxica AND e OR lóxico. 406 00:17:20,720 --> 00:17:24,060 E os nos permiten avaliar múltiples expresións booleanas xuntos 407 00:17:24,060 --> 00:17:27,930 para vir xunto como basicamente Toda unha expresión booleana. 408 00:17:27,930 --> 00:17:34,970 Polo tanto, se queremos atopar un número, por exemplo, que é maior que 5 pero menor que 15 409 00:17:34,970 --> 00:17:39,810 á vez, queremos usar o E lóxico operador para ver se n é 410 00:17:39,810 --> 00:17:42,937 maior que 5 && n inferior a 15. 411 00:17:42,937 --> 00:17:44,770 DAVID Malan: E aquí, tamén, é realmente fácil 412 00:17:44,770 --> 00:17:47,290 a comezos para accidentalmente usar só un único e comercial 413 00:17:47,290 --> 00:17:48,572 ou unha única barra vertical. 414 00:17:48,572 --> 00:17:51,280 E espero que o compilador berrar con vostede, porque realmente 415 00:17:51,280 --> 00:17:52,530 ten un significado moi diferente. 416 00:17:52,530 --> 00:17:55,660 Para os curiosos, son usado para operacións bit a bit, 417 00:17:55,660 --> 00:17:57,197 operando en anacos individuais. 418 00:17:57,197 --> 00:17:58,780 Pero quere que o par deles aquí. 419 00:17:58,780 --> 00:18:01,560 E super importante é que primeiro, o signo igual, 420 00:18:01,560 --> 00:18:05,270 que é o operador de igualdade como oposición ao operador de asignación. 421 00:18:05,270 --> 00:18:08,552 >> MARIA: E a barra vertical é situado entre o Borrar e Retorno. 422 00:18:08,552 --> 00:18:09,260 DAVID Malan: Si. 423 00:18:09,260 --> 00:18:11,420 Nun teclado típico dos Estados Unidos. 424 00:18:11,420 --> 00:18:13,190 >> MARIA: Si. 425 00:18:13,190 --> 00:18:15,890 Entón, imos saltar directo para instrucións condicionais. 426 00:18:15,890 --> 00:18:18,300 En risco, ten xa visto probablemente 427 00:18:18,300 --> 00:18:22,730 as declaracións que lle permiten comprobar que algo é certo, entón 428 00:18:22,730 --> 00:18:23,660 facer outra cousa. 429 00:18:23,660 --> 00:18:28,410 Entón podes querer para comprobar se o seu sprite é 430 00:18:28,410 --> 00:18:31,410 tocar algunha outra entidade gráfica ou o bordo da pantalla. 431 00:18:31,410 --> 00:18:35,520 E entón podería querer rematar o xogo ou facer outra cousa. 432 00:18:35,520 --> 00:18:40,000 Así, para que a sintaxe é "if (condición)." 433 00:18:40,000 --> 00:18:46,820 Polo tanto, se o seu sprite está tocando algo, non é dentro das chaves. 434 00:18:46,820 --> 00:18:48,980 >> Entón temos declaracións if-else. 435 00:18:48,980 --> 00:18:54,080 Else permítenos facer algo A condición de que 436 00:18:54,080 --> 00:18:55,870 comprobar que hai no inicio non é verdade. 437 00:18:55,870 --> 00:19:01,530 Polo tanto, se o sprite está tocando o border facelo, senón facer outra cousa. 438 00:19:01,530 --> 00:19:04,030 Así, se non, facer outra cousa. 439 00:19:04,030 --> 00:19:07,530 Entón, temos un pequeno exemplo para isto. 440 00:19:07,530 --> 00:19:11,551 Así, se (military_time <12), nos quere printf "Bos días" 441 00:19:11,551 --> 00:19:13,300 Else imos printf "Boa noite!" 442 00:19:13,300 --> 00:19:14,860 Exemplo básico. 443 00:19:14,860 --> 00:19:15,680 >> DAVID Malan: Good. 444 00:19:15,680 --> 00:19:16,760 >> MARIA: Cool. 445 00:19:16,760 --> 00:19:18,560 Polo tanto, agora temos instrucións switch. 446 00:19:18,560 --> 00:19:21,960 Alterne declaracións en lata xeral permítennos facer unha chea de o mesmo 447 00:19:21,960 --> 00:19:25,070 que acabamos de falar sobre con que declaracións. 448 00:19:25,070 --> 00:19:29,440 Por exemplo, agora temos a forma xeral da instrución switch 449 00:19:29,440 --> 00:19:33,870 que nos permite tomar unha variable chamada n 450 00:19:33,870 --> 00:19:37,670 e comparalo con unha morea de valores distintos, que aquí 451 00:19:37,670 --> 00:19:40,010 chamar CONSTANT1, constant2. 452 00:19:40,010 --> 00:19:41,150 Podemos ter moito máis. 453 00:19:41,150 --> 00:19:42,930 E os chámanse casos. 454 00:19:42,930 --> 00:19:46,280 >> Entón, se temos unha chave statement-- e funciona 455 00:19:46,280 --> 00:19:50,580 só para integers-- temos un variable, neste caso, que é n. 456 00:19:50,580 --> 00:19:53,840 A variable n é igual a CONSTANT1, nós 457 00:19:53,840 --> 00:19:59,720 executará algún fragmento de código ou algo que queremos facer. 458 00:19:59,720 --> 00:20:01,280 E entón nós ía romper. 459 00:20:01,280 --> 00:20:04,820 Polo tanto, a pausa significa que a instrución switch 460 00:20:04,820 --> 00:20:08,120 ha parar a execución se n é igual a CONSTANT1, 461 00:20:08,120 --> 00:20:09,752 e, a continuación, o programa seguirá. 462 00:20:09,752 --> 00:20:11,835 Ha saír fóra da cambiar declaración e vai 463 00:20:11,835 --> 00:20:13,520 seguir facendo outra cousa. 464 00:20:13,520 --> 00:20:17,204 >> Se, con todo, n non é igual CONSTANT1, entón caso para constant2 465 00:20:17,204 --> 00:20:17,870 verificarase. 466 00:20:17,870 --> 00:20:21,750 Así, se n é igual a constant2, que outra fragmento de código será executado. 467 00:20:21,750 --> 00:20:23,850 E entón el vai romper que é igual a el. 468 00:20:23,850 --> 00:20:27,580 E entón podemos ter Também-- non necesariamente, embora-- un caso por defecto, 469 00:20:27,580 --> 00:20:32,290 que vai pasar se n non é igual a calquera dos casos que alistou. 470 00:20:32,290 --> 00:20:35,400 E, no caso estándar, nós tamén non necesariamente precisa dunha pausa 471 00:20:35,400 --> 00:20:39,271 porque a instrución switch saberá que necesita para rematar despois do default 472 00:20:39,271 --> 00:20:40,270 caso se ese é o caso. 473 00:20:40,270 --> 00:20:42,140 >> DAVID Malan: Pero estilisticamente, sempre poñelas alí. 474 00:20:42,140 --> 00:20:42,540 >> MARIA: Si. 475 00:20:42,540 --> 00:20:42,710 >> DAVID Malan: Yeah. 476 00:20:42,710 --> 00:20:44,750 Entón, sobre todo cando se inicia, especialmente nos menores 477 00:20:44,750 --> 00:20:47,458 cómodo, eu persoalmente só recomendo ir con o IFS 478 00:20:47,458 --> 00:20:51,564 IFS e elses correo if-else-if-elses etc. que 479 00:20:51,564 --> 00:20:53,480 porque son un pouco máis simple. 480 00:20:53,480 --> 00:20:56,142 Este é un bo optimization, ou ás veces incluso estéticamente 481 00:20:56,142 --> 00:20:57,350 fai o código máis lexible. 482 00:20:57,350 --> 00:20:59,599 E, de feito, probablemente medio do semestre imos ver un problema 483 00:20:59,599 --> 00:21:02,504 definir onde só queda mellor e máis fácil de ler para os humanos 484 00:21:02,504 --> 00:21:03,670 usando unha instrución switch. 485 00:21:03,670 --> 00:21:05,460 Pero non se preocupe agarrándose a esta moi cedo. 486 00:21:05,460 --> 00:21:05,680 >> MARIA: Si. 487 00:21:05,680 --> 00:21:08,840 Se tes unha morea de if, non pode ser só moi lexible. 488 00:21:08,840 --> 00:21:10,965 Pode non ser moi rápido para que poida pasar por iso. 489 00:21:10,965 --> 00:21:13,230 Así, as declaracións poden cambiar ser moi útil, así. 490 00:21:13,230 --> 00:21:17,900 E tamén, non recorde-- non facer esqueza poñer as quebras de alí. 491 00:21:17,900 --> 00:21:20,330 >> DAVID Malan: Non lembrar diso. 492 00:21:20,330 --> 00:21:24,890 >> MARIA: Por entón podes caer a través dun caso a outro. 493 00:21:24,890 --> 00:21:27,930 Entón, imos dicir que se CONSTANT1 Non ten unha instrución break nel. 494 00:21:27,930 --> 00:21:31,920 Entón podemos caer caso constant2 dentro. 495 00:21:31,920 --> 00:21:35,070 E nós non queremos facelo se que xa chegou a caso CONSTANT1 496 00:21:35,070 --> 00:21:37,830 e é igual a n. 497 00:21:37,830 --> 00:21:45,100 >> Así, por exemplo, se temos unha variable n que contén un número de clase, 498 00:21:45,100 --> 00:21:48,990 e queremos ver que que clase é-- Se n é igual a 50, 499 00:21:48,990 --> 00:21:51,957 nós estamos indo a imprimir "é CS50 Introdución á Ciencia da Computación I. " 500 00:21:51,957 --> 00:21:53,040 Entón imos romper. 501 00:21:53,040 --> 00:21:53,920 E é iso. 502 00:21:53,920 --> 00:21:55,950 Se, con todo, n é igual para 51, nós imos 503 00:21:55,950 --> 00:21:58,494 imprimir "CS51 é Introdución a Ciencia da Computación II. " 504 00:21:58,494 --> 00:21:59,910 Entón, de novo, nós imos romper. 505 00:21:59,910 --> 00:22:05,080 Con todo, se, a continuación, poñemos 124, 61, calquera outro número que pode pensar, 506 00:22:05,080 --> 00:22:06,890 ou programa non vai de recoñecer que. 507 00:22:06,890 --> 00:22:09,010 Entón, que vai dicir: "Sentímolo, eu son non familiarizados con esta clase. " 508 00:22:09,010 --> 00:22:10,009 E vai romper. 509 00:22:10,009 --> 00:22:12,847 DAVID Malan: Entón pode realmente ver o if, else if, else idea aquí. 510 00:22:12,847 --> 00:22:15,430 É só sintaxe distinta para expresando a mesma idea exacta. 511 00:22:15,430 --> 00:22:17,690 >> MARIA: Exactamente. 512 00:22:17,690 --> 00:22:19,480 Agora temos os nosos operadores ternários. 513 00:22:19,480 --> 00:22:24,900 Así, os operadores teñen ternários tres parts-- unha condición, 514 00:22:24,900 --> 00:22:27,220 algo para facer se esta condición é certa, 515 00:22:27,220 --> 00:22:29,730 e, a continuación, algo que ver se esa condición é falsa. 516 00:22:29,730 --> 00:22:33,400 Entón ve, basicamente, A sintaxe de que aquí. 517 00:22:33,400 --> 00:22:37,792 Temos o punto de interrogación, e as-- entón o que chamamos iso? 518 00:22:37,792 --> 00:22:38,750 DAVID Malan: O colon. 519 00:22:38,750 --> 00:22:39,100 MARIA: Colón. 520 00:22:39,100 --> 00:22:39,599 Grazas. 521 00:22:39,599 --> 00:22:41,880 Desculpe. 522 00:22:41,880 --> 00:22:45,800 Entón, imos ollar para o noso exemplo para ver se podemos dar sentido a isto-- 523 00:22:45,800 --> 00:22:47,840 class_num == 50. 524 00:22:47,840 --> 00:22:52,580 Entón, aquí vemos o noso operador booleano == que compara a class_num variable 525 00:22:52,580 --> 00:22:53,100 a 50. 526 00:22:53,100 --> 00:22:55,150 Tendas Entón class_num un enteiro. 527 00:22:55,150 --> 00:22:58,180 E se ese enteiro é igual a 50, entón nós estamos 528 00:22:58,180 --> 00:23:02,810 indo para almacenar "David Malan" no interior do profesor de cadea. 529 00:23:02,810 --> 00:23:05,912 Se o número de clase non fai igual a 50, "non David Malan" 530 00:23:05,912 --> 00:23:07,120 será o profesor. 531 00:23:07,120 --> 00:23:08,630 >> DAVID Malan: Grazas. 532 00:23:08,630 --> 00:23:12,110 E así, este parece equivalente a o que, diría que, a primeira vista? 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> MARIA: Para min parece como if-else declaracións. 535 00:23:19,960 --> 00:23:20,709 >> DAVID Malan: Yeah. 536 00:23:20,709 --> 00:23:24,020 E, de feito, este é o tipo dunha linda un forro, 537 00:23:24,020 --> 00:23:27,520 por así dicir, para a posta en marcha de exactamente a lóxica de if-else 538 00:23:27,520 --> 00:23:29,010 pero facendo todo nunha única etapa. 539 00:23:29,010 --> 00:23:29,860 >> MARIA: Exactamente. 540 00:23:29,860 --> 00:23:30,360 Si. 541 00:23:30,360 --> 00:23:33,520 Polo tanto, se as declaracións máis poi- incorporarse unha morea de espazo. 542 00:23:33,520 --> 00:23:36,283 Poden ser moi longo para algo tan sinxelo coma iso. 543 00:23:36,283 --> 00:23:38,350 Entón, iso pode ser moi sucinta e moi agradable. 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 Entón, agora imos en ollar execución de algo novo e de novo, 546 00:23:46,820 --> 00:23:50,060 polo tanto, a comprobación por un condicionar varias veces 547 00:23:50,060 --> 00:23:53,510 e, a continuación, continuar a facer algo mentres que a condición é verdadeira. 548 00:23:53,510 --> 00:23:56,740 Entón, iso nos trae moi ben en loops de tempo. 549 00:23:56,740 --> 00:23:59,270 >> Á esquerda, temos noso primeiro bucle while. 550 00:23:59,270 --> 00:24:03,840 Así, mentres algo é certo, facer algo de novo e de novo. 551 00:24:03,840 --> 00:24:08,850 Entón asegúrese notar que a nosa condición aquí é validado na parte superior. 552 00:24:08,850 --> 00:24:14,150 Tendo en conta que, coa nosa segunda loop-- chamamos que un do-while loop-- facemos algo, 553 00:24:14,150 --> 00:24:15,890 entón comprobar se hai unha condición. 554 00:24:15,890 --> 00:24:17,980 E se esa condición segue a ser verdade, 555 00:24:17,980 --> 00:24:20,150 Imos volver e facer as cousas de novo. 556 00:24:20,150 --> 00:24:23,360 Así, a principal diferenza é onde a condición é posible para. 557 00:24:23,360 --> 00:24:29,260 E o código non pode ser executado se a condición non é 558 00:24:29,260 --> 00:24:30,430 certo co loop while. 559 00:24:30,430 --> 00:24:33,050 Considerando que, co do-while loop, temos o código 560 00:24:33,050 --> 00:24:35,380 que sempre executado polo menos unha vez. 561 00:24:35,380 --> 00:24:37,470 E, a continuación, mentres a condición segue a ser verdade, 562 00:24:37,470 --> 00:24:39,960 podemos volver e facer unha iteración novo dentro. 563 00:24:39,960 --> 00:24:43,625 Entón, por que pensas que usariamos un do-while loop sobre un loop while? 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 Dereita. 566 00:24:48,720 --> 00:24:52,600 Polo tanto, se queremos para solicitar ao usuario para algún tipo de entrada, 567 00:24:52,600 --> 00:24:55,400 se queremos pedirlles para introducir o seu nome, 568 00:24:55,400 --> 00:24:57,342 queremos pedir-lles, polo menos, unha vez máis. 569 00:24:57,342 --> 00:24:59,050 E no caso de que entrar ese nome, non somos 570 00:24:59,050 --> 00:25:00,740 imos pedir-los de novo porque xa coñecemos. 571 00:25:00,740 --> 00:25:02,656 Pero no caso de que non entrar o seu nome, ou no caso de que 572 00:25:02,656 --> 00:25:05,787 escriba algo que é obviamente, non un nome, 573 00:25:05,787 --> 00:25:08,120 aínda queremos seguir pedíndolles para no seu nome. 574 00:25:08,120 --> 00:25:10,710 >> DAVID Malan: E en charla tivemos un así coa obter int positivo 575 00:25:10,710 --> 00:25:13,550 exemplo, onde non hai nada para comprobar en principio, porque non ten mesmo 576 00:25:13,550 --> 00:25:14,190 obtido un int. 577 00:25:14,190 --> 00:25:16,680 Por iso, queremos facer isto-- obter un int do user-- 578 00:25:16,680 --> 00:25:18,860 a continuación, comprobar que, se cadra, de novo e de novo e de novo. 579 00:25:18,860 --> 00:25:21,030 >> MARIA: Exactamente. 580 00:25:21,030 --> 00:25:22,060 Para loops-- Aceptar. 581 00:25:22,060 --> 00:25:25,842 Para loops poden nos permiten facer case exactamente o mesmo, tamén. 582 00:25:25,842 --> 00:25:27,300 En realidade, é exactamente o mesmo. 583 00:25:27,300 --> 00:25:30,190 Non hai nada que pode facer loops 584 00:25:30,190 --> 00:25:32,840 que non sería capaz que ver con loops de tempo. 585 00:25:32,840 --> 00:25:36,900 Pero para loops pode parecer un pouco pouco máis complicado sintaticamente 586 00:25:36,900 --> 00:25:39,730 porque eles teñen tres partes no que 587 00:25:39,730 --> 00:25:42,990 era antes só o condición con loops de tempo. 588 00:25:42,990 --> 00:25:48,260 Así, a primeira parte que mar, o máis á esquerda, temos "int ananos = 0." 589 00:25:48,260 --> 00:25:51,490 Polo tanto, este é o lugar onde nós iniciar nosa variable. 590 00:25:51,490 --> 00:25:55,210 >> Entón temos un punto e coma e "ananos <7". 591 00:25:55,210 --> 00:25:57,100 Polo tanto, este é o lugar onde fora condición realmente é. 592 00:25:57,100 --> 00:26:00,170 Entón é iso que teriamos poñer só no momento loop-- 593 00:26:00,170 --> 00:26:01,880 "mentres ananos <7". 594 00:26:01,880 --> 00:26:05,380 Aquí, que vai no medio do noso loop for. 595 00:26:05,380 --> 00:26:07,190 Así, "dwaves <7". 596 00:26:07,190 --> 00:26:11,350 E entón a nosa última parte é "ananos ++" que é onde nós actualizamos a nosa variable. 597 00:26:11,350 --> 00:26:15,470 Entón, o importante para entender é que esta 598 00:26:15,470 --> 00:26:22,010 vai pasar por este loop for sete veces e executar sete veces. 599 00:26:22,010 --> 00:26:24,020 Polo tanto, temos sete ananos, e eles están todos 600 00:26:24,020 --> 00:26:26,020 vai dicir: "Eu estou aquí para axudar, Brancaneves " 601 00:26:26,020 --> 00:26:28,860 porque está preparado para axudar a Brancaneves. 602 00:26:28,860 --> 00:26:33,600 >> Con mentres loops, teriamos feito o arranque ea actualización 603 00:26:33,600 --> 00:26:37,490 non dentro da condición, unha vez máis, pero antes ou dentro do loop while 604 00:26:37,490 --> 00:26:40,210 para asegurarse de que nós-- porque necesitamos sempre esas pezas. 605 00:26:40,210 --> 00:26:42,835 Entón, para asegurarse de que temos eles, tería aínda engadiu-los 606 00:26:42,835 --> 00:26:44,580 en, non só dentro dos parénteses. 607 00:26:44,580 --> 00:26:47,288 >> DAVID Malan: E así parece como-- na palestra, por exemplo, 608 00:26:47,288 --> 00:26:50,250 Eu case sempre uso, como, eu e n variables e moi aburrido. 609 00:26:50,250 --> 00:26:53,050 Parece que pode usar máis intelixentemente chamado variables, tamén. 610 00:26:53,050 --> 00:26:56,300 >> MARIA: Si, é realmente moi bo usar variables un pouco máis descriptivos 611 00:26:56,300 --> 00:26:59,400 porque todo se alguén está consultar o code-- quizais estea motoniveladora 612 00:26:59,400 --> 00:27:00,940 ou se está colaborando con somebody-- 613 00:27:00,940 --> 00:27:03,481 quere estar seguro de que eles entender o que está facendo. 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> Aceptar. 616 00:27:06,400 --> 00:27:11,435 Entón, iso é algo moi funky-- loop dentro dun loop for. 617 00:27:11,435 --> 00:27:13,060 Non sei se xa vin que antes. 618 00:27:13,060 --> 00:27:13,830 Probablemente non. 619 00:27:13,830 --> 00:27:17,750 Pero podemos realmente ter isto-- así ciclos en vez de lazos. 620 00:27:17,750 --> 00:27:25,130 Entón, alguén quere andar quizais me con o que está pasando aquí? 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 DAVID Malan: Vou tomar unha facada. 623 00:27:29,490 --> 00:27:29,970 MARIA: Cool. 624 00:27:29,970 --> 00:27:30,636 DAVID Malan: Aceptar. 625 00:27:30,636 --> 00:27:34,690 Entón, spoiler-- queremos imprimir o material que está na parte inferior dereita 626 00:27:34,690 --> 00:27:35,190 alí. 627 00:27:35,190 --> 00:27:35,450 >> MARIA: Correcto. 628 00:27:35,450 --> 00:27:35,710 Yeah, yeah. 629 00:27:35,710 --> 00:27:38,043 >> DAVID Malan: Entón temos só poñer este exemplo de saída alí. 630 00:27:38,043 --> 00:27:42,590 Entón eu podo inferir a partir da superior loop que é 631 00:27:42,590 --> 00:27:45,680 iteración sobre as liñas lazo máis externo, por así dicir. 632 00:27:45,680 --> 00:27:48,107 E está interactuando sobre columnas co lazo máis interno. 633 00:27:48,107 --> 00:27:50,190 E intuitiva, este debe esperanza ten sentido 634 00:27:50,190 --> 00:27:52,070 porque, por natureza de cada programa que vimos 635 00:27:52,070 --> 00:27:55,570 antes, printf, que é a función que estamos usando, en definitiva, 636 00:27:55,570 --> 00:27:58,190 ten a capacidade de imprimir material out esencialmente liña por liña. 637 00:27:58,190 --> 00:27:59,960 Como, unha vez que emite unha nova liña, hai 638 00:27:59,960 --> 00:28:02,876 non dobrando cara atrás e imprimir algo superior da pantalla, polo menos 639 00:28:02,876 --> 00:28:04,530 non usar printf como este. 640 00:28:04,530 --> 00:28:07,750 >> E así, a este respecto, fai sentido en que o circuíto externo 641 00:28:07,750 --> 00:28:10,930 debe estar referíndose ás liñas porque para cada dada liña, 642 00:28:10,930 --> 00:28:13,650 vai querer imprimir XXXXX, e, a continuación, 643 00:28:13,650 --> 00:28:15,520 pasar á seguinte liña, XXXXX. 644 00:28:15,520 --> 00:28:17,317 Así, as liñas veñen en primeiro lugar. 645 00:28:17,317 --> 00:28:19,150 E, a continuación, dentro de cada fileira, imprime columnas. 646 00:28:19,150 --> 00:28:21,160 Se tentou facelo do oposto, probablemente non faría 647 00:28:21,160 --> 00:28:21,690 saír como quere. 648 00:28:21,690 --> 00:28:22,190 >> MARIA: Si. 649 00:28:22,190 --> 00:28:24,950 Nós só non podería volver a liña anterior con printf. 650 00:28:24,950 --> 00:28:27,658 >> DAVID Malan: E o que é interesante por chat de hoxe sobre o alcance, 651 00:28:27,658 --> 00:28:31,600 en realidade, é que liña é un int que está declarado no circuíto de nivel superior. 652 00:28:31,600 --> 00:28:34,030 Pero teña en conta que aínda é dentro, por así dicir, 653 00:28:34,030 --> 00:28:35,982 as claves que siga inmediatamente, 654 00:28:35,982 --> 00:28:38,440 aínda que non é tecnicamente dentro desas claves. 655 00:28:38,440 --> 00:28:41,750 Entón liña está no ámbito ao totalidade do tramo de código, 656 00:28:41,750 --> 00:28:44,690 tanto dentro do exterior para o lazo e no interior do interior para loop. 657 00:28:44,690 --> 00:28:48,050 Pero doutra banda, onde é a columna no ámbito? 658 00:28:48,050 --> 00:28:49,810 A columna variable? 659 00:28:49,810 --> 00:28:51,310 É, só no loop interno. 660 00:28:51,310 --> 00:28:54,280 E iso é OK porque non acceder fóra das súas claves. 661 00:28:54,280 --> 00:28:57,280 Todo o que facemos é imprimir un novo liña ao final alí. 662 00:28:57,280 --> 00:28:58,670 De xeito que, de feito, é OK. 663 00:28:58,670 --> 00:29:03,740 >> Entón, iso ten o efecto, parece que, de facer tres liñas e catro columnas. 664 00:29:03,740 --> 00:29:04,370 >> MARIA: Correcto. 665 00:29:04,370 --> 00:29:06,270 Entón, primeiro imos nós, a nosa primeira liña. 666 00:29:06,270 --> 00:29:10,520 E só na nosa primeira liña, nós facemos o catro columnas dentro a primeira liña. 667 00:29:10,520 --> 00:29:11,980 Entón, nós imprimir catro Xs. 668 00:29:11,980 --> 00:29:15,800 E entón podemos saír do loop, xa que nós xa impresos catro Xs. 669 00:29:15,800 --> 00:29:17,100 E nós imprimir unha nova liña. 670 00:29:17,100 --> 00:29:19,920 E entón pasamos a mesmo proceso por dúas liñas 671 00:29:19,920 --> 00:29:21,170 para completar un total de tres. 672 00:29:21,170 --> 00:29:23,530 >> DAVID Malan: E é interesante notar que é só un artefacto da fonte, o feito 673 00:29:23,530 --> 00:29:25,680 que a saída de exemplo parece moito máis alto, 674 00:29:25,680 --> 00:29:27,520 como se houbese máis liñas que columnas. 675 00:29:27,520 --> 00:29:29,824 Pero é só porque o X é máis alto do que ancho. 676 00:29:29,824 --> 00:29:32,740 Isto é todo o que está a suceder alí, máis o espazo en branco entre as liñas. 677 00:29:32,740 --> 00:29:33,281 >> MARIA: Correcto. 678 00:29:33,281 --> 00:29:34,792 Legal. 679 00:29:34,792 --> 00:29:35,750 DAVID Malan: Todo ben. 680 00:29:35,750 --> 00:29:39,830 Así, unha rápida ollo a un conxunto de problemas, sacar algunha dúbida, e despois retrasar? 681 00:29:39,830 --> 00:29:40,330 Todo ben. 682 00:29:40,330 --> 00:29:43,164 Así, nun conxunto de problemas, hai tres retos principais, en definitiva. 683 00:29:43,164 --> 00:29:44,955 Pero, primeiro, vai atopar que o conxunto de problemas 684 00:29:44,955 --> 00:29:47,900 especificación, como acontece con moitos o Serie de exercicios esta caída, vai oriente-lo 685 00:29:47,900 --> 00:29:50,691 a través de algúns exercicios de quecemento, sinala-lo para fóra algúns recursos 686 00:29:50,691 --> 00:29:52,440 que pode ou non vimos xa. 687 00:29:52,440 --> 00:29:54,440 Por exemplo, CS50 ten un conxunto de shorts, 688 00:29:54,440 --> 00:29:56,481 que son pequenos vídeos, Non ao contrario deste, pero que 689 00:29:56,481 --> 00:29:58,460 son moi specific-- tema quizais cinco minutos, 690 00:29:58,460 --> 00:30:02,360 10 minutos de duración en lazos ou ou en condicións en algoritmos 691 00:30:02,360 --> 00:30:04,125 ou posterior no máis temas avanzados, así. 692 00:30:04,125 --> 00:30:06,000 E nós xeralmente incorporar aqueles en o problema 693 00:30:06,000 --> 00:30:07,950 conxuntos para que os alumnos ten un recurso co que 694 00:30:07,950 --> 00:30:10,840 a avaliar material que pode ter xa chegar no charla ou sección. 695 00:30:10,840 --> 00:30:13,220 Pero deste xeito é máis focado e máis na punta dos dedos. 696 00:30:13,220 --> 00:30:15,928 >> Tamén tenden a incorporar no problema define cousas chamadas orientacións. 697 00:30:15,928 --> 00:30:20,790 Así, case todos os exemplos que fago en charla, no escenario aquí, nós tamén 698 00:30:20,790 --> 00:30:24,565 lanzar na cámara en avanzar un máis lento, 699 00:30:24,565 --> 00:30:28,760 un paso a paso máis íntimo por min en meu portátil do mesmo código, liña por liña 700 00:30:28,760 --> 00:30:31,427 de xeito que en clase, imos miúdo follas algo ou alguén 701 00:30:31,427 --> 00:30:33,260 vai interpor cun responder a unha pregunta. 702 00:30:33,260 --> 00:30:35,820 Pero iso non significa necesariamente afondar por todos na audiencia. 703 00:30:35,820 --> 00:30:38,230 Entón vai atopar o código orientacións para a maioría dos exemplos 704 00:30:38,230 --> 00:30:40,950 o que facemos aquí en charla para que pode atravesalo-la no seu propio ritmo 705 00:30:40,950 --> 00:30:43,580 e retroceder ou avanzar rapidamente ou ignore por completo, se desexa. 706 00:30:43,580 --> 00:30:45,356 >> Hai moitas veces un pouco preguntas warm-up que 707 00:30:45,356 --> 00:30:47,105 pedirlle que tipo de reforzar este material 708 00:30:47,105 --> 00:30:50,250 e asegúrese de que vostede é cómodo antes de continuar co resto do pset. 709 00:30:50,250 --> 00:30:51,700 E entón, por suposto, hai o propio pset. 710 00:30:51,700 --> 00:30:53,450 E unha das cousas nós deliberadamente 711 00:30:53,450 --> 00:30:57,202 facer en CS50 é case todo desinteressante ou intelectualmente desinteressante 712 00:30:57,202 --> 00:30:58,910 mentres que mecánica pode ter que facer 713 00:30:58,910 --> 00:31:00,519 é case sempre moi ben documentada. 714 00:31:00,519 --> 00:31:03,560 Ao longo do termo, nós imos comezar a facer preguntas máis retóricas 715 00:31:03,560 --> 00:31:06,187 como lembrar de como facer isto ou aquilo? 716 00:31:06,187 --> 00:31:08,520 Pero, xeralmente, atoparás que os conxuntos de problemas que obteña 717 00:31:08,520 --> 00:31:10,269 a través da mecánica algo para que 718 00:31:10,269 --> 00:31:14,160 os retos intelectuais interesantes, son en definitiva, cómpre a vostede o alumno. 719 00:31:14,160 --> 00:31:17,390 >> Con iso dito, Zamyla, a quen nós mantidos referíndose hoxe en conferencia, 720 00:31:17,390 --> 00:31:20,190 é un dos nosos empregados de toda a vida membro que tamén ten orientacións 721 00:31:20,190 --> 00:31:24,520 sobre os problemas específicos como PSet Mario e ganancioso, aínda que non regar este ano. 722 00:31:24,520 --> 00:31:26,540 E é naqueles orientacións que moitas veces ela 723 00:31:26,540 --> 00:31:29,450 ofrece algúns consellos e trucos para como proceder, nunca te dicindo 724 00:31:29,450 --> 00:31:31,810 exactamente o que facer, pero rather-- como unha condición, 725 00:31:31,810 --> 00:31:35,200 se will-- dándolle, polo menos, un par de ideas para que cómpre a vostede, 726 00:31:35,200 --> 00:31:37,830 en definitiva, para decidir como abordalo-los. 727 00:31:37,830 --> 00:31:41,200 >> MARIA: como unha especie de alto nivel comprensión da lóxica do que 728 00:31:41,200 --> 00:31:42,220 estamos lle pedindo para facer. 729 00:31:42,220 --> 00:31:42,485 >> DAVID Malan: Exactamente. 730 00:31:42,485 --> 00:31:44,190 E, de feito, de Zamyla orientacións están destinadas 731 00:31:44,190 --> 00:31:46,190 para responder á frecuencia pregunta de onde 732 00:31:46,190 --> 00:31:48,610 Comecei a facer, especialmente cando estas especificacións son longos 733 00:31:48,610 --> 00:31:51,960 un pouco asustado dado todo o texto e as imaxes que teñen en si. 734 00:31:51,960 --> 00:31:54,890 >> Entón water.c, atoparás despois de concluír que, 735 00:31:54,890 --> 00:31:56,920 é, en realidade relativamente simple. 736 00:31:56,920 --> 00:31:58,882 Absolutamente son unha banda de que vai bater 737 00:31:58,882 --> 00:32:01,840 súas cabezas contra a parede intentando para descubrir por que non está compilando 738 00:32:01,840 --> 00:32:03,450 ou por que non funciona correctamente. 739 00:32:03,450 --> 00:32:05,040 Pero unha vez que está feito con el e unha vez que 740 00:32:05,040 --> 00:32:07,620 pasou un tempo loitando con calquera dos erros que poida ter, 741 00:32:07,620 --> 00:32:09,490 vai descubrir que é un programa moi curto. 742 00:32:09,490 --> 00:32:11,770 El se pode facer en só algúns liñas de código, a maioría dos cales 743 00:32:11,770 --> 00:32:15,030 vimos aquí en charla xa se que monta os bloques de construción correctas. 744 00:32:15,030 --> 00:32:16,810 >> E, como suxerimos aquí, que vai pedir 745 00:32:16,810 --> 00:32:22,250 que especifique cantos minutos alguén está tomando baño no campus. 746 00:32:22,250 --> 00:32:24,779 Nós especificar no problema definir o tipo de fluxo de auga 747 00:32:24,779 --> 00:32:27,320 en, tipo, unha ducha de baixo fluxo cabeza, moi parecido ao clip de Seinfeld 748 00:32:27,320 --> 00:32:29,180 vimos onte ou o contrario do mesmo. 749 00:32:29,180 --> 00:32:30,971 E entón só ten para facer un pouco de matemáticas, 750 00:32:30,971 --> 00:32:34,710 realmente-- aritmética usando C para contar nos como moitos, grosso modo, botellas de auga 751 00:32:34,710 --> 00:32:37,720 equivale a que se somos tomar un ducha n minutos. 752 00:32:37,720 --> 00:32:41,389 >> Agora, en mario.c, que vai un programa para ser lixeiramente máis longo. 753 00:32:41,389 --> 00:32:42,930 Aínda non será tanto tempo. 754 00:32:42,930 --> 00:32:45,130 Só algunhas liñas máis longas que water.c. 755 00:32:45,130 --> 00:32:48,230 Pero vai ser oportunidade para recrear a vella escola Mario 756 00:32:48,230 --> 00:32:50,670 pirámide de Super Mario Irmáns ou algún follow-on. 757 00:32:50,670 --> 00:32:53,510 Non vai parecer tan máis fermosa ou tan cores como aquel alí. 758 00:32:53,510 --> 00:32:56,468 Nós só estamos indo a usar pequenos hashtags como temos aquí na pantalla 759 00:32:56,468 --> 00:32:58,120 usando texto ASCII. 760 00:32:58,120 --> 00:33:00,362 Pero vai achegar a mesma idea. 761 00:33:00,362 --> 00:33:02,570 E vai ser un exercer que a primeira vista 762 00:33:02,570 --> 00:33:04,720 parece bastante simple-- só imprimir unha pirámide simple. 763 00:33:04,720 --> 00:33:07,345 Pero hai algunhas características aquí que son interesantes. 764 00:33:07,345 --> 00:33:12,400 Nótese que a aresta da dereita de pirámide, en realidade, ten dous ancho. 765 00:33:12,400 --> 00:33:14,570 Polo tanto, non hai dous iguais columnas de altura, os cales 766 00:33:14,570 --> 00:33:16,804 convertelo en esixir un pouco pouco de pensamento para facer 767 00:33:16,804 --> 00:33:19,720 seguro de obter exactamente o que a dereita, como oposición a só un perfectamente angulado 768 00:33:19,720 --> 00:33:20,220 liña. 769 00:33:20,220 --> 00:33:23,340 Entón, iso é un pouco de un caso de canto pero coincide co xogo real. 770 00:33:23,340 --> 00:33:27,610 >> E tamén é non-obvio a primeira vista vista como imprimir o espazo en branco. 771 00:33:27,610 --> 00:33:29,430 Entón, cando eu ollar para o mostra aqui-- saída 772 00:33:29,430 --> 00:33:32,440 e é tamén o spec --- lo tipo de miradas como un rectángulo, 773 00:33:32,440 --> 00:33:35,120 pero unha diagonal do rectángulo foi cortada, 774 00:33:35,120 --> 00:33:37,320 e é só espazos en branco, por así dicir. 775 00:33:37,320 --> 00:33:40,100 E así un pediu frecuentemente cuestión aquí é sempre, ben, 776 00:33:40,100 --> 00:33:43,302 como fago para mover as hashtags a dereita? 777 00:33:43,302 --> 00:33:44,760 Ou como podo imprimir os espazos en branco? 778 00:33:44,760 --> 00:33:46,860 E é realmente máis fácil que a maioría dos estudantes pensan. 779 00:33:46,860 --> 00:33:47,360 Non? 780 00:33:47,360 --> 00:33:51,620 Pode achegar-lo visual por só bater a barra de espazo unha ou dúas veces 781 00:33:51,620 --> 00:33:52,700 ou tres veces. 782 00:33:52,700 --> 00:33:56,260 >> E por iso mesmo que case con printf sempre imprimir unha cadea ou un int 783 00:33:56,260 --> 00:33:59,950 ou unha palabra como "Ola, mundo "ou serie de palabras, 784 00:33:59,950 --> 00:34:03,560 tamén se pode imprimir só Cita, espazo, pecha comiñas. 785 00:34:03,560 --> 00:34:06,320 E iso vai realmente dar- un espazo baleiro alí. 786 00:34:06,320 --> 00:34:08,330 Polo tanto, manter isto presente e non overthink este. 787 00:34:08,330 --> 00:34:10,570 Vostede realmente ten que decidir liña por liña por liña, 788 00:34:10,570 --> 00:34:14,280 non ao contrario do seu exemplo, un hai pouco, cantos deses 789 00:34:14,280 --> 00:34:18,420 columnas deben espazos en branco e cantos deles deben ser hashtags. 790 00:34:18,420 --> 00:34:21,560 Vai levar un pouco de tempo, pero é en definitiva, un puzzle lóxica das sortes. 791 00:34:21,560 --> 00:34:22,060 >> MARIA: Si. 792 00:34:22,060 --> 00:34:25,060 Pero a lóxica de ir liña por liña vai ser moi útil aquí. 793 00:34:25,060 --> 00:34:25,810 DAVID Malan: Yeah. 794 00:34:25,810 --> 00:34:28,976 Eu creo que o código de exemplo que mesmo gave-- aínda que non fose un programa completo. 795 00:34:28,976 --> 00:34:34,247 Aínda que int e principal e stdio.h baleiro e #include, 796 00:34:34,247 --> 00:34:35,580 unha morea de cousas a partir de charla. 797 00:34:35,580 --> 00:34:37,629 Pero os bloques de construción parecen estar alí. 798 00:34:37,629 --> 00:34:39,920 E entón, finalmente é algo un pouco máis algorítmica. 799 00:34:39,920 --> 00:34:43,210 Así, verifícase que en calquera momento entrar CVS ou calquera tenda de barrio 800 00:34:43,210 --> 00:34:47,810 e alguén lle entrega o contas de caixa ou moedas como cambio, 801 00:34:47,810 --> 00:34:50,620 verifícase que eles, os seres humanos, ou non sabe ou non, 802 00:34:50,620 --> 00:34:53,300 son, probablemente, a usar o que é chamado un algoritmo lambón, 803 00:34:53,300 --> 00:34:58,170 polo que se está en débeda, din, $ 21 en cambio, porque, por algún motivo 804 00:34:58,170 --> 00:35:01,580 compras algo moi barato con un gran proxecto de lei no CVS, 805 00:35:01,580 --> 00:35:05,910 que sería moi aburrido o cashier deulle 21 cuartos individuais ou, peor 806 00:35:05,910 --> 00:35:07,629 aínda así, unha morea de moedas. 807 00:35:07,629 --> 00:35:10,670 Pola contra, o que unha persoa razoable é probablemente vai facer é que eles van 808 00:35:10,670 --> 00:35:14,224 para incorporarse un US $ 20 e, a continuación, un proxecto de lei de US $ 1, e entregar-lle só dúas contas nese caso. 809 00:35:14,224 --> 00:35:17,390 MARIA: Entón eles están a buscar minimizar o cambio que dan de volta para ti. 810 00:35:17,390 --> 00:35:17,850 DAVID Malan: Exactamente. 811 00:35:17,850 --> 00:35:19,540 E mesmo negocio con moedas, tamén. 812 00:35:19,540 --> 00:35:23,040 Se vostede está en débeda, digamos, US $ 0,50, espero que non quere 50 moedas de un centavo. 813 00:35:23,040 --> 00:35:25,500 Non quere dous trimestres, por exemplo. 814 00:35:25,500 --> 00:35:27,540 Agora, iso fai supoñer que o cadro ten 815 00:35:27,540 --> 00:35:29,940 suficiente de todas as denominacións que el ou ela pode querer darlle. 816 00:35:29,940 --> 00:35:32,148 Pero nós lle permiten asumir tanto no problema. 817 00:35:32,148 --> 00:35:35,590 E o obxectivo, en definitiva, é a aplicar en código C un algoritmo lambón. 818 00:35:35,590 --> 00:35:37,344 Así, o usuario ten permiso para escribir o que 819 00:35:37,344 --> 00:35:40,510 cambiar el ou ela está en débeda con dólares e centavos, unha especie de punto flotante 820 00:35:40,510 --> 00:35:41,590 valor probablemente. 821 00:35:41,590 --> 00:35:45,530 E entón tes que facer as contas e descubrir mediante algoritmos, así, 822 00:35:45,530 --> 00:35:49,020 cantas moedas podo dar vostede minimamente para lle dar 823 00:35:49,020 --> 00:35:50,270 exactamente esa cantidade de cambio. 824 00:35:50,270 --> 00:35:53,470 Pero non vai ser un algunhas partes difíciles aquí, non? 825 00:35:53,470 --> 00:35:56,236 Como hai custe cuestión imprecisión. 826 00:35:56,236 --> 00:35:56,860 MARIA: Exactamente. 827 00:35:56,860 --> 00:35:59,114 Así coma flotante valores teñen imprecisión. 828 00:35:59,114 --> 00:36:00,780 Será que imos falar sobre iso na aula hoxe? 829 00:36:00,780 --> 00:36:02,340 >> DAVID Malan: Nós fixemos a última vez en charla. 830 00:36:02,340 --> 00:36:03,506 Nós falamos sobre imprecisión. 831 00:36:03,506 --> 00:36:08,840 E non quere enganar o usuario de canta cambio que el ou ela é debido. 832 00:36:08,840 --> 00:36:11,290 E así o paso a paso, en especificación conxunto de problemas, 833 00:36:11,290 --> 00:36:15,990 dar un pensamento, en definitiva, como a como pode paliar os imprecisión 834 00:36:15,990 --> 00:36:17,280 erros, potencialmente. 835 00:36:17,280 --> 00:36:21,050 É evitable, certamente, para as entradas que estamos falando. 836 00:36:21,050 --> 00:36:23,590 E, de feito, pennies-- quizais nós imos adiar para Zamyla, 837 00:36:23,590 --> 00:36:25,136 Coido que, para os trucos alí. 838 00:36:25,136 --> 00:36:27,760 Entón, finalmente, vai atopar un progresión de problemas esta semana, 839 00:36:27,760 --> 00:36:30,700 o primeiro dos cales é moi pequena, a continuación, medio, a continuación, un pouco maior. 840 00:36:30,700 --> 00:36:33,200 Pero todos eles utilizan o edificio quarteirões a semana pasada, 841 00:36:33,200 --> 00:36:35,280 dende supersection, conxunto de problemas especificación 842 00:36:35,280 --> 00:36:36,710 pon en numerosos recursos. 843 00:36:36,710 --> 00:36:41,000 Pero, aínda así, en todo loitando, especialmente entre aqueles menos cómodo 844 00:36:41,000 --> 00:36:42,917 sen fondo anterior, vir para o horario de oficina 845 00:36:42,917 --> 00:36:44,958 o luns e martes e Mércores e xoves. 846 00:36:44,958 --> 00:36:46,950 Ir CS50 vía Discutir o sitio web do curso, 847 00:36:46,950 --> 00:36:49,080 a través do cal podes falar con funcionarios e colegas. 848 00:36:49,080 --> 00:36:51,670 >> Pero, ao final, eu creo que o mellor consello é simplemente comezar cedo. 849 00:36:51,670 --> 00:36:54,711 Non é o tipo de clase que Serie de exercicios que estar comezando o mércores 850 00:36:54,711 --> 00:36:56,640 noite, ou peor noite xoves. 851 00:36:56,640 --> 00:36:59,067 >> MARIA: O meu mellor consello é comezar o luns. 852 00:36:59,067 --> 00:36:59,900 DAVID Malan: luns. 853 00:36:59,900 --> 00:37:02,490 Entón, se aínda non comezou já-- non. 854 00:37:02,490 --> 00:37:04,732 Pero aínda que non luns, a continuación, martes. 855 00:37:04,732 --> 00:37:05,690 Canto máis cedo, mellor. 856 00:37:05,690 --> 00:37:08,605 E esa é a razón pola que o curso ten tantos días de atraso é 857 00:37:08,605 --> 00:37:10,535 para darlle un pouco de presión psicolóxica 858 00:37:10,535 --> 00:37:13,684 comezar máis cedo, pero aínda deixar cousas escorregar cando as cousas tardan máis 859 00:37:13,684 --> 00:37:14,350 do que lle espera. 860 00:37:14,350 --> 00:37:17,950 >> MARIA: E quere facer uso o horario de oficina, tanto como pode, tamén. 861 00:37:17,950 --> 00:37:20,291 >> DAVID Malan: Algunha pregunta? 862 00:37:20,291 --> 00:37:20,790 Todo ben. 863 00:37:20,790 --> 00:37:22,930 Ben, por que non podemos aprazar aquí? 864 00:37:22,930 --> 00:37:23,487