1.Datoranvändning,matematiska计划

阿内·兰塔
Datorintroduktion 2009,D och DV,Chalmers&GU

德哈·库森

介绍截止日期

Utformad för dem som vet och skall veta allra mest om datorer och编程

韦布西丹

Hur hittar man den:弗伦·斯瓦拉斯特直到勒塔斯特

0.Navigera i Chalmers研究门户

http://www.student.chalmers.se网站/

1.Anteckna URL(统一资源定位器)

网址:http://www.cs.chalmers.se/~aarne/datorintro/

2.Googla med公司

datorintroduktion D-linjen Chalmers公司

3.Googla med läraren公司

阿内·兰塔

tryck pá“Datorintroduktion”

Kursens uppbygnad公司

Vi gár snabbt基因组库尔斯韦布西丹,för att förklara

Datavetenskap公司

Datavetenskap公司(计算机科学)har sina rötter pátváháll:

Datavetenskap kan därför se rätt sáolika ut beroende pá数据仓库。

哈德瓦拉och mjukvara

hárdvara=蒙斯坦瓦拉,mjukvara=程序瓦拉

米丘瓦拉användar程序--Firefox、emacs、GHCoperativesystemet--Windows、Unix、Symbian-------------------------------------------------------------阿尔德瓦拉datorn--PC、Mac、iPhone、PSP

操作系统和Unix

Första versionen i 1970年

namnen Linux、Mac OS X、SunOS、BSD下的Känns numera。。。

Fungerar páalla分拣机屏蔽器

Populärt bland professionella programmerare och数据仓库

Huvuddelarna i Unix公司

Kärnan(工程内核):närmast hárdvaran

Filsystemet:kataloger och文件管理器

Kommandotolken(工程外壳):närmast användaren

Därtill公司:

Shellkommandon公司

诺曼·马塔特(När man matat in an vändar-ID och lösenord),科莫(kommer)是上一届伊特男子fönstersystem公司。

Man kan döppna ett“shell”,som kan heta“terminal”,“konsole”,“xterm”,“cygwin”等。

我是雪伦·科尔维·费尔詹德·科曼登(vart ochett efter prompten)$):

$whoami——签证许可证$pwd—打印工作目录$ls--lista innehállet i图书目录$mkdir datorintro——斯卡帕图书馆för kursen$cd datorintro--gátill det nya图书目录

För mera信息:参见Unix-kompendiet(kommer snart)

Emacs公司

En texteditor somär mánga程序更受欢迎。

在skriva计划中,我选择了Speciellt lämpligt för。

Kanöppnas frán shellet med kommandot公司电子邮箱埃勒·埃文图尔特en-meny我是“应用程序”eller motsvarande。

船级社:

$emacs MyProgram.hs--öppna文件n MyProgram.hs i emacs-editorn

程序sprák i vár utbildningar

Vi lär ut Haskell först先生

Senare lär vi Java,C,汇编程序

Ochännu lägre:数据集,kretselektronik。。。

Ochännu högre:matematiska modeller av beräkning公司

Och bryggan mellan nivár:科皮拉托人

Kompilatron公司

Kompilatronär ett程序som automatisktöversätter högnivásprák直到马斯金斯普拉克。

Detär där för programmerarna(过去)kan hálla sig直到högnivásprák。

Detär där för samma程序kan köras pöolika分拣器数据器。

GHC(i)

GHC=格拉斯哥-哈斯克尔编译器

GHCi=GHC互动

Vi kommer att公司

GHC(i)finns för Linux、Mac、Windows。。。免费赠送

网址:www.haskell.org/ghc

Ett sätt att använda GHC(i)

启动ett GHCi-shell i Unix-shellet och skriva程序直到提示

$ghci前奏曲>2+24前奏曲>总和[1..100]5050

Snabbt och effektivt för mycket korta项目。

阿尔文·福尔(Val ven för att testa längre)项目。

Ett annat sätt att använda GHC(i)

