data structures and algorithms lab1

21
DATA STRUCTURES AND ALGORITHMS LAB 1 Bianca Tesila FILS, Feb 2014

Upload: bianca-tesila

Post on 22-May-2015

1.392 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Data structures and algorithms lab1

DATA STRUCTURES AND ALGORITHMS

LAB 1

Bianca Tesila

FILS, Feb 2014

Page 2: Data structures and algorithms lab1

COURSE INFO

Lectures: Maria-Iuliana Dascalu [email protected] http://mariaiulianadascalu.com/ (where you

can find the courses)

Labs: Bianca Tesila [email protected] http://biancatesila.wordpress.com/ (labs,

grades, home assignments)

Page 3: Data structures and algorithms lab1

GRADING

Exam: 40p Tests & presence at the course: 10p Labs & Assignments: 50p

Assignments: 30p ( 3 x 10p) Lab Activity: 20p ( presence, class assignments,

small home assignments)

Rules:• Minimum 45p in order to pass • Minimum 25p out of 60p in order to take the

exam• One should attend at least 10 labs(out of 12)

Page 4: Data structures and algorithms lab1

TOOLS & USEFUL LINKS

C-Free 5.0 Standard (http://www.programarts.com/cfree_en/download.htm)

Any other IDE or compiler for C/C++ (ex. GCC under Linux)

http://www.cs.usfca.edu/~galles/visualization/Algorithms.html (it helps you understand how various data structures work)

Page 5: Data structures and algorithms lab1

OBJECTIVES

run and compile C programs identify the structure of a C program use standard I/O operations define variables declare and implement functions make structures

Page 6: Data structures and algorithms lab1

INTRODUCTION TO C PROGRAMMING The basic structure of a C program:

Inclusion of headers Definition of types/classes Declaration of global variables Definition of functions The main function

Similarities to the structure of a Java program: Inclusion of headers is similar to importing packages or

classes Differences from the structure of a Java program:

Functions and variables may also be defined outside of a class The main function is not part of a class Arrays can also be allocated statically in C/C++

A C program is written in a file with the “.c” extension: the source code

After compilation, another file, with the “.o” extension appears: the object code.

After execution, another file, with the “.exe” extension appears: the executable

Page 7: Data structures and algorithms lab1

INTRODUCTION TO C PROGRAMMING

EXAMPLE OF A C PROGRAM:

#include <stdio.h> // inclusion of the stdio.h header

int a, b, c; // global variables of the type int: a, b, c

int main() { // beginning of the main functiona = 10;scanf("%d", &b); // read the value of b from the standard input

c = a + b; // assign the sum of a and b to the variable cprintf("%d\n", c); // print the value of c to the standard output

return 0; // finish the main function successfully}

Pay attention: C is case-sensitive!

Page 8: Data structures and algorithms lab1

I/O OPERATIONS: STANDARD OUTPUT OPERATIONS

We shall use the printf function: printf(format, param_1, param_2, …, param_n);

format = a string containing characters and format specifiers param_1, param_2, …, param_n = expressions; their values are written

taking into account the corresponding format specifier

Format Specifier Type

%i or %d int

%ld long

%f float

%lf double

%c char

%s string

Page 9: Data structures and algorithms lab1

I/O OPERATIONS: STANDARD OUTPUT OPERATIONS

‼ Exercise: run the below example and see how each format specifier works

#include <stdio.h>int main() {

printf("%d\n", 7);printf("%3d\n", 7);printf("%03d\n", 7);printf("%3.2f\n", 5.1);printf("%.2f\n", 4.245);printf("%s\n", "blue");return 0;

}

Note: we used a special character /n (newline character)

The \n used in the printf statements is called an escape sequence. Commonly used escape sequences are:

\n (newline) \t (tab) \v (vertical tab) \f (new page) \b (backspace) \r (carriage return) \n (newline)

Page 10: Data structures and algorithms lab1

I/O OPERATIONS: STANDARD INPUT OPERATIONS

We shall use the scanf function:

scanf(format, param_1, param_2, …, param_n);

format = a string containing characters and format specifiers param_1, param_2, …, param_n = expressions; their values are stored

taking into account the corresponding format specifier

Similar to printf Use «stdio.h»  for I/O operations

Page 11: Data structures and algorithms lab1

I/O OPERATIONS: STANDARD INPUT OPERATIONS

#include <stdio.h> int main () {

char name [80]; int age; printf ("Enter your family name: "); scanf ("%s",name); printf ("Enter your age: "); scanf ("%d", &age); printf ("Mr. %s , %d years old.\n“, name,

age); return 0;

}

Page 12: Data structures and algorithms lab1

I/O OPERATIONS

‼Exercise: Write a program to calculate  the average of two float numbers. The result shall be displayed with 2 decimals. Use scanf and printf!

Hint: %.2f   -> format specifier for float with 2 decimals

Page 13: Data structures and algorithms lab1

I HOPE YOU’RE NOT SLEEPING YET

Page 14: Data structures and algorithms lab1

FUNCTIONS: DECLARATION AND IMPLEMENTATION

The general form of a function definition in C programming language is as it follows:

return_type function_name( parameter list ) { body of the function

}

Visibility domain: local vs. global variables Parameter passing: by-value

Page 15: Data structures and algorithms lab1

FUNCTIONS: EXAMPLE

• Note the use of math.h library: for sqrt function (the same meaning as in Java)

• Note the control flow structures (if, if-else, for, …)

• Note the function definition and call: the implemented function calculates if a number is prime or not

Page 16: Data structures and algorithms lab1

FUNCTIONS

‼Exercise: Check whether a number is a palindrome or not.

Hint: a palindrome is a number that remains the same when its digits are reversed.

333 is a palindrome123 is not a palindrome

Page 17: Data structures and algorithms lab1

STRUCTURES

struct struct_name { variables (fields of the struct type)}

Like Java classes but without methods or public/private specifications

Used to package related data together

User-defined collection of one or more variables (fields), grouped under one name

The members of a structure are accessed with “.”

Page 18: Data structures and algorithms lab1

STRUCTURES: EXAMPLE

struct date {

unsigned int day;

unsigned int month;

unsigned long year;

char name_day[3];

char name_month[4];

};

typedef struct date date;

date today;

‼ date is now a type

typedef struct date {

unsigned int day;

unsigned int month;

unsigned long year;

char name_day[3];

char name_month[4];

} date;

date today;

‼ typedef allows you to declare instances of a struct without using keyword "struct"

Page 19: Data structures and algorithms lab1

STRUCTURES: EXAMPLE

void writeDDMMMYYYY(date myDate){

printf("%2d %s %4d ", myDate.day,myDate.name_month, myDate.year);

}

Page 20: Data structures and algorithms lab1

STRUCTURES

‼ Exercise: Design a structure  for representing dates and write functions that:

       - Check if a variable value of the structure is a valid date       - Calculate the next date of a given date       - Calculate the date before a given date

Page 21: Data structures and algorithms lab1

HOMEWORK Finish all the lab exercises. Write a program that displays the first ten Fibonacci

numbers. Write a program to simulate the Bulls and Cows game(http://

en.wikipedia.org/wiki/Bulls_and_cows), by giving two input numbers.

Write functions for writing, reading, addition and multiplication of rare polynomials.

Rare polynomials with integer coefficients are polynomials of large degrees and many coefficients equal to 0. They can be represented by a data structure defined as:

typedef struct TMonom{  int coefficient;  unsigned int exponent;}TMonom;

TMonom[50] polynomial;