Набор материалов для работ по ДСРПО | — Терногон / Ternogon
Терногон / Ternogon

Предмет: Динамические средства разработки программного обеспечения.

Курс: 1.

Университет: РТУ МИРЭА (Московский Институт Радиоэлектроники и Автоматики)
Факультет (институт): КБСП (Комплексной безопасности и специального приборостроения)

Следующие материалы выданы преподавателем Сачковым В. Е. и несут характерную пользу для начального курса обучения по дисциплине ДСРПО.

Данный архив содержит:

  • Лекция №1
  • Лекция №2
  • Лекция №3
  • Дополнительный материал к Лекции №2 (.cpp)
  • Дополнительный материал к Лекции №3 (.cpp)
  • Лабораторная работа №1
  • Лабораторная работа №2
  • Лабораторная работа №3
  • Билеты для экзамена
Скачать ZIP архив

Файлы .cpp из архива

Дополнительный материал к Лекции №2

#include <iostream>

using namespace std;

// Pointer

void examplePointer() {
    int i = 100500;
    int *ptr = &i;

//    cout << &i << endl;
//    cout << ptr << endl;
//    cout << *ptr << endl;
//    cout << &ptr << endl;

    *ptr += 100500;
    cout << i << endl;
    cout << *ptr << endl;

}

void examplePointer2() {
    int a = 100500;
    int *ptr = &a;

    a += 100500;

    cout << "a = " << a << endl;
    cout << "ptr = " << *ptr << endl;
    cout << "--------------------" << endl;

    *ptr += 500100;

    cout << "a = " << a << endl;
    cout << "ptr = " << *ptr << endl;

}

// Link

void exampleLink() {
    int i = 100500;
    int &link = i;

    cout << link << endl;
    cout << &i << endl;
    cout << &link << endl;

    link += 100500;
    cout << link << endl;
    cout << i << endl;


}

void exampleLink2() {
    int &link = *(new int);
    link = 100500;
    cout << link << endl;
    cout << &link << endl;
    delete &link;
}

void exampleLink3() {
    int x = 5, y = 10;
    int &link = x;
    cout << link << endl;
    link = y;
    cout << link << endl;
    cout << "x=" << x << endl;
    cout << "y=" << y << endl;
}

// Link & Point

void getData(int var1, int var2) {
    cout << "var1 = ";
    cin >> var1;
    cout << "var2 = ";
    cin >> var2;
}

void getDataPointer(int *var1, int *var2) {
    cout << "var1 = ";
    cin >> *var1;
    cout << "var2 = ";
    cin >> *var2;
}

void getDataLink(int &var1, int &var2) {
    cout << "var1 = ";
    cin >> var1;
    cout << "var2 = ";
    cin >> var2;
}

// Array

void exampleArray() {
    int array[10];
    for (int i = 0; i < 10; i++) {
        array[i] = 0 + rand() % 100;
        cout << array[i] << endl;
    }
}

void exampleArray2() {
    const int w = 20;
    const int h = 10;
    char array[h][w];
    for (int i = 0; i < h; i++) {
        for (int j = 0; j < w; ++j) {
            if (j % 2) {
                array[i][j] = '#';
            } else {
                array[i][j] = '@';
            }
            cout << array[i][j];
        }
        cout << endl;
    }
}

void exampleArray3() {
    int array[5] = {1, 2, 3, 4, 5};

    cout << "size int = " << sizeof(int) << endl;
    cout << "size array (4 * 5) = " << sizeof(array) << endl;

    cout << "array = " << array << endl;
    cout << "&array[0] = " << &array[0] << endl;
    cout << "&array[1] = " << &array[1] << endl;
    cout << "&array[2] = " << &array[2] << endl;
}

void exampleArray4() {
    int array[5] = {1, 2, 3, 4, 5};

    for (int i = 0; i < 5; i++) {
        cout << "*(array + i) = " << *(array + i) << ", ";
        cout << "& = " << array + i << endl;
    }
}

void exampleArray5() {
    int *a = new int;
    int *b = new int;

    *a = 5;
    *b = 10;

    cout << a << " -> " << *a << endl;
    cout << b << " -> " << *b << endl;

    delete a;
    delete b;
}

void exampleArray6() {
    int arraySize = (0 + rand() % 10);
    int *array = new int[arraySize];

    for (int i = 0; i < arraySize; i++) {
        *(array + i) = 0 + rand() % 100;
        cout << array + i << endl;
    }

    cout << endl;

    for (int i = 0; i < arraySize; i++) {
        cout << array[i] << " ";
    }

    delete[] array;
}

void exampleArray7() {
    int arraySize = 500;
    char *array = new char[arraySize];

    cout << sizeof(array) << endl;
    cout << sizeof(char *) << endl;
}

// Address

void exampleAddress() {
    int a = 100;
    int *p = &a;

//    cout << "p = " << p << endl;
//    cout << "p + 1 = " << p + 1 << endl;
//    cout << "p - 1 = " << p - 1 << endl;

    cout << "p = " << p << endl;
    cout << "p[1] = " << &p[1] << endl;
    cout << "p[2] = " << &p[2] << endl;
}