Skriv程序i en fil,t.ex。我的程序.hs,läs在i GHCi中,och kör在i GHCi中

序曲>:l MyProgram.hs我的程序>阶乘12479001600

Snabbt för程序stora som smá,男性智能化。

Det vi mest an vänder resten av kursen警察局。文件我的程序.hskan se ut sáhär:

阶乘n=乘积[1..n]

Funktionell编程

Haskellär ett公司funktitonellt程序

Köra ett程序=beräkna värdet av en funktion med givna参数

Exempel frán matematik公司:

f:R->R

f(x)=(x+1)(x-1)

f(3.1)=8.61

(Ungefär)samma exampel i Haskell:

f::浮动->浮动f x=(x+1)*(x-1)我的程序>f 3.18.61

Aritmetiska funktitoner i Haskell公司

Heltal,flyttal公司:国际,浮子

De fyra räknesätten:+ - * /

Potensupphöjning公司:2.7 ^ 6

Dessa kan kombineras i公司奥特里克,där parenteser kan behövas:

前奏曲>2+3*414前奏曲>(2+3)*420

Nu ska vi sitta ner och göra nágra beräkningar公司。

前奏曲模块

GHC预防性visar den模数vars funktitonerär tillgängliga公司。

以模块为单位前奏曲är alltid tillgänglig。

阿尔文·曼·哈拉达特在ett-annat项目中前奏曲蒂尔加恩格里格。

前奏曲inneháller de flesta funktitoner vi behöver pádenna kurs,t.ex公司。马蒂马提斯卡·芬克蒂昂纳(de viktigaste matematiska funktitionerna)。

列表器

你的定义是什么?

刚确定:vi behöver en利斯塔平均值。

Listor kan skrivas páolika sätt:

[][1,2,3}[1 .. 100][2,4 .. 100]

前奏曲funktitonen总和总资产收益率德拉斯萨玛。编号:

前奏曲>总和[1,2,3]/32前奏曲>总和[1..100]/10050.5

Oändliga列表器

En lista kan vara oändlig公司。

