![Page 1: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/1.jpg)
CS 11 C track: lecture 1 Preliminaries
Need a CS cluster account http://www.cs.caltech.edu/
cgi-bin/sysadmin/account_request.cgi
Need to know UNIX ITS tutorial linked from track home page
Track home page: www.cs.caltech.edu/courses/cs11/material/
c/mike
![Page 2: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/2.jpg)
Assignments
1st assignment is posted now
Due one week after class, midnight
Late penalty: 1 mark/day
Redos
![Page 3: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/3.jpg)
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
![Page 4: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/4.jpg)
Passing
Need average of 7/10 on labs
8 labs 56/80 marks
![Page 5: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/5.jpg)
Other administrative stuff
See admin web page:
http://www.cs.caltech.edu/courses/cs11/material/c/mike/admin.html
Covers how to submit labs, collaboration policy, grading, etc.
![Page 6: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/6.jpg)
Main textbook
C: A Software Engineering Approach,
3rd ed.
by Peter A. Darnell, Philip E. Margolis
Thorough, readable
![Page 7: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/7.jpg)
Supplemental textbook
Kernighan and Ritchie:
The C Programming Language, 2nd. ed. 1st edition NOT acceptable
"ANSI C"
Good for reference
![Page 8: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/8.jpg)
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
![Page 9: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/9.jpg)
Getting started (1) The "hello, world!" program:
#include <stdio.h>int main(void){ printf("hello, world!\n"); return 0;}
![Page 10: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/10.jpg)
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% hellohello, world!%
Woo hoo!
![Page 11: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/11.jpg)
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)
![Page 12: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/12.jpg)
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
![Page 13: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/13.jpg)
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
![Page 14: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/14.jpg)
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
![Page 15: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/15.jpg)
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
![Page 16: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/16.jpg)
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)
![Page 17: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/17.jpg)
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
![Page 18: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/18.jpg)
Operators (1)
Numeric: + - * / %
Assignment: =
int i = 10;
int j = 20;
i = 2 + i * j;
j = j % 2;
![Page 19: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/19.jpg)
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
![Page 20: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/20.jpg)
Operators (3)
Other assignment operators:
+=, -=, *=, ...
i += 2; /* i = i + 2; */
increment and decrement: ++, --
i++; /* i = i + 1; */
++i; /* same */
![Page 21: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/21.jpg)
Operators (4)
Test operators:
compare two values
< <= > >=
== for testing equality
!= for testing inequality
read "!" as "not"
![Page 22: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/22.jpg)
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"
![Page 23: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/23.jpg)
Operators (6)
int bool1, bool2, bool3, bool4;
bool1 = 0; /* false */
bool2 = !bool1; /* bool2 --> true */
bool3 = bool1 || bool2; /* value? */
bool4 = bool1 && bool2; /* value? */
![Page 24: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/24.jpg)
Operators (7)
"Unary minus" operator:
int var1 = 10;
int var2;
var2 = -var1;
Like – with nothing to the left
Negates the value
![Page 25: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/25.jpg)
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;
![Page 26: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/26.jpg)
Comments
/* This is a comment. */
/*
* Comments can span
* multiple lines.
*/
// This is NOT a comment!
![Page 27: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/27.jpg)
Functions (1) Functions take arguments and return
values:
int f(int x)
{
int y = 10;
return y * x;
}
![Page 28: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/28.jpg)
Functions (2) Functions take arguments and return
values:
int f(int x)
{
int y = 10;
return y * x;
}
name
![Page 29: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/29.jpg)
Functions (3) Functions take arguments and return
values:
int f(int x)
{
int y = 10;
return y * x;
}
argument list
![Page 30: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/30.jpg)
Functions (4) Functions take arguments and return
values:
int f(int x)
{
int y = 10;
return y * x;
}
return type
![Page 31: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/31.jpg)
Functions (5) Functions take arguments and return
values:
int f(int x)
{
int y = 10;
return y * x;
}
body
![Page 32: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/32.jpg)
Functions (6) Functions take arguments and return
values:
int f(int x)
{
int y = 10;
return y * x;
}
return statement
![Page 33: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/33.jpg)
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
![Page 34: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/34.jpg)
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
![Page 35: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/35.jpg)
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
![Page 36: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/36.jpg)
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
![Page 37: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/37.jpg)
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
![Page 38: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/38.jpg)
Functions (11) Not all functions take arguments:
int five(void)
{
return 5;
}
No arguments (use void to indicate)
![Page 39: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/39.jpg)
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"
![Page 40: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/40.jpg)
Functions – type declarations Type declarations come at the beginning
of the function Need a declaration for every local variableint foo(int x)
{
int y; /* type declaration */
y = x * 2;
return y;
}
![Page 41: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/41.jpg)
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
![Page 42: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/42.jpg)
Local and global variables (1)
Variable declarations can be local or global
Local: inside a function Global: outside a function
accessible from any function
![Page 43: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/43.jpg)
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);
}
![Page 44: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/44.jpg)
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
![Page 45: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/45.jpg)
printf()
int a = 5;
double pi = 3.14159;
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
![Page 46: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/46.jpg)
The C preprocessor (1) What does the funky line #include <stdio.h>
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
![Page 47: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/47.jpg)
The C preprocessor (2) What does the funky line #include <stdio.h>
mean? Includes the declaration of printf()
NOT the implementation allows your code to use printf()
The linker adds in the implementation
![Page 48: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/48.jpg)
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");
}
![Page 49: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/49.jpg)
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");
}
![Page 50: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/50.jpg)
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");
}
![Page 51: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/51.jpg)
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");
}
![Page 52: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/52.jpg)
Conditionals (5) else clause is optional:int a = 0;
if (a == 10)
{
printf("a equals 10\n");
}
![Page 53: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/53.jpg)
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");
}
![Page 54: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/54.jpg)
for loop (1) Need to do things repeatedly:
int i;
for (i = 0; i < 10; i++)
{
printf("cowabunga!!!\n");
}
![Page 55: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/55.jpg)
for loop (2)
for (<initialization>;
<test>;
<increment>)
{ <body> }
for (i = 0; i < 10; i++)
{
printf("cowabunga!!!\n");
}
![Page 56: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/56.jpg)
for loop (3)
for (<initialization>;
<test>;
<increment>)
{ <body> }
for (i = 0; i < 10; i++)
{
printf("cowabunga!!!\n");
}
![Page 57: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/57.jpg)
for loop (4)
for (<initialization>;
<test>;
<increment>)
{ <body> }
for (i = 0; i < 10; i++)
{
printf("cowabunga!!!\n");
}
![Page 58: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/58.jpg)
for loop (5)
for (<initialization>;
<test>;
<increment>)
{ <body> }
for (i = 0; i < 10; i++)
{
printf("cowabunga!!!\n");
}
![Page 59: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/59.jpg)
for loop (6)
for (<initialization>;
<test>;
<increment>)
{ <body> }
for (i = 0; i < 10; i++)
{
printf("cowabunga!!!\n");
}
![Page 60: CS 11 C track: lecture 1 Preliminaries Need a CS cluster account cgi-bin/sysadmin/account_request.cgi Need to know UNIX ITS](https://reader035.vdocuments.us/reader035/viewer/2022062308/56649e035503460f94aee184/html5/thumbnails/60.jpg)
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!