CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS.

Slides:



Advertisements
Similar presentations
Overview of programming in C C is a fast, efficient, flexible programming language Paradigm: C is procedural (like Fortran, Pascal), not object oriented.
Advertisements

Computer Programming w/ Eng. Applications
Lecture 2 Introduction to C Programming
Introduction to C Programming
 2000 Prentice Hall, Inc. All rights reserved. Chapter 2 - Introduction to C Programming Outline 2.1Introduction 2.2A Simple C Program: Printing a Line.
Introduction to C Creating your first C program. Writing C Programs  The programmer uses a text editor to create or modify files containing C code. 
Introduction to C Programming
Introduction to C Programming CE Lecture 1 Introduction to C.
Introduction to Systems Programming - Recitation Omer Kotlicki Two instances: 1.Tuesdays 15:00-16:00; Kitot Wednesdays.
1 9/24/07CS150 Introduction to Computer Science 1 Relational Operators and the If Statement.
Unix Continuum of Tools Do something once: use the command line Do something many times: –Use an alias –Use a shell script Do something that is complex.
Lecture 1 The Basics (Review of Familiar Topics).
 2007 Pearson Education, Inc. All rights reserved Introduction to C Programming.
More on Numerical Computation CS-2301 B-term More on Numerical Computation CS-2301, System Programming for Non-majors (Slides include materials from.
Please pick up an attendance question and submit in 5 minutes CS 1003 Lecture #3 Sept 12, 2006 Knarig Arabshian.
C. About the Crash Course Cover sufficient C for simple programs: variables and statements control functions arrays and strings pointers Slides and captured.
Introduction to C Programming Overview of C Hello World program Unix environment C programming basics.
COMP2004 Programming Practice Sam Holden Department of Computer Science University of Sydney.
1 CS150 Introduction to Computer Science 1 Relational Operators and the If Statement 9/22/08.
Introduction to C Programming
CMSC 104, Version 9/011 Introduction to C Topics Compilation Using the gcc Compiler The Anatomy of a C Program 104 C Programming Standards and Indentation.
CSE : Programming in C Instructor: Lei Wang Office: Dreese Lab 474 Office Hour: Friday.
Introduction to C Topics Compilation Using the gcc Compiler
An Introduction to C Programming Geb Thomas. Learning Objectives Learn how to write and compile a C program Learn what C libraries are Understand the.
C Programming Lecture 5. Precedence and Associativity of Operators b Rules of associativity and precedence of operators determine precisely how expressions.
Computer Science 210 Computer Organization Introduction to C.
CS140: Intro to CS An Overview of Programming in C by Erin Chambers.
H.Melikian Introduction on C C is a high-level programming language that forms the basis to other programming languages such as C++, Perl and Java. It.
Programming With C.
CS 11 java track: lecture 1 Administrivia need a CS cluster account cgi-bin/sysadmin/account_request.cgi need to know UNIX
EPSII 59:006 Spring Introduction to C More Administrative Details The C Programming Language How a computer processes programs Your first C program.
Lecture #5 Introduction to C++
CMSC 104, Version 9/011 Introduction to C Topics Compilation Using the gcc Compiler The Anatomy of a C Program 104 C Programming Standards and Indentation.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 2 Chapter 2 - Introduction to C Programming.
C STRUCTURES. A FIRST C PROGRAM  #include  void main ( void )  { float height, width, area, wood_length ;  scanf ( "%f", &height ) ;  scanf ( "%f",
Algorithms  Problem: Write pseudocode for a program that keeps asking the user to input integers until the user enters zero, and then determines and outputs.
Introduction to Programming
School of Computer Science & Information Technology G6DICP - Lecture 4 Variables, data types & decision making.
C++ / G4MICE Course Session 1 - Introduction Edit text files in a UNIX environment. Use the g++ compiler to compile a single C++ file. Understand the C++
Minimal standard C program int main(void) { return 0 ; }
By Mr. Muhammad Pervez Akhtar
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Chapter 2 - Introduction to C Programming Outline.
Lecturer: Nguyen Thi Hien Software Engineering Department Home page: hienngong.wordpress.com Chapter 2: Language C++
 2007 Pearson Education, Inc. All rights reserved. A Simple C Program 1 /* ************************************************* *** Program: hello_world.
1 Lecture03: Control Flow 9/24/2012 Slides modified from Yin Lou, Cornell CS2022: Introduction to C.
CSE 303 Concepts and Tools for Software Development Richard C. Davis UW CSE – 10/11/2006 Lecture 7 – Introduction to C.
Announcements Assignment 2 Out Today Quiz today - so I need to shut up at 4:25 1.
1 Types of Programming Language (1) Three types of programming languages 1.Machine languages Strings of numbers giving machine specific instructions Example:
L071 Introduction to C Topics Compilation Using the gcc Compiler The Anatomy of a C Program Reading Sections
From Algorithms to Programs Both are sets of instructions on how to do a task Algorithm: –talking to humans, easy to understand –in plain (English) language.
1 Lecture 2 - Introduction to C Programming Outline 2.1Introduction 2.2A Simple C Program: Printing a Line of Text 2.3Another Simple C Program: Adding.
CCSA 221 Programming in C CHAPTER 3 COMPILING AND RUNNING YOUR FIRST PROGRAM 1 ALHANOUF ALAMR.
Introduction to C Topics Compilation Using the gcc Compiler
The Machine Model Memory
CprE 185: Intro to Problem Solving (using C)
Computer Science 210 Computer Organization
Algorithms Problem: Write pseudocode for a program that keeps asking the user to input integers until the user enters zero, and then determines and outputs.
Introduction to C Topics Compilation Using the gcc Compiler
Introduction to C Topics Compilation Using the gcc Compiler
C Basics.
Introduction to C Programming Language
Computer Science 210 Computer Organization
Introduction to C Topics Compilation Using the gcc Compiler
Homework Applied for cs240? (If not, keep at it!) 8/10 Done with HW1?
C Programming Getting started Variables Basic C operators Conditionals
Introduction to C Topics Compilation Using the gcc Compiler
An Overview of C.
DATA TYPES There are four basic data types associated with variables:
Introduction to C Topics Compilation Using the gcc Compiler
Introduction to C Programming
Presentation transcript:

CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS tutorial linked from track home page Track home page:

Assignments 1st assignment is posted now Due one week after class, midnight Late penalty: 1 mark/day Redos

1st redo = 1 mark off 2nd redo = 1 to 2 more marks off 3rd redo = 1 to 3 more marks off No 4th redo! Grade - 6 mark penalty

Passing Need average of 7/10 on labs 8 labs  56/80 marks

Other administrative stuff See admin web page: c/mike/admin.html Covers how to submit labs, collaboration policy, grading, etc.

Main textbook C: A Software Engineering Approach, 3rd ed. by Peter A. Darnell, Philip E. Margolis Thorough, readable

Supplemental textbook Kernighan and Ritchie: The C Programming Language, 2nd. ed. 1st edition NOT acceptable "ANSI C" Good for reference

C: pros and cons What C is good at low-level programming speed and memory efficiency portability (sorta) Bad things about C unsafe!!! low level of abstraction

Getting started (1) The "hello, world!" program: #include int main(void) { printf("hello, world!\n"); return 0; }

Getting started (2) Make this into a file called hello.c using a text editor e.g. emacs, vi, nedit, pico Compile into a program and run: % gcc hello.c -o hello % hello hello, world! % Woo hoo!

Source code to executable (1) What you write is called "source code" Two kinds of source code files: regular code (files end in ".c") header files (files end in ".h") Compiler turns source code into "object code" (files end in ".o") Linker turns object code file(s) into executable (no special file suffix)

Source code to executable (2) The program gcc is both a compiler and a linker When you do this: % gcc hello.c -o hello Then gcc compiles hello.c to hello.o links hello.o with system libraries outputs the binary executable hello removes hello.o

Source code to executable (3) You can do each step individually: % gcc -c hello.c (compile only) % gcc hello.o -o hello (link only) In this case, hello.o is not removed Sequence: compiling: source code to object code linking: object code to binary executable

The C language - overview Programs are built up of functions Functions take in arguments compute something return a result The main() function is where program execution starts

Data types (1) All data in C has to have a specified type Examples: int (integer) char (character) float or double (approximate real number) others Variables hold data of a particular type only Variables must be declared before use

Data types (2) Type declarations: int i; /* name = i type = int */ char c; /* name = c type = char */ double d; float some_float = 3.14; Identifiers: i, c, d, some_float Optional initialization (e.g. some_float ) Booleans  0 or nonzero (usually 1 )

Data types (3) Strings: arrays of type char char some_string[9] = "woo hoo!"; char same_string[] = "woo hoo!"; char *same_again = "woo hoo!"; Much more on strings, arrays later Other types: structs, pointers

Operators (1) Numeric: + - * / % Assignment: = int i = 10; int j = 20; i = 2 + i * j; j = j % 2;

Operators (2) What does i = 2 + i * j; mean? a) i = (2 + i) * j; b) i = 2 + (i * j); * has a higher precedence than + Use () to force other interpretation

