cs19001/cs19002 programming and data structures...

26
Introduction Title page CS19001/CS19002 Programming and Data Structures Lab Autumn/Spring Semester Introduction Abhijit Das Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur January 4, 2015

Upload: duongtram

Post on 26-Mar-2018

229 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

Title page

CS19001/CS19002 Programming and Data Structures LabAutumn/Spring Semester

Introduction

Abhijit Das

Department of Computer Science & EngineeringIndian Institute of Technology, Kharagpur

January 4, 2015

Page 2: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

Syllabus

Syllabus

Introduction to digital computersBasic programming constructs

Variables and simple data typesAssignmentsInput/outputConditions and branchingLoops and iterationIterative searching and sorting algorithms

Advanced programming constructsFunctions and recursionRecursive sorting algorithmsArrays and stringsStructuresPointers and dynamic memory allocation

Page 3: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

Syllabus

Syllabus (contd.)

Performance analysis of programsData structures

Abstract data typesOrdered listsStacks and queues

Programming language: C

Page 4: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

References

On C

Textbooks and references

Use any standard textbook on ANSI C

Do not use books written for specific C compilers (Turbo C, gcc)

1 Brian W. Kernighan and Dennis M. Ritchie, The CProgramming Language, Prentice Hall of India.

2 E. Balaguruswamy, Programming in ANSI C, TataMcGraw-Hill.

3 Byron Gottfried, Schaum’s Outline of Programming with C,McGraw-Hill.

4 P. Dey and M. Ghosh, Programming in C, Oxford UniversityPress.

Page 5: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

References

On data structures

Textbooks and references

5 Seymour Lipschutz, Data Structures, Schaum’s OutlinesSeries, Tata McGraw-Hill.

6 Ellis Horowitz, Satraj Sahni and Susan Anderson-Freed,Fundamentals of Data Structures in C, W. H. Freeman andCompany.

7 R. G. Dromey, How to Solve it by Computer, Prentice-Hallof India.

8 http://cse.iitkgp.ac.in/∼pds/notes/

Page 6: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

Lab schedule

Tentative schedule for the laboratory

Lab test 1: February beginningSyllabus: Iterative programming (including simple functions)

Lab Test 2: April beginningSyllabus: Programming without dynamic memory management

Tentative marks distributionLab Test 1: 25Lab Test 2: 25Weekly Assignments: 50

Page 7: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

Contacts

Contacts

InstructorAbhijit Das, CSE-123, [email protected]

http://cse.iitkgp.ac.in/∼abhij/

Course web-pagehttp://cse.iitkgp.ac.in/∼pds/

http://cse.iitkgp.ac.in/∼pds/notes/

Lab web-pagehttp://cse.iitkgp.ac.in/∼abhij/course/lab/PDS/Spring15/

Page 8: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

Structure of a C program

How to write C programs

Skeleton of a C program

Include header files

Declare global variables, constants and function prototypes

Function bodies

There must be a main function in any C program.

Page 9: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

Structure of a C program

An example

A complete example

#include <stdio.h>

#define PI_4_BY_3 4.1887902048

double radius = 10;

double sphereVol ( double r ){

return PI_4_BY_3 * r * r * r;}

main (){

double area;area = sphereVol(radius);printf("Radius = %lf, volume = %lf.\n", radius, area);

}

Page 10: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

Some simple C programs

The traditional starter

The traditional starter

#include <stdio.h>

main (){

printf("Hello, world!\n");}

This program takes no input, but outputs the string“Hello, world!”

in a line.

Page 11: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

Some simple C programs

The short-circuit program

The short-circuit program

#include <stdio.h>

main (){

int n;

scanf("%d",&n);printf("%d\n",n);

}

This program accepts an integer as input and outputs the sameinteger.

Page 12: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

Some simple C programs

The square finder

The square finder

#include <stdio.h>

main (){

int n;

scanf("%d",&n);printf("%d\n",n*n);

}

This program takes an integer n as input and outputs thesquare n2 of n.

Page 13: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

Some simple C programs

A faulty reciprocal finder

A faulty reciprocal finder

#include <stdio.h>

main (){

int n;

scanf("%d",&n);printf("%d\n",1/n);

}

The division 1/n is of integers (quotient).

The format %d is for printing integers.

Page 14: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

Some simple C programs

The correct reciprocal finder

The correct reciprocal finder

#include <stdio.h>

main (){

int n;

scanf("%d",&n);printf("%f\n",1.0/n);

}

Page 15: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

PDS laboratory

Log in

Getting started

Switch on your monitor .

Switch on your PC.

Allow the machine to boot . Wait until the log in promptcomes.

Supply your log-in and password :Login: s<PCNo>

Password: s<PCNo>

Here s is your section (a for 1, b for 2, and so on)<PCNo> is the number of your PC.

This opens your window manager (usually GNOME) withicons , the side panel , and so on. You are now ready tostart your work.

