C/C++ Basics.

Slides:



Advertisements
Similar presentations
C++ Language Fundamentals. 2 Contents 1. Introduction to C++ 2. Basic syntax rules 3. Declaring and using variables.
Advertisements

Overview of programming in C C is a fast, efficient, flexible programming language Paradigm: C is procedural (like Fortran, Pascal), not object oriented.
C Language.
C Intro.
Advanced Java Concepts Dr. Jeyakesavan Veerasamy
Kernighan/Ritchie: Kelley/Pohl:
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.
CS100A, Fall 1997, Lectures 221 CS100A, Fall 1997 Lecture 22, Tuesday 18 November Introduction To C Goal: Acquire a reading knowledge of basic C. Concepts:
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science Computer Systems Principles C/C++ Emery Berger and Mark Corner University of Massachusetts.
C++ vs. Java: Similiarities & Differences Dr. Jeyakesavan Veerasamy Director of CS UTDesign program & CS Teaching Faculty University.
Guide To UNIX Using Linux Third Edition
Functions in C. Function Terminology Identifier scope Function declaration, definition, and use Parameters and arguments Parameter order, number, and.
Computer Science 210 Computer Organization Introduction to C.
By Sidhant Garg.  C was developed between by Dennis Ritchie at Bell Laboratories for use with the Unix Operating System.  Unlike previously.
By Noorez Kassam Welcome to JNI. Why use JNI ? 1. You already have significantly large and tricky code written in another language and you would rather.
C Tutorial Session #2 Type conversions More on looping Common errors Control statements Pointers and Arrays C Pre-processor Makefile Debugging.
Dynamic Memory Allocation The process of allocating memory at run time is known as dynamic memory allocation. C does not Inherently have this facility,
Netprog: Java Intro1 Crash Course in Java. Netprog: Java Intro2 Why Java? Network Programming in Java is very different than in C/C++ –much more language.
Game Programming in Java Dr. Jeyakesavan Veerasamy CS faculty, The University of Texas at Dallas Website:
Pointers: Basics. 2 What is a pointer? First of all, it is a variable, just like other variables you studied  So it has type, storage etc. Difference:
C++ Programming Basic Learning Prepared By The Smartpath Information systems
Lecture 1 cis208 January 14 rd, Compiling %> gcc helloworld.c returns a.out %> gcc –o helloworld helloworld.c returns helloworld.
(language, compilation and debugging) David 09/16/2011.
C/C++ Basics. Basic Concepts Basic functions of each language: Input, output, math, decision, repetition Types of errors: Syntax errors, logic errors,
Computer Organization and Design Pointers, Arrays and Strings in C Montek Singh Sep 18, 2015 Lab 5 supplement.
COP 3530 Spring2012 Data Structures & Algorithms Discussion Session Week 2.
C LANGUAGE Characteristics of C · Small size
Announcements Assignment 1 due Wednesday at 11:59PM Quiz 1 on Thursday 1.
C is a high level language (HLL)
LECTURE 3 Translation. PROCESS MEMORY There are four general areas of memory in a process. The text area contains the instructions for the application.
 It is a pure oops language and a high level language.  It was developed at sun microsystems by James Gosling.
Lecture 3 Translation.
Computers’ Basic Organization
Computer Organization and Design Pointers, Arrays and Strings in C
‘C’ Programming Structures and Commands
Winter 2009 Tutorial #6 Arrays Part 2, Structures, Debugger
Intro to ETEC Java.
Computer Science 210 Computer Organization
BRIEF Overview ON THE MAJOR Similarities & Differences
Computer Science 210 Computer Organization
Functions, Part 2 of 2 Topics Functions That Return a Value
C Programming Tutorial – Part I
Programming Languages and Paradigms
C-language Lecture By B.S.S.Tejesh, S.Neeraja Asst.Prof.
C Short Overview Lembit Jürimägi.
C programming language
Programming Paradigms
C Basics.
Java Review: Reference Types
Computer Science 210 Computer Organization
Computer Science 210 Computer Organization
Lexical Elements, Operators, and the C Cystem
Computer Organization & Compilation Process
C Stuff CS 2308.
Chapter 11 Introduction to Programming in C
Lexical Elements, Operators, and the C Cystem
Given the code to the left:
BRIEF Overview ON THE MAJOR Similarities & Differences
C What you Know* Objective: To introduce some of the features of C. This assumes that you are familiar with C++ or java and concentrates on the features.
Introduction to Data Structure
Arrays an array of 5 ints is filled with 3,2,4,1,7
C By Example The assumption is that you know Java and need to extend that knowledge so you can program in C. 1. Hello world 2. declarations 3. pass.
Chapter 11 Programming in C
Introduction to C EECS May 2019.
Programming Languages and Paradigms
C Characters and Strings
Makefiles, GDB, Valgrind
CECS 130 Final Exam Review Session
SPL – PS1 Introduction to C++.
Introduction to C CS 3410.
Presentation transcript:

C/C++ Basics

Basic Concepts Basic functions of each language: Input, output, math, decision, repetition Types of errors: Syntax errors, logic errors, runtime errors. Debugging Machine language, assembly language, high level languages

Procedural Programming Data Element Procedure B Procedure A

Procedural languages … Global variables Primitive data types, Arrays, Records/Structures lots of functions/procedures/modules Uniqueness of “names” requirement Struct + protection + methods ~= class (OOP)

SW Complexity reality SW Complexity Size of the application – Lines of Code

SW complexity? Lots of lines in code – hard to understand Not many meaningful comments Too many variables – not named well Complex functions – too nested, too lengthy, too many if conditions Inter-dependancies – changes that have to be done together in multiple files When you fix a bug, you make a few more.

SW Complexity SW Complexity ideal Size of the application – Lines of Code

Object-Oriented Programming Other objects Programming Interface Attributes (data) typically private to this object Methods (behaviors / procedures)

C vs. C++ C++ is backward compatible with C C++ supports OOP C++ standard library contains lot more functionality Improved I/O mechanism Lot of new header files C is very efficient, C++ is close too. …

C++ vs. Java: Similarities Both support OOP. Most OOP library contents are similar, however Java continues to grow. Syntax is very close – Java has strong influence of C/C++. Easy to learn the other language when you know one of these.

C++ vs. Java: differences Write once, compile everywhere  unique executable for each target Write once, run anywhere  same class files will run above all target-specific JREs. No strict relationship between class names and filenames. Typically, a header file and implementation file are used for each class. Strict relationship is enforced, e.g. source code for class PayRoll has to be in PayRoll.java I/O statements use cin and cout, e.g. cin >> x; cout << y; I/O input mechanism is bit more complex, since default mechanism reads one byte at a time (System.in). Output is easy, e.g. System.out.println(x); Pointers, References, and pass by value are supported. No array bound checking. Primitive data types always passed by value. Objects are passed by reference. Array bounds are always checked. Explicit memory management. Supports destructors. Automatic Garbage Collection. Supports operator overloading. Specifically operator overloading was left out.

C standard library http://en.wikipedia.org/wiki/C_standard_library stdio.h: scanf(), printf(), getchar(), putchar(), gets(), puts(), … stdlib.h: atof(), atoi(), rand(), srand(), malloc(), free(), … math.h: sin(), cos(), sqrt(), … string.h: strcpy(), strcmp(), … ctype: isdigit(), isalpha(), tolower(), toupper() …

Sample C programs: prog1.c These are in ~veerasam/students/basics #include <stdio.h> main() { int in1, out; double in2; puts("Enter values:"); scanf("%d%lf", &in1, &in2); // & means "address of" // %d int, %f float, %lf double out = in1 + in2; printf("Output is %d\n", out); }

Sample C programs: prog2.c #include <stdio.h> #include <stdlib.h> main() { char line[10]; int out; gets(line); puts(line); out = 2 * atoi(line); printf("%d\n", out); }

Sample C programs: prog3.c #include <stdio.h> #include <stdlib.h> main() { srand(getpid()); printf("%d\n", rand()); }

Sample C programs: prog4.c #include <stdio.h> int add(int x, int y) { return x + y; } main() int in1, in2, out; puts("Enter values:"); scanf("%d%d", &in1, &in2); out = add(in1, in2); printf("Output is %d\n", out);

Sample C programs: simple.c #include <stdio.h> main() { int i, arr[10]; puts("Let me init the array contents."); for( i=0 ; i<20 ; i++) arr[i] = i; puts("Well, I survived!"); return 0; }

Sample C programs: simple.c #include <stdio.h> main() { int i, arr[10]; puts("Let me init the array contents."); for( i=0 ; i<20 ; i++) arr[i] = i; puts("Well, I survived!"); return 0; }

Sample C programs: simple2.c main() { puts("\nArray's contents are"); printArray(array); puts("\nArray2's contents are"); printArray(array2); puts("Let me init array contents."); for( i=-10 ; i<20 ; i++) array[i] = i; puts("\nWell, I survived!"); return 0; } #include <stdio.h> int i, array[10], array2[10]; printArray(int *arr) { int i; for(i=0 ; i<10 ; i++) printf("%d\n",arr[i]); }

Sample C programs: simple1.c #include <stdio.h> int i, array[10], array2[10]; main() { puts("\nArray's contents are"); for( i=0 ; i<10 ; i++) printf("%d\n",array[i]); puts("\nArray2's contents are"); printf("%d\n",array2[i]); puts("Let me init the array contents."); for( i=-10 ; i<20 ; i++) array[i] = i; puts("\nWell, I survived!"); return 0; }

Sample C programs: simple3.c main() { int i, array[10], array2[10]; puts("\nArray's contents are"); printArray(array); puts("\nArray2's contents are"); printArray(array2); puts("Let me init array contents."); for( i=-10 ; i<20 ; i++) array[i] = i; puts("\nWell, I survived!"); return 0; } #include <stdio.h> printArray(int *arr) { int i; for(i=0 ; i<10 ; i++) printf("%d\n",arr[i]); }

Sample C programs: simple4.c second() { int i, array[10], array2[10]; puts("\nArray's contents are"); printArray(array); puts("\nArray2's contents are"); printArray(array2); puts("Let me init array contents."); for( i=-10 ; i<20 ; i++) array[i] = i; } #include <stdio.h> printArray(int *arr) { int i; for(i=0 ; i<10 ; i++) printf("%d\n",arr[i]); } main() second(); puts("\nWell, I survived!"); return 0;

Things to observe Memory allocation for arrays Array length is not stored with arrays Potentional issues with scanf() and printf() Different behavior when overshooting arrays in heap vs. in stack

Sample C program: multiple files

Compare with Java file1.java file2.java file3.java filen.java …

C files & runtime environment file1.c file2.c file3.c filen.c …

Debugging : gdb Compile with –g option to use the debugger. Most used commands: run list [method name] break [line_number] step next continue print [variable]