Programming Structures.

Slides:



Advertisements
Similar presentations
1 Programming Structures COMP102 Prog. Fundamentals, Structures / Slide 2 2 Structures l A Structure is a collection of related data items, possibly.
Advertisements

Structure.
Structures. An array allows us to store a collection of variables However, the variables must be of the same type to be stored in an array E.g. if we.
Math Functions & 2-D Arrays Programming. COMP102 Prog. Fundamentals I: Math Functions & 2D Arrays / Slide 2 Copyright © 2000 by Brooks/Cole Publishing.
The evolution of Pokemon society Structures. COMP102 Prog. Fundamentals, Structures / Slide 2 “Good Old Days” At first it was Pokemon and his variables.
COMP102 – Programming Fundamentals I LA2B (Mon 5-7pm) LA2E (Fri 3-5pm) LA2F (Fri 5-7pm) TA: Jackie Lo.
Structures COMP104 Structs / Slide 2 Motivation: a new type * Structures hold data that belong together. * Examples: n Student record  student id, name,
Summary of Loops Programming. COMP102 Prog Fundamentals I: Summary of Loops /Slide 2 Which Loop to Use? l for loop n for calculations that are repeated.
Chapter 7 Arrays C++ Programming, Namiq Sultan1 Namiq Sultan University of Duhok Department of Electrical and Computer Engineering Reference: Starting.
Programming Initializing Data of Struct Type. COMP102 Prog. Fundamentals: initialize struct type/ Slide 2 Ex. 10: Initialize Data of struct Type l By.
COMP103 - C++ Review1 Variables and Special Chars (Ch. 2, 3)
Structured Data Types array array union union struct struct class class.
1 Structures. Structure (struct) Definition A Structure is a container, it can hold a bunch of things. –These things can be of any type. Structures are.
1 DATA STRUCTURES: LISTS. 2 LISTS ARE USED TO WORK WITH A GROUP OF VALUES IN AN ORGANIZED MANNER. A SERIES OF MEMORY LOCATIONS CAN BE DIRECTLY REFERENCED.
Prof. amr Goneid, AUC1 CSCE 110 PROGRAMMING FUNDAMENTALS WITH C++ Prof. Amr Goneid AUC Part 11. The Struct Data Type.
Module 4: Structures ITEI222 Advanced Programming.
Current Assignments Homework 3 is due tonight. Iteration and basic functions. Exam 1 on Monday.
DATA STRUCTURES LAB 1 TA: Nouf Al-harbi
1 Lecture 19 Structs HW 5 has been posted. 2 C++ structs l Syntax:Example: l Think of a struct as a way to combine heterogeneous data values together.
 Introduction to Computer Science COMP 51 – Fall 2012 – Section 2 Structures.
Structured Programming Instructor: Prof. K. T. Tsang Lecture 11: Structure and Union 1.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 11: Structured Data.
Defining a 2d Array A 2d array implements a MATRIX. Example: #define NUMROWS 5 #define NUMCOLS 10 int arr[NUMROWS][NUMCOLS];
Structured Data Types struct class Structured Data Types array – homogeneous container collections of only one type struct – heterogeneous data type.
1 Chapter 12 Arrays. 2 C++ Data Types structured array struct union class address pointer reference simple integral enum char short int long bool floating.
Struct COMP104 Struct / Slide 2 Motivation * Structures hold data that belong together. * Examples: n Student record  student id, name, major, gender,
COMP102 Lab 111 COMP 102 Programming Fundamentals I Presented by : Timture Choi.
CPS120 Introduction to Computer Science Exam Review Lecture 18.
Array and Pointers An Introduction Unit Unit Introduction This unit covers the usage of pointers and arrays in C++
Lecture 9 – Array (Part 2) FTMK, UTeM – Sem /2014.
1 C++ Data Types structured array struct union class address pointer reference simple integral enum char short int long bool floating float double long.
Lecture 2 Arrays. Topics 1 Arrays hold Multiple Values 2 Accessing Array Elements 3 Inputting and Displaying Array Contents 4 Array Initialization 5 Using.
Topic 4 Data Structures Program Development and Design Using C++, Third Edition.
Chapter 6 Data Structures Program Development and Design Using C++, Third Edition.
A FIRST BOOK OF C++ CHAPTER 7 ARRAYS. OBJECTIVES In this chapter, you will learn about: One-Dimensional Arrays Array Initialization Arrays as Arguments.
User-Defined Data Types
Classes and Data Abstraction
CO1401 Program Design and Implementation
Chapter 7 – Arrays.
Arrays Arrays exist in almost every computer language.
Programming Structures.
Arrays Part-1 Armen Keshishian.
Student Book An Introduction
Multi-dimensional Array
C++ Arrays.
לולאות קרן כליף.
Buy book Online -
Variables and Special Chars (Ch. 2, 3)
Arrays & Functions Lesson xx
Structures Lesson xx In this module, we’ll introduce you to structures.
Lab 1 Introduction to C++.
More on Classes Classes may have constructors which are called when objects are created and destructors which are called when objects are destroyed. Classes.
Structures A Structure is a collection of related data items, possibly of different types. A structure type in C++ is called struct. A struct is heterogeneous.
Heterogeneous aggregate datatypes
Passing Structures Lesson xx
הגדרת משתנים יום שלישי 27 נובמבר 2018
Structures.
Review for Final Exam.
Arrays Arrays A few types Structures of related data items
Pointers and dynamic objects
Instructor: Dr. Michael Geiger Spring 2019 Lecture 4: Functions in C++
More on Structs Sometimes we use structs even when the fields are all of the same type. If the fields are different conceptually, that is, the data stands.
Programming Structures.
Structures Structured Data types Data abstraction structs ---
EECE.3220 Data Structures Instructor: Dr. Michael Geiger Spring 2019
Chapter 10 C Structures and Unions
EECE.2160 ECE Application Programming
EECE.2160 ECE Application Programming
Programming Fundamental
Exercise 6 – Compound Types und Kontrollfluss
Presentation transcript:

Programming Structures

Structures A Structure is a collection of related data items, possibly of different types. A structure type in C++ is called struct. A struct is heterogeneous in that it can be composed of data of different types. In contrast, array is homogeneous since it can contain only data of the same type.

Structures Structures hold data that belong together. Examples: Student record: student id, name, major, gender, start year, … Bank account: account number, name, currency, balance, … Address book: name, address, telephone number, … In database applications, structures are called records.

Structures Individual components of a struct type are called members (or fields). Members can be of different types (simple, array or struct). A struct is named as a whole while individual members are named using field identifiers. Complex data structures can be formed by defining arrays of structs.

struct basics Definition of a structure: Example: The “Date” structure struct <struct-type>{ <type> <identifier_list>; ... } ; Example: struct Date { int day; int month; int year; Each identifier defines a member of the structure. The “Date” structure has 3 members, day, month & year.

struct examples Example: The “StudentGrade” structure has 5 members of struct StudentInfo{ int Id; int age; char Gender; double CGA; }; struct StudentGrade{ char Name[15]; char Course[9]; int Lab[5]; int Homework[3]; int Exam[2]; The “StudentInfo” structure has 4 members of different types. The “StudentGrade” structure has 5 members of different array types.

struct examples Example: The “StudentRecord” structure has 4 struct BankAccount{ char Name[15]; int AcountNo[10]; double balance; Date Birthday; }; struct StudentRecord{ int Id; char Dept[5]; char Gender; The “BankAcount” structure has simple, array and structure types as members. The “StudentRecord” structure has 4 members.

struct basics Declaration of a variable of struct type: Example: <struct-type> <identifier_list>; Example: StudentRecord Student1, Student2; Student1 and Student2 are variables of StudentRecord type. Name Id Gender Dept Name Id Gender Dept Student1 Student2

Ex. 1: struct basics The members of a struct type variable are accessed with the dot (.) operator: <struct-variable>.<member_name>; Example: strcpy(Student1.Name, "Chan Tai Man"); Student1.Id = 12345; strcpy(Student1.Dept, "COMP"); Student1.gender = 'M'; cout << "The student is "; switch (Student1.gender){ case 'F': cout << "Ms. "; break; case 'M': cout << "Mr. "; break; } cout << Student1.Name << endl; Student1 Name Id Gender Dept Chan Tai Man 12345 M COMP

Ex. 2: struct-to-struct assignment The values contained in one struct type variable can be assigned to another variable of the same struct type. Example: strcpy(Student1.Name, "Chan Tai Man"); Student1.Id = 12345; strcpy(Student1.Dept, "COMP"); Student1.gender = 'M'; Student2 = Student1; Student1 Chan Tai Man 12345 M COMP Chan Tai Man 12345 M COMP Student2

Ex. 3-5: Nested structures We can nest structures inside structures. Examples: struct point{ double x, y; }; point P; struct line{ point p1, p2; }; line L; struct triangle{ point p1, p2, p3; }; triangle T; (P.x, P.y) (L.p2.x, L.p2.y) (L.p1.x, L.p1.y) (T.p2.x, T.p2.y) (T.p3.x, T.p3.y) (T.p1.x, T.p1.y)

Ex. 3-5: Nested structures We can nest structures inside structures. struct line{ point p1, p2; }; line L; (L.p2.x, L.p2.y) (L.p1.x, L.p1.y) line p1 p2 x y x y

Ex. 3-5: Nested structures Assign values to the variables P, L, and T using the picture: point P; line L; triangle T; (4, 11) (10, 9) (2, 7) (6, 5) Ex. 3: Graph a point Ex. 4: Graph a line Ex. 5: Graph a triangle (8, 3) (2, 0)

Ex. 3-5: Nested structures point P; line L; triangle T; P.x = 4; P.y = 11; (4, 11) (10, 9) L.p1.x = 2; L.p1.y = 7; L.p2.x = 10; L.p2.y = 9; (2, 7) (6, 5) T.p1.x = 2; T.p1.y = 0; T.p2.x = 6; T.p2.y = 5; T.p3.x = 8; T.p3.y = 3; (8, 3) (2, 0)

Ex. 3: Graphing a Point x 5 4 3 2 1 15 14 13 12 11 10 8 7 6 * y 8 7 6 (x1, y1) * y

struct point {int x, y;}; void user_input(point&); void graph_point(char grid[NUMBER_ROWS][NUMBER_COLS], point); void print_grid(char grid[NUMBER_ROWS][NUMBER_COLS]); void set_background(char grid[][NUMBER_COLS]); void user_input(point& P){ // pass by reference // get user input and check that it is on the grid do{ cout << "Enter column (x<" << NUMBER_COLS << ") & row (y<" << NUMBER_ROWS <<") of the 1st point: "; cin >> P.x >> P.y; } while ((P.y<0) || (P.y >= NUMBER_ROWS) || (P.x<0) || (P.x >= NUMBER_COLS)); } // Put a point on the grid void graph_point(char grid[][NUMBER_COLS], point P){ grid[P.y][P.x] = '*';

Ex. 4: Trajectory Between 2 Points * 5 4 3 2 1 15 14 13 12 11 10 8 7 6 (x1, y1) * y * * (x2, y2) The equation of a line going through two points (x1, y1) & (x2, y2) can be represented by: (y-y1)/ (x-x1) = (y2-y1)/(x2-x1) or y = ((y2-y1)/(x2-x1)) (x-x1) + y1 where (y2-y1)/(x2-x1) is called the slope.

// use struct to graph line between two points #include <ctype> // for tolower #include <iostream> using namespace std; int const NUMBER_ROWS = 11; int const NUMBER_COLS = 31; struct point {int x, y;}; struct line {point p1, p2;}; void user_input (line&); void graph_line (char grid[NUMBER_ROWS][NUMBER_COLS], line); void print_grid(char grid[NUMBER_ROWS][NUMBER_COLS]); void set_background (char grid[][NUMBER_COLS]);

// Graph line between two points int main(){ // set an array for the grid char grid[NUMBER_ROWS][NUMBER_COLS]; line line1; int row1=0, col1=0, row2=0, col2=0; char do_another; // function call to fill background of grid with ‘-’ set_background(grid); do{ // do-while loop allows multiple lines // get user input user_input(line1); // put ‘*’ into array to graph the line(s) on the grid graph_line(grid, line1); // print the grid from the array to the screen print_grid(grid); cout << "Do you want to add another line (y/n)? "; cin >> do_another; do_another = tolower(do_another); } while (do_another == 'y'); return 0; }

Ex. 4: More on Graphing Line //A function to get user input and check that it is on the grid. void user_input(line& line1){ do{ cout << "Enter column (x<" << NUMBER_COLS << ") & row (y<" << NUMBER_ROWS << ") coordinates of the 1st point: "; cin >> line1.p1.x >> line1.p1.y; } while ((line1.p1.y<0) || (line1.p1.y>=NUMBER_ROWS) || (line1.p1.x<0) || (line1.p1.x >= NUMBER_COLS)); // use another do-while loop for the 2nd point, col2 and row2 }

Ex. 4: More on Graphing Line void graph_line(char grid[][NUMBER_COLS], line line1){ int row, col; double rise, run, slope; // one point if((line1.p1.y==line1.p2.y)&&(line1.p1.x==line2.p2.x)) grid[line1.p1.y][line1.p1.x] = '*'; else if(line1.p2.x==line1.p1.x){ // infinite slope if (line1.p1.y < line1.p2.y){ for(row=line1.p1.y; row <= line1.p2.y; row++) grid[row][line1.p1.x] = '*'; } else{ for(row=line1.p1.y; row >= line1.p2.y; row--)

Ex. 4: More on Graphing Line else{ rise=line1.p2.y-line1.p1.y; run=line1.p2.x-line1.p1.x; slope = (double)rise / run; // run cannot = 0 if (run >0){ for(col = line1.p1.x; col <= line1.p2.x; col++){ // line1.p1.y is offset for starting point row=(int)(slope*(col–line1.p1.x)+line1.p1.y); grid[row][col] = '*'; } for(col=line1.p1.x; col >= line1.p2.x; col--){

Arrays of structures An ordinary array: One type of data An array of structs: Multiple types of data in each array element. 0 1 2 … 98 99 0 1 2 … 98 99

Arrays of structures We often use arrays of structures. Example: StudentRecord Class[100]; strcpy(Class[98].Name, "Chan Tai Man"); Class[98].Id = 12345; strcpy(Class[98].Dept, "COMP"); Class[98].gender = 'M'; Class[0] = Class[98]; Chan Tai Man 12345 M COMP . . . 0 1 2 … 98 99

Arrays inside structures We can use arrays inside structures. Example: struct square{ point vertex[4]; }; square Sq; Assign values to Sq using the given square (4, 3) (10, 3) (4, 1) (10, 1) x y x y x y x y