CSC 270 –Survey of
Programming Languages
C Lecture 1 : Getting Started: in C
Modified from Dr. Robert Siegfried’s Presentation
2.
Objective
• Intro toC
• Tools we will use
• Program file structure
• Variables
• Read from screen and print to screen
• Decisions (If)
3.
C Orientation
• Createdin 1972 to write operating systems (Unix in
particular)
– By Dennis Ritchie
– Bell Labs
• Evolved from B
• Can be portable to other hardware (with careful
design – use Plauger’s The Standard C Library
book)
• Built for performance and memory management –
operating systems, embedded systems, real-time
systems, communication systems
4.
C Standardization
• 1989ANSI and ISO -> Standard C
• 1999 C99
• 2011 C11
• Don’t get thrown when you lookup
information on websites and find conflicts
based upon standards
5.
Later Languages
• 1979C++ by Bjarn Stroustrup also at Bell
– Object orientation
• 1991 Java by Sun
– Partial compile to java bytecode: virtual machine
code
– Write once, run anywhere
– Memory manager – garbage collection
– Many JVMs written in C / C++
6.
A First Program
#include<stdio.h>
int main(void)
{
printf("This is my first C program.n");
return(0);
}
statements
header
open and close braces mark
the beginning and end
makes input
and output available
to us
7.
A First Program– What Does It Do?
printf("This is my first C program.n");
return(0);
Prints the message
This is my first C program.
Ends the program Ends the line
8.
Java Reminder
Program CJava
hello, world
#include<stdio.h> public class HelloWorld {
int main(void) {
public static void main(String[]
args) {
printf("Hellon"); System.out.println("Hello");
return 0; }
} }
9.
C Program Phases
•Editor - code by programmer
• Compiling using gcc:
– Preprocess – expand the programmer’s code
– Compiler – create machine code for each file
– Linker – links with libraries and all compiled
objects to make executable
• Running the executable:
– Loader – puts the program in memory to run it
– CPU – runs the program instructions
Run First Program
•Write in notepad++
• Transfer with Filezilla
• Connect to panther as terminal (putty) using
SSH (Secure Shell)
• More filename to see the file
• gcc filename -o filename without c -g (ex: gcc
hello.c -o hello -g )
• ./hello
13.
Using variables
#include <stdio.h>
intmain(void)
{
int sum, value1, value2, value3;
float average;
value1 = 2;
value2 = 4;
value3 = 6;
sum = 2 + 4 + 6;
average = sum / 3;
printf("The average of %d , %d, %d is %fn", value1,
value2, value3, average);
return(0);
}
Print a float value from the
rest of the parameter list
14.
Variables and Identifiers
•Variables have names – we call these names identifiers.
• An identifier must begin with a letter or an underscore _
• C is case sensitive upper case (capital) or lower case letters
are considered different characters. Average, average
and AVERAGE are three different identifiers.
• Numbers can also appear after the first character.
• However, C only considers the first 31 (external
identifiers) or first 63 (internal identifiers) significant.
• Identifiers cannot be reserved words (special words like
int, main, etc.)
15.
User Input
• Let’srewrite the average program so it
can find the average any 3 numbers we
try:
• We now need to:
1. Find our three values
2. Add the values
3. Divide the sum by 3
4. Print the result
16.
Average3.c
#include <stdio.h>
int main(void)
{
intvalue1, value2, value3;
float sum, average;
printf("What is the first value? ");
scanf("%d", &value1);
printf("What is the second value? ");
scanf("%d", &value2);
Indicates that we are
reading an integer
Read The address of variable value1
17.
printf("What is thethird value? ");
scanf("%d", &value3);
sum = value1 + value2 + value3;
average = sum / 3;
printf("The average of %d , %d, %d is %f
n", value1, value2, value3, average);
return(0);
}
scanf needs the &
before the identifier
18.
Scanf Conversion Characters
•https://wpollock.com/CPlus/
PrintfRef.htm#scanfConv
Doubles on our machine are read with a lf.
(A double is a long float.)
19.
Formatting %d and%f
• The specifiers %d and %f allow a programmer to
specify how many spaces a number will occupy and
how many decimal places will be used.
• %nd will use at least n spaces to display the integer
value in decimal (base 10) format.
• %w.nf will use at least w spaces to display the value
and will have exactly n decimal places.
• Example:
– printf("The average of %2d , %2d, %2d
is %5.2fn", value1, value2, value3,
average);
Average – addcomments
#include <stdio.h>
/*
* This program calculates average pay
*/
int main(void)
{
int value1, value2, value3;
float sum, average;
string
// now get the first value
;
comments
24.
Character Data
• Allof our programs so far have used variables
to store numbers, not words.
• We can store one or more characters by
writing:
char x, s[10];
– x can hold one and only one character
– s can hold up to nine characters (reserving 1 for
ending null)
• For now, we use character data for input and
output only.
25.
A program thatuses a character variable
#include <stdio.h>
/* A very polite program that greets you by name */
int main(void)
{
char name[25];
/* Ask the user his/her name */
printf("What is your name ? ");
scanf("%s", name);
/* Greet the user */
printf("Glad to meet you, %sn.", name);
return(0);
}
26.
Features so far
•Include
• Variable types: int, float, char
• Read using scanf
– requires & for address of variable being read
• Print using printf
• Format strings: %f (float), %d (int), %u
(unsigned int), %c (char), %s (character array)
• Comments /*.. */ or //
27.
if and if-elseand if-else if - else
If (boolean_expression 1)
{ /statements }
else if ( boolean_expression 2)
{ /* statements */ }
else if ( boolean_expression 3)
{ /* statements */ }
else
{ /* statements */ }
28.
IsItNeg.c – illustrateif
#include <stdio.h>
// Tell a user if a number is negative
int main(void)
{ float number;
/* Ask the user for a number */
printf("Please enter a number ? ");
scanf("%f", &number);
// Print whether the number is negative or not
if (number < 0){
printf("%f is a negative numbern", number); }
else {
printf("%f is NOT a negative numbern", number); }
return(0); }
29.
Relational operators
Operator MeaningExample
== equals x == y
!= is not equal to 1 != 0
> greater than x+1 > y
< less than x-1 < 2*x
>= greater than or
equal to
x+1 >= 0
<= less than or equal
to
-x +7 <= 10
30.
Integer Division
• Ourcompound interest program prints the
values for every year where every ten or
twenty years would be good enough.
• What we really want to print the results
only if the year is ends in a 5. (The
remainder from division by 10 is 5).
Choosing Data Types
•Sizes implementation dependent in limits.h
– int -2147483648 to 2147483647
– short -32768 to 32767
– long -9223372036854775808 to
9223372036854775807
– Float 1.17x10-38
to 3.4 * 1038
• Keyword unsigned starts at 0 but goes
higher
33.
Declaring Constants
•There aretwo ways of defining constants in C: using
#define and const.
•#define is a compiler preprocessor which replaces each
occurrence of the constant's name with its value:
•The general form of the constant declaration is:
#define ConstantName ConstantValue
•Let's take a look at a few examples:
#define withholding_rate 0.8
#define prompt 'y'
#define answer "yes"
#define maxpeople 15
#define inchperft 12
#define speed_limit 55
34.
Declaring Constants
•The generalform of the constant declaration is:
const datatype ConstantName =
ConstantValue,
AnotherConstantName =
AnotherConstantValue;
•Let's take a look at a few examples of constants:
const float withholding_rate = 0.8;
const char prompt = ‘y‘,
answer[] = “yes”;
const int maxpeople = 15,
inchperft = 12;
speed_limit = 55;
35.
Java Comparison ThusFar
Feature C Java
type of language function oriented / imperative object oriented
file naming
conventions
stack.c, stack.h
Stack.java - file name matches
name of class
basic programming
unit
function class / Abstract Data Type
portability of source
code
possible with discipline yes
portability of
compiled code
no, recompile for each architecture
yes, bytecode is "write once, run
anywhere"
compilation
gcc hello.c creates machine
language code
javac Hello.java creates Java
virtual machine language
bytecode
buffer overflow
segmentation fault, core dump,
unpredicatable program
checked run-time error exception
boolean type
use int: 0 for false, nonzero for
true OR include <stdbool.h> and
use bool
boolean is its own type - stores
value true or false
character type char is usually 8 bit ASCII char is 16 bit UNICODE
strings '0'-terminated character array
built-in immutable String data
type
accessing a library #include <stdio.h> import java.io.File;
36.
More Java Comparison
FeatureC Java
printing to standard
output
printf("sum = %d", x); System.out.println("sum = " + x);
formatted printing printf("avg = %3.2f", avg);
System.out.printf("avg = %3.2f",
avg)
reading from stdin scanf("%d", &x); int x = StdIn.readInt();
declaring constants const and #define final
for loops for (i = 0; i < N; i++) for (int i = 0; i < N; i++)
variable auto-
initialization
not guaranteed
instance variables (and array
elements) initialized to 0, null, or
false, compile-time error to access
uninitialized variables
casting anything goes
checked exception at run-time or
compile-time
demotions automatic, but might lose precision
must explicitly cast, e.g., to convert
from long to int
variable declaration at beginning of a block before you use it
variable naming
conventions
sum_of_squares sumOfSquares
Credit: http://introcs.cs.princeton.edu/java/faq/c2java.html
37.
Summary
• Tools wewill use
– Notepad++
– Filezilla
– Panther (gcc)
– Putty
• Program file structure
– #include <> or “ “
– Main function
38.
Summary Cont.
• Variables
–int, float, char
– unsigned keyword
– String defined as char array : char name[26]
– For bool, include stdbool.h
– Constant:
• #define name value
• const type name = ?
– Get address of variable with &
– Cast with (type) var
•
39.
Summary Cont.
•Read fromscreen and print to screen
– Scanf (control string, variable addresses)
– Printf(string, variables to insert)
– Format strings %2f, %d, %s, %u
– #include <stdio.h>
•Decisions
– If / else if / else