Page 16: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

PDS laboratory

Edit, compile and run

Getting started

Click on the terminal icon to open a shell (commandprompt).Edit your program (new or already existing) by an editor.

gedit myprog.c &

kate myprog.c &

emacs myprog.c &

Write your program in the editor and save it.Go to the shell and compile your program:

cc myprog.c

If compilation is successful, an executable called a.out

will be created.Run your program:

./a.out

Continue your edit-compile-debug-run-debug cycle.

Page 17: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

PDS laboratory

Shut down

Getting started

Close all the windows you opened.

Log out from your window manager. This leaves you againin the log-in console.

Select the item to shut down the machine. Wait until themachine completely shuts down.

Switch off your monitor.

Page 18: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

PDS laboratory

Using a text editor

Using a text editor

Use a text editor you are comfortable with(gedit/kate/emacs).

Run the editor as: gedit myprog.c &

Type in your program in the text area

Navigate with mouse and cursor keysSave your file before closing the editor.

“File -> Save”Click the save button (disk)“File -> Save as” (to another file)

Save your file once in every 10 minutes.

Page 19: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

PDS laboratory

Using gvim

Using gvim

gvim is another powerful text editor.

Run gvim as: gvim myprog.c

Hit Insert before you start typing matter

You will exit the insert mode if you hit Insert when you arealready in the insert mode

Hit Esc to exit insert mode

When in doubt, it is safe to hit Esc several times to comeback to view mode

Navigate with mouse and cursor keys

You need to save the file by clicking on the appropriateicon (disk).

Save your file once in every 10 minutes.

Page 20: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

PDS laboratory

A practice program

A practice program

#include <stdio.h>#include <string.h>

char name[100];int i;

main (){

printf("Hello, may I know your full name? ");scanf("%s",name);printf("Welcome %s.\n",name);printf("Your name printed backward is : ");for (i=strlen(name)-1; i>=0; --i)

printf("%c",name[i]);printf("\n");

}

Page 21: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

PDS laboratory

A corrected version

A practice program (corrected)

#include <stdio.h>#include <string.h>

char name[100];int i;

main (){

printf("Hello, may I know your full name? ");fgets(name,100,stdin);name[strlen(name)-1] = ’\0’;printf("Welcome %s.\n",name);printf("Your name printed backward is : ");for (i=strlen(name)-1; i>=0; --i)

printf("%c",name[i]);printf("\n");

}

Page 22: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

PDS laboratory

Using a web browser

Using a web browser

Open a web browser: firefox or chrome .Set the proxy :

10.3.100.207:8080

Bypass proxy for local machines.Type in a URL (web address) in the location field

http://cse.iitkgp.ac.in/∼pds/http://cse.iitkgp.ac.in/∼pds/notes/http://cse.iitkgp.ac.in/∼abhij/http://cse.iitkgp.ac.in/∼abhij/course/lab/PDS/Spring15/http://cse.iitkgp.ac.in/∼wbcm/

Page 23: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

PDS laboratory

Assignments and submissions

Assignments and submissions

Click the link on the day’s assignment.

If your assignment is a PDF file, save it to your machine.

Use okular or evince or acroread in order to view PDFfiles.

okular newassgn.pdf &

We will use an online submission server to receive your labassignments.

http://cse.iitkgp.cse.in/∼wbcm/

Page 24: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

PDS laboratory

What to submit

Files for submission: Your identity

In your C program write your name, roll number and PCnumber as comments:

/************************************* Name : Your name ** Roll Number : Your roll number ** PC Number : Number of your PC ** Assignment : Assignment number ** Exercise : Exercise number *************************************/

Write your program here

/***** End of program *****/

Page 25: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

PDS laboratory

What to submit

About the submission server

Submit only your C source code(s).

The assignment specifies how many C programs you haveto submit.

Some assignments may ask you to submit additionaloutput files. Read the assignment to know the outputformats.

The submission server sets a deadline for eachassignment. You cannot submit after the deadline. It isabsolutely mandatory to submit in time. The submissionserver displays the local clock.

You may submit an assignment (within the deadline) asmany times as you want. Only the last submission stays inthe server. All earlier submissions are deleted.

Page 26: CS19001/CS19002 Programming and Data Structures …cse.iitkgp.ac.in/~abhij/course/lab/PDS/intro-slides.pdfPointers and dynamic memory allocation Introduction Syllabus Syllabus (contd.)

Introduction

PDS laboratory

Some useful Unix commands

Some useful Unix commands

Create a directory: mkdir progs

Go to a new directory: cd progs/

Go to the parent directory: cd ../

List all files in a directory: ls -lF

View a file: cat filename

Copy a file to another: cp file1.c file2.c

Copy a file to a directory: cp file1.c progs/file3.c

Move a file to another: mv file1.c file2.c

Move a file to a directory: mv file1.c progs/file3.c

Delete a file: rm filename