void exampleAddress2() {
    unsigned int shift = 0;
    unsigned int *address = &shift;

    while (shift < 10) {
        cout << "address = " << address + shift << endl;
        cout << "val = " << *(address + shift) << endl;
        shift++;
    }
}

// test fun

void pointerTest() {
    examplePointer();
//    examplePointer2();
}

void linkTest() {
//    exampleLink();
//    exampleLink2();
    exampleLink3();
}

void addressArTest() {
//    exampleAddress();
    exampleAddress2();
}

void arrayTest() {
//    exampleArray();
//    exampleArray2();
//    exampleArray3();
//    exampleArray4();
//    exampleArray5();
    exampleArray6();
}

void pointerTest2() {
    int var1 = 0;
    int var2 = 0;

    getData(var1, var2);
    cout << var1 << endl;
    cout << var2 << endl;

    getDataPointer(&var1, &var2);
    cout << var1 << endl;
    cout << var2 << endl;

    getDataLink(var1, var2);
    cout << var1 << endl;
    cout << var2 << endl;
}

int main() {
//    pointerTest();
//    pointerTest2();
//    linkTest();
//    arrayTest();
//    addressArTest();
    return 0;
}

Дополнительный материал к Лекции №3

#include <iostream>

using namespace std;


void testChar1() {
    char c1 = 'a';
    char c2 = 98;
    char c3 = 255 + 100;

    cout << "size = " << sizeof(char) << endl;
    cout << c1 << endl;
    cout << c2 << endl;
    cout << c3 << endl;
    cout << (int) c1 << endl;
}

void testChar2() {
    char c = 60;

    while (c < 110) {
        cout << c;
        c++;
    }
}

// string

void testString1() {
    char c1[100] = "test";
    char c2[100] = {'h', 'e', 'l', 'l', 'o'};
    char c3[] = "HELLO";
    char *c4 = "HELLO 2";
    string s = "hello";

    cout << c1 << endl;
    cout << c2 << endl;
    cout << c3 << endl;
    cout << c4 << endl;
    cout << s << endl;
}

void testString2() {
    char c1[] = "hello"; // 5

    cout << sizeof(c1) << endl; // 6

    for (int i = 0; i < sizeof(c1); ++i) {
        cout << c1[i];
    }

}

void testString3() {
    char c1[] = "hello"; // 5
    char c2[] = "world";

    int sum_size = sizeof(c1) + sizeof(c2);
    auto *buff = new char[sum_size];

    for (int i = 0; i < sizeof(c1); i++) {
        *buff = c1[i] != '\0' ? c1[i] : ' ';
        buff++;
    }

    for (int i = 0; i < sizeof(c2); i++) {
        *buff = c2[i];
        buff++;
    }

    cout << buff - sum_size << endl;
}

void testString4() {
    char c1[100] = "hello"; // 5
    char c2[] = "world"; // 5

    cout << strlen(c1) << endl;

    strcat(c1, c2);
    cout << c1 << endl;

    strcpy(c1, c2);
    cout << c1 << endl;

    cout << strcmp(c1, c2) << endl;
    cout << strcmp("1", "11") << endl;
}

void testString5() {
    string s1 = "hello";
    string s2 = "world";

    cout << s1 + s2 << endl;
    cout << s1.length() << endl;
    cout << (s1 == s1) << endl;
}

void testString6() {
    const char *c[] = {"test1", "test2"};
    char **pc = new char *[5];
    cout << c << endl;
    cout << sizeof(pc) << endl;
    cout << *c << endl;
    cout << sizeof(*c) << endl;
    cout << **c << endl;
}

// test array

void testArray1() {
    int v1, v2, v3;

    int *a1[5];
    int *a2[] = {&v1, &v2, &v3};

    int a3[]={10,11,12,13,14,};
    int *p[]={a3, a3+1, a3+2, a3+2, a3+3, a3+4};
    int **pp=p;

    cout << *a3 << endl;
}

void testArray2(){
    int sizeArray = 5;
    auto **a = new int*[sizeArray];
    for (int i = 0; i < sizeArray; ++i) {
        a[i] = new int(i);
        printf("a[%d]=%d\taddr_1 = %x\taddr_2 = %x\n", i, *a[i], a[i], &a[i]);
    }

}

// test io

void testIO1() {

    printf("Hello world\n");
    printf("Hello\nworld\ntest\n");
    printf("Hiiiiiiiiiii\rworld\n");

    for (int i = 0; i < 5; ++i) {
        for (int j = 10; j < 15; ++j) {
            printf("%d\t", j);
        }
        printf("\n");
    }
}

void testIO2() {
    double i = 100500.500100;
    char c1[] = "hello";
    char c2[] = "world";
    int h = 2018;

    printf("i = %f\n", i);
    printf("i = %1.3f\n", i);
    printf("%s %s\n", c1, c2);
    printf("%x", h);
}