前奏曲>[1..][1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42、43、44、45、46、47、48、49、50、51、52、53、54、55、56、57中断。

试着控制Cör att avbryta beräkningen!

Kan vi beräkna summan av en oändlig lista?

前奏曲>总和[1..]前奏曲>总和[0,0..]

Dags att sitta ner och experieriera igen(Dags在现场进行实验)。

Val frán en lista公司

Hur skriver vi listan av jämna tal mellan 1 och 100?

Antingen med steging医学:

[2,4 .. 100]

埃勒·奥克斯马德·恩列表控制:

[x|x<-[1..100],偶数x]

Delarna i listkomphrensionen公司:

对象。即使•r en funktion som avgör om ett talär jämnt。Den返回者真的埃勒False(错误).

Mera val frán en lista公司

豁免情况:

“Och”Och“eller”

Villkor kan kombineras医学院&&(“och”)och||(“埃勒”)。

Listan av tal somär mindreän 10 eller störreär 90:

[x|x<-[1..100],x<10||x>90]

胡姆嘎?

Funktitonen公司长度愤怒情绪längd州索姆赫塔尔。

前奏曲>长度[]0前奏曲>长度[2,4..100]50前奏曲>长度[1,1,1]

观察员长度räknar varje是一个单独的例子。

Hur mánga tal uder 100 har kvadrat mindreän 500?

长度[x|x<-[1..100],x*x<500]

阿尔·安德拉(Al ndra)恢复了我的血压

第1条至第6条:;

[x+1|x<-[1..100]]

Ta en lista av tal returnera talens kvadrater公司:

[x*x|x<-[1..100]]

Ta en lista av tal och returnera talens fakutter公司:

[产品[1..x]|x<-[1..20]]

Ta en lista av tal returnera kvadraterna av dem somär udda公司:

[x*x|x<-[1..100],奇数x]

Nu ska vi verkligen sitta ner och实验者!

Klipp av en lista公司

Man kan“klippa av”början av en lista,även oändlig,医学博士:

取5[1..]=[1,2,3,4,5]取5[1,2,3]==[1,2,3]

Med detta kan man斯卡帕近似值av en oändlig列表:

前奏曲>take 10[1/n|n<-[1..]][1.0,0.5,0.3333333333333333,0.25,0.2,0.16666666666666666,0.14285714285714285,0.125,0.1111111111111111,0.1]

Par och tabeller公司

Listorär en公司数据搜索器:en komplex形式av数据(jämfört med塔尔、索马恩卡拉)。

En annan datastrukturär标准

(1,2)

英语塔贝尔牌手表地址:

[(x,x*x)|x<-[1..100]]

Och,lite-mer incressant:av kvadratrötter:

[(x,sqrt x)| x<-[1..100]]

直到范例出现为止。

Delbarhet och伪造

När ett heltal delas med ett heltar,kan man fákvoten med funktitonendiv公司och-resten医学院模块:

前奏曲>div 13 52前奏曲>模块13 5

Att ett tal公司är村德尔巴特医学n个贝特德·阿特

mod m n==0

其他冒牌货德尔巴特医学院:

[n|n<-[1..m],mod m n==0]前奏曲>[n|n<-[1..123],模块123 n==0][1,3,41,123]

Ett公司原始的haringa andra faktorerän 1 och sig självt公司。赫尔斯卡我是哈斯克尔吗?Lot oss prova!

埃特·德尔巴赫茨比利奥泰克

Beräkna alla primfaktorer av talet 45678号。

Det här blir risigt,även med listkom prehensioner公司。

斯克里瓦特诉讼中的Nuär det dags文献技术,已存档användbara funktitoner som har att göra med delbarhet:

模块Prime,其中可分m n=模m n==0因子m=[n|n<-[1..m],可除mn]素数m=m>1&&因子m==[1,m]素数因子m=[n|n<-因子m,素数n]

Primtest och faktortabellen公司

Vi laddar várt bibliotek i GHCi:

前奏曲>:l初级.hs素数>素数因子45678[2,3,23,331]

Nyuppgify:skriv ut tabellen av alla tal frán 1至1000 ochderas primfaktorer公司。

素数>[(x,primeFactors x)|x<-[1..1000]][(1,[]),(2,[2]),(3,[3]),(4,[2]),(5,[5]),(6,[2,3]),(7,[7]),(8,[2]),(9,[3]),(10,[2,5]),(11,[11]),(12,[2,3]),(13,[13]),(14,[2,7]),(15,[3,5]),(16,[2]) ...

Obs:vár algoritm för att räkna primfaktorerär lángsam:senare kurser skalära ut bättre算法!

Delbarhetsbiblioteket医学打字机

För att dokumentera vad funktitionerna gör愤怒的男子med Fördel典型签名者直到varje funktion:

模块Prime,其中可分割::Int->Int->Bool可分m n=模m n==0因子::Int->[Int]因子m=[n|n<-[1..m],可除mn]素数::Int->Bool素数m=m>1&&因子m==[1,m]主因子::Int->[Int]素数因子m=[n|n<-因子m,素数n]

Tvillingprimtal公司

Konjektur:Det finns oändligt mánga公司第页萨达纳·阿特·巴德第页och公司第+2页är primtal。T.ex.3,5;5,7 ; 11,13 ; 17,19 ; ...

Detta har varken bevisats eller motbevisats.德塔·哈尔·瓦尔肯·贝维萨斯·埃勒·莫特贝维萨茨。

升级:Skriv ett Haskell program som generarra(den oändliga?)listan av所有tvillingprimital。

提升机

格式

Uppgifterna ska redovasis i en fil公司示例1.hs,som ser ut sáhär:

模块Main,其中导入Primemain=做打印ex2打印ex3打印ex4打印ex5--定义erna av ex2,ex3,3x4,ex5,samt eventuella hjälpfunktitoner

När man kör kommandot先生

梯级Ex1

斯科里夫斯·洛斯宁加纳·帕斯克尔曼(rad för rad)。

赫尔打印och公司例如fungerar kommer att förklaras我是Föreläsning 3。

Uppgifterna公司

1.Skriv och beräkna ett Haskell-utryck som anglet dagar轿车duöddes。

2.Definiera ett Haskell-utryck公司例2,som generarr tabellen av公司从华氏温度到华氏温度的konverteringar0,20,40,...,300人(20名分级员)。德国版本:C=5(F-32)/9。T.ex.om F=86är C=30。

3.Hur mánga primtal finns mellan 0 och 1000 respective 7000 och 8000?Definiera ett uttryck公司例3,som returnerar dessa som ett par。杜夫兰达文件初级.hssom hjälp公司。

4.Definiera ett Haskell-utryck公司双胞胎,som通用(den oändliga?)塔布伦大道所有tvillingprimital。杜夫兰达文件初级.hssom hjälp公司。Definiera轿车ett uttryck例4蒂奥弗斯塔先生帕伦。

5.Skriv en funktion公司地理,som近似值丝状几何体

1+1/2+1/4+1/8+…+1/(2^n)+。。。

梅德埃特·赫塔尔n个som参数。Skriv轿车ett uttryck例5,索姆格医学辅助评估列表n=1,。。。,10.

Sammanfattning och裁判

GHCi=Glasgow Haskell编译器交互式

Starta GHCi med kommandot公司全球温室气体排放指数

Beräkna värdet av ett uttryck:skriv uttrycket i提示

Ladda en fil公司::l文件

帮助::?

Avbryta beräkning:控制-C

Föregáende kommando:堆积

哈斯克尔·菲勒

模块-标题弗勒杰德·奥文图埃拉模块importdirektiv弗尔吉达av功能定义器不丹医学院典型签名者:

模块Prime,其中导入列表可分割::Int->Int->Bool可分m n=模m n==0--ingen typsignatur(德塔亚·恩·科门塔尔)因子m=[n|n<-[1..m],可除mn]

模块Prime(主要)ska finnas i文件初级.hs.

Undantag:om模块heter主要kan filen heta vad som helst公司。

Varje定义ska börja från början av en rad。Inget annatför placeras i början av en rad(förutom kommentarer)。

Unix och旗下Det finns mága sätt att skapa och modifierra en filandra操作系统。De flesta数据记录器Emacs公司.Den kan startas frán Unix-shellen med kommandot公司电子邮箱.Döppnas ett fönster med menyer för att skapa,öppna och spara filer,osv。

打字机

Numeriska类型r:

桑宁斯瓦尔登:布尔,医学博士objekten真的och公司False(错误)

数据挖掘器:

Funktitoner:a->bdär村och公司b条är打字机

乌特里克

Infixoperator公司,med parenteser vid behov医生:(2 + 3) * 4 > 15

功能应用程序:可分割12 4

列表者:

前奏曲funktitoner

--为数字类型定义(+)::(数字a)=>a->a->a(-)::(数字a)=>a->a->a(*)::(数字a)=>a->a->a(/)::(数字a)=>a->a->a(^)::(数字a)=>a->Int->a---a ^när a upphöjt till potens ndiv::Int->Int->Int修改::Int->Int->Intsqrt::浮点->浮点--为具有等式的类型定义(==)::(方程式a)=>a->a->Bool(/=)::(方程式a)=>a->a->Bool(<)::(方程式a)=>a->a->Bool(>):(方程a)=>a->a->Bool(&&)::布尔->布尔->布尔(||)::布尔->布尔->布尔偶数::Int->Bool奇数::Int->Bool总和::(数字a)=>[a]->a产品::(数字a)=>[a]->a长度::[a]->Int取::Int->[a]->[a