Ensemble - PowerPoint PPT Presentation

1 / 32
About This Presentation
Title:

Ensemble

Description:

Lab 2: The Unix environment, Using vi, C programming SITE, uOttawa – PowerPoint PPT presentation

Number of Views:85
Avg rating:3.0/5.0
Slides: 33
Provided by: COEMASTER
Category:
Tags: ensemble | infosys

less

Transcript and Presenter's Notes

Title: Ensemble


1
  • Lab 2 The Unix environment, Using vi, C
    programming
  • SITE, uOttawa

2
Practical tools
  • Editor
  • Vi (emac)
  • Compiler
  • gcc
  • Makefile
  • make
  • Debugging
  • gdb

3
Using C/Unix/Linux at SITE
ssh linux
4
Vi Editor
  • A screen-based editor used by Unix users
  • An experience with vi
  • Starting the editor
  • Cutting and Pasting/Deleting text
  • Inserting New Text
  • Moving the Cursor Within the File
  • Moving the Cursor Around the Screen
  • Replacing Text
  • Searching for Text or Characters
  • Saving and Quitting
  • http//www.eng.hawaii.edu/Tutor/vi.htmlintro
  • http//www.brezeale.com/technical_notes/vim_notes.
    shtml

5
Vi Basic Commands
  • mkdir ltdirnamegt - create a directory
  • cp ltfilenamegt lttargetgt - copy a file
  • rm ltfilenamegt - delete a file
  • vi ltfilenamegt - open a file
  • pressing the ltEscgt key turns off the Insert mode
  • q quit with saving
  • x quit without saving
  • i insert text before cursor, until ltEscgt hit
  • a append text before cursor, until ltEscgt hit
  • - move cursor to the end of the current line
  • w move cursor to the beginning of next word
  • 0 move cursor to the start of current line
  • o open and put text in a new line after the
    cursor
  • y1 copy current character
  • Yn copy n characters
  • yy copy current line
  • p - paste characters
  • x delete single character under cursor
  • dd delete the current line

6
Avi Exercise
  • Create and edit test.c file
  • include ltstdio.hgt
  • main()
  • printf(Hello world, \n)

7
C programming/Unix
  • include ltstdio.hgt
  • main()
  • printf(hello, wolrd\n)

mkdir csi3130 cd csi3130 vi test.c cc
test.c a.out
8
Compiler
  • GNU Compiler Collection
  • A compiler system produced by the GNU Project
    supporting various programming languages
  • includes front ends for C (gcc), C (g), Java
    (gcj), and Fortran (gFortran)
  • http//pages.cs.wisc.edu/beechung/ref/gcc-intro.h
    tml

9
GCC
  • Compile C code to an executable
  • gcc -o ltexecutable-namegt lt.c filesgt
  • Reporting all warning messages
  • gcc -Wall -o ltexecutable-namegt lt.c filesgt

10
GCC (Contd)
  • An example of compiling two .c files into an
    executable program
  • gcc -Wall -o assign1prob1 main.c list.c
  • An example of compiling two files and then link
    them separately
  • gcc -Wall -o main.o -c main.c
  • gcc -Wall -o list.o -c list.c
  • gcc -Wall -o assign1prob1 main.o list.o

11
Make command
  • make automates the process of compiling a
    program
  • Makefile
  • make
  • make clean

12
Debugging
  • gdb is GNU Debugger
  • A debugger for several languages
  • Inspecting what the program is doing at a certain
    point during execution
  • Errors like segmentation faults may be easier to
    find with the help of gdb
  • http//ftp.gnu.org/old-gnu/Manuals/gdb-5.1.1/html_
    node/gdb_toc.html

13
GDB
  • enable built-in debugging support
  • gcc other flags -g ltsource filesgt -o ltoutput
    filegt
  • generating an expanded symbol table for use with
    gdb
  • Example gcc -Wall -Werror -ansi -pedantic-errors
    -g prog1.c -o prog1.x

14
GDB (Contd)
  • enter gdb
  • gdb
  • enter gdb
  • quit
  • printing line from a source file
  • list
  • running a program
  • run
  • breakpoint at a line number
  • break ltc file namegtltline numbergt
  • break ltline numbergt
  • break at a particular function
  • break ltc file namegtltfunctionnamegt
  • set a breakpoint with condition
  • break ltfunction or file namegt if ltconditiongt
  • deleting breakpoints
  • delete
  • proceed onto the next breakpoint
  • continue

15
debugging exercise
  • Reverse a string
  • include ltstring.hgt
  • include ltstdio.hgt
  • char reverse(char s)
  • int c, i, j
  • For(i 0, jstrlen(s)-1 ilt j i, j--)
  • c si
  • Si sj
  • Sjc
  • Main()
  • printf(s \n,reverse(database))