Operators (3) Other assignment operators: +=, -=, *=,... i += 2; /* i = i + 2; */ increment and decrement: ++, -- i++; /* i = i + 1; */ ++i; /* same */

Operators (4) Test operators: compare two values >= == for testing equality != for testing inequality read " ! " as "not"

Operators (5) Logical operators: arguments are ints used as booleans i.e. usually 0 or 1 (false or true) ! operator is unary logical "not" && operator is binary logical "and" || operator is binary logical "or"

Operators (6) int bool1, bool2, bool3, bool4; bool1 = 0; /* false */ bool2 = !bool1; /* bool2 --> true */ bool3 = bool1 || bool2; /* value? */ bool4 = bool1 && bool2; /* value? */

Operators (7) "Unary minus" operator: int var1 = 10; int var2; var2 = -var1; Like – with nothing to the left Negates the value

Expressions and statements i + 2 * j is an expression (has a value) i = j * k; is a statement ends in a semicolon also is an expression (value is value of i ) i = j = k = 0; is allowed Equivalent to i = (j = (k = 0)); NOT ((i = j) = k) = 0;

Comments /* This is a comment. */ /* * Comments can span * multiple lines. */ // This is NOT a comment!

Functions (1) Functions take arguments and return values: int f(int x) { int y = 10; return y * x; }

