[Powered by Google Translate] DAVID Malan: Ez CS50, és ez a kezdete 1. hét.
Amit mi hittük ezt ma egy pillantást vissza
amit sokan közületek valószínűleg elsétált néhány
idő, és most tűnhet egy kicsit ismerős.
Ez a dolog itt, ez persze a -
KÖZÖNSÉG: Science.
DAVID Malan: Science központ.
Tehát ez valójában az egyik legkorábbi számítógépek
vissza a 1940-es években.
Ez volt az egyik első elektromechanikus számítógépek
amely képes volt a különösen hosszú,
önfenntartó számítások, és amit ténylegesen látható
a tudomány központja mindössze egy kis darab ez a dolog.
Amit mi hittük ezt akkor is vessen egy pillantást a videót
hogy történt néhány évvel ezelőtt, és bevezeti a
dolog a világon.
És látni fogod, a zene és a hang, hogy valóban azok
nagyon boldogok voltak alkalommal.
>> [VIDEO LEJÁTSZÁS]
-A diadal a matematikai és mechanikai készség ez
nagyszerű új automatikus számológépet a Harvard Egyetemen.
Bonyolult problémák matematika, helyezze át a
gép kódolt formában a szalagon, pontosan megoldani a
perc töredéke az idő szükséges emberi
számítás.
Úgy tervezték, hogy felgyorsítsák minden formáját matematikai és tudományos
kutatás, az óriás mechanikus agy fog működni az Egyesült
States Navy amíg a háború végén.
>> DAVID Malan: Szóval, amit lehet, hogy nem tudja, hogy ez volt a
ugyanez az eszköz, amely a kifejezés mindannyian most már nagyon sok
értetődőnek alkotta, hogy a bug.
Tehát az egyik dolgozó mérnökök ezen a számítógépen
szó szerint talált egy kis lepke a gép, amelynek eredményeként
Néhány téves számítások.
És mivel a történet úgy szól, hogy moly volt ragasztva ez a napló
folyóirat itt, hát szeptember 9 1940-valamit,
és így született meg a világ a "bug".
Tehát ezentúl úgy véljük hibákat lehet bármilyen hibákat
programok, akár mesterséges vagy, a jelen esetben, rovarok.
>> Tehát néhány bejelentés, ahogy haladunk.
Tehát CS50 van hagyománya kínál ebédek a fajta a
legtöbb pénteken a félév során, ha veszünk 30-
40 hallgató a Fire and Ice in the Square alkalmi
fecsegés, beszélni számítástechnika,
beszélni a jövőben.
Meghívjuk öregdiákok és a barátok az ipar chat up
diákok is.
Tényleg vége felé készítés mi egy elég nagy osztály
annál is inkább intim, legalább egyszer, míg a
részhalmazai versenyző.
Tehát, ha szeretné, hogy csatlakozzon hozzánk ezen a héten pénteken, 01:15, látogasson el a
CS50.net/lunch az RSVP.
És mi ezt újra és újra, így nem kell aggódnia, ha nem
közül az első 30, vagy úgy ezen a héten.
>> Szóval írnok jegyzeteket.
A szó a források most indul rendelkezésre állnak
a diákok az osztályban.
Annak érdekében, hogy a fejek nem kell le előadásokon
irkafirka meg mindent, amit mondok, és így tovább, mit csinálunk
helyett már biztosítja a nevelőtestület a
kanonikus készlet jegyzetek.
Tehát az egyik tanítási fickók, Andrew Sellergren,
aki leül minden héten áttekinti a videókat, majd
írja le, hogy mit gondolunk egy meglehetősen
mérvadó készlet jegyzetek.
És András szereti is, az üzembe snarky lábjegyzeteket
az alsó.
Szóval akkor remélhetőleg élvezni ezeket a referencia foglalás
szórakoztató, és azt is, gyere quiz idő, mint egy lehetőséget arra, hogy vizsgálják felül
mi történt az egyes előadások.
Tehát azok kapcsolódnak az előadások oldalon.
>> Probléma set 0, eközben nincs.
És tekintve a rendelkezésre álló források az Ön számára -
a walkthrough.
Milo vezette az első pénteken.
Azt forgatták, tedd online szombaton.
És észre, ha nem biztos benne, hol kezdjem,
e vagy jövőbeli p-készletek, mindig kapcsolja először a
walkthrough vagy a videó cikke.
A vágás van folyamatban, a cs50.net/section az, ahol
be kell nyújtania a beállítások, ha nem
már, a ma.
Mivel a szakaszok indul a jövő vasárnap, hétfő,
és kedden.
Mi szakaszok a három nap, minden héten a
félévben a legtöbb.
És mi is bevezetni újra, különböző pályákon.
Szóval meg kell adnia e vágás formájában, ha
Nem láttam már, ha azok között kevesebb
kényelmes, kényelmesebb, vagy valahol a kettő között.
És ha valami a kerítésen, általában valahol
között, az, amit a legtöbb diák a végén ellenőrzés.
Hivatali órák kezdődik ma este.
>> Szóval Scratch meglehetősen alacsony kulcs, annak ellenére, hogy teljesen természetes
futtatni a különböző hibákat, vagy bizonytalan, hogy miként
végre valamit.
Tehát észre, hogy kezdjük munkaidőn ezen a héten.
Ők lehet Annenberg hétfő, kedd, szerda,
Csütörtök, 20:00-11:00 közben az agy szünet.
Felső classmen lehet bejutni, és ha valaha is gondja
az ajtón, mert lesz ellop, csak beszélni az utat
és magyarázzák te a CS50.
Általában 20-30-ig nekünk személyzet ott lesz, hogy segítsen
Ön egy az egy.
>> Érkezéskor a gondolat ez: akkor hozd a laptop,
lesz a töltő, akkor extra tápkábelek,
különösen mentén a déli fal Annenberg ahol
van sok elektromos aljzatból.
És a fő belépési pont munkaidőn Q & A, hogy megy
cs50.net/discuss és tegye
a kérdés ott.
És a címkén azt Pset 0 vagy Pset 1, függetlenül a hét
Előfordulhat, hogy legyen.
És akkor mit fogunk csinálni egy olyan táblázat tanítási ösztöndíjasok
és persze asszisztensek általában 8 vagy 10, vagy úgy vagyunk,
megy keresztül, miközben szemmel a táblán, és a
kopasztás off kérdés valóban, amilyen gyorsan csak tudunk,
hivatkozva, hogy a kapcsolódó álláshelyek ha nem talált e
magatokat, online referenciák, szükség szerint.
És akkor, ha problémák vannak, mivel elkerülhetetlenül
lesz, vagy ez csak több értelme, hogy üljön le egy az egy,
munka révén problémák valakivel.
>> Vagy csak jönnek munkaidő igazán
szüksége, hogy a gondolkodásmód.
Nem akarod, hogy menjen át az elektronikus űrlapot,
igazán akar találkozni valakivel.
Közlik, hogy nekünk, és mi fog történni, amikor a
kérdést már látta a személyzet tagja, és
meghatározza, aha, ez lehet szállítani az egyik a 20, vagy
30 csapat tagjai itt helyben, látni fogja a bal felső sarokban a
kis Adja meg a Queue gomb villogni kezd cs50.net /
megvitatni.
És ez azt mondja neked, hogy most már meghívták, így a
beszélni, hogy adja meg a sorban.
És kattintva azt a gombot, a neve ekkor megjelenik a
iPad a CS50 üdvözlő, az egyik természetesen a fejeket, majd
tartanak a bejárat közelében a Annenberg, aki majd
lásd ábrázolt itt a diákok, akik kérdéseket
a bal oldali, a személyzet tagjai, akik jelen vannak a jobb oldalon.
És egy kattintás a bal és a jobb, a web böngésző
villogni amint, például, professzor McGonnagal
készen áll arra, hogy látlak egy adott tábla Annenberg.
>> Tehát volt néhány ilyen tavaly.
Már újraindul munkaidőn és
újra végre sok a szoftver.
Tehát észre, hogy ez lesz felmelegedni ezen a héten.
De azt is észre is, az elmúlt években, mivel lehet, hogy hallott
a barátok, munkaidőn valóban 50-től
150 diák egyszerre.
És ez egyszerűen nem lehetséges számunkra, hogy kezelni, hogy
hatékonyan, az egyik egy, az egész este.
És amit mi valójában megpróbálnak tenni ebben az évben
kihasználni azt a tényt, hogy sok kérdés
gyakran ismételt és gyakran jobban válaszol
aszinkron.
Így egyfajta gondolja át a munkatársak választ,
és mi is gondolja végig a kódot anélkül, hogy a fűtött
nyomás szükségszerűen küzd
rajta egymás mellett.
Szóval úgy becsüljük, hogy mintegy harmadát vagy felét kérdések
kerül feladása személyesen, és mi megpróbáljuk tépni ki, mint
több mint egy fél vagy több elektronikus
hivatali órákban.
És mi továbbra is használni Fórum
egész héten is.
>> És végül, rájönnek, hogy ez a kurzus vehető át / nem.
Tehát, ha van a kerítés, vagy csak úgy gondolja, hogy te tényleg
Nem biztos, hogy ez a világ az Ön számára, vagy ez tényleg
meglehetősen idegen neked, észre, hogy ez egy csodálatos módja
megszerzése egy kis bizalmat, amellyel belép a
osztály, mint én őszintén évvel ezelőtt.
És akkor öt hétig rendezni ábra ki
magad, ha akarsz maradni megfelelt / nem felelt, váltsunk át egy levelet
fokozat, vagy a hasonlók.
És általában mi megy / nem jelent, azt hiszem, a tanulók
, hogy ha életbe, hogy 10 óra, 20 óra, bármi is
Lehet néhány problémát, és te beverte a fejét
ellen a fal,
és akkor tényleg csak nem lehet üldözni valamit le, és
olyan sok más dolog, amit tennie kell, őszintén, amit én
Szerintem át / nem az, hogy azon a szélén le
helyzetek, mint ezt.
Ha már megtette a dolog 90%-át az utat.
Tudod, ez nem egészen tökéletes.
De van egy csomó belőle, mégis.
Szóval úgy megfelelt / nem felelt, mint így, hogy a
mentális modell, talán.
>> Rendben, szóval múlt héten galamb a Scratch, és
beszélt programozás meglehetősen nagy grafikus szinten.
És ma már, hogy az átmenet a nyelv
a C, egy alacsonyabb szintű programozási nyelv tetején
amit sok modern nyelvek már épül, beleértve néhány
az is, mi lesz a ciklus vége felé.
És szintaktikailag, hogyan néznek ki
minden nagyon hasonló.
Szóval kezdjük, hogy ez az átmenet itt.
Szóval ez volt a program a múlt héten ez volt a legegyszerűbb
hello world programok.
Egyszerűen kerül a képernyőre hello world, a
kis beszéd buborék jön ki a macska.
Nos, ha elkezdjük most lefordítani ezt a másik
nyelv, rájönnek, hogy az ötleteket ma és szerdán
azonosak, de a szintaxis kezd megváltozni.
Szóval, mivel a múlt héten volt, amikor a zöld zászló rákattint, mondjuk
hello világ.
Ma megyünk, hogy int, a fő, üres, printf,
Cserébe néhány más szintaxissal ott is.
Kapcsos zárójelek és zárójelek és idézőjelek, és miegymás.
De észre, hogy a lényege az ötlet itt a nyomtatást,
és végül a tény, hogy a legfontosabb most lesz
egyet jelent a kezdő a program.
Main lesz, ha a zöld zászló indul dolgokat.
>> Tehát most hadd kötekedik eltekintve egyes építőelemek itt
mielőtt belevetik magukat néhány konkrét példát.
Ezért hívják ezt a nyilatkozatot a múlt héten, ahol ez csak
utasítást.
Ehhez - ebben az esetben, mondjuk hello world.
Nos, a C, ha megnézzük csak ezt a vonalat, ez hogyan vagyunk
fog kezdeni hangot adott puzzle darab:
printf ("hello world"),.
És most mi ugratni ezeket egymástól több és több időt,
de rájönnek, hogy van egy minta itt.
Tehát az egyik, van ez a dolog az úgynevezett printf, amely a
lényegében hasonló a szót mondani.
Ez az, amit ez fog tenni.
Printf és f itt "formázott".
Tehát ez csak azt jelenti, hogy be
Különböző esztétikai részletek.
Tehát idézet idézőjel bezárva a kezdete, mit fogunk
elindításához hívás egy string.
Egy szó, egy mondat, egy mondat.
Egy karakterlánc egy programozási nyelv sorozata nulla
vagy több karaktert.
Így az e-h-l-l-o, vessző, és így tovább van,
idézet idézőjel bezárva, egy string.
És most backslash n, egy kis szintaktikailag furcsa, de
már meghatározta, hogy a múlt héten akként mi?
Ez csak egy új sort.
Ez csak egy módja közvetíteni a számítógépre szeretné, hogy a
ekvivalens üti meg az Enter ott van, de te nem
szeretnénk, hogy ténylegesen Enter, és így elrontani az összes
formázása a tényleges program.
Most a zárójelben mellékelje ezt a fonalat, nyitott paren és
bezár paren, és belül ez a string.
Mert ez azért van, mert a C és más programozási
nyelvek, dolgok, mint a printf vesz érveket, vagy vegyen
paraméterek.
>> Tehát elkezd gondolkodni most ezen lila Szóljon blokk, mint egy
függvény, mint egy eljárás, mint egy eljárás.
Te tényleg nevezni, amit akarsz most, de
ez egyfajta miniatűr program, amely nem csak az 1
dolog, egy sorban, nem kevesebb.
Szóval printf is, mit fogunk kezdeni a hívó
funkció, és funkciók tenni valamit - ebben az esetben
nyomtat formázott string a képernyőn -
de a funkcióját is figyelembe érveket vagy paramétereket.
És érvek vagy paraméterek, köszönöm, azt jelenti,
hogy a magatartás hatással lehet, amit igazolványt
belül a zárójelben.
Tehát ebben az esetben printf igényeket kell mondani, hogy mit kell nyomtatni, és azt
Csak elmúlik, az idézőjelek itt, a húr, hogy mi
valójában szeretne nyomtatni.
És a pontosvessző a legvégén ebben a sorban csak egy
történeti kellemetlenség ahol végén legtöbb sornyi kódot,
teszel egy pontosvesszőt tenni Super Clear a számítógép
hogy ezt a kódsort itt ér véget.
Most ez jó, mert mint látni fogjuk, programok minél több
komplex, a pontosvessző teszi szuper világos számunkra, emberek,
valamint a számítógép, ahol kódsorokat kezdő és befejező.
Ismerd fel, hogy bizonyos nyelvek nem rendelkeznek valamilyen
Az ugyanezen részletek.
És valóban, a JavaScript, akkor nem mindig kell valamit
mint a pontosvessző.
De még e jönni.
>> Szóval hurkok.
Volt valami ilyesmi, nagyon intuitív, nyilvánvaló, nem
valami újra és újra és újra.
Mint felhúzása zoknit, vagy mondván hello, ebben az esetben.
Nos, a mai naptól a C, tudtuk fejezni ezt a Scratch
blokk while (true) printf ("hello world").
Tehát észre kezdünk építeni szó a puzzle
darabot előtt.
Mi van egyforma lila mondatban, de ez belsejében
zárójelben Örökké blokk, és a legjobb módja annak, hogy lefordítani, hogy a
a C a következő.
Nincs Örökké kulcsszó.
Nem lehet csak írja f-o-r-e-v-e-r in C.
Tehát a legközelebbi analóg van ideje.
>> Most, while (true) úgy tűnik, egy kicsit hülye, mert nem az érték
valódi valaha változás?
Valószínűleg nem.
Ez, mintha azt mondanánk, míg egy, míg a, míg igaz.
Ez mind ugyanaz, igaz, mindig ez a helyzet.
Tehát ez a hurok ténylegesen kiváltására milyen hurok?
Csak egy végtelen ciklusba, rendben.
A Mindig hurok vagy ahogy mi nevezzük a múlt héten,
Csak egy végtelen ciklusba.
Szóval néha ez rossz.
Néha ez egy bug, néha ez miért kap
A forgó strandlabda vagy homokóra vagy hasonló.
De ebben az esetben, azt szándékosan, bármilyen
Ezért akar nyomtatni ugyanaz a dolog újra
és újra és újra.
Vagy abban az esetben, mint egy óra, amit akarok
valami újra és újra és újra.
Szóval végtelen hurkok meglehet van értelme.
És így a C talán lefordítani a Mindig a kódot.
>> Tehát most ez egy kicsit konkrétabb.
Mi volt ismételje meg 10-szer a következő nyilatkozatot.
Tehát while (true) nem egészen működik ott, mert igaz,
mindig igaz.
Tehát, ha inkább nézd meg a C verzió, most a szintaxis kap
kicsit rejtélyes.
De hogy őszinte legyek, ha egyszer elkezd látni ezt, mind kap
elég ismerős gyorsan.
Szóval ezt hívják a hurok.
A for ciklus elmondja a számítógéphez, hogy tegyen valamit
újra és újra és újra, amíg
ezek a dolgok igazak.
Most mit értünk ez alatt?
Nos, három részből egy for ciklus, és fogunk
gyere vissza erre az összefüggésben a tényleges
példák egy pillanatra.
Szóval ne aggódj, ha nem egészen elsüllyed minden egyszerre.
De int i = 0, hosszú történet rövid, mondván, adj egy
változó, hogy ez a típus integer, ezért adj egy számot
nevű i, és inicializálni azt 0-ra.
Ez ad nekem, mint egy algebrai változó x és
inicializálni, hogy 0-ra.
De ebben az esetben mi neveztük i.
Aztán a közepén, azt mondja, én 10-nél kevesebb.
Ezt mondja a számítógép nem a következő dolgokat, amíg
mivel i kisebb 10-nél.
És természetesen indul kevesebb, mint 10, mert
akkor 0-tól indul.
Aztán végül, akkor talán tudod mit i + + segítségével.
Ez egy kicsit szintaxist csak azt jelenti, növelni i.
Tehát adjunk hozzá 1 az i, újra és újra és újra.
>> És mint látni fogjuk ezt a hurok, ez a forma inkább valósít
pontosan ugyanaz a dolog, hogy őszintén, a Scratch éppen annyira
sokkal könnyebb kifejezni.
Ismételje meg 10, és kész.
A C-ben, és a legtöbb programozási nyelv, van, hogy egy
kicsit tanulságos a számítógép és a ténylegesen
meg ilyesmi.
De majd jön vissza ezen és más szintaxist.
>> Mi a helyzet a változók?
A Scratch volt valami, mint ezek narancs tömb,
ahol tudtam, hogy egy változót.
Nézzük önkényesen hívják számláló.
Nézzük inicializálni azt 0-ra, majd a
tegyük örökké csinálni valamit.
Ebben az esetben a Scratch mondok a számlálót, így a
macska megy, hogy egy kis beszéd buborék, hogy beszél
a számot, hogy van ez a változó.
És akkor mi van változást számláló 1-gyel.
Szóval mindez csomagolva belsejében egy örökre zár.
Tehát már most van a építőelemek C
amely lefordítani ezt.
>> Ennek egyik módja, amit tehetünk, hogy van ez.
Adj egy integer, hívja számláló.
Inicializálása a 0
az első sorban ott.
While (true), úgyhogy lopni, hogy az elképzelést csak egy pillanatra
ezelőtt, megy előre, és tegye a következőket.
Nyomtassa ki a számláló, majd növelni a számláló,
újra, és újra, és újra.
Vagy ismét + + csak azt jelenti, adjunk hozzá 1 valamire.
De van egy új darab szintaxis itt.
Mi kiugrott mivel nem szerepel az előző példát?
Igen, ez a% d.
Így lehet következtetni, hogy ez mit csinál, őszintén szólva, amely
amit a Scratch blokkot csinál.
De ismét a C, akkor csak meg kell egy kicsit különös
amikor a kifejező magunkat.
>> Szóval printf ("% d \ n").
Nos, a legtöbb, amit lehet dobni, mint ismerős.
A jegyzések csak annyit jelent, hogy ez egy string, backslash n
csak egy új sor.
Tehát az egyetlen új dolog, itt% d.
És minden, ami egy placeholder.
% D fog jelölésére tizedes.
És% d eszközökkel számítógép, hogy egy decimális számot itt.
Nos, milyen számot akarsz tenni ott?
Nos, akkor talán következtetni, miután a vessző azt mondjuk,
számláló, ez a neve, egy változó, amit bejelentett, vagy
létrehozott egy pár sort korábban.
Tehát ez csak a C módon csatlakoztatásával változó egy
karakterlánc dinamikusan.
Mert ezzel szemben, ha tudtam volna, hanem csinált valami hasonlót
Ennek printf ("counter"), mi lenne ez a
program helyett csinálni, feltehetően?
Ez lesz szó print "számlálót".
Ami nem az a hatás, amit szeretnék.
Meg kell helyettesíteni néhány numerikus értéket.
Szóval majd meglátjuk, hogy a funkciókat, majd, mint a printf, nem vehet
éppen csak egyetlen érveket, mint például a
"Hello world".
Ezek figyelembe idézet idézőjel bezárva vessző, majd bizonyos változók
hogy lesz dugva, amint látni fogjuk az előző húr
ezeken keresztül% jel helykitöltõvel.
>> Nos, mi a logikai kifejezések?
Logikai kifejezések voltak ezek az értékek, igaz vagy hamis.
Igen vagy nem.
1 vagy 0.
Be-vagy kikapcsolása.
Tehát Scratch úgy néz ki, és vegyük észre, hogy a
horogszerkezet itt valójában a kötőszó
A két kisebb blokk.
Szóval ilyen húzni, és leesett 3 puzzle darabkái
együtt, hogy győződjön meg, hogy a hosszabb puzzle darab ott, hogy én
tudta közvetíteni a gondolat, hogy szeretnék x kevesebb lesz, mint y és
y, hogy kisebb, mint a z.
És így tudom lefordítani a két külön sorba az alábbiak szerint.
A felső egy lehet nagyon triviálisan lefordítva a C,
mindössze x <y.
Talán néhány zárójelben jó intézkedés.
És akkor a C, akkor nem írok, és jelöli a
együtt valamit.
Te ehelyett levelet &&.
És mi végül látni, egyetlen jel történik
jelent valami mást.
Szóval csak && jelöli azt az elképzelést, ÉS.
>> Tehát újra, noha ez kezd eléggé összetett,
egyik célja bevezetésének Scratch mellett
csak úgy, egyfajta szórakoztató on-rámpa, ahol meg tudod csinálni
valamit, ami nagyon grafikus és animációs, valamint
megosztható és a hasonló, az is, hogy közvetíteni az elképzelést, hogy a
minden ötletet kezdünk búvárkodás a mai és újabb
már megtestesült, még ilyen egyszerű
felület, mivel egy nap.
Mi ez itt?
>> Szóval feltételeket.
Tehát a Scratch blokk a bal oldalon látszik
egy kicsit bonyolultabb.
De ez csak egy húzás és
csepegtető ismerős darab.
Ha x kisebb, mint y, mondjuk így.
Különben, ha x nagyobb mint y, mondjuk így.
Else tudunk logikusan feltételezhetjük, hogy ez következik, hogy a
azokat meg kell egyeznie.
Tehát azt mondják, hogy egyenlő.
Most a C a jobb oldalon, pontosan ugyanolyan dolog.
És észre, hogy a kapcsos zárójelek lesznek a
jellemzője, C és más nyelveken, hogy nem ez a fajta
A tokozás.
Csakúgy, mint az, ha ez a mondat sárga dolog, hogy ez a fajta
megragadta a lila blokk belsejébe.
Hasonlóképpen ezek nadrágtartó -
ezeket kapcsos zárójelek -
hivatott felidézni ugyanezen ötlet átfogó, egy vagy több
sornyi kódot, amelyek beljebb bennük.
Így a jobb oldalon van, ha x kisebb, mint y, printf
("X kisebb mint y").
Különben, ha x nagyobb mint y, nyomtassa ki az ugyanaz.
Else nyomtassa ki, hogy azok egyenlő.
>> Így a rövid, van egy meglehetősen közvetlen leképezés vagy fordítás
A nyelvi láttunk eddig, beleértve az egyes
A bonyolultabb funkciókat.
Szóval lehet, hogy nem használja ezt a projekt, vagy lehet, hogy nem
használja ezt a projekt ezen a héten.
De mi ezeket a dolgokat néven tömbök C Scratch,
ők hívják listákat.
És láttuk ezeket a Fruitcraft RPG múlt héten.
A kis kék fickó, mászkálok, felvette
cseresznye és a narancs és hasonlók.
Nos Scratch, hogy hajtotta végre e narancssárga
blokk, amely olyan szavakat tartalmaz, ebben az esetben, mi vagyunk a szó szoros értelmében
hozzátéve, "narancs" a
nevű változó leltár.
Tehát C, ez a forma lesz, hogy egy kicsit rejtélyes.
És mi jön vissza erre a jövő héten, és jobban
érdekes dolog a világon a kriptográfia vele.
De az alján itt, ezt a két vonalat lényegében
lefordítani, hogy mit csinálunk egy Scratch blokkolják ott.
De még e jönni.
>> Tehát üzembe össze, itt van egy program a C. úgyhogy
Gyorsan kötekedik eltekintve néhány darab szintaxis itt, hanem az
akkor menjünk ténylegesen írásához néhány kódot, ismerkedjen
Önnek néhány eszközt fogunk használni, és nézd meg, mi
építhet a már néhány ilyen alapvető építőköveit tól
a múlt héten, most a C szintaktikailag Tehát a tetején van, ez a
talán az egyik leginkább unalmas programokat tudna
levelet a legtöbb programozási nyelv.
De ez a fajta különleges jelentése, mert ez a
gyűjtő program, amely minden számítógép tudós ír, ha
tanítás valaki egy programozási nyelv -
a hello world program.
>> Tehát a legtetején, látjuk ezt a fogalmat az # include
és akkor, szögletes zárójelben, stdio.h.
Megyünk, hogy jöjjön vissza, de tényleg, hogy mi
azt jelenti, hogy van egy fájl ebben a világban az úgynevezett szabvány
I / O, sdtio pont h, és ez csak egy szöveges fájl, amely
valaki írta évvel ezelőtt.
És belül, hogy a szöveges fájl egy csomó
funkciókat vagy módszerek, illetve eljárásokat, hogy valaki
azt írta, hogy mi vagyunk a kedvezményezettek, mert
Most már használhatja az adott személy kódot.
A funkciók ő írt.
Ebben az esetben a printf nem olyasvalami, amit én írtam, ez
Nem valami CS50 írt.
Ez valami olyasmi, hogy valaki írt évvel ezelőtt valósult meg a
nevű fájl stdio.h majd, mint félre, kimért
másik része a funkció egy másik fájlt.
De mi lesz ott.
>> Szóval # include csak magunk módján a mondás, hogy
C, adjon hozzáférést a funkciókat, hogy valaki más írta.
És ebben az esetben érdekel, mert azt akarom printf.
Most kap int main (void).
Szóval ez egy ilyen dolog, őszintén szólva, hogy a 0. napon,
nagyjából Nekem, hogy milyen zóna ki, mert ez csak
nem érdekes
intellektuálisan, néhány szintaxist.
De most már tudom, hogy a funkciók, vagy más néven
eljárások vagy módszerek általában termel némi értéket.
Ők valamit.
Jönnek fel a választ.
Ők termelnek kimenet.
Így int mellett a fő csak a rövidített szóval
hogy ez a funkció, ez az eljárás, végül is megy
hogy adja vissza a számot.
És hogy ez miért van, akkor gyere vissza.
Main csak az alapértelmezett világszínvonalat az alapértelmezett
funkció fog kerül végrehajtásra a C programban
futtatni azt.
Void csak annyit jelent ez a dolog, a fő, nem veszi
érveket, ebben az esetben.
Szóval, hogy szuper explicit.
Nincs húrok ott, nincs vessző.
Void jelenti, hogy nincs a fő érveket.
>> Most végül, szerencsére, az utolsó két sor ismerős.
Bent a kapcsos zárójelek van egy printf
és van egy visszatérés.
És a visszatérés milyen szerencsés, hogy van, hogy
tedd oda, mert ebben az esetben ez nem csinál minden
nagy az érdeklődés.
De egy számítógépes program, amikor egy függvény értéke 0,
azt jelenti, hogy minden rendben van.
Semmi baj.
Ezzel szemben, ha egy függvény visszatérési értéke 1, vagy negatív 1, vagy
negatív 1.337, vagy néhány véletlenszerű számok, mint arra, hogy a
általában azt jelenti, hogy hiba valóban történt.
Szóval, ha a Mac vagy a PC, ha valaha is látott
néhány bosszantó üzenetet, mert a számítógép lefagyott, vagy
fagyasztva, és van egy rejtélyes hibaüzenet jelenik meg,
majd egy kódot, mint a rendszer-kód
1,2,3,4, néhány szám,
hogy általában egy felesleges részlet, hogy elmondjam
a legtöbben az emberek, de ez az, amit néhány funkciót, vagy valamilyen
program tulajdonképpen visszaadásra, akkor egy nem nulla érték.
És az előnye az, hogy a 0 jelenti, minden is, és
akkor alapvetően van egy végtelen számú dolog, hogy
rosszra.
Melyik miért választották 0 jó és egy nem nulla értéket
rossz, ahogy hamarosan látni fogjuk.
>> Akkor menjünk előre, és ezt a levelet.
Így emlékeztetni arra, hogy a minap használt Mac-emet, hogy nyit egy
terminál ablakban, aztán megnyílt szöveges program, mint például
TextEdit, és elkezdtem írni valami kódot.
Nos, ez rendben van.
De a tapasztalat lesz más a Mac, vagy
a Solaris számítógépre, a Linux számítógépen, bármilyen operációs
rendszer véletlenül használ.
És így folyamán, amit inkább használni valami
úgynevezett CS50 Appliance.
Tehát a CS50 Appliance egy letölthető szoftver
, amely lehetővé teszi, hogy futtasson egy operációs rendszert, a Linux,
kifejezetten Fedora Linux, saját Mac vagy PC.
És te ezt letölti egy úgynevezett hypervisor.
Szóval mindez kell dokumentálni probléma szett 1.
És akkor vezérli felé, hogy mit kell letölteni.
De a végeredmény, hogy van-e a Mac vagy PC, te vagy
letölt egy ingyenes szoftver.
Ezután le a CS50 Appliance, és azt mondani, hogy
szabad szoftver - a hypervisor -
futtatni a CS50 gép egy ablakban a számítógépen.
És mi történik ez.
>> Én most, észre itt, amit úgy tűnik, hogy egy asztali
környezet.
És hadd ténylegesen zsugorodás ez az egyetlen ablakot.
Szóval ez most a Mac-emet, egy kis ablak van, és a belső
Ezen ablak történetesen teljesen
különböző operációs rendszer.
Valóban van ez a start menüben ide, emlékeztető
Windows, hogy van egy csomó almenük, beleértve
egy linket a CS50 kézikönyv, Dropbox, és hasonlók.
És mi ez a környezet most szabványos környezet
hogy mindannyian már használhatja úgy, hogy nem számít, milyen
számítógép, amit telepítve van, milyen verziójú
Mac OS vagy Windows futsz, mindannyian most már a
ugyanabban a környezetben.
És most, ebben a környezetben kezdhetjük írni valami kódot.
>> Szóval megyek előre, és nyissa meg a program neve gedit.
Ez hasonló a notepad.exe, vagy
TextEdit egy Mac.
És ez csak egy szuper egyszerű szöveges szerkesztő program
úgy néz ki, mint ez első pillantásra.
Most legtetején, van egy fehér paletta, a ZUBOLY
van ez a fekete ablak, amely azt mondja jharvard @ készüléket.
És ez azért van, mert a felhasználói fiók, amit előre létrehozott
mindenki számára az úgynevezett John Harvard.
Van egy mappát, ahol minden az ő fájl menni, és
itt ahol tudunk kezdeni írni néhány kódot.
Akkor hadd menjek előre, itt és zoom csak egy kicsit, és én vagyok
csinálni # include , int main (void), és a
akkor fogok csinálni printf ("hello world")
, Vissza 0-ra.
Nos, ez az egész nagyon fekete és fehér.
>> Hadd menjek előre, és nem egy dolog, hogy tanítson gedit mire vagyok
ténylegesen csinál.
Hadd menjek a Mentés másként.
Fogok választani a bal oldali ide jharvard.
Tehát újra, még akkor is, ha soha nem használt Linux előtt, őszintén
ezekben a napokban, mindegyik ruházott be lényegében a
azonos típusú interfész -
Mac OS, Windows, és a Linux.
Szóval választottam jharvard home mappájában van.
És én fogom menteni ezt a fájlt hello.c.
Tehát a legtetején, beírtam hello.c, elnevezésekor C
programot a. c kiterjesztés
mi a bevett gyakorlat.
És hit Mentés.
És most mi a jó, hogy én már hatékonyan tanítani gedit,
hogy ez egy C program.
Figyeljük meg, hogy a fekete-fehér szöveg most színkódja, vagy
szintaxis kiemelte, ami csak felhívja a figyelmet a
különböző szemantikai részei a programnak.
A bal felső sarokban van, ahogy a programok minél több összetett, én vagyok
lesz egy összefoglaló az összes dolog, amit írtak.
Szóval ez az odafent.
Szóval hadd most kicsinyíteni és menj le a terminál ablakot.
>> Szóval ez talán az új, hogy sok ember.
Ha még sohasem használt parancssoros környezetben, akkor sosem
használt DOS, vagy soha nem használt Linux, vagy még soha nem nyitotta
Mac OS terminál ablak, van egy csomó dolog, amit
tehetnénk a GUI, mint mutatva, és rákattint, és a
húzva, és csökken, és a hasonló, de általában -
bizonnyal a világ számítógép-tudomány -
parancssor segítségével, ahol nem kell az egérrel
általában már csak a billentyűzet, valójában egy csomó
erősebb, mint a felület, ha egyszer megszokta a
különféle parancsokat.
És egyfajta szabad magad igénylő pontra, és kattintson
mindent.
Szóval gedit fogunk egyfajta van a legjobb mindkét világból.
Mi lehet a drag and drop szöveges, azt láthatjuk, hogy
szép és színkódolt.
De amikor eljön az ideje, hogy fut a program, akkor néha
Csak ezt a kis ablakot itt.
>> Szóval megyek előre, és ezt.
Az alsó fekete-fehér ablakhoz, megyek, hogy menjen előre
és írd csenget.
És csenget a neve a fordító.
Ez egy program, amely átalakítja a forráskód
bele, így tárgykód.
0s és 1s, hogy láttuk röviden a múlt héten.
Emlékezzünk a múlt hét óta, azt ígérte, hogy fogunk
megy valami ilyesmi - mi kellett lennie
valami ilyesmi -
és ez természetesen nem valami, hogy egy ember megy
csinálni kézzel.
Tehát ahelyett, hogy fogunk használni a program, és hogy a program
Ebben az esetben az úgynevezett csenget.
És a neve az én program hello.c.
Így annak érdekében, hogy fordítani hello.c származó forráskódot
tárgykódban vagy 0s és 1s, meg kell elegendő csak nem
ezt, és megüt Belép.
>> Oké, semmi sem történt volna.
De tudom, hogy most, vagy a múlt héten, hogy az alapértelmezett név
a program, amikor a C-ben írt, az ostoba neve a.out.
A legtöbb érdektelen infója tudnál jön ki.
A jelentése az első betű az ábécé, ki az, ami volt
kiadásra, de hát legyen.
Ez az én program, és most pont slash, mint látni fogjuk, nem
valójában csak egyfajta biztonsági szolgáltatás, mert a
a.out egy program írtam.
Nem jön a számítógép, ez
nem a Program Files.
Ez nem a Mac OS a Applications mappába.
Kell lennem szuper explicit a számítógép, és azt mondják,
ez a program, a.out, az az aktuális mappában, az
aktuális könyvtárban.
És ahogy Ön által képviselt ezt olyan környezetben, mint ez
A dot jelent bármilyen mappát éppen be
És így. / Csak azt jelenti, fuss a.out
az aktuális mappában.
És Én vezetem ezt az Enter billentyűt, és íme, a legelső program.
>> Most hadd tegyen egy lépést hátra.
Ez az ablak egy kicsit kicsi, és rájönnek, hogy az alsó
balra a készülék itt egy másik ikonra.
Az egyik a Chrome, ami elég ismerős, csak a web
böngésző a készülék belsejét.
És ez a fekete-fehér ikon csak egy
nagyobb terminál ablakot.
Tehát ha lesz egy kicsit bosszantó, hogy egyfajta ha csak
ez apró szelete egy ablak, amely kölcsönhatásba
programokkal tudunk helyette csinálni.
És most hadd kezdjem gépelés néhány hamarosan
ismernie kell parancsokat.
ls.
Tehát ls a parancs jegyzékbe.
Tehát a Mac OS vagy Windows, akkor általában duplán kattint egy
mappát, majd, íme, látod az összes különböző fájlokat
és mappákat.
A parancssoros környezetben, ahol akkor csak írja
parancsok vagy szöveg, ls az egyenértékű.
Akkor mutasd meg, mi van ebben a könyvtárban.
>> Most van egy csomó dolog van, ami mind egy kicsit
ismerős és egy kicsit szokatlan.
De vegyük észre, hogy ugyanúgy, mint a Windows és a Mac OS, jharvard
van egy asztali mappába.
Tehát minden olyan ikon, amely az asztalon történik
kell lennie, hogy a mappában.
Van egy letöltések mappa, dolog, hogy
Chrome tehet ott.
Dropbox.
Így a készülék jön a beépített támogatás Dropbox
úgy, hogy az elmúlt félévben, akkor szinkronizálni a Dropbox
figyelembe, hogy az összes program alátámasztani.
Ők hozzáférhető a másik számítógépen.
Ha bármi rosszul a készülék, akkor
nagyon könnyen talpra Dropbox.
Szóval mappa ott erre.
Van két fájlt, amit tett - hello.c
és a.out.
És aztán jobbra van valami más mappákba, hogy mi lesz
kap a vége felé a félév, web
programozás.
Tehát, ha tudom. /, A.out, Enter, hogy mondja megy
a könyvtárban vagyok, az aktuális könyvtárban, és futtassa a
nevű program a.out ott.
>> Rendben, ez szép és jó, de ez nem minden
kényszerítő írni nevű program segít a.out.
Tehát ténylegesen ezt egy kicsit másképp.
Tehát ahelyett, hogy csak futó csenget, hello.c, tegyük hozzá
az úgynevezett egy parancssori argumentum.
Tehát egy parancssori argumentum, vagy egy kapcsoló ebben az esetben, csak
egy szó vagy kifejezés, hogy írjon egy prompt után
a programot futtatni kívánt.
Tehát ebben az esetben, csenget a programot szeretnék futtatni,-o
eszköz kimeneti fájl, ami már nem hívják a.out.
Output nevű fájlt hello, és erre összeállításában
utolsó szót a vonalon, hello.c.
Szóval röviden, ez egy nagyon csekély javulást, amelynek
ahelyett, hogy ezt ostobán nevű fájlt a.out,
Most már nem csenget-o hello, majd hello.c és
majd nyomja meg az Entert.
Semmi sem úgy tűnik, hogy megtörténjen, de megint nagyon tetszik, 0 - ha
semmi sem történik ez azt jelenti, semmi baj történt -
így csináljuk ls most, Enter, sőt most
Van egy helló program.
Szóval, ha én most írja helló, parancs nem található.
OK,. /.
Szóval, pontosan így van.
Szóval azért, mert ez a program írtam, és nem jön a
A számítógép,. / hello, Enter, azt jelenti,
Én most fut hello.
>> Szóval ennyi van.
Most mi lesz végül kap egyre több parancssori
érveket, amelyek lehetővé teszik számunkra, hogy nem több, hanem csak azokat,
akinek ez lehet öreg, hadd valójában bemegy egy
könyvtár van, és csak ad egy teaser, hogyan mást
mehet mintegy végrehajtási hello world.
Hadd menjek be ide, és fogom kinyitni.
Szóval tényleg, fogok elmagyarázni, hogy mit csinálok, így
ez hasznos.
Hadd vissza.
>> Szóval már ezt sokáig.
Így észre felett a jobb oldalon van egy pár
könyvtárakat, amelyek furcsa nevű source1m és source1w.
Ez csak ostoba konvenció használunk.
Source csak azt jelenti, forráskód, 1 azt jelenti, ez a héten egy, és
m azt jelenti, hogy hétfőn és w azt jelenti, hogy szerda van.
Tehát semmi rejtélyes ott.
Ez csak rövidített írásmódot.
Ezek a kék dolgok mappák, más néven
könyvtárakat.
Azt akarom, hogy ebbe a mappába, és most egy normál számítógép
Én is csak kattintson duplán a mappa ikonra, és
ott található összes fájlt.
De egy parancssori környezet, nem tudok elég csinálni
, hogy így ehelyett azt kell változtatni könyvtárakat kézzel.
Tehát, ha azt írja cd majd source1m, Enter, észreveheti, hogy
a gyors, a dolog, a fehér a bal, csak megváltozott.
És így valóban, amikor csak mondott zárójeleket és aztán a
kis cirkalom, a tilde jel, hogy csak azt jelentette, én voltam
John Harvard home könyvtárában, a My Documents,
személyes fájlokat.
De most zárójelben azt mondja, ~ / source1m.
Ez csak azt jelenti, én vagyok a nevű mappába source1m
ez a John Harvard saját könyvtára.
Szóval, ha én most akarom felsorolni a fájlokat ebben a mappában, könnyen
kérdés, írja csak ls.
És most látom az összes fájlt, hogy én előre hozott létre a mai
előadás, amelyek mindegyike, vagy amelyek nagy része, történik
a vége. c.
>> Szóval hadd menjen előre, és most fut gedit egy program neve
holloway.c, ami meg van írva néhány random hacker
az interneten, úgy néz ki, egy kicsit olyan, mint ez.
És mi nem fog átmenni ez semmilyen
részletesen, de azok még kényelmesebb, különösen, ha
azt szeretnénk, hogy a találgatás, hogy mi ez a program nem itt.
Biztos lehet benne, hogy te több vagy kevesebb kényelmesebb,
mi nem is kap ez a fajta dolog végére
ebben a félévben.
Ez az, amit egy példa egy összezavart C versenyen, amely
úton levelet a leginkább rejtélyes keresett programot esetleg
lehet felülmúlni más okos emberek, akik hasonlóképpen
próbál írni a dolgokat, és mutatják be, hogy tud írni
több rejtélyes dolog, mint te.
Így ez nem egy példa a jól megírt program a
szempontjából stílus, ez egy példa egy olyan program
nyer egy verseny, az emberek próbálnak
legyen homályos és elvont.
>> Szóval, ha futunk ezt a dolgot, hadd menjen be a terminál ablak,
hogy úgy mondjam.
Tehát ez a fekete-fehér környezet az úgynevezett
terminál ablak általában.
Hadd menjek előre, és fordítsuk le.
Nem fogom használni csenget, mert ez a program egy
kicsit rejtélyes, és szüksége van egy másik
fordító, az egyik neve GCC.
De ez nem ugyanaz a dolog.
Beletelik forráskód tárgykód.
És most, ha én futni a.out, hogy a program segítségével
Csak látta teszi ezt.
Szóval a fickó az évben megnyerte a versenyt.
Akárhogy is, nem fogunk ebben az irányban, per se.
>> Szóval valóban próbáljuk most ugratni kívül mit tehetünk
ezen alapvető építőköveit, hogy egyre több és több
érdekes programokat.
Ezért írtam egy programot, most már fut a program.
Most valóban egyszerűsítsék és nem kell írni
a szót csenget a billentyűket.
Kiderült, hogy a mi programok minél több rejtélyes, tudjuk, vagy
bonyolultabb inkább, mi is valójában futtatni ezt a parancsot.
Akkor hadd menjek vissza a home könyvtár, hogy úgy mondjam, hadd
eltávolítás - rm a remove parancs - Megyek, hogy távolítsa el
Az a.out nevű fájlt, és hello.
És most észre egy parancssoros környezetben, ugyanúgy, mint a
a GUI, kapsz kéri. Nem tudok kattintson egy gombra, bár, én
kell beírni y igen, y igen.
És most, ha azt írja ls újra, vegyük észre, hogy ezek a zöld
programok - a.out és hello -
elmentek.
Vigyázz rm.
Ez nem rossz dolog, mint akkor húzással
dolgok a kukába.
>> Tehát most menjünk előre - és nem tudtam ezt - csengés-o
hello, hello -
Én már unatkozom gépelés a parancsot.
Annak ellenére, hogy nem adtam egy kicsit gyorsan.
Tehát ahelyett, megcsináljuk hello.
Tehát, hogy nem a fordító.
Ez csak egy baráti programot, hogy jön a Linux, az e
esetben - az operációs rendszer -
, amely automatizálja a folyamatot összeállításának programok.
Tehát ahelyett, hogy az emlékezés csengés-o fájlnév és
majd így tovább, különösen akkor ezeket a sorokat kap hosszabb és
hosszabb, tudok csak írni, hogy.
És ez fog kiköp egy csomó dolog, hogy
majd végül látni ebben a félévben.
De észre, most, ha az I. típusú ls, hello újra az én könyvtárban.
És valóban tudok futni, hogy a. / Hello.
Tehát, hogy csak automatizálja a folyamat fut, mi volt,
ebben az esetben, egy sokkal hosszabb, bonyolultabb parancs.
Így fogunk kezdeni a márka, csak azért, mert egy csomó
inkább felhasználóbarát.
>> De most tegyünk egy érdekes programot
mint mondjuk hello.
Így a programok általunk írt eddig ott fő.
Ez csak az alapértelmezett dolog, hogy mindent indul ki.
De vannak egyéb feladatokat ott is, és
stdio.h az a dolog, amit láttam a tetején a mi
fájl előtt, és ez az, amit ismert, mint a standard könyvtár.
Belül a szabványos könyvtár egy csomó funkciók
hogy valaki más írta, és mi lehet kezdeni ezekkel a
funkciók levelet látna
Érdekes programok magunkat.
>> Akkor hadd menjek vissza a készüléket.
Fogom zárni ezt a terminál ablakot.
Megyek, hogy lezárja a dolgokat írtunk korábban, és csak megy
a hello.c, és észre most a következőket teheti.
Helló világ egyáltalán nem olyan érdekes, szeretnék
személyre ezt a programot magamnak.
Tehát ahelyett, hogy világ, megyek
megy előre, és azt mondják -
Tudtam írja David - de ez valóban egyfajta
alapvetően ugyanaz.
De próbáljuk ki ezt a helyőrző ötlet.
Emlékezzünk vissza, hogy a C, hanem a printf, mi volt ezek
Helyőrzők, és még több, mint% d.
Szóval% d volt, gyorsan épelméjűség ellenőrzés.
Oké, decimális szám, ennyi.
Decimális számok, ez minden.
Szóval% c, ahogy a találkozás, lesz egy karaktert.
Tegyen egy karakter van, írni a-z,
vagy központozás szimbólum.
Egyetlen karakter,% f, tudja valaki más nyelven?
Tehát egy lebegőpontos értéket.
A valós szám.
Tehát nem egy decimális szám - ez valójában egy valós szám
tizedespont, és némely számjegyek száma a bal
és jobbra tőle.
% S, string.
Ez az egyetlen fogunk látni gyakran.
A húr, ismét csak egy szó, egy mondat, egy sorozat
egyedi karakterek.
És végül, lld?
Tehát ez inkább egy sarok ügyben.
Hosszú, hosszú tizedes.
Szóval, ha azt szeretnénk, nem csak egy szám, ez a nagy,
szeretne egy nagyobb szám, akkor kell majd megadni a
a számítógépet, hogy ez egy adott méretű.
>> Szóval tudod ezt egy kicsit.
Ahelyett, hogy csak kemény kódot a David, hadd enyhén
dinamikusan mondjuk% s.
Így valósult% s itt, ami helyőrző helyett egy string.
Akkor hadd tegyem vesszővel, majd a "Dávid" ide.
Nos, ez egyáltalán nem olyan intellektuálisan érdekes,
mert minden, amit tettem most valóban még több munka
a számítógép.
Ahelyett, hogy elmondja a számítógépre van mindez egyszerre vagyok most
mondja ezt, és helyezzen be egy húr itt végül, vessző,
itt az, hogy string.
Így ez nem egy nagyobb fokú javulást, de ez legalább
Egy lépés egy érdekes program.
Mert most, hadd menjen előre, és ezt az ablakot egy kicsit
nagyobb, hadd menjen előre, és fuss, hogy hello.
És most,. / A.out nem működik, miért?
Rendben, most úgy hívják hello.
Tehát újra tenni, valamint csenget egy-o átnevezte az
programot, hogy valami sokkal érdekesebb.
És íme: most azt mondja helló David.
>> Rendben, még mindig egy hülye program.
És most nézzük a ténylegesen menjen vissza ide, és bevezetni a fogalmát
változó.
Nem lenne jó, ha tudnám, hogy egy változót
amelynek típusa karakterlánc?
És a változó érték valóban származik a használó
saját maga.
Szóval önkényesen fogom hívni a változó s, amely
Csak egy közös egyezmény, ha van egy változó neve
a húr.
Fogok csinálni egyenlőségjel, aztán megyek hívni
nevezett funkció getString.
Tehát getString nem olyasmi, amit gyárilag beépített C. Ez
egy függvényt, amely a CS50 staff írta, tényleg csak a
ezeket az első néhány hét, hogy egyszerűsítse a folyamat
egyre felhasználói és egyre felhasználói formában
a vonósok, vagy számokat, és az ilyen.
Szóval getString olyan, mint printf, de nyilvánvalóan helyett
nyomtassa ki fogja csinálni, amit a neve is mondja, hogy egy string.
De ahhoz, hogy használni getString, fogunk van, hogy a változás
Itt, ezen túl.
Szóval ösztönösen ez a program, remélhetőleg, lesz valahogy
kap egy string a felhasználótól, majd mi is fog tenni
ezzel a húr, s az úgynevezett?
Ez csak a nyomdába, igaz?
Még mindig nem ösztönző programot, mert mindent meg fog
kell tennie, hogy csatlakoztassa az említett értéket, ahol% s
azt mondja, hogy kell menni.
>> Szóval legalábbis ez az intézkedés.
Hadd mentése és kicsinyítéshez.
Most az én terminálablakban idelent, a kis szelet egy,
hadd megint megcsináljuk hello.
Oké, és ah, átkozott, kaptam egy csomó hibát.
Hadd lapozzunk fel, és látjuk az első -
úgyhogy valóban ezt egy még nagyobb ablakot, így
Láthatjuk, hogy rosszul elszúrtam -
úgyhogy győződjön hello.
Oké, ez egy katasztrófa, nem igaz?
Írtam három sornyi kódot,
ez adott nekem 12 hibákat.
Miért van ez?
Szóval szerencsére sokszor, amikor meglátja sok-sok hiba
köpködés ki egyszerre, ez tényleg csak azért, mert már
zavaros a számítógép itt.
És továbbra is zavarba az idő nem lesz itt.
És így ez csak elindul botlás, és botladozva, valamint
köpködés többet ijesztő dolog, mint a ténylegesen alkalmazandó.
Így általában, mindig kezdje a felső 1.
>> Tehát a nagyon legfelső fokon a vörös, a
hibaüzenet ez.
A be nem jelentett azonosító string, tettem
jelent szabvány?
Én nem.
Úgy értettem, húr, de ez azért van, mert is, a szó húr
hogy tartsa a szóban ténylegesen
nem létezik a C sem.
Ez valami olyasmi, fogjuk használni, csak az első héten, vagy két
van, de létezik egy nevű fájlt cs50.h.
Tehát most, tudom, hogy van ez a másik, hogy a könyvtári
staff írta, így ez már írva a közelmúltban, mint a
stdio.h.
De belül cs50.h olyan meghatározás, szinonimája
rendezi, hogy létrehozza ezt a szót string.
>> És most hadd menjek vissza a terminál ablakot.
Fogom törölni ezt az egész zűrzavar a Ctrl-L. Majd csak
törölje minden tiszta, és én megyek előre, és
helló ismét az Enter billentyűt.
Szóval, mi történt most?
Most már az összes ilyen hibák elment.
Tehát mi is igazán tettem?
Most tanította a számítógépen húr létezik, és ez
a fájlban nevezett cs50.h.
Tehát ne panaszkodj, mert most már tudod, hogy hol találja
ez a funkció nyilatkozat úgy mondjam.
Ha létezik a világon.
>> Úgyhogy most megyek, hogy menjen előre és fuss hello.
Úgy tűnik, hogy egy végtelen ciklus, semmi sem történik.
Szóval kell beírni valamit, rendben.
Az első sor a kód az én programot getString.
Szóval ez szó szerint vár rám, hogy kap egy string.
Tehát ebben az értelemben igen, ez egy végtelen ciklusba.
Úgy látszik, a getString az alapértelmezett viselkedést, hogy mi
írta - az alkalmazottak -
azt mondja, hogy csak várni és várni és várni és várni és várni,
amíg a felhasználó ad egy string beírásával valamit be
Szóval hadd menjen előre, és írja be a D-a-v - i-d, az Enter billentyűt.
És itt van, hello David.
>> Most ez úgy tűnik, mintha ez csak egy jogi aktus?
Hadd menjek előre, és írja be a Tommy.
Enter, oké, úgy tűnik, hogy működik.
Működik Rob, művek Zamyla, dolgozik - rendben.
Szóval ez működni fog, valószínűleg.
Így kell kinyomtatni, amit mi valójában, hogy ez,
és mi lehet egy kicsit nehéz itt.
Lássuk, ha valami ilyesmit hello.
Lehet menni ide, lássuk, másolás, beillesztés.
Én nem lesz képes beilleszteni, hogy sokszor van.
Paste, oké, Shift + Ctrl + V Szóval mit tudott
Előfordulhat, hogy rossz itt?
>> Oké, segfaultol.
Így néhányan előzetes háttérrel tudni fogja, hogy
általában, így számítógépek sok Be, amikor ők
valószínűleg nem azt jelentette, hogy megkapja a hosszú neveket, mint ez - rossz
dolgok történnek.
Valóban, a világ az interneten is, ez történik egy kicsit,
ahol amikor tervezése egy honlapot, ha éppen
tervezése Facebook, van, hogy önkényes döntések up
elől, mint hogy mennyi ideig fog valaki
Facebook username lenni?
Vagy meddig valaki keresztneve lenni?
Mennyi ideig tart valakinek a telefonszámát lenni, és hasonlók.
És ha a programozók, hogy rossz feltételezéseket, programok szünet
mert próbál így több kimenet, több bemeneti
inkább, mint hogy van memória.
Vagy RAM számára elkülönített, és így ha most Enter,
hogy a program ténylegesen ledolgozott, mert mi voltunk a könyvtárban
és mi tulajdonképpen várható ebben a konkrét esetben.
De kétségtelenül ebben a félévben, akkor írja legalább egy
program, amely azt fogja mondani ezeket a szavakat.
Ne feledje, ez a hét múlva, talán két nap múlva.
Segmentation fault egy rossz dolog.
Ez a jelentés az Ön csinál valamit, hogy a számítógép
nem számítottak.
És ebben az esetben, ha a programozó, nem számítottak.
Akárcsak mi ez a halom zokni, voltak különböző
sarok esetekben volna találkozott.
Hasonlóképpen programokban, ha nem számít milyen hosszú
valakinek a neve lesz.
Vagy mi van, ha van egy rosszindulatú felhasználó, és az ő neve
valóban nagyon rövid, de ők csak próbál
A rendetlenség velem?
Mi lesz a viselkedését a program?
Nos, ebben az esetben, hogy valami tényleg összeomolhat.
>> Akkor csináljuk.
90 perc alatt, ez egy szörnyű hosszú idő
tenni számítástechnika.
Miért nem jutunk be a szokása vesz egy öt perces
szünet van, és amikor visszajön, akkor belevetik magukat bizonyos
bonyolultabb és vonzó programokat?
Öt perc.
>> Rendben van.
Tehát egy gyors megjegyzést.
Azt mondják, hogy bár ez volt a képernyő előtt, milyen
kijött az én számból volt cs50.net/rsvp.
Ez helyes. cs50.net/lunch.
Tehát most akkor próbáld RSVPing erre a / ebéd.
De tegyük ezt most.
Szóval ez volt a szuper gyors, szuper új egy csomó emberek.
Régi kalap egyes emberek.
Szóval visszatekeréshez egy pillanatra, és hogyan jutottunk
ez a hello world kimenet csak egy pillanattal ezelőtt.
>> Tehát az első, itt van ez a CS50 gép.
Ismét, szoftver, problémamegoldás készlet 1 fogja mondani
hogyan kell letölteni, ha le, mit kell kattintani
és így tovább.
És ha egyszer kövessék ezeket az utasításokat, akkor képes lesz arra
hogy maximalizálja az ablakot, és a Mac vagy PC fog kinézni a
kis valami ilyesmi.
A fekete háttér, a saját mappa tetején, ahol az összes
A fájlok megy, a szemetes, a bal felső sarokban,
a menü alján.
Szóval megint szép szellemükben hasonlóak Mac OS vagy Windows,
még ha történetesen a Linux.
Szóval, mit is next csinálni?
Nos, elkezdtem írni programokat.
És emlékszem a múlt héten, hogy minden kell ahhoz, hogy írjon egy
program egy egyszerű szövegszerkesztő,
mint a Notepad vagy TextEdit.
Őszintén szólva, azt is a Microsoft Word.
De a rossz dolgok előbb-utóbb történni, mert ez egy nagyon
keménykezű megoldás írt egy programot, és ez lesz
mentse el a rossz formátumban.
De ez csak egy szövegszerkesztő, szövegszerkesztő, ez minden, ami
szükséges, hogy írjon egy programot.
>> Így a CS50 Appliance, akkor ezt egy egyszerű módon.
Mi csak kattintson erre az ikonra a bal alsó sarokban.
És ismét, problémamegoldás készlet 1 tájékoztatni fogja Önt erre, és íme -
megkapod ezt a fekete-fehér felület, ahol meg tudjuk kezdeni
kódot írni.
Szóval kezdjük el beírni a szuper egyszerű program újra.
Én megyek fel Fájl, Mentés, és én fogom hívni
ez, mondjuk, hello2.c.
És Én csak azt mondom, ha rákattint a jharvard, helyezze
saját home könyvtár, nem igazán érdekel
ha ez megy.
És akkor a Mentés gombra.
És most lehet kezdeni írni a programot.
És emlékszem a korábbi, hogy kell írni int
main (void).
Nagyítás a bal felső sarokban.
És akkor azt akarom mondani printf, hogy kettő.
És most egy újsor, becsuk idézet, close
zárójel, pontosvessző.
És aztán menj le ide, hogy a terminál ablak, hogy ez
beágyazott gedit, csak az egyszerűség kedvéért.
És én megyek előre, és levelet, hogy hello, de nem
helló egyedül, hello2.
>> Szóval a fájl hívják hello2.c. A fájl ezért
fel kell kérni hello2, ebben az esetben.
A fenébe, mit csináltam rosszul?
Rendben, szóval egyértelműen kimaradt egy sort, ha felidézni, mit
Korábbi programok kinézni.
De lássuk, ha nem tudjuk ugratni e egymástól.
Sajnos, a legtöbb ember, aki írni a programokat, amelyek
írunk programok nem egyszerűsíti a dolgokat minden jól.
Tehát, hogy milyen sovány, hogy mit nem igazán teszi
érezni itt, és hátha tudunk kitalálni, hogy mi a baj.
Az első sorban ott azt mondja, hallgatólagosan nyilvánító C
printf könyvtári függvény típusú int.
OK, megértettem része az.
De úgy tűnik, hogy utal arra a tényre, hogy én használt printf
rossz, valahogy.
És mi értelme van baj?
Csak nem tanítják a számítógépet, hogy ez egy fájlban
hívott stdio.h.
Most már csak azt kell megjegyeznünk éppen most, hogy a printf
A stdio.h, és valóban nem lesz más
működik, hogy az ugyanabban a fájlban, hogy mi fog szokni.
>> És most hadd menjek előre, és nyomja meg a Ctrl-L, hogy csak egyértelmű, hogy
el, hogy futtassa újra hello2, és íme.
És ez parancs ismét sokkal összetettebb, mint mi magyarázza a
mai célokra.
De ez nem fut csenget, és a csengés úgy forráskód és
kiköpi 0s és 1s.
És ezek 0s és 1s ebben az esetben nevezzük mi?
Oké, kifogást kódot.
És a fájlt, ők hívják, szóval,
hello2, ebben az esetben.
Mert a szöveges fájl volt hello2.c, Enter.
És most már, hogy két felkiáltójel, felkiáltás
pont, felkiáltójel.
Rendben, így már most a képességét, hogy húrok,
látszólag.
Nos, mi mást kapunk a felhasználók?
>> Nos, a CS50 könyvtárban, van más funkciókat,
megy, hogy egyszerűsítse az életünket ezek az első néhány napban.
GetChar, GetDouble, getFloat, getInt,
GetLongLong, getString.
Nos, összeszedi le a legkönnyebben e először.
GetString szó csinálja.
Csak ül ott, arra várva, hogy a felhasználó adja meg valamit,
és amint azt írja valamit, és nyomja meg az Enter, akkor
csinál valamit ezzel az értékkel.
Akkor menjünk vissza, hogy például, hogy pontosan milyen
GetString csinál.
Hadd menjek előre, és nyissa fel a gedit, hello.c és visszahívása
ezt a jogot a szünet előtt, ez az, ahol abbahagytuk.
>> Szóval most ugratni ezt szét egy kicsit részletesebben.
Szóval line 6, van két dolog
történik abban a pillanatban.
Az egyenlőségjel kerül elválasztó első fele és második fele.
Tehát a bal oldali az egyenlőségjel vagyunk
mondván karakterlánc s.
És akkor, csak a laikus szempontból, mi a karakterlánc s
csinálsz, mit gondolsz?
Ez létrehozása mi?
Szóval ez létre egy string nevű s.
Most mit jelent ez valójában?
Nos, ez fenn helyet egy string nevű s.
Ez nem egészen igaz.
Mit keres ez?
Nos számítógépek, mint tudod, van merevlemez, ez az, ahol
A fájlok.
Számítógépek RAM, és ez az, ahol a betöltött programok
miközben ezek futnak.
Tehát, ha duplán kattint egy ikonra, és a Microsoft Word megnyitja
fel, Microsoft Word fut, hogy úgy mondjam, a RAM-ban, amely a
elektronikus része a számítógép.
Nem a fizikai, mechanikus részét ez fonás, ahol a
adatok általában tárolja hosszú távon.
Tehát karakterlánc s nagyjából azt mondja a számítógép nekem
elegendő RAM, hogy elférjen egy string.
Most, hogy egy kicsit leegyszerűsítés, mert a
mekkora az a karakterlánc lesz?
Nos, igazából nem tudom még, így az elkövetkezendő hetek során
mi valójában húzza vissza a réteg, amely string és
mi megmondjuk, hogy mi is valójában.
String, most, csak egy szép egyszerűsítését világunkat.
De karakterlánc s nyilatkozik egy string nevű s, most.
Kinyilvánítja egy string.
Ez fenntartja magának helyet a RAM a húr a felhasználó
körülbelül beírni.
>> Most nézzük meg a jobb oldali az egyenlőségjel.
Szóval azt mondja, getString ().
És egy kis józanság megtekintéséhez.
Az a tény, hogy nincs semmi belül a zárójelben
azt mi getString?
Ez nem veszi érveket.
Ez azt jelenti, nem tudja befolyásolni a viselkedést semmilyen módon.
Minden alkalommal, amikor használja, akkor kap egy húr, és ennyi.
Ezzel szemben a printf, remélhetőleg a viselkedését nem
változik minden alkalommal.
Egyébként ez egy elég használhatatlan nyomtatási funkciót, ha
ez nem ugyanaz a dolog.
Ha mindig nyomtat David vagy valami
tetszőleges egész idő alatt.
Szóval printf van értelme, hogy egy érvet.
GetString nincs igazán szüksége az érvet, mert szerettem volna
kap egy string a felhasználó, és ez a felhasználó, aki megy
hogy a kínálat a dinamizmus által gépelés különböző levelekben
minden alkalommal, amikor a billentyűzeten.
>> Szóval mit getString nem végső soron?
Gondold azt, hogy ez a kis fekete doboz.
És ez a fekete doboz nem veszi be, de ha bang
, ez kiköpi egy karakterlánc, amely a felhasználó által beírt be
És az a tény, hogy van egy egyenlőségjel ott azt figyelembe
amit kiköp a jobb oldalon, és tárolja belsejében
mi van a bal oldalon.
Tehát egyenlőségjelet itt, hogy valójában nem jelent
egyenlőség, inkább technikailag jelent feladatot.
Vegyük az érték a jobb oldalon, és tedd a
változó a bal oldalon.
Szóval ez minden, ami történik ott.
>> Most a 7. sorban, mi hív printf.
Szóval printf remélhetőleg kezd egy kicsit unalmas már.
Tehát nyomtatása formázott string.
Mi a húr?
Nyomtassa ki: "h-e-l-l-o,% s
! \ N ".
Rendben, mit akarok plug-in% s?
Szó szerint, függetlenül tárolják s.
Tehát ebben az esetben, kis józanság csekk, hány érvek nem
printf tartani?
Oké, hallottam egyet.
Hallottam egy újra.
Két, hallottam kettő.
És mi van három?
Oké, három?
Kiváló.
Három lehetséges válasz, csak az egyik helyes.
Szóval érvek ismét befolyásolja a viselkedését a funkciót.
A múltban a printf nem csak egyetlen érvet.
"Hello world" volt az egyetlen érv.
Most azonban, ha ez észre vessző van.
Ez a vessző kívül van az idézet / idézet vége, ami azt jelenti,
printf hé, itt jön a második argumentum.
>> Tehát vesszők a legtöbb programozási nyelven
külön több érveket.
Tehát a válasz itt egyáltalán nem egy, mert a
itt van ez a vessző.
Tehát minimálisan, printf láthatóan hogy két
érvek ebben az időben.
De a lehetőséget egy beugratós kérdés itt az, hogy mi
erről a vessző?
Vajon ez azt jelenti, hogy ott valójában három érvek?
Ez, ez, és ez.
Tehát nem, mert vessző belsejében a jegyzések, ami
azt jelenti, hogy tényleg csak egy esztétikai angolul.
Ennek semmi köze a számát
érveket ebben a programban.
Tehát ez a vessző kívül idézőjelek.
És majd vissza 0-ra.
Most nézzük csak egyfajta veszi ezt a hit
ma, és csak azt tudom, hogy amikor a funkciókat kész végrehajtó
sornyi kódot, akkor általában vissza valamilyen értéket.
Ebben az esetben, csak azért, mert fontosabb vissza kell térnie az int,
ez csak az, ahogy a nyelvet C működik.
>> Szóval, mert semmi sem volt a baj, úgy érzi, ez a program
finom, csak kemény kódolt return 0.
De ezzel szemben, és én fogom írni ezt a pszeudo-kód
Most, akárcsak Joseph tette, amikor megcsináltuk a zokni
Például a múlt héten.
Ha valami baj - ez nem a tényleges kód - folytatta
rossz, majd vissza, mondjuk, 1.
Else vissza 0-ra.
Szóval, ez az, ahol megyünk ezzel.
Ez nem a tényleges C kód, csak pszeudokód.
De ez, hogyan lehet visszatérni
különböző lehetséges értékeket.
De most én csak megyek előre és vissza 0-ra.
Rendben, bármilyen kérdése eddig a szintaxis, a funkcionalitás,
vagy a hasonló?
Igen, vissza.
>> KÖZÖNSÉG: [hangtalan]
DAVID Malan: Tud beszélni egy kicsit hangosabban?
Miért ezt a programot return 0, és?
KÖZÖNSÉG: [hangtalan]
DAVID Malan: Oh, ez azért van, mert kaptam lusta, sajnálom.
No jó tanulmányi válasz, vissza 0-ra.
Én ilyen megmenteni ezt, mondván technikailag C, ha a fő
kifejezetten nem ad vissza értéket, 0 kerül vissza
automatikusan az Ön számára.
Ami igaz, én nem csak eltüntetésével.
De kellett volna így.
Nem érdekes, elvitelre, mint hogy más, mint az én hibám.
Igen?
>> KÖZÖNSÉG: Általában, amikor gépel semmis, ez azt jelenti,
nem tér vissza valamit.
DAVID Malan: Helyes.
Ha ehelyett megadja előtt a függvény nevét, a
Például itt, üres, akkor a függvény
nem ad vissza semmit.
És ezért én csak azt mondom, visszatérő vagy semmit,
és ez összhangban lenne.
És akkor jön vissza, hogy a.
És csak FYI, az egyik fogás a tanulási
programozás egy olyan világban, amely több száz könyv és
Több száz honlap van fogsz mindig
látni a különböző szintaxis különböző könyvek
különböző emberek.
Ismerd fel, mi megteszünk minden tőlünk telhetőt szakaszban és előadások is
következetes.
De néha látni fogja ütköző szintaxist.
Tehát, ha kétségei vannak, csak kérdez.
És általában, mi gondoskodunk az előadások és szakaszokban
szinte mindig jelen azt a helyes utat.
És azt mondom szinte mindig, mert esete.
Egyéb kérdés?
>> KÖZÖNSÉG:% s létezik-e kívül a készülék?
DAVID Malan:% s létezik-e kívül a készülék?
Igen.
Szóval% s köze C. A tény, hogy használja azt a
A készülék alapvetően semmi köze a
jellemzői a nyelv mi használ.
Valóban, a múlt héten, amikor használják a Mac-emet, írtam
C kód az én Mac.
Tudtam volna használni% s Mac-emet, és használhatja azt a
a Windows a számítógép, ha telepíti a fordító, mint
Visual Studio a Microsoft.
Szóval% s.
Minden, amit csinálunk belül ezt az ablakot, hogy ma
köze C. és alapvetően semmi köze a
operációs rendszer kérdés.
Ezzel ellentétben, a fekete-fehér terminál ablak - ha
Én gépelés dolgokat, mint ls, és rm és cd -
hogy köze van az operációs rendszer és
navigáció körül.
Igen.
KÖZÖNSÉG: Úgy értettem, a könyvtár, a CS50 könyvtár.
DAVID Malan: Oké, így ha érted a kulcsszó string, hogy
csak létezik a CS50 könyvtár helyes.
Ez nem létezik a C magát, és valóban egy pár
hét fogjuk eldobni a CS50 könyvtár és indítsa
dolgokat csinál a semmiből magunkat, hogy úgy mondjam.
Egyéb kérdés?
Igen.
>> KÖZÖNSÉG: [hangtalan]
DAVID Malan: Jó kérdés.
Vannak parancsok nagybetűk?
És hadd tegyen különbséget itt.
Szóval parancsok általában a dolgok, mi írjuk a
Az ablak alján, a terminál ablakban.
Bármi ide lenne nyilatkozatok vagy C kód.
De mindkét esetben, a válasz ugyanaz, igen.
Mindkét környezetben, a C-kódot a tetején, és a
operációs rendszer parancssorban a
alul, a kis-és nagybetűket.
Szóval kell kihasználni getString tőkével G,
tőke S. Be kell írni printf minden kisbetűvel.
Meg kell adnia ls minden kisbetűvel.
Így szinte minden helyzetben ebben a félévben, ügy, az
Tény, hogy számít.
Igen.
>> KÖZÖNSÉG: [hangtalan]
DAVID Malan: Ah, szóval oké, mi lenne, ha volna egy fájlt
hívott hello.d.
Így kiderült, hogy D egy programozási nyelv.
És így néhány esetben, A ténylegesen levelet program
ezt a fájlt, és azt, hogy az összeállított divat.
Tudjuk, és valóban, a rövid válasz az, hogy nem tudom.
Így fogjuk csinálni.
Hadd menjek előre, és hozzon létre egy új fájlt.
És a spin itt, őszintén általában is, ha minden kétséget kizáróan
ebben a félévben, és van, a készülék vagy a számítógép
nyitni, megy előre, és próbálj ki valami.
Szóval megyek menteni nevű fájlt hello.d.
Mentés ezt.
És fogok futni, hogy helló Enter billentyűt.
Úgy tűnt, a következtetés, hogy c nagyobb volt a valószínűsége
mint d, ebben az esetben.
Egyéb kérdések.
Igen.
>> KÖZÖNSÉG: [hangtalan]
DAVID Malan: Oké, azt mondják, hogy még egyszer.
KÖZÖNSÉG: [hangtalan]
DAVID Malan: Hogyan megy a diagnosztizálására, vagy
hibakeresési útmutatásra van ez?
Így a legvalószínűbb, mert ők különböző nyelveken
valószínűleg akkor kap egy teljesen
különböző program kimeneten.
Ön kapnánk teljesen különböző hibaüzenetek.
És azt is csak a tervezés, akkor vitathatatlanul egy
rossz tervezés határozat írni két különböző
nyelv majdnem azonos nevű fájlokat,
pontosan ugyanabban a könyvtárban, amihez
automatikus eszközzel, mint tenni.
Szóval én is nyomja vissza, és azt mondják a 15 éves ezt,
soha ezt a hibát.
Megtörténhet.
De van, csak különböző, azt hiszem,
logisztikai védelem a helyén.
Plusz a hibaüzenetek vezetne, ez
végül kiderüljön, mi a kérdés.
De egy esetleges sarok ügyben.
>> Rendben, hadd vezessen be, csak egy pár más
funkciók itt, így tudjuk kezdeni épület fel látna
és bonyolultabb program.
Tehát először is, matek.
Tehát matematikai példák csak ilyen egyszerű az első héten.
Ez nem azt jelenti, hogy az összes programozási szól
matematika.
Természetesen, a megértés különböző vonásai
matematika, algebra különösen, hogy
nagyon fontos itt.
A magasabb szintű CS osztályok, lineáris algebra,
analízis, és a hasonlók.
De észre, a legtöbb, amit fogunk tenni ebben a félévben csökkenti a nem
a matek, és minden bizonnyal nem a számtani, per se, de tényleg
hogy csak logika és a gondos gondolkodás.
És így ez a kapcsolat, hogy a számítógép-tudomány már régóta,
különösen a középiskolai szinten, a matematika, egy
kissé félrevezető.
Mivel a legtöbb program, amit írok, de tényleg, a
egyfajta magasabb szintű és összpontosítás problémákat megoldani,
Biztos, talán használni néhány összeadás, kivonás, és a különböző
matematikai képletek vagy a hasonló,
de a végén a nap, ez a gondolkodásról, és nem
Csak végrehajtási mit volna elvégezni, mint a TI
számológép a gimiben.
>> Tehát azt mondta, most már valamit csinálni ezekkel
matematikai üzemeltetők léteznek, hogy mi lehet utazásként
felett néhány Az alapul szolgáló vonatkozásainak programozás, vagy
Ebben az esetben C. Tehát vannak, mint a CS50 könyvtár javasolta,
és ma mi csak használ getString -, és egy pillanat alatt
esetleg egy másik funkció -
de vannak különböző adat típus egy számítógép.
A nap végére a számítógépek csak azt tudják 0s és 1s.
De emlékeztetni arra, hogy a múlt héten beszéltünk a bináris rendszer
A képviselő számok, mint a szám 0, és 1, és 2,
egészen a maximum 8, mint Nate képe.
És akkor mi is számít sokkal nagyobb, mint mi
tette a színpadon van.
De ha azt akarjuk, hogy képviselje nemcsak számokat, hanem betűket,
mi, az emberek, van, hogy dolgozzon ki néhány önkényes
egyezmények, ahol, ha a végén a nap az én számítógép
még az a képesség, hogy kifejezze 0s és 1s, nos mi lenne jobb
kezdeni szabványosítása minták 0s és 1s képviselő
különböző dolog.
A minta 0s és 1s, amely képviseli a levelet a.
Patterns of 0s és 1s, hogy képviselje a levél z.
Patterns of 0s és 1s, hogy képviselje a kék szín, vagy
vörös, vagy a hasonlók.
Meg kell, hogy minden ilyen 0s és 1s kifejezni magunkat
különböző kontextusokban, különböző módokon, amelyek nem
szükségképpen numerikus.
>> Így a képviselet tekintetében, a C különböző adattípusok
és láttunk egy ilyen eddig.
Láttuk int, és figyelje meg mi nem a képernyőn
most az string.
Karakterlánc nem, sőt, léteznek C. Ismét, ez egy
egyszerűsítés vagyunk bemutató az első
pár hétig.
A karakter egy egyéni jellegű.
Az úszó egy valós szám, a tizedes pont és számok
a bal és a jobb oldalán.
A kettős, amit, azok számára, akik vissza korábbi háttérben?
Tehát egy kettős kétszer valami.
Ad kétszer annyi pontossággal.
Szóval mit jelent ez?
Így minden, ezekben az esetekben a világ fajta szabványosított
hány bitet használnak az
Minden ilyen dolgokat.
Tehát, ha már figyelte Nate ASCII videó már egy része
A Pset 0, vagy később ezen a héten lesz, akkor valószínűleg tudja,
hogy az ASCII -
karakter képviseletek -
használja hány bit?
És talán még emlékeznek a mi demo a múlt héten, hogy milyen
sokan voltak a színpadon.
Így 7 vagy 8, jellemzően.
Tehát általában 8, és van valami úgynevezett kiterjesztett
ASCII használó minden 8 bit, 7 helyett.
De általában, Beszélhetnénk 2 hatványai, így ebben az esetben, 8.
Tehát egy char egy programozási nyelv, általában 8 bit.
Tehát egy int általában 32 bit.
Az úszó általában 32 bit.
A kettős általában 64 bit.
És mit jelent ez?
Ez azt jelenti, hogy képviselje nagyobb számokat, vagy abban az esetben,
a valós számok, akkor már sokkal több szám után
tizedesjegy pontossággal.
Sokkal pontosabb, ebben az esetben.
Most egy hosszú, hosszú sajnos nevét.
Szóval van egy int, amely 32 biten.
Van egy hosszú, amely, dehogy, 32 bit.
És egy hosszú, hosszú, amely 64 bit.
Azonban néhány ezek környezetfüggő, ez attól függ,
Milyen számítógépre van.
Tehát általánosságban, akkor adja meg a házi feladat vagy kvíz, amikor
valójában számít.
De a lényeg ott van mindezen különböző
ábrázolások itt.
>> Szóval tényleg belevetik magukat a program.
Ahelyett, hogy levelet ez a semmiből, hadd menjek előre
és nyissa ki a mai forráskódját - minden, ami
online - ha azt szeretnénk, hogy bütykölni körül online, vagy megtérülése
Szerdán a készüléket a számítógépre, utasítások
amelyek össze fogja kapcsolni a kurzus honlapján.
Itt egy szuper egyszerű program.
De van egy kis valami újat a tetején, hogy
nem volt korábban.
Egy csomó kék sornyi szöveget.
Tehát ezek a kék vonalak hozzászólás.
Szóval ez nagyon hasznos a program, hogy képes legyen írni
néhány megjegyzést saját magának, illetve a kollégák, vagy barátok, vagy
tanítási fickók, hogy az a fajta írni mi folyik
ezt a fájlt, de semmi köze a C kódot is.
Semmi köze a program funkcionálisan, ez csak
esztétika.
Tehát úgy, ahogy ezt a C akkor általában kezdeni a
észrevételek / *, és akkor vége a észrevételek
* /.
És ha tényleg anális és szeretném felhívni a fajta képek,
akkor azt, hogy egy csomó csillagok, akkor azt, hogy egy
kis doboz, mint ez.
De mindez nem számít.
Az egyetlen dolog, ami számít, az első
és az utolsó.
Ezt hívják többsoros megjegyzést.
És ez csak az emberi konvenció, hogy gyakran a csillagok és a doboz
dolgok, mint ez, ha sok szabad időt.
>> Szóval, miután írt néhány megjegyzést, általában, gyere
tényleges belek a program.
Itt a megszokott # include .
És csak gyors, ez szükséges vagy nem szükséges?
KÖZÖNSÉG: Szükséges.
DAVID Malan: Tehát ez valójában nem szükséges.
Akkor miért, bár, ez nem szükséges?
Szóval nincs printf.
Valóban.
Minden, amit csinálunk ebben a programban a matematika.
Szóval valóban törölni azt.
Szóval nem mindig fel semmit
a tetején a program.
>> Szóval ez egy kicsit egyszerűsíteni.
És most észre, hogy mi ez a program nem.
Nem sok érdekes.
int x = 1.
Nos, mi ez csinál?
Nos, gondolom, vissza a mentális modell előtt.
A bal oldali ez a kifejezés mit csinál?
Hozzon létre hely egész.
Szóval, mennyi helyet?
Nos, történetesen most már tudom, hogy ez 32 bites.
Korábban egy string műszakilag 32 bit, de több
az, hogy a jövőben.
De egy int a 32 bit.
Tehát ez a kifejezés, a bal oldalon van, int x, csak azt mondja, hey
operációs rendszer, adj 32 bit RAM -
más néven 4 bájtja RAM -
így tudom rakni egész szám, hogy a tér.
Mit integer akartál tenni?
Nos, csak az 1-es szám.
int y kap 2, nem pontosan ugyanaz a dolog, még ha a
szám nagyobb, tekintve annak nagyságát.
A szám maga is csak 32 bit.
Ez csak a minta bitek különbözik
képviselnek 1 versus 2.
int z most azt mondja nekem egy 32 bites, hívja z, és helyezze a
összegzése 1-2-ott.
Így, hogy most z vélhetően tárolja az érték 3,
, majd vissza 0-ra.
>> Most ez a program, nem is csinál semmit érdekes?
Tehát ez valójában nem csinál semmit érdekes, minden
értelme, mert miért? Ez csinál valami matek.
De ez nem vissza a válasz, igaz.
Ez visszatérő 0.
Ez nem nyomtat a választ.
Szóval ez a program alapvetően értéktelen, mert
áll most.
Ez csinál valami munkát.
Ez fog tartani bizonyos számú másodperc, vagy ezredmásodperc, a
futni, de ez valójában nem csinál semmit
hasznos az emberi.
>> Úgyhogy tulajdonképpen most nyissuk math2, ahol most vagyok, tényleg
nyomtatás az eredményt.
Szóval ez is lehet következtetni az előző példákban.
Ha azt akarom, hogy néhány egyszerű matematika, int x = 1, y
= 2. z = 1 plusz 2 most.
Mit fog ez kinyomtatni nyilvánvalóan?
Mindössze 3.
Így gyorsan józanság megtekintéséhez.
Hadd helyezze ebbe a könyvtárba.
Szóval cd source1m.
Hadd menjek előre, és írja be, hogy math2.
Nincs hiba üzenet jött ki, úgyhogy hadd futni -
Nem a.out--Hadd futni math2. Az Enter billentyűt.
És valóban, a kinyomtatott 3.
Nos, vessünk egy pillantást egy változata ez.
A math3.c, most már ezt a példát itt.
>> Szóval ez az ember ilyen érdekes.
Tehát ez itt, választ fog kapni 1 osztva 10,
, és vegyük észre, amit bejelentett, mint egy úszó.
Miért akarom, hogy legyen egy float?
Nos, ez a frakció.
Ez lesz a valós szám.
Így lesz 0,1, remélhetőleg - 10%, ebben az esetben.
És mit tegyek majd szeretnék nyomtatni?
Nos, ez a válasz.
Nos, kötekedik ezeket szét először.
Tehát a bal oldali nyilvánítja a
úszó, hívjuk választ.
A jobb oldal, DO 1 osztva 10, és tegye azt
answer belül a változó.
Nos, úgy néz ki, ez a vonal egy kicsit rejtélyes.
De észre néhány ismerős funkciók. % Azt jelenti, itt jön a
helyőrző.
f: az itt van egy lebegőpontos érték, csak egy igazi
számot, valami tizedespont.
0,2 mit jelent?
Bárki, aki tudja az előzetes tapasztalata?
Két tizedesjegy pontossággal.
Tehát nem láttam ilyet, de ez csak egy módja
gyakorlása egy kicsit több beleszólásuk printf és
mondás ne adj 30 pontot a tizedespont után,
ahelyett, adj mindössze 2.
>> És akkor menjünk előre, és fuss ez.
Tehát, hogy matek 3, és most hadd futni matek 3, Enter.
És ez nem helyes.
Úgy tűnik, találkozott az első igazi bug.
Nos, talán én csak nem keres elég közel.
Akkor engedj el ide, hadd tegye 20 tizedes
pont helyen van.
És hadd fordítani e, hogy math3, fuss.
Pretty Biztos 1 osztva 10 nem 0-ra.
Szóval, mi folyik itt?
Hát oké, így valójában nincs köze ehhez.
Ez egy jó gondolat.
Ez tényleg csak egy véletlen egybeesés
hogy ezt csináljuk.
De csak annak bizonyítására, hogy ez nem igaz, én
vissza valami véletlenszerű.
Ne csináld ezt otthon, mert ez csak rossz.
De hogy math3, hadd futtatni.
Tehát semmi köze ahhoz, amit én vissza, csak meg kell tennie
, amit én a nyomtatást.
De azt hallottam, hogy itt lent.
Mi az?
KÖZÖNSÉG: Tehát meg kell írni a számokat
a felosztást -
>> DAVID Malan: Oké jó.
Tehát meg kell írni a számokat részt vevő
körzet itt lebegőpontos értékek magukat.
Tehát a probléma itt is, mint korábban: C, mint sok
nyelvek, eltérő adattípusok.
És azok adattípusok, például ezek itt.
És az adattípusok kérdést itt, mikor írja be az 1 és utána
10-es típus, valószínűleg mi adattípusok?
Szóval ez valószínűleg egy int, ugye?
Ez biztosan nem egy úszó mert nincs tizedes
pont vagy ilyesmi.
Szóval tényleg, van egy int osztva int.
>> Tehát az érdekes dolog matematika és a számítógép, hogy a
ha csinálsz részleg használata egészek -
1 osztva 10, igen: 0,1.
Azonban, amikor elosztják értéke egy egész szám, az
választ meg is egész, csak azért, mert most.
És mi a hatása akkor?
Nos, ha a válasz 1 osztva 10 egyenlő 0,1, mit
a számítógép fog tenni az fogalmam sincs, hogyan kell
képviselnek 0,1, mert ez egy lebegőpontos érték, nem
integer; ez fog levágja mindent után
tizedespont és csak megmutatja a 0 az elején.
És az a tény, hogy ez nyomtat egy lebegőpontos
érték, ez csak egy esztétikai dolog.
Ez azért van, mert én vagyok kényszerítve a számítógép nyomtassa ezt egy
lebegőpontos értéket.
És valóban, én kijelentette, mint egy úszó, de a matematika
történik itt.
>> Szóval hadd ténylegesen erősít ez egy nagyon egyszerű módon.
Miért nem csak csináld, 10,0 és 1,0, de
műszakilag tudtam megúszni, csak csinál egy ilyen.
Most hadd menjen előre, és math3.
Hadd menjek előre, és most fut math3, Enter.
És most, oh boy.
Most van egy új probléma teljesen.
Szóval jobb, ugye, mi vagyunk közelebb a 0,1, de mi nyilván
baj van?
Hacsak mi már hazudik neked évek óta, igaz?
1 osztva 10 valójában nem egészen 0,1, így mi
Tényleg folyik itt?
Hát akkor milyen okból ezen keresztül logikusan.
Ha a számítógép csak egy véges mennyiségű RAM kezdeni
be, sőt a számítógépet csak az a 32 bit a
lebegőpontos érték, magától értetődik, hogy egy
véges bitek száma, 32 ebben az esetben igen, akkor
jelentenek egy csomó dolgot.
Ez valójában 4000000000 különböző értékeket lehet
képviseli a 32 bit, 2 a 32, de ez még mindig véges.
Tehát a probléma van egy végtelen számú valós
számok, jobbra.
Ha adsz nekem egy valós szám, én is mindig talál neked egy
valamivel nagyobb, valamivel kevesebb, ha csak a csípés
számok, amelyek a tizedesvessző után.
Tehát, ha nincs végtelen számú bit, akkor
semmiképpen nem jelenthet végtelen
számú valós számok.
>> Szóval, itt van ez a benne rejlő pontatlanság számítógépek és
ez lesz megbotlott minden alkalommal még a legegyszerűbb
programok, mint ez.
De néhány nagyon valódi világ problémáira is.
Tény, hogy vessünk egy pillanatra, hogy csak egy pillantást
valami, ami valóban megtörtént a valóságban.
Majd nézni csak az első pár percet, majd
feltesszük a kapcsolatot online.
De ez bizonyíték arra, hogy éppen mi baj, egészen
őszintén szólva, egy nagyon tragikus módon, amikor ezek a dolgok nem
értékelik, vagy csak mi, emberek hibáznak, amikor a
Az ilyen típusú végrehajtásának részleteit a modern számítógépek.
>> [VIDEO lejátszása]
-Most vissza mérnöki katasztrófák Modern csodák.
Számítógépek.
Mindannyian jön, hogy elfogadja a sokszor zavaró problémák
, hogy menjen velük.
Bugs, vírusok és a szoftver hibák kicsik árak
fizetnie a kényelem.
De a high-tech és a nagy sebességű katonai és tér
programot alkalmazások, a legkisebb probléma lehet
nagyított a katasztrófa.
Június 4-én, 1996, a tudósok elő, hogy indítson pilóta nélküli
Ariane 5 rakéta.
Ezt könyv tudományos műholdak tervezett
megállapítani pontosan, hogy a Föld mágneses tere
kölcsönhatásba lép a napszél.
A rakéta épült az Európai Űrügynökség és az
emelte ki annak létesítmény partjainál Francia Guyana.
>> -Körülbelül mintegy 37 másodperccel a repülés, először
Észrevettem valami baj, hogy a fúvókák voltak
billentés olyan módon, hogy tényleg nem kellene.
Körülbelül 40 másodperccel a járatot, egyértelműen a jármű
bajban volt, és ez az, amikor úgy döntött, hogy
elpusztítani.
Számos biztonsági tisztviselő óriási belek megnyomta a
gombot, felrobbantotta a rakétát mielőtt válhatna
veszélyeztetheti a közbiztonságra nézve.
>> -Ez volt az első út az Ariane 5, és a
megsemmisítés került sor, mert egy hiba ágyazott
rakéta szoftvere.
>> -A probléma az Ariane az volt, hogy ez a szám
előírja, 64 bit, hogy kifejezzék és akarták alakítani
egy 16 bites szám.
Azt feltételezték, hogy a szám soha nem volt
lesz nagyon nagy,
hogy a legtöbb ilyen jegy a 64 bites szám volt 0s.
Voltak rossz.
>> -A képtelenség egy szoftver, hogy elfogadja a
fajta generált szám egy másik volt a gyökere
a hiba.
Szoftverfejlesztés vált nagyon költséges része
új technológia.
Az Ariane 4 rakéta volt nagyon sikeres.
Ennyit a szoftver létrehozott azt is használták
Az Ariane 5.
>> -Az alapvető probléma az volt, hogy az Ariane 5 gyorsabb volt,
felgyorsult gyorsabb.
És a program nem számolják el ezt.
>> -A megsemmisítése a rakéta egy hatalmas pénzügyi
katasztrófa, minden miatt egy percet szoftver hiba.
De nem ez volt az első alkalom, adatkonverzió problémák voltak
sújtja a modern rakéta technológia.
>> DAVID Malan: Majd hagyjuk ennyiben.
De ez bizonyíték arra, hogy milyen is alkalmazandó egyes
Ezen legalacsonyabb szintre details hogy már megkezdte a
vizsgálja meg ma.
Tehát még akkor is ha egy kicsit megzavart talán néhány
A szintaxis és arcaneness itt, rájönnek, hogy az
kifejezést fogunk összpontosítani, csak arról, hogyan alkalmazható ez az, hogy
világok messze CS.
Fogjuk látni szerdán.