12/02/2014Introduction to ProgrammingandProgrammingComputerArchitectureRichard BowdenRichard BowdenR.Bowden@surrey.ac.ukR.Bowden@surrey.ac.ukRm37AB05Rm37AB05www.surrey.ac.uk/Personal/R.Bowdenwww.surrey.ac.uk/Persona/R.Bowden.Howmanypeoplehaveprogrammedbefore?.What languages?Howmanypeople have programmedCor.C++?.Can anyonenameanyotherprogrammingProgramminglanguages?WHY C?.Some people find programming naturalRichard BowdenR.Bowden@surrey.ac.ukLearning a language doesn't necessarily.Rm 37AB05makeyoua programmerwww.surrey.ac.uk/Personal/R.BowdenThe only way to learn is to do it.ABrief HistoryofCWhyprogrammeinC?.Late1960sBCPL designed by Martin Richards, Cambridge:Advantages- Cis a real worid language, widely available and popular·1970Based on BCPL, B was designed by Ken Thompson,with professionalAt&T Bell Labs, for systems programming Cis a small, efficient, powerul and flexible language1972Based on B, C was designed by Dennis Ritchie, AT&TChas been standardised, making itmore portable thanBell Labs, for writing the Unix operating systemsome other languagesC is close to the computer hardware revealing the-·1970s,80sUnix and C gained wide popularityunderlying architecture1989C standardised: ANSI standard X3.159-1989- Cprovides enough low level accesstobe suitable forembedded systems1990C adopted as an international standard: ISO 9899:1990.Cis a high level language allowing complex systems to-beconstructedwithminimumeffort:1990sMinor amendments made to the standardsI
12/02/2014 1 Programming Richard Bowden R.Bowden@surrey.ac.uk Rm 37AB05 www.surrey.ac.uk/Personal/R.Bowden Introduction to Programming and Computer Architecture Richard Bowden R.Bowden@surrey.ac.uk Rm 37AB05 www.surrey.ac.uk/Personal/R.Bowden Programming Richard Bowden R.Bowden@surrey.ac.uk Rm 37AB05 www.surrey.ac.uk/Personal/R.Bowden • How many people have programmed before? • What languages? • How many people have programmed C or C++? • Can anyone name any other programming languages? • WHY C? • Some people find programming natural • Learning a language doesn’t necessarily make you a programmer • The only way to learn is to do it A Brief History of C • Late 1960s BCPL designed by Martin Richards, Cambridge • 1970 Based on BCPL, B was designed by Ken Thompson, At&T Bell Labs, for systems programming • 1972 Based on B, C was designed by Dennis Ritchie, AT&T Bell Labs, for writing the Unix operating system • 1970s,80s Unix and C gained wide popularity • 1989 C standardised: ANSI standard X3.159-1989 • 1990 C adopted as an international standard: ISO 9899:1990 • 1990s Minor amendments made to the standards Why programme in C? • Advantages – C is a real world language, widely available and popular with professional – C is a small, efficient, powerful and flexible language – C has been standardised, making it more portable than some other languages – C is close to the computer hardware revealing the underlying architecture – C provides enough low level access to be suitable for embedded systems – C is a high level language allowing complex systems to be constructed with minimum effort
12/02/2014Why programme in C?Why programme in C?·AdvantagesDisadvantages- C's modular approach suits large,mutt-programmerprojects- Cis not really a language for novices;it was designed forprofessional usersC's use of libraries makes it adaptable to many differen There are many things that can go wrong if you're not carefulapplicationareas The Unix operating system was wrtten in C and supports C C lacks much of he automatic checking found in other highlevel languages- C gave birth to C++,widely used for applications programming Smalltyping errors can cause umwanted effectand more recently Java which was based upon C++Manyotherlanguagesborrow from C'ssyntax:e.q.Java,-Does not support modern concepts such as objectJavaScript,Perletcorientationand multi-threading"C provides enough ropeto hangCprogram-Intro.cyourself time and time again"/+Exanple: C progran to find area or a cirele*/"#includecatdio.h三derinePl3.14159main():z):((yz)y:-100rloatprintr("enter the circle's xadius:")scanf("sr",&r)PI*r*rne(wInsts.\n",a):* 158-10C program - obscure.cEnter the circle'sradius:Its area is 78.54 square units2
12/02/2014 2 Why programme in C? • Advantages – C’s modular approach suits large, multi-programmer projects – C’s use of libraries makes it adaptable to many different application areas – The Unix operating system was written in C and supports C – C gave birth to C++, widely used for applications programming and more recently Java which was based upon C++ – Many other languages borrow from C’s syntax: e.q. Java, JavaScript, Perl etc Why programme in C? • Disadvantages – C is not really a language for novices; it was designed for professional users – There are many things that can go wrong if you’re not careful – C lacks much of he automatic checking found in other high level languages – Small typing errors can cause unwanted effect – Does not support modern concepts such as object orientation and multi-threading “C provides enough rope to hang yourself time and time again” if (x>y) if (x>z) max=x; else max=z; else if (y>z) max=y; else max=z; max=max+1; if (max==100) max=0; max=(x>y)?((x>z)?x:z):((y>z)?y:z); ++max%=100; if (max==100) max=0; = ≠ if (max=100) max==0; C program - Intro.c /* Example: C program to find area of a circle */ #include <stdio.h> #define PI 3.14159 main() { float r, a; printf(“Enter the circle’s radius: ”); scanf(“%f”,&r); a=PI*r*r; printf(“Its area is %3.2f square units.\n”,a); return; } Enter the circle’s radius: 5 Its area is 78.54 square units. C program - obscure.c #include <math.h> #include <sys/time.h> #include <X11/Xlib.h> #include <X11/keysym.h> double L ,o ,P ,_=dt,T,Z,D=1,d, s[999],E,h= 8,I, J,K,w[999],M,m,O ,n[999],j=33e-3,i= 1E3,r,t, u,v ,W,S= 74.5,l=221,X=7.26, a,B,A=32.2,c, F,H; int N,q, C, y,p,U; Window z; char f[52] ; GC k; main(){ Display*e= XOpenDisplay( 0); z=RootWindow(e,0); for (XSetForeground(e,k=XCreateGC (e,z,0,0),BlackPixel(e,0)) ; scanf("%lf%lf%lf",y +n,w+y, y+s)+1; y ++); XSelectInput(e,z= XCreateSimpleWindow(e,z,0,0,400,400, 0,0,WhitePixel(e,0) ),KeyPressMask); for(XMapWindow(e,z); ; T=sin(O)){ struct timeval G={ 0,dt*1e6} ; K= cos(j); N=1e4; M+= H*_; Z=D*K; F+=_*P; r=E*K; W=cos( O); m=K*W; H=K*T; O+=D*_*F/ K+d/K*E*_; B= sin(j); a=B*T*DE*W; XClearWindow(e,z); t=T*E+ D*B*W; j+=d*_*D-_*F*E; P=W*E*B-T*D; for (o+=(I=D*W+E *T*B,E*d/K *B+v+B/K*F*D)*_; p<y; ){ T=p[s]+i; E=c-p[w]; D=n[p]-L; K=D*m-B*T-H*E; if(p [n]+w[ p]+p[s ]== 0|K <fabs(W=T*r-I*E +D*P) |fabs(D=t *D+Z *T-a *E)> K)N=1e4; else{ q=W/K *4E2+2e2; C= 2E2+4e2/ K *D; N-1E4&& XDrawLine(e ,z,k,N ,U,q,C); N=q; U=C; } ++p; } L+=_* (X*t +P*M+m*l); T=X*X+ l*l+M *M; XDrawString(e,z,k ,20,380,f,17); D=v/l*15; i+=(B *l-M*r -X*Z)*_; for(; XPending(e); u *=CS!=N){ XEvent z; XNextEvent(e ,&z); ++*((N=XLookupKeysym (&z.xkey,0))-IT? N-LT? UP-N?& E:& J:& u: &h); -*( DN -N? N-DT ?N== RT?&u: & W:&h:&J ); } m=15*F/l; c+=(I=M/ l,l*H +I*M+a*X)*_; H =A*r+v*X-F*l+( E=.1+X*4.9/l,t =T*m/32-I*T/24 )/S; K=F*M+( h* 1e4/l-(T+ E*5*T*E)/3e2 )/S-X*d-B*A; a=2.63 /l*d; X+=( d*lT/S *(.19*E +a *.64+J/1e3 )-M* v +A* Z)*_; l += K *_; W=d; sprintf(f, "%5d %3d" "%7d",p =l /1.7,(C=9E3+ O*57.3)%0550,(int)i); d+=T*(.45-14/l* X-a*130-J* .14)*_/125e2+F*_*v; P=(T*(47 *I-m* 52+E*94 *Dt*.38+u*.21*E) /1e2+W* 179*v)/2312; select(p=0,0,0,0,&G); v-=( W*F-T*(.63*m-I*.086+m*E*19-D*25-.11*u )/107e2)*_; D=cos(o); E=sin(o); } }
12/02/2014CourseOverviewCourseOverview.Aims. To lean the basics of computer programming and problemsolvingTo lean the C programming language and how this relates tothe physical architecture of the computer22hrsCourseStructure·.Lecturesdnra: Tutorials· Laboratories: exercises and assignmentsAssessment- No exam- Laboratories Worh 40%Assignments x3weekseachworth20%Introduction1Binary RepresentationCourse2Resources国国Hardware and SoflwareSimple Data TypesOverviewStandard 10中有有有有国国国国公司Operators, Expressions and Statements.BooksMaking DecisionsLooping-Teach yourself C in21Days,4thEdition,byPeterArmaysAitken and Bradley L Jones, SAMSBasics of PointersCopiesavilableinthe library so youhae noexuse.Puinters continmedStrings Any introductory book on C have a search of the libraryBasics of Functionscatalogue..WebData Structureseview of Pointerswww.surrey.ac.uk/Personal/R.BowdenisionBooksAitken,P. Jones, B., Sams Teach Yourself C in 21 Days0672324482.SamsGookin, D. C For Dummies, 2nd Edition, 978-0-7645-7068-1.WileyMGrrMGrorWatt,Smp0201403854.AddisonWesleyLongmanJackson,K,C Programmingfor Electronic Engineers0333637801,Macmillan PressKernighan,B.W&Ritchie,D.M.,The C ProgrammingLanguage,2nd Ed.,0131103628, Prentice HaliKnight,A. J."Basics of MATLAB and beyond", 1999,08493203993
12/02/2014 3 Course Overview • Aims • To lean the basics of computer programming and problem solving • To lean the C programming language and how this relates to the physical architecture of the computer • Course Structure • Lectures • Tutorials • Laboratories: exercises and assignments • Assessment • No exam • Laboratories – Worth 40% • Assignments x 3 – 2 weeks each worth 20% Course Overview Week 1 2 3 4 5 6 7 8 E1 E2 E3 E4 9 10 11 12 Lectures 2x2hrs Labs 2x2hrs Tutorials Assignment Lecture Assignment Due x x x Marks 40% 20% 20% 20% Course Overview [1] Introduction [2] Binary Representation [3] Hardware and Software [4] Simple Data Types [5] Standard IO [6] Operators, Expressions and Statements [7] Making Decisions [8] Looping [9] Arrays [10] Basics of Pointers [11] Pointers continued [12] Strings [13] Basics of Functions [14] More functions [15] Files [16] Data Structures [17] Review of Pointers [18] Revision Resources • Books – Teach yourself C in 21 Days, 4th Edition, by Peter Aitken and Bradley L Jones, SAMS. Copies available in the library so you have no excuse. – Any introductory book on C have a search of the library catalogue. • Web – www.surrey.ac.uk/Personal/R.Bowden Books • Aitken, P. Jones, B., Sams Teach Yourself C in 21 Days, 0672324482, Sams. • Gookin, D. C For Dummies, 2nd Edition, 978-0-7645- 7068-1, Wiley. • McGregor, J., McGregor, R., Watt, A., Simple C, 0201403854, Addison Wesley Longman • Jackson, K., C Programming for Electronic Engineers, 0333637801, Macmillan Press • Kernighan, B.W & Ritchie, D.M., The C Programming Language, 2nd Ed., 0131103628, Prentice Hall • Knight, A. J. “Basics of MATLAB and beyond”, 1999, 0849320399