Набор материалов для работ по ДСРПО | — Терногон / 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;
}
Следующая Запись