Principles of Programming Languages Topic: Imperative Programming II Professor Lou Steinberg Fall 2004
|
|
- Gervais Lindsey
- 7 years ago
- Views:
Transcription
1 Principles of Programming Languages Topic: Imperative Programming II Professor Lou Steinberg Fall 2004 CS 314, LS, BR, LTM: Imperative Programming 1
2 Review Imperative programming: based on underlying machine: RAM, thread of control variable: a memory location assignment L-values and R-values Pointers * and & #INCLUDE #DEFINE STACKSIZE = 10; printf CS 314, LS, BR, LTM: Imperative Programming 2
3 L- and R-values int a; int [10] b; int *p 12 a &a b[2] b *b p *p L-value illegal address of variable a illegal address of 3rd element of b illegal illegal address of p contents of p R-value 12 contents of variable a address of variable a contents of 3rd element of b address of 1st element of b contents of 1st element of b contents of p contents of variable that p points to CS 314, LS, BR, LTM: Imperative Programming 3
4 Excerpt from List in Java public class List extends Object { protected Object element; protected List sublist; /** * Create an new List, initially empty. */ public List() { element = null; sublist = null; } //cons operation public List(Object newelement,list oldlist){ element = newelement; sublist = oldlist; } } CS 314, LS, BR, LTM: Imperative Programming 4
5 How List building works? List p = new List(); List q = new List( a,p); a List( b,q); b a CS 314, LS, BR, LTM: Imperative Programming 5
6 list2.c /*sample program to write a linear linked list of integers built like in Java, adding new elements on the front*/ #include<stdio.h> /*this makes these definitions and variables global*/ void *malloc(); typedef struct cell listcell; struct cell{ }; int num; listcell *next; listcell *head, *ele, *p; CS 314, LS, BR, LTM: Imperative Programming 6
7 cast list2.c, cont. void main(void) { int j; /*create first node in list*/ head = (listcell *) malloc(sizeof (listcell)); head->next = NULL; Allocates heap storage /*now create entries in list of numbers from 1 to 10*/ head->num = 1; for (j=2; j<11; j++) { ele = (listcell *) malloc(sizeof (listcell)); ele->num = j; ele->next =head; /***/ head = ele; } /*now traverse the list and print the elements*/ for (p=head; p!=null; p=p->next) printf("%d ",p->num); printf("\n"); } (*head).next is same as head->next CS 314, LS, BR, LTM: Imperative Programming 7
8 head->num = 1; head ele list2.c for (j=2; j<11; j++) { ele=/* &(new listcell*/ ele->num = j; ele->next =head; /***/ head head = ele; } at /***/ in 1st iteration ele 3 head 2 1 at /***/ in 2nd iteration CS 314, LS, BR, LTM: Imperative Programming 8
9 list2.c output scherzo!c> gcc list2.c scherzo!c>./a.out scherzo!c> CS 314, LS, BR, LTM: Imperative Programming 9
10 Review: Stack vs Heap Procedure activations, statically allocated local variables, parameter values Lifetime same as block in which variables are declared Stack frame with each invocation of procedure Dynamically allocated data structures, whose size may not be known in advance Lifetime extends beyond block in which they are created Must be explicitly freed or garbage collected CS 314, LS, BR, LTM: Imperative Programming 10
11 Heap Storage void *malloc (size_t n) returns pointer to block of contiguous storage of n bytes (chars), if possible if not enough memory left for allocation, malloc returns a NULL pointer So you ALWAYS have to check the return value to allocate storage of a different type requires sending malloc the proper amount of bytes needed and casting the return pointer value appropriately head = (listcell *) malloc(sizeof (listcell)); CS 314, LS, BR, LTM: Imperative Programming 11
12 listwithfree.c /*sample program to write a linear linked list of integers built like in Java, adding new elements on the front*/ #include<stdio.h> /*this makes these definitions and variables global*/ void *malloc(); void free(); typedef struct cell listcell; struct cell{ }; int num; listcell *next; listcell *head, *ele, *p; Almost same declarations as list2.c CS 314, LS, BR, LTM: Imperative Programming 12
13 listwithfree.c, cont. main(void) { int j; /*create first node in list*/ head = (listcell *) malloc(sizeof (listcell)); /*now create other entries in list of numbers from 1 to 10*/ head->num = 1; for (j=2; j<11; j++) { ele = (listcell *) malloc(sizeof (listcell)); ele->num = j; ele->next =head; /***/ head = ele; } printf(" values in the list: "); /*now traverse the list and print the elements*/ for (p=head; p!=null; p=p->next) printf("%d ",p->num); printf("\n"); } Same building of the list and printing it out as list2.c CS 314, LS, BR, LTM: Imperative Programming 13
14 listwithfree.c, cont. /*now delete the first 2 elements of the list and free their storage */ ele = head->next; /*1*/ free (head); /* free 1st list element storage*/ head = ele; ele = head->next; /*2*/ free (head); /* free 2nd list element storage*/ head = ele; /*3*/ /*now traverse the list and print the elements*/ printf(" values in list after two free's: "); for (p=head; p!=null; p=p->next) printf("%d ",p->num); printf("\n"); } CS 314, LS, BR, LTM: Imperative Programming 14
15 Trace After ele = head->next; /*1*/ ele head head ele After free (head); head = ele; ele = head->next; /*2*/ CS 314, LS, BR, LTM: Imperative Programming 15
16 listwithfree.c, cont. head ele ele head After 8... free (head); head = ele; /*3*/ /* output 221 remus!c> a.out values in the list: values in list after two free's: remus!c> */ CS 314, LS, BR, LTM: Imperative Programming 16
17 Functions Prototype: int mult(int, int); int square(int n); often in a *.h or header file used by compiler for type checking Definition: int square(int n) {return n*n;} Invocation: int b = 3; c = square(b); (formal) parameter argument CS 314, LS, BR, LTM: Imperative Programming 17
18 Functions Parameter Passing uses Call by Value Value of actual argument is copied into formal parameter Example: void swap(int a,int b) {int temp; temp=a; a=b; b=temp;}... int x=3; int y=5; swap(x,y); printf( %d %d,x,y); --> 3 5!?! Why? CS 314, LS, BR, LTM: Imperative Programming 18
19 Functions To get the effect of Call by Reference use pointers Example: void swap(int *a, int *b) {int temp; temp=*a; *a=*b; *b=temp;}... int x=3; int y=5; swap( &x, &y ); printf( %d %d,x,y); --> 5 3 CS 314, LS, BR, LTM: Imperative Programming 19
20 scanf int i; double x; scanf( %i %lf, &i, &x); remus> man scanf CS 314, LS, BR, LTM: Imperative Programming 20
21 Structures Structure: Aggregate object with named fields Declaration: struct EMPLOYEE { int age; double payrate; } joe, mary; struct EMPLOYEE bill = {35, }; Accessed as: joe.age = 45; bill.payrate *= 1.1; CS 314, LS, BR, LTM: Imperative Programming 21
22 Structures Structure may contain actual fields, as opposed to references struct STACK { int top; int contents[5]; } stack1; struct STACK { int top; int *contents; } stack1; CS 314, LS, BR, LTM: Imperative Programming 22
23 Structures Defining new types: typedef float Celsius; typedef float Fahrenheit; enum {BROWN, BLOND} hishair, herhair; typedef enum {BLACK, BROWN, RED, BLOND, GRAY} HairColors; CS 314, LS, BR, LTM: Imperative Programming 23
24 Structures Defining new structure types: typedef struct { float x-coord; float y-coord; } Point; struct POLYGON { Point vertices[10]; int N; } p; CS 314, LS, BR, LTM: Imperative Programming 24
25 Structures Pointers to Structures: typedef struct { int age; double payrate; } Employee; Employee joe, *maryp; Accessed as: (*maryp).payrate = ; (*maryp).payrate += ; maryp->payrate += ; CS 314, LS, BR, LTM: Imperative Programming 25
26 Recursive Structures This is legal: typedef struct NODE { int data; struct NODE *next; } Cell; These are not legal: typedef struct NODE { int data; struct NODE next; } Cell; typedef struct { int data; Cell *next; } Cell; CS 314, LS, BR, LTM: Imperative Programming 26
27 Memory Allocation Remember the Stack and the Heap? Parameters and local variables can be allocated on the stack, as part of the stack frame: int n, *pn; pn = &n; But consider: Employee *maryp; If you want to create the Employee structure that is pointed to by maryp, where does it go? On the Heap! CS 314, LS, BR, LTM: Imperative Programming 27
28 Memory Allocation This is similar to the storage of lists in Scheme, except that you have to do it yourself! Standard allocation procedure: Employee *maryp; maryp = (Employee *) malloc( sizeof(employee) ); Note: malloc returns the NULL pointer if it cannot find enough space. To release memory: free( maryp ); CS 314, LS, BR, LTM: Imperative Programming 28
29 head Example: list.c ele 1 head 2 1 at /***/ in 1st iteration ele 3 head 2 1 at /***/ in 2nd iteration CS 314, LS, BR, LTM: Imperative Programming 29
30 Example: listwithfree.c After ele = head->next; /*1*/ ele head head ele After free (head); head = ele; ele = head->next; /*2*/ CS 314, LS, BR, LTM: Imperative Programming 30
31 Example: listwithfree.c head ele ele head After 8... free (head); head = ele; /*3*/ /* output 59 scherzo!c> a.out scherzo!c> */ CS 314, LS, BR, LTM: Imperative Programming 31
32 Compare: List in Java public class List extends Object { protected Object element; protected List sublist; /** * Create a new List, initially empty. */ public List() { element = null; sublist = null; } /* cons operation */ public List(Object newelement, List oldlist){ element = newelement; sublist = oldlist; }...} CS 314, LS, BR, LTM: Imperative Programming 32
33 Compare: List in Java List p = new List(); List q = new List( a,p); a List( b,q); b a CS 314, LS, BR, LTM: Imperative Programming 33
34 Pointers vs.. References Cell and Cell* are different Explicit dereference operator Pointers needed for recursive definitions Casting results in type conversion: int x = (int) (&w); Memory management is usually performed by user Everything is a reference Dereference is implicit Recursive definitions are automatic Casting just satisfies the type checker Memory management is usually automatic CS 314, LS, BR, LTM: Imperative Programming 34
35 Pointers to Functions Syntax: int foo(int x){ } int (*pf)(int x); pf = &foo; Motivation: Polymorphic Processing e.g., sorting an array of integers in increasing vs. decreasing order e.g., sorting an array of intgers vs. an array of floats vs. an array of Employee structs vs.... How can we do this? CS 314, LS, BR, LTM: Imperative Programming 35
36 Pointers to Functions Suppose Cell is defined as before, but the data field could be an int, a char, a struct, or... Use a callback function: Cell * searchlist(cell *c, void *value, } int (*compare)(void *, void *)) { for ( ; c!=null; c=c->next){ if ((*compare)(&(c->data), value)) break;} return c; CS 314, LS, BR, LTM: Imperative Programming 36
37 Arrays Array: Typed collection of values indexed by nonnegative integers. Type and size must be known at compile time, except in the case of formal parameters: int a[20]; void sort(int b[], int n); Arrays in C are one-dimensional: piece chess[8][8]; Strings are arrays of characters: char msg[21] = Enter your password: ; CS 314, LS, BR, LTM: Imperative Programming 37
38 Arrays and Pointers An array name is considered to be a pointer to its first element. Thus, given the declarations: int A[20], *ip; A is a pointer to A[0] ip = A; and ip = &A[0]; have the same meaning Array subscripting is defined in terms of pointer arithmetic *(A + 3) and A[3] have the same meaning Array names are not variables, but constants A++ and A = ip are illegal CS 314, LS, BR, LTM: Imperative Programming 38
39 Arrays and Pointers Pointer Arithmetic: int j = 5; int *k = &j; (*k+2) means ((*k)+2) : legal R-value, illegal L-value (k+2) : legal R-value, legal (but not necessarily meaningful) L-value *(k+2) : legal R-value, illegal L-value General Rule: 1024 k Given declaration T *ptr; (ptr + k) points to location ptr + k sizeof(t) 5 j CS 314, LS, BR, LTM: Imperative Programming 39
40 Arrays and Pointers Two ways to process the array A[20] with subscripts: int k; for(k=0; k < 20; k++){ A[k] = 0; } with pointers: int *ap; for(ap=a; ap < A+20; ap++){ *ap = 0; } CS 314, LS, BR, LTM: Imperative Programming 40
41 Strings and Pointers The library package string.h assumes that a string is an array of characters terminated by \0. Thus: char name[5] = Mary ; Example: int strlen(char const *str){ int n=0; for( ; *str!= \0 ; str++) { n+=1;} return n; } CS 314, LS, BR, LTM: Imperative Programming 41
42 Strings and Pointers Example: char *strcpy(char *dst, char const *src){ char *str = dst; for( ; *src!= \0 ; src++, dst++) {*dst = *src;} *dst = \0 ; return str; } Caution: User must guarantee that dst has been allocated enough memory to store src CS 314, LS, BR, LTM: Imperative Programming 42
43 Pointers to Functions To search a list of integers using less than, define: int lessthanints(void *a, void *b){ if ( *(int *)a < *(int *)b ) return 1; else return 0; } Then call: Cell *foundit; int k=5; foundit = searchlist(head, &k, lessthanints); CS 314, LS, BR, LTM: Imperative Programming 43
44 Pointers to Functions To search a list of characters using equals, define: int equalchars(void *a, void *b){ if ( *(char *)a == *(char *)b ) return 1; else return 0; } Then call: Cell *foundit; char ch= a ; foundit = searchlist(head, &ch, equalchars); CS 314, LS, BR, LTM: Imperative Programming 44
Memory management. Announcements. Safe user input. Function pointers. Uses of function pointers. Function pointer example
Announcements Memory management Assignment 2 posted, due Friday Do two of the three problems Assignment 1 graded see grades on CMS Lecture 7 CS 113 Spring 2008 2 Safe user input If you use scanf(), include
More informationarrays C Programming Language - Arrays
arrays So far, we have been using only scalar variables scalar meaning a variable with a single value But many things require a set of related values coordinates or vectors require 3 (or 2, or 4, or more)
More informationSources: On the Web: Slides will be available on:
C programming Introduction The basics of algorithms Structure of a C code, compilation step Constant, variable type, variable scope Expression and operators: assignment, arithmetic operators, comparison,
More information1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++
Answer the following 1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++ 2) Which data structure is needed to convert infix notations to postfix notations? Stack 3) The
More informationLecture 11 Doubly Linked Lists & Array of Linked Lists. Doubly Linked Lists
Lecture 11 Doubly Linked Lists & Array of Linked Lists In this lecture Doubly linked lists Array of Linked Lists Creating an Array of Linked Lists Representing a Sparse Matrix Defining a Node for a Sparse
More informationBSc (Hons) Business Information Systems, BSc (Hons) Computer Science with Network Security. & BSc. (Hons.) Software Engineering
BSc (Hons) Business Information Systems, BSc (Hons) Computer Science with Network Security & BSc. (Hons.) Software Engineering Cohort: BIS/05/FT BCNS/05/FT BSE/05/FT Examinations for 2005-2006 / Semester
More informationThe C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
More informationC Dynamic Data Structures. University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell
C Dynamic Data Structures University of Texas at Austin CS310H - Computer Organization Spring 2010 Don Fussell Data Structures A data structure is a particular organization of data in memory. We want to
More informationC++ Programming Language
C++ Programming Language Lecturer: Yuri Nefedov 7th and 8th semesters Lectures: 34 hours (7th semester); 32 hours (8th semester). Seminars: 34 hours (7th semester); 32 hours (8th semester). Course abstract
More informationKITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php info@kitestechnology.com technologykites@gmail.com Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
More informationMolecular Dynamics Simulations with Applications in Soft Matter Handout 7 Memory Diagram of a Struct
Dr. Martin O. Steinhauser University of Basel Graduate Lecture Spring Semester 2014 Molecular Dynamics Simulations with Applications in Soft Matter Handout 7 Memory Diagram of a Struct Friday, 7 th March
More informationC++FA 5.1 PRACTICE MID-TERM EXAM
C++FA 5.1 PRACTICE MID-TERM EXAM This practicemid-term exam covers sections C++FA 1.1 through C++FA 1.4 of C++ with Financial Applications by Ben Van Vliet, available at www.benvanvliet.net. 1.) A pointer
More information10CS35: Data Structures Using C
CS35: Data Structures Using C QUESTION BANK REVIEW OF STRUCTURES AND POINTERS, INTRODUCTION TO SPECIAL FEATURES OF C OBJECTIVE: Learn : Usage of structures, unions - a conventional tool for handling a
More informationCP Lab 2: Writing programs for simple arithmetic problems
Computer Programming (CP) Lab 2, 2015/16 1 CP Lab 2: Writing programs for simple arithmetic problems Instructions The purpose of this Lab is to guide you through a series of simple programming problems,
More informationChapter 13 Storage classes
Chapter 13 Storage classes 1. Storage classes 2. Storage Class auto 3. Storage Class extern 4. Storage Class static 5. Storage Class register 6. Global and Local Variables 7. Nested Blocks with the Same
More informationSemantic Analysis: Types and Type Checking
Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors
More informationMoving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
More informationShort Notes on Dynamic Memory Allocation, Pointer and Data Structure
Short Notes on Dynamic Memory Allocation, Pointer and Data Structure 1 Dynamic Memory Allocation in C/C++ Motivation /* a[100] vs. *b or *c */ Func(int array_size) double k, a[100], *b, *c; b = (double
More informationScoping (Readings 7.1,7.4,7.6) Parameter passing methods (7.5) Building symbol tables (7.6)
Semantic Analysis Scoping (Readings 7.1,7.4,7.6) Static Dynamic Parameter passing methods (7.5) Building symbol tables (7.6) How to use them to find multiply-declared and undeclared variables Type checking
More information1 Abstract Data Types Information Hiding
1 1 Abstract Data Types Information Hiding 1.1 Data Types Data types are an integral part of every programming language. ANSI-C has int, double and char to name just a few. Programmers are rarely content
More informationIntroduction to Data Structures
Introduction to Data Structures Albert Gural October 28, 2011 1 Introduction When trying to convert from an algorithm to the actual code, one important aspect to consider is how to store and manipulate
More informationOutput: 12 18 30 72 90 87. struct treenode{ int data; struct treenode *left, *right; } struct treenode *tree_ptr;
50 20 70 10 30 69 90 14 35 68 85 98 16 22 60 34 (c) Execute the algorithm shown below using the tree shown above. Show the exact output produced by the algorithm. Assume that the initial call is: prob3(root)
More informationECS 165B: Database System Implementa6on Lecture 2
ECS 165B: Database System Implementa6on Lecture 2 UC Davis, Spring 2011 Por6ons of slides based on earlier ones by Raghu Ramakrishnan, Johannes Gehrke, Jennifer Widom, Bertram Ludaescher, and Michael Gertz.
More informationObject-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007
Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007 The Java Type System By now, you have seen a fair amount of Java. Time to study in more depth the foundations of the language,
More informationMemory Allocation. Static Allocation. Dynamic Allocation. Memory Management. Dynamic Allocation. Dynamic Storage Allocation
Dynamic Storage Allocation CS 44 Operating Systems Fall 5 Presented By Vibha Prasad Memory Allocation Static Allocation (fixed in size) Sometimes we create data structures that are fixed and don t need
More informationHow To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)
TN203 Porting a Program to Dynamic C Introduction Dynamic C has a number of improvements and differences compared to many other C compiler systems. This application note gives instructions and suggestions
More informationPES Institute of Technology-BSC QUESTION BANK
PES Institute of Technology-BSC Faculty: Mrs. R.Bharathi CS35: Data Structures Using C QUESTION BANK UNIT I -BASIC CONCEPTS 1. What is an ADT? Briefly explain the categories that classify the functions
More informationC Interview Questions
http://techpreparation.com C Interview Questions And Answers 2008 V i s i t T e c h P r e p a r a t i o n. c o m f o r m o r e i n t e r v i e w q u e s t i o n s a n d a n s w e r s C Interview Questions
More informationStorage Classes CS 110B - Rule Storage Classes Page 18-1 \handouts\storclas
CS 110B - Rule Storage Classes Page 18-1 Attributes are distinctive features of a variable. Data type, int or double for example, is an attribute. Storage class is another attribute. There are four storage
More informationLecture 12 Doubly Linked Lists (with Recursion)
Lecture 12 Doubly Linked Lists (with Recursion) In this lecture Introduction to Doubly linked lists What is recursion? Designing a node of a DLL Recursion and Linked Lists o Finding a node in a LL (recursively)
More informationC++FA 3.1 OPTIMIZING C++
C++FA 3.1 OPTIMIZING C++ Ben Van Vliet Measuring Performance Performance can be measured and judged in different ways execution time, memory usage, error count, ease of use and trade offs usually have
More informationArrays. number: Motivation. Prof. Stewart Weiss. Software Design Lecture Notes Arrays
Motivation Suppose that we want a program that can read in a list of numbers and sort that list, or nd the largest value in that list. To be concrete about it, suppose we have 15 numbers to read in from
More information1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D.
1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D. base address 2. The memory address of fifth element of an array can be calculated
More informationHabanero Extreme Scale Software Research Project
Habanero Extreme Scale Software Research Project Comp215: Java Method Dispatch Zoran Budimlić (Rice University) Always remember that you are absolutely unique. Just like everyone else. - Margaret Mead
More informationChapter 5 Names, Bindings, Type Checking, and Scopes
Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named
More informationEmbedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C
Embedded Systems A Review of ANSI C and Considerations for Embedded C Programming Dr. Jeff Jackson Lecture 2-1 Review of ANSI C Topics Basic features of C C fundamentals Basic data types Expressions Selection
More informationLecture 10: Dynamic Memory Allocation 1: Into the jaws of malloc()
CS61: Systems Programming and Machine Organization Harvard University, Fall 2009 Lecture 10: Dynamic Memory Allocation 1: Into the jaws of malloc() Prof. Matt Welsh October 6, 2009 Topics for today Dynamic
More informationADTs,, Arrays, Linked Lists
1 ADTs,, Arrays, Linked Lists Outline and Required Reading: ADTs ( 2.1.2) Arrays ( 1.5) Linked Lists ( 4.3.1, 4.3.2) COSC 2011, Fall 2003, Section A Instructor: N. Vlajic Abstract Data Type (ADT) 2 abstract
More informationLecture 18-19 Data Types and Types of a Language
Lecture 18-19 Data Types and Types of a Language April 29, 2014 Data Types and Types of a Language Data, Data Types and Types Type: Generalities Type Systems and Type Safety Type Equivalence, Coercion
More informationPART-A Questions. 2. How does an enumerated statement differ from a typedef statement?
1. Distinguish & and && operators. PART-A Questions 2. How does an enumerated statement differ from a typedef statement? 3. What are the various members of a class? 4. Who can access the protected members
More informationLINKED DATA STRUCTURES
LINKED DATA STRUCTURES 1 Linked Lists A linked list is a structure in which objects refer to the same kind of object, and where: the objects, called nodes, are linked in a linear sequence. we keep a reference
More information5 Arrays and Pointers
5 Arrays and Pointers 5.1 One-dimensional arrays Arrays offer a convenient way to store and access blocks of data. Think of arrays as a sequential list that offers indexed access. For example, a list of
More informationObject Oriented Software Design II
Object Oriented Software Design II Introduction to C++ Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 20, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February
More informationASCII Encoding. The char Type. Manipulating Characters. Manipulating Characters
The char Type ASCII Encoding The C char type stores small integers. It is usually 8 bits. char variables guaranteed to be able to hold integers 0.. +127. char variables mostly used to store characters
More informationOrganization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.
Organization of Programming Languages CS320/520N Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.edu Names, Bindings, and Scopes A name is a symbolic identifier used
More information60-141 Introduction to Programming II Winter, 2014 Assignment 2
60-141 Introduction to Programming II Winter, 2014 Assignment 2 Array In this assignment you will implement an encryption and a corresponding decryption algorithm which involves only random shuffling of
More informationKrishna Institute of Engineering & Technology, Ghaziabad Department of Computer Application MCA-213 : DATA STRUCTURES USING C
Tutorial#1 Q 1:- Explain the terms data, elementary item, entity, primary key, domain, attribute and information? Also give examples in support of your answer? Q 2:- What is a Data Type? Differentiate
More informationStacks. Linear data structures
Stacks Linear data structures Collection of components that can be arranged as a straight line Data structure grows or shrinks as we add or remove objects ADTs provide an abstract layer for various operations
More informationFEEG6002 - Applied Programming 5 - Tutorial Session
FEEG6002 - Applied Programming 5 - Tutorial Session Sam Sinayoko 2015-10-30 1 / 38 Outline Objectives Two common bugs General comments on style String formatting Questions? Summary 2 / 38 Objectives Revise
More informationEmbedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive
More informationDATA STRUCTURES USING C
DATA STRUCTURES USING C QUESTION BANK UNIT I 1. Define data. 2. Define Entity. 3. Define information. 4. Define Array. 5. Define data structure. 6. Give any two applications of data structures. 7. Give
More information7.1 Our Current Model
Chapter 7 The Stack In this chapter we examine what is arguably the most important abstract data type in computer science, the stack. We will see that the stack ADT and its implementation are very simple.
More informationFirst Java Programs. V. Paúl Pauca. CSC 111D Fall, 2015. Department of Computer Science Wake Forest University. Introduction to Computer Science
First Java Programs V. Paúl Pauca Department of Computer Science Wake Forest University CSC 111D Fall, 2015 Hello World revisited / 8/23/15 The f i r s t o b l i g a t o r y Java program @author Paul Pauca
More informationInformatica e Sistemi in Tempo Reale
Informatica e Sistemi in Tempo Reale Introduction to C programming Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 25, 2010 G. Lipari (Scuola Superiore Sant Anna)
More informationData Structure with C
Subject: Data Structure with C Topic : Tree Tree A tree is a set of nodes that either:is empty or has a designated node, called the root, from which hierarchically descend zero or more subtrees, which
More informationStack Allocation. Run-Time Data Structures. Static Structures
Run-Time Data Structures Stack Allocation Static Structures For static structures, a fixed address is used throughout execution. This is the oldest and simplest memory organization. In current compilers,
More informationParameter Passing in Pascal
Parameter Passing in Pascal Mordechai Ben-Ari Department of Science Teaching Weizmann Institute of Science Rehovot 76100 Israel ntbenari@wis.weizmann.ac.il Abstract This paper claims that reference parameters
More informationThe programming language C. sws1 1
The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan
More informationChapter 2: Elements of Java
Chapter 2: Elements of Java Basic components of a Java program Primitive data types Arithmetic expressions Type casting. The String type (introduction) Basic I/O statements Importing packages. 1 Introduction
More informationIntroduction to Java
Introduction to Java The HelloWorld program Primitive data types Assignment and arithmetic operations User input Conditional statements Looping Arrays CSA0011 Matthew Xuereb 2008 1 Java Overview A high
More informationSimple C Programs. Goals for this Lecture. Help you learn about:
Simple C Programs 1 Goals for this Lecture Help you learn about: Simple C programs Program structure Defining symbolic constants Detecting and reporting failure Functionality of the gcc command Preprocessor,
More informationC++ Overloading, Constructors, Assignment operator
C++ Overloading, Constructors, Assignment operator 1 Overloading Before looking at the initialization of objects in C++ with constructors, we need to understand what function overloading is In C, two functions
More informationTutorial on C Language Programming
Tutorial on C Language Programming Teodor Rus rus@cs.uiowa.edu The University of Iowa, Department of Computer Science Introduction to System Software p.1/64 Tutorial on C programming C program structure:
More informationThe Tower of Hanoi. Recursion Solution. Recursive Function. Time Complexity. Recursive Thinking. Why Recursion? n! = n* (n-1)!
The Tower of Hanoi Recursion Solution recursion recursion recursion Recursive Thinking: ignore everything but the bottom disk. 1 2 Recursive Function Time Complexity Hanoi (n, src, dest, temp): If (n >
More informationCOMP 356 Programming Language Structures Notes for Chapter 10 of Concepts of Programming Languages Implementing Subprograms.
COMP 356 Programming Language Structures Notes for Chapter 10 of Concepts of Programming Languages Implementing Subprograms 1 Activation Records activation declaration location Recall that an activation
More informationCoding Rules. Encoding the type of a function into the name (so-called Hungarian notation) is forbidden - it only confuses the programmer.
Coding Rules Section A: Linux kernel style based coding for C programs Coding style for C is based on Linux Kernel coding style. The following excerpts in this section are mostly taken as is from articles
More informationlanguage 1 (source) compiler language 2 (target) Figure 1: Compiling a program
CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program
More informationCommon Data Structures
Data Structures 1 Common Data Structures Arrays (single and multiple dimensional) Linked Lists Stacks Queues Trees Graphs You should already be familiar with arrays, so they will not be discussed. Trees
More informationArrays. Atul Prakash Readings: Chapter 10, Downey Sun s Java tutorial on Arrays: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/arrays.
Arrays Atul Prakash Readings: Chapter 10, Downey Sun s Java tutorial on Arrays: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/arrays.html 1 Grid in Assignment 2 How do you represent the state
More information5. A full binary tree with n leaves contains [A] n nodes. [B] log n 2 nodes. [C] 2n 1 nodes. [D] n 2 nodes.
1. The advantage of.. is that they solve the problem if sequential storage representation. But disadvantage in that is they are sequential lists. [A] Lists [B] Linked Lists [A] Trees [A] Queues 2. The
More informationUnit 1. 5. Write iterative and recursive C functions to find the greatest common divisor of two integers. [6]
Unit 1 1. Write the following statements in C : [4] Print the address of a float variable P. Declare and initialize an array to four characters a,b,c,d. 2. Declare a pointer to a function f which accepts
More informationThreads Scheduling on Linux Operating Systems
Threads Scheduling on Linux Operating Systems Igli Tafa 1, Stavri Thomollari 2, Julian Fejzaj 3 Polytechnic University of Tirana, Faculty of Information Technology 1,2 University of Tirana, Faculty of
More informationCSE 1223: Introduction to Computer Programming in Java Chapter 2 Java Fundamentals
CSE 1223: Introduction to Computer Programming in Java Chapter 2 Java Fundamentals 1 Recall From Last Time: Java Program import java.util.scanner; public class EggBasket { public static void main(string[]
More informationEl Dorado Union High School District Educational Services
El Dorado Union High School District Course of Study Information Page Course Title: ACE Computer Programming II (#495) Rationale: A continuum of courses, including advanced classes in technology is needed.
More information7th Marathon of Parallel Programming WSCAD-SSC/SBAC-PAD-2012
7th Marathon of Parallel Programming WSCAD-SSC/SBAC-PAD-2012 October 17 th, 2012. Rules For all problems, read carefully the input and output session. For all problems, a sequential implementation is given,
More informationJava Interview Questions and Answers
1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java
More informationCS104: Data Structures and Object-Oriented Design (Fall 2013) October 24, 2013: Priority Queues Scribes: CS 104 Teaching Team
CS104: Data Structures and Object-Oriented Design (Fall 2013) October 24, 2013: Priority Queues Scribes: CS 104 Teaching Team Lecture Summary In this lecture, we learned about the ADT Priority Queue. A
More information1.00 Lecture 1. Course information Course staff (TA, instructor names on syllabus/faq): 2 instructors, 4 TAs, 2 Lab TAs, graders
1.00 Lecture 1 Course Overview Introduction to Java Reading for next time: Big Java: 1.1-1.7 Course information Course staff (TA, instructor names on syllabus/faq): 2 instructors, 4 TAs, 2 Lab TAs, graders
More informationCrash Course in Java
Crash Course in Java Based on notes from D. Hollinger Based in part on notes from J.J. Johns also: Java in a Nutshell Java Network Programming and Distributed Computing Netprog 2002 Java Intro 1 What is
More informationLinked Lists, Stacks, Queues, Deques. It s time for a chainge!
Linked Lists, Stacks, Queues, Deques It s time for a chainge! Learning Goals After this unit, you should be able to... Differentiate an abstraction from an implementation. Define and give examples of problems
More informationIllustration 1: Diagram of program function and data flow
The contract called for creation of a random access database of plumbing shops within the near perimeter of FIU Engineering school. The database features a rating number from 1-10 to offer a guideline
More informationLecture 3. Arrays. Name of array. c[0] c[1] c[2] c[3] c[4] c[5] c[6] c[7] c[8] c[9] c[10] c[11] Position number of the element within array c
Lecture 3 Data structures arrays structs C strings: array of chars Arrays as parameters to functions Multiple subscripted arrays Structs as parameters to functions Default arguments Inline functions Redirection
More information8.5. <summary>...26 9. Cppcheck addons...27 9.1. Using Cppcheck addons...27 9.1.1. Where to find some Cppcheck addons...27 9.2.
Cppcheck 1.72 Cppcheck 1.72 Table of Contents 1. Introduction...1 2. Getting started...2 2.1. First test...2 2.2. Checking all files in a folder...2 2.3. Excluding a file or folder from checking...2 2.4.
More informationJava from a C perspective. Plan
Java from a C perspective Cristian Bogdan 2D2052/ingint04 Plan Objectives and Book Packages and Classes Types and memory allocation Syntax and C-like Statements Object Orientation (minimal intro) Exceptions,
More informationCORBA Programming with TAOX11. The C++11 CORBA Implementation
CORBA Programming with TAOX11 The C++11 CORBA Implementation TAOX11: the CORBA Implementation by Remedy IT TAOX11 simplifies development of CORBA based applications IDL to C++11 language mapping is easy
More informationExample 1/24. Example
Example CandC++. Misc. Library Features Gotchas Hints n Tips int **ppi int *pi int i char *pc char c Stephen Clark 5 University of Cambridge (heavily based on last year s notes (Andrew Moore) with thanks
More informationSQLITE C/C++ TUTORIAL
http://www.tutorialspoint.com/sqlite/sqlite_c_cpp.htm SQLITE C/C++ TUTORIAL Copyright tutorialspoint.com Installation Before we start using SQLite in our C/C++ programs, we need to make sure that we have
More informationDebugging. Common Semantic Errors ESE112. Java Library. It is highly unlikely that you will write code that will work on the first go
Debugging ESE112 Java Programming: API, Psuedo-Code, Scope It is highly unlikely that you will write code that will work on the first go Bugs or errors Syntax Fixable if you learn to read compiler error
More informationKeywords are identifiers having predefined meanings in C programming language. The list of keywords used in standard C are : unsigned void
1. Explain C tokens Tokens are basic building blocks of a C program. A token is the smallest element of a C program that is meaningful to the compiler. The C compiler recognizes the following kinds of
More informationStatic vs. Dynamic. Lecture 10: Static Semantics Overview 1. Typical Semantic Errors: Java, C++ Typical Tasks of the Semantic Analyzer
Lecture 10: Static Semantics Overview 1 Lexical analysis Produces tokens Detects & eliminates illegal tokens Parsing Produces trees Detects & eliminates ill-formed parse trees Static semantic analysis
More informationFunctions and Parameter Passing
Chapter 5: Functions and Parameter Passing In this chapter, we examine the difference between function calls in C and C++ and the resulting difference in the way functions are defined in the two languages.
More informationApplying Clang Static Analyzer to Linux Kernel
Applying Clang Static Analyzer to Linux Kernel 2012/6/7 FUJITSU COMPUTER TECHNOLOGIES LIMITED Hiroo MATSUMOTO 管 理 番 号 1154ka1 Copyright 2012 FUJITSU COMPUTER TECHNOLOGIES LIMITED Abstract Now there are
More informationA binary search tree or BST is a binary tree that is either empty or in which the data element of each node has a key, and:
Binary Search Trees 1 The general binary tree shown in the previous chapter is not terribly useful in practice. The chief use of binary trees is for providing rapid access to data (indexing, if you will)
More informationQuiz 4 Solutions EECS 211: FUNDAMENTALS OF COMPUTER PROGRAMMING II. 1 Q u i z 4 S o l u t i o n s
Quiz 4 Solutions Q1: What value does function mystery return when called with a value of 4? int mystery ( int number ) { if ( number
More informationQuestions 1 through 25 are worth 2 points each. Choose one best answer for each.
Questions 1 through 25 are worth 2 points each. Choose one best answer for each. 1. For the singly linked list implementation of the queue, where are the enqueues and dequeues performed? c a. Enqueue in
More informationThe Advantages of Dan Grossman CSE303 Spring 2005, Lecture 25
CSE 303: Concepts and Tools for Software Development Dan Grossman Spring 2005 Lecture 25 Memory-Management Idioms Dan Grossman CSE303 Spring 2005, Lecture 25 1 No tools or rule today Review: Java and C
More informationFree Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program
Free Java textbook available online "Thinking in Java" by Bruce Eckel, 4th edition, 2006, ISBN 0131872486, Pearson Education Introduction to the Java programming language CS 4354 Summer II 2014 Jill Seaman
More information6.S096 Lecture 1 Introduction to C
6.S096 Lecture 1 Introduction to C Welcome to the Memory Jungle Andre Kessler Andre Kessler 6.S096 Lecture 1 Introduction to C 1 / 30 Outline 1 Motivation 2 Class Logistics 3 Memory Model 4 Compiling 5
More informationVirtuozzo Virtualization SDK
Virtuozzo Virtualization SDK Programmer's Guide February 18, 2016 Copyright 1999-2016 Parallels IP Holdings GmbH and its affiliates. All rights reserved. Parallels IP Holdings GmbH Vordergasse 59 8200
More information