Functions (2) Functions take arguments and return values: int f(int x) { int y = 10; return y * x; } name

Functions (3) Functions take arguments and return values: int f(int x) { int y = 10; return y * x; } argument list

Functions (4) Functions take arguments and return values: int f(int x) { int y = 10; return y * x; } return type

Functions (5) Functions take arguments and return values: int f(int x) { int y = 10; return y * x; } body

Functions (6) Functions take arguments and return values: int f(int x) { int y = 10; return y * x; } return statement

Functions (7) Calling the function we just defined: /* in another function... */ int res; int i = 10; res = f(10); res = f(5 + 5); res = f(i); res = f(i*5 + i/2); All of these are valid function calls Take in arguments, return result

Functions (8) Not all functions return values: void print_number(int i) { printf("number is: %d\n", i); } Return type is void (nothing to return) Use this when no return value needed

Functions (9) Not all functions return values: void print_number(int i) { printf("number is: %d\n", i); return; /* unnecessary */ } return statement not required unless you return in the middle of the function

Functions (9) Not all functions return values: void print_number(int i) { printf("number is: %d\n", i); return; /* unnecessary */ } return statement not required unless you return in the middle of the function

Functions (10) Calling this function: /* In another function... */ int i = 10; print_number(20); print_number(i); print_number(i*5 + i/2); Prints 20, 10, 55 respectively

Functions (11) Not all functions take arguments: int five(void) { return 5; } No arguments (use void to indicate)

Functions (12) Calling functions without arguments: int value; value = five(); Now value equals 5 Note () after five means "this function is being called with no arguments"

Functions – type declarations Type declarations come at the beginning of the function Need a declaration for every local variable int foo(int x) { int y; /* type declaration */ y = x * 2; return y; }

Functions – type declarations This is wrong: int foo(int x) { int y; /* type decl */ y = x * 2; /* code */ /* type declaration after code: */ int z = y * y; return z; } Generates a compiler warning

Local and global variables (1) Variable declarations can be local or global Local: inside a function Global: outside a function accessible from any function

Local and global variables (2) int x; /* Global variable */ int y = 10; /* Initialized global variable */ int foo(int z) { int w; /* local variable */ x = 42; /* assign to a global variable */ w = 10; /* assign to a local variable */ return (x + y + z + w); }

Local and global variables (3) In general, avoid using global variables! Global variables can be changed by any function makes debugging much harder Global variables are never necessary though sometimes convenient OK to use global "variables" if they really are constant i.e. if you don't change their values

printf() int a = 5; double pi = ; char s[] = "I am a string!"; printf("a = %d, pi = %f, s = %s\n", a, pi, s); Substitutes values for %d, %f, %s etc. %d : int, %f : float, double, %s : string \n : new line

The C preprocessor (1) What does the funky line #include mean? C preprocessor directive Extra step in compilation: cpp: source code -> expanded source code gcc: compiles source code -> object code gcc (ld): links object code -> executable gcc does all this for you

The C preprocessor (2) What does the funky line #include mean? Includes the declaration of printf() NOT the implementation allows your code to use printf() The linker adds in the implementation

Conditionals (1) Need to be able to test for conditions: int a = 10; if (a < 20) { printf("less than 20\n"); } else { printf("not less than 20\n"); }

Conditionals (2) Test: 0 is “false”, anything else is “true”: if (1) /* true */ { printf("less than 20\n"); } else { printf("not less than 20\n"); }

Conditionals (3) VERY common error: int a = 0; if (a = 10) /* always true! */ { printf("a equals 10\n"); } else { printf("a doesn’t equal 10\n"); }

Conditionals (4) Should be: int a = 0; if (a == 10) /* not always true */ { printf("a equals 10\n"); } else { printf("a doesn’t equal 10\n"); }

Conditionals (5) else clause is optional: int a = 0; if (a == 10) { printf("a equals 10\n"); }

Conditionals (5) else if for multiple cases: int a = 0; if (a == 10) { printf("a equals 10\n"); } else if (a < 10) { printf("a is less than 10\n"); } else { printf("a is greater than 10\n"); }

for loop (1) Need to do things repeatedly: int i; for (i = 0; i < 10; i++) { printf("cowabunga!!!\n"); }

for loop (2) for ( ; ; ) { } for (i = 0; i < 10; i++) { printf("cowabunga!!!\n"); }

for loop (3) for ( ; ; ) { } for (i = 0; i < 10; i++) { printf("cowabunga!!!\n"); }

for loop (4) for ( ; ; ) { } for (i = 0; i < 10; i++) { printf("cowabunga!!!\n"); }

for loop (5) for ( ; ; ) { } for (i = 0; i < 10; i++) { printf("cowabunga!!!\n"); }

for loop (6) for ( ; ; ) { } for (i = 0; i < 10; i++) { printf("cowabunga!!!\n"); }

That’s all for now! Much more on all these topics in later lectures Do first assignment to get familiar with basics Use "style checker" to avoid style mistakes Have fun!