1 / 29

Administration

Administration. Lecturer Abed Asi ( abedas@cs.bgu.ac.il ) Lab assistants David T olpin – tolpin@cs.bgu.ac.il – Monday 16:00 – 19:00 Abed Asi – Wednesday 16:00 – 19:00 Office hours Sunday 14:00 – 16:00 (-102/37) Website www.cs.bgu.ac.il/~espl141. Administration.

darren
Download Presentation

Administration

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Administration • Lecturer • Abed Asi(abedas@cs.bgu.ac.il) • Lab assistants • David Tolpin – tolpin@cs.bgu.ac.il – Monday 16:00 – 19:00 • Abed Asi – Wednesday 16:00 – 19:00 • Office hours • Sunday 14:00 – 16:00 (-102/37) • Website • www.cs.bgu.ac.il/~espl141 Abed Asi - ESPL

  2. Administration • Lectures and Labs • One-hour lecture every 2 weeks (with two exceptions) • 12 (or 11) Lab sessions • Quizzes • 2 Quizzes • NOfinal exam • Grading policy • 40% for quizzes (20% per quiz) • 60% Labs (5% per lab) Abed Asi – ESPL

  3. Lab Instructions • http://www.cs.bgu.ac.il/~espl141/Main Abed Asi – ESPL

  4. Lectures schedule Abed Asi - ESPL

  5. Today • Unix environment • Data types in C • C – simple programs • C Arrays – A Glance • Makefiles • Java vs. C Abed Asi - ESPL

  6. What is an Operating System? • A program that starts up when you turn on your computer and runs underneath all other programs • It is a manager. It manages all the available resources on a computer, from the CPU, to memory, to hard disk accesses • Tasks the operating system must perform • Control Hardware - attempts to get everything working together • Run Applications– running applications software such as: word processors, web browsers, games, etc... • Memory Management - controls the mapping between logical memory and the hard disk, managing file system and more .. Abed Asi - ESPL

  7. Unix OS: Brief History • The UNIX operating system was born in the late 1960s. • It originally began as a one man project led by Ken Thompson of Bell Labs • Grown to become one of the most widely used operating system • It has gone through many different generations and even mutations • Some differ substantially from the original version, like Berkeley Software Distribution (BSD) or Linux. • Others, still contain major portions that are based on the original source code. Abed Asi - ESPL

  8. Unix OS: Overview • The Kernel - handles memory management, input and output requests, and program scheduling. Technically speaking, the kernel is the OS. • The Shell - basic UNIX shells provides a “command line” interface which allows the user to type in commands. • The Built-in System Utilities - are programs that allow a user to perform tasks which involve complex actions such as listing the content of directories, move & copy files, remove files, etc... • Application Software & Utilities – additional programs that are bundled with the OS distribution, or available separately. There are not part of UNIX Abed Asi - ESPL

  9. Programming in Unix Environment • To develop your own program you need: • Compiler: translates your programming language to assembly • Text editor: to type down source code • Project management tool: dependencies, linking, executable .. • In Unix: • You will use the gcc compiler • Any text editor that you prefer (Kate, Emacs, KWrite, …) • make as the project management tool • Use Unix Manual for function/program description and more Abed Asi - ESPL

  10. Data types • Char • char is the basic type in C • sizeof(char) = 1 byte by definition • Examples: • char c = ‘A’; • char c = 65; Abed Asi - ESPL

  11. Data types • int , short, long • sizes: machine dependent! • sizeof(short) <= sizeof(int) <= sizeof(long) • For example: (linux on pentium) • short: 16 bit, int: 32 bit, long: 32 bit • All can be signed/unsigned • Default: signed • unsigned int: [0, 231 -1] • signed int: [-231, 231 -1] Abed Asi - ESPL

  12. Boolean types • Boolean types • Doesn’t exist in C ! • Use char/int instead • zero = false • non-zero = true while (1) { … } (infinite loop) if (-1974) { .. } (true statement) Abed Asi - ESPL

  13. Programming in C – First program #include <stdio.h> int main() { inti; // declares i as an integer int j = 0; // declaresjas an integer, and initializes it to0 // for( initial ; test condition ; update step ) for( i = 0; i < 10; i++ ) { j += i; // shorthand for j = j + i printf("%d %d %d\n", i, j, (i*(i+1))/2); } return 0; } Abed Asi - ESPL

  14. First Program – Compiling and running > gcc–Wall loop.c –o loop > loop 0 0 0 1 1 1 2 3 3 3 6 6 4 10 10 5 15 15 6 21 21 7 28 28 8 36 36 9 45 45 Abed Asi - ESPL

  15. Programming in C – Second program #include <stdio.h> /* count number of words in sentence */ int main(intargc, char **argv) { inti;   printf("There are %d words in phrase '", argc-1);   for(i=1; i!=argc; ++i) { printf("%s", argv[i]);   if(i!=argc-1) printf(" "); } printf("'.\n"); return 0; } Abed Asi - ESPL

  16. argv & argc: example $> prog –u danny –p 1234 argc = 5 argv[0] = “prog” argv[1] = “-u” ... argv[4] = “1234” Always: argv[5] = 0 Abed Asi - ESPL

  17. Arrays • C does not provide array operationsinta[4]; int b[4]; ... a = b; // illegal if( a == b ) // illegal • intarr[5][7]; • 5 rows, 7 columns • continuous memory (divided to 5 blocks) • access: arr[row][col] = 0; Abed Asi - ESPL

  18. Arrays • C does not provide any run time checks • This will compile and run (no errors) • But can lead to unpredictable results • It is the programmer’s responsibility to check whether the index is out of bounds… int a[4]; a[-1] = 0; a[4] = 0; Abed Asi - ESPL

  19. Array initialization intarr[3] = {3, 4, 5}; // Good intarr[] = {3, 4, 5}; // Good - The same intarr[4] = {3, 4, 5}; // Bad style - The last is 0 intarr[2] = {3, 4, 5}; // Bad intarr[2][3] = {{2,5,7},{4,6,7}}; // Good intarr[2][3] = {2,5,7,4,6,7}; // Good - The same intarr[3][2] = {{2,5,7},{4,6,7}}; // Bad intarr[3]; arr = {2,5,7}; // Bad - array assignment only in initialization Abed Asi - ESPL

  20. Compilation • Takes input C-code and produces machine code (object file) • gcc –c Main.c –o Main.o • Main.c Main.o • The object file does not contain all external references • It leaves names, such as “printf”, “area”, etc. as undefined references Abed Asi - ESPL

  21. Square.c Square.o Main.c Main.o Preprocessor Compiler Linker Linking • Combines several object files into an executable file • No unresolved references Main libc.a Abed Asi - ESPL

  22. Square.c Square.o Main.c Main.o Preprocessor Compiler Linker Linking $ gcc –c Square.c –o Square.o $ gcc –c Main.c –o Main.o $ gccSquare.oMain.o –o Main Main libc.a Abed Asi - ESPL

  23. Makefile • What is it good for ? • Automatic tool for projects management • Less boring work for the programmer • Less errors mywc: mywc.c gcc -Wall mywc.c -o mywc Abed Asi - ESPL

  24. Makefile – compilation and linkage Makefile prog1: read.omain.olist.ogccmain.oread.olist.o –o prog1 main.o: main.cread.hlist.hgcc -c main.c read.o: read.cread.hgcc -c read.c list.o: list.clist.hgcc -c list.c $ make prog1 prog1 main.o read.o list.o read.c read.h main.c list.c list.h Abed Asi - ESPL

  25. Makefile – compilation and linkage • If only one file is modified, will we have to recompile all over again? prog1 • No, the Makefile uses the dependencies tree main.o read.o list.o read.c read.h main.c list.h list.c Abed Asi - ESPL

  26. Makefile – dependencies tree • If read.h is modified, what should be done? prog1 • We have to recreate a subset of the files main.o read.o list.o read.c read.h main.c list.h list.c Abed Asi - ESPL

  27. Makefile – summary • Aim: build only out-of-date files (use timestamps) • Makefile contains: • List of dependencies (no cycles) • “Recovery” scenario when any file is modified • If any of the files [main.c, list.h, read.h] wad modified after main.o, the command “gcc –c main.c” will be invoked • By default, makeonly executes the first target in the makefile main.o: main.clist.hread.h <tab> gcc-c main.c Abed Asi - ESPL

  28. Makefile Read about the explicit and implicit rules for Makefiles Abed Asi - ESPL

  29. Java vs. C Abed Asi - ESPL

More Related