16
GDB debugging exercise
Program failed, why???
Load the program into GDB
17
GDB debugging exercise
Here failed?
What is the value of i
18
GDB debugging exercise
Track your program step by step, inspect the
variables..
Try the basic GDB commands here!
19
Correct code
  • include ltstring.hgt
  • include ltstdio.hgt
  • char reverse(char s)
  • int c, i, j
  • for(i 0, jstrlen(s)-1 ilt j i, j--)
  • c si
  • si sj
  • sjc
  • return s
  • int main()
  • char myStr9"database"
  • printf("s \n",reverse(myStr))
  • return 0

20
From Java to C
21
Types, Operators and Expressions
  • Data type
  • char, int, float, double, short int, long int
  • Constants
  • define PI 3.1415926
  • Typedef assigning alternative names to existing
  • typedef int myInteger
  • Relational and logical operators
  • gt gt lt lt !
  • Increment and decrement operators
  • b a
  • b a
  • b a--
  • b --a


22
Control Flow
  • The semicolon is a statement terminator
  • If-Else, Else-If
  • if (expression) if (expression)
  • statement1 statement1
  • else else if (expression)
  • statement2
    statement2
  • else
  • statement3
  • For loop
  • you need to define the counter variable before
    the loop
  • for(expr1 expr2 expr3)
  • statement
  • While-Do
  • expr1
  • While(expr2)
  • statement
  • expr3
  • Do-While


23
Control Flow (Contd)
  • Switch
  • switch (expression)
  • case const-expr statements
  • case const-expr statements
  • default statements
  • Conditional expressions (expr1 ? expr2 expr3)
  • if(agtb)
  • za z (a gt b) ? a b
  • else
  • zb

24
Function declaration
  • Return value
  • Default return value of a function in C is int
  • Java
  • The use of function may appear earlier than its
    definition
  • C program
  • Should be declared somewhere earlier than their
    invocations

int power(int b, int e) / call
power() here / int power(int b, int e)
int r 1 while (e-- gt 0) r b return
r
int power(int b, int e) int r 1 while
(e-- gt 0) r b return r
main() ... / call power() here /
25
Input and Output
  • printf(the int value is d, var)
  • printf(the string value is s, var)
  • printf(the charactr and double values are c and
    e, var)
  • printf(the double value is e, var)
  • scanf(enter an int d, var)
  • scanf(enter a string s, var)
  • scanf(enter a character and a double c e,
    var)
  • scanf(enter a string s, var)
  • Do not forget including ltstdio.hgt

26
Variable scope
  • int globalVar 34
  • myFun()
  • int x 1

Global outside of the function
Local
27
Some details about C
  • No boolean type in C
  • No explicit boolean type
  •            define TRUE 1
  • define FALSE             if (a)
  • No function overloading in C
  • Two functions cannot have the same name
  • Variables must be declared at the top of a basic
    block (for some c systems)
  • The following may not pass the compiler
  •             int a              printf("Hello
    world\n")              char b         
  • Lack of exceptions
  • Illegal activity may not be told (e.g. access
    memory that hasnt been allocated in some way)
  • No automated garbage collection in C
  • you must free the memory

28
Standard library
  • ltstdlib.hgt
  • dynamic memory allocation
  • ltstdio.hgt
  • Input/output
  • ltstring.hgt
  • String handling
  • ltmath.hgt
  • Mathematical functions
  • ltctype.hgt
  • Characters
  • http//www.utas.edu.au/infosys/info/documentation/
    C/CStdLib.html

29
Some common errors
  • if (a1)
  •                 some stuff            
  •            Boolean evaluation
  •       Variable assignment operator
  • void myfunc(int a) / ... /
  • void myfunc(float b) / ... /
  • error myfunc already defined

30
Exercise
  • Write a program that
  • Accepts an input x (A value to progress up to)
  • Starting at 0 and 1, outputs the Fibonacci
    sequence up to x permutations.
  • There should be two functions, for clarity.
  • (main) Accepts the input and calls the fibonacci
    function.
  • (fibonacci) One that accepts the value of x and
    outputs the sequence.

31
Fibonacci in Java
import java.io class Fibonacci public static
void main(String args) System.out.println("H
ow many numbers of the sequence would you
like?") InputStreamReader sr new
InputStreamReader(System.in) BufferedReader br
new BufferedReader(sr) try String input
br.readLine() int n Integer.valueOf(input)
.intValue() fibonacci(n) catch
(NumberFormatException e)System.out.println("That
is not an integer. Please enter an integer
value") catch (IOException e)
System.out.println("I did not recieve an input")
public static void fibonacci(int n) int
a0,b1 for (int i0iltni)
System.out.println(a) aab ba-b

32
Fibonacci in C
include ltstdio.hgt int main () int n
printf("\nHow many numbers of the sequence
would you like?\n") scanf("d",n)
fibonacci(n) return 0 int fibonacci(int
n) int a 0 int b 1 int sum int i
for (i0iltni) printf("d\n",a) sum
a b a b b sum return 0
Write a Comment
User Comments (0)
About PowerShow.com