void testIO3() {
    char s[5];
    int a;
    int b;

    printf("input=");
    scanf("%4s", s);
    cout << s << endl;

    printf("input a,b ");
    scanf("%i%i", &a, &b);
    cout << a << " " << b << endl;
}

void testIO4() {
    cout << hex << 20182018 << dec << "<->" << 0x133f402 << endl;

    cout.setf(ios::showpos);
    cout.width(15);
    cout.setf(ios::boolalpha);
    cout << 1011121314 << endl;
    cout << true << endl;
}

void testIO5() {
    int a, b;

    cin >> a >> b;
    printf("a=%d, b=%d", a, b);
}

void testIO6() {
    int a, b;

    cin >> a >> b;

    if (cin.fail()) {
        cout << "invalid data" << endl;
    }
    printf("a=%d, b=%d", a, b);
}

// funct

void superFunction(int a = 100, int b = 500) {
    cout << a << endl;
    cout << b << endl;
}

// run
void testChar() {
    testChar1();
    testChar2();

}

void testString() {
//    testString1();
//    testString2();
//    testString3();
//    testString4();
//    testString5();
    testString6();
}

void testIO() {
//    testIO1();
//    testIO2();
//    testIO3();
    testIO4();
//    testIO5();
//    testIO6();
}

void testArray() {
//    testArray1();
    testArray2();
}

int main() {
//    testChar();
//    testString();
//    testIO();
    testArray();
}

Задание «Эхо-чат»

Создать программу эхо-чат, суть которой заключается в том, что пользователь через консоль вводит некоторое сообщение, после ввода программа отвечает пользователю его же сообщений с префиксом «вы ввели: …», пример:

Пользователь: привет!

Сервер: вы ввели: «привет!»

Программа должна иметь следующий функционал:

  • Первым запросом попросить ввести имя пользователя, после чего приглашение на ввод пользователя отображается с префиксом его имени
  • Хранить историю введённых сообщений
  • История не ограничена
  • По команде «история», вывести все сообщения
  • По команде «удалить» очищает полностью историю
  • По команде «выход» программа заканчивает работу
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <windows.h>
#include <string.h>

using namespace std;

char *nameb = new char[1024];

void nameq(){
	//char *nameb = new char[1024];
	cout << "[sys]:		Добрый день, как вас зовут? \n[sys]:		Вас зовут: ";
	cin >> nameb;
	cout << "[sys]:		Привет, " << nameb << ". Начните ввод сообщений." << endl;
}

int storyst(){
	//char *buffercl 	= new char[1024];
	string line;
	ifstream in("storyline.txt");
    if (in.is_open()){
        while (getline(in, line)){
            cout << "[sys.story]:		" << line << endl;
        }
    }
    in.close();
    //delete buffercl;
    return 0;
}

int clearst(){
	ofstream outclear;
	outclear.open("storyline.txt", ios::trunc);
	outclear.close();
	
	return 0;
}

int command(){
	Rcomm:
	ofstream outcomm;
	char *exitlnk 	= "выход";
	char *storylnk 	= "история";
	char *clearlnk 	= "удалить";
	char *buffer 	= new char[1024];
	cout << "[" << nameb << "]:	"; 
	cin >> buffer;
	if (strcmp(buffer, storylnk) == 0) {
		cout << "[sys]:		Начало вывода истории." << endl;
		storyst();
		cout << "[sys]:		Конец вывода истории." << endl;
		goto Rcomm;
	}
	else if (strcmp(buffer, clearlnk) == 0) {
		if (clearst() == 0) cout << "[sys]:		История очищена." << endl;
		goto Rcomm;
	}
	else if (strcmp(buffer, exitlnk) == 0) {
		cout << "[sys]:		Понял, выхожу." << endl;
		Sleep(500);
		system("exit");
	}
	else {
		cout << "[sys] Вы ввели:	" << buffer << endl;
		outcomm.open("storyline.txt", ios::app);
		if (outcomm.is_open()) {
			outcomm << buffer << endl;
		}
		outcomm.close();
		delete buffer;
		goto Rcomm;
	}
}

int main(){
	setlocale(LC_ALL, "Russian");
	system("chcp 1251>nul");
	nameq();
	command();
	
	return 0;
}
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <windows.h>

using namespace std;

int main(){
	srand(time(NULL));
	char symbol;
	int c = 0;
	system("color 0a");
	while (true){
		c = rand() % 3;
		if (c == 0){
			symbol = 48 + rand() % 10;
			Sleep(4 + rand() % 60);
		}
		else if (c == 1){
			symbol = 65 + rand() % 25;
			Sleep(3 + rand() % 34);
		}
		else if (c == 2){
			symbol = 97 + rand() % 25;
			Sleep(2 + rand() % 25);
		}
		cout << symbol << "   ";
	}
	
	return 0;
}
Следующая Запись