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编程
- D-linjen páChalmers
- DV-linjen pöteborgs大学
韦布西丹
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
- 库尔森领导下的vad man ska lära sig
- 赫尔曼·斯卡·格拉·福尔(ska göra för att klara kursen)
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
Operativsystemet 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数据仓库
- användaren kan lätt程序集系统
- relativt文胸säkerhet
- “känns rätt”p.g.a.enkelhet,tydlighet,modularitet,ortogonalitet,öppenhet
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--visa mitt användarnam签证$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程序更受欢迎。
Speciellt lämpligt för att skriva项目i。
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:datorarkitektur,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公司
- skriva Haskell程序
- kompilera dem med GHCi公司
- 科拉德姆·帕达通
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
,i GHCi中的läs,och kör i GHCi
序曲>:l MyProgram.hs我的程序>阶乘12479001600
Snabbt för程序stora som smá,男性智能化。
Det vi mest an vänder resten av kursen警察局。文件我的程序.hs
kan se ut sáhär:
阶乘n=乘积[1..n]
Funktitonell编程
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公司。
英语模块,som heter前奏曲
ä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实验者。
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公司:
- 再过滤器元件:
x个
- 发电机:
x<-[1..100]
- 维尔科:
偶数x
对象。即使
•r en funktion som avgör om ett talär jämnt。Den返回者真的
埃勒False(错误)
.
Mera val frán en lista公司
Vi ska sitta ner och prova示例:
- 利斯塔av alla tal somär udda(
古怪的
) - 利斯坦·阿拉·塔尔·索马·敏德雷(
<
) 50 - 利斯塔av alla tal vars kvadratär mindreän 200
- 利卡·梅德利斯坦(
==
)sig själva公司
“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 etta separate i det tredje示例。
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]
埃特原始的haringa andra faktorerän 1 och sig självt公司。赫尔斯卡vi uttrycka detta i Haskell?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典型签名者直到瓦杰·芬克顿:
模块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örklarasi Föreläsning第三节。
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名分级员)。Konversionsformelnär: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。杜夫兰达文件初级.hs
som hjälp公司。
4.Definiera ett Haskell-utryck公司双胞胎
,som通用(den oändliga?)塔布伦大道所有tvillingprimital。杜夫兰达文件初级.hs
som 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
,索姆格利斯塔av approksimationerna medn=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公司。
瓦杰定义ska börja frán bör jan 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类型:
- 赫塔尔:
国际
,med阳性och阴性heltal - flyttal(“卷轴”):
浮子
桑宁斯瓦尔登:布尔
,医学博士objekten真的
och公司False(错误)
数据挖掘器:
- 列表器:
【a】
där村一
är en类型 - 标准:
(a、b)
,där一
och公司b条
är打字机
Funktitoner:a->b
där村一
och公司b条
är打字机
- 弗勒斯塔·利加(flerställiga)funktitoner skrivs som
a->b->c
乌特里克
Infixoperator公司,med parenteser vid behov医生:(2 + 3) * 4 > 15
功能应用程序:可分割12 4
列表者:
- 列表:
[1,2,3]
- 范围:
[1 .. 100]
,[1 ..]
,[1,3 .. 100]
- 列表控制:
[x*x|x<-[1..100],偶数x]
前奏曲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