Главная страница
Навигация по странице:

  • Структура данных

  • Статические

  • : a[1][3], x[i] a[0][k+2].

  • Наименование Обозначение

  • Курсовая. КУРСОВАЯ. Изучение предметной области 2 1 Понятие и структура алгоритмов 2


    Скачать 5.45 Mb.
    НазваниеИзучение предметной области 2 1 Понятие и структура алгоритмов 2
    АнкорКурсовая
    Дата18.03.2022
    Размер5.45 Mb.
    Формат файлаrtf
    Имя файлаКУРСОВАЯ.rtf
    ТипРеферат
    #403203

    Содержание


    Введение 1

    Глава 1. Изучение предметной области 2

    1.1 Понятие и структура алгоритмов 2

    1.2 Понятие и виды блок-схем 6

    Глава 2. Практическая часть 9

    2.1 Составление блок-схемы и программы обработки одномерного массива 9

    Словесное описание алгоритма: 9

    Описание и схема пользовательского интерфейса: 11

    2.2 Составление блок-схемы и программы обработки матрицы. 16

    Заключение 25

    Список использованной литературы 26



    Введение



    Язык программирования СИ - это универсальный язык с богатым набором операторов и компактным способом записи выражений. Язык C обеспечивает разнообразие типов данных. Базовыми типами являются целые, вещественные числа и символы (литеры). Язык разрешает модификацию базовых типов данных, а также создание пользовательских типов. В языке используются стандартные типы данных int, char, float, double; применяются массивы, структуры (записи), файлы; имеется возможность конструирования очередей, списков.

    Цель. Закрепить навыки разработки и программирования на языке Си алгоритмов обработки сложных структур данных: одномерных массивов и матриц. Приобрести навыки программирования с переменными типами указателя.

    Задачи:

    • подробное описание решения алгоритма в форме словесного описания;

    • составление блок-схемы алгоритма;

    • написание кода программы, на языке Си.


    Глава 1. Изучение предметной области

    1.1 Понятие и структура алгоритмов



    Алгоритм - набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задач за конечное число действий.

    Существует 3 вида алгоритмов:

    линейный

    разветвляющийся

    -циклический

    Структура данных - программная единица, позволяющая хранить, обрабатывать множество однотипных логически связанных данных в вычислительной технике.

    Структурированные ( интегрированные, композитные, сложные) - такие структуры данных, составными частями которых есть другие структуры данных

    По изменчивости структуры данных бывают: статические, полустатические и динамические. Изменчивость, то есть изменение числа элементов или связей между элементами структуры.

    Статические - к этой группе относят массивы, множества, записи, таблицы

    Полустатические - это стеки, очереди, деки, дерева

    Динамические - линейные и разветвленные связные списки, графы, дерева.

    Массив представляет собой матрицу из нескольких переменных одного и того же типа.

    Можно говорить о массивах целых чисел, массивов символов и.т.д. Мы можем даже определить массив, элементы которого - массивы (массив массивов), определяя, таким образом, многомерные массивы. Любой массив в программе должен быть описан: после имени массива добавляют квадратные скобки [], внутри которых обычно стоит число, показывающее количество элементов массива. Например, запись int x[10]; определяет x как массив из 10 целых чисел. В случае многомерных массивов показывают столько пар скобок, какова размерность массива, а число внутри скобок показывает размер массива по данному измерению. Например, описание двумерного массива выглядит так: int a[2][5]. Такое описание можно трактовать как матрицу из 2 строк и 5 столбцов. Для обрщения к некоторому элементу массива указывают его имя и индекс, заключенный в квадратные скобки (для многомерного массива - несколько индексов , заключенные в отдельные квадратные скобки): a[1][3], x[i] a[0][k+2]. Индексы массива в Си всегда начинаются с 0, а не с 1, т.е. описание int x[5]; порождает элементы x[0], x[1], x[2], x[3], x[4], x[5].

    В общем случае объявление массива имеет следующий синтаксис:

    тип_данных имя_переменной[<количество_элементов>] = <список, элементов, массива>

    int arr[100];

    int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    char ch[] = {'R','u','b','y','D','e','v','.','r','u'};

    Динамическим называется массив, размер которого может меняться во время исполнения программы.

    Гетерогенным называется массив, в разные элементы которого могут быть непосредственно записаны значения, относящиеся к различным типам данных.

    Указатель - это переменная, значением которой является адрес некоторого объекта (обычно другой переменной) в памяти компьютера. Подобно тому, как переменная типа char имеет в качестве значения символ, а переменная типа int - целочисленное значение, переменная типа указателя имеет в качестве значения адрес ячейки оперативной памяти. Допустимые значения для переменной-указателя - множество адресов оперативной памяти компьютера.

    Указатель является одной из наиболее важных концепций языка C.

    · указатели являются средством, при помощи которого функции могут изменять значения передаваемых в нее аргументов;

    · при помощи указателей выполняется динамическое распределение памяти;

    · указатели позволяют повысить эффективность программирования;

    · указатели обеспечивают поддержку динамических структур данных (двоичные деревья, связные списки).

    Так как указатель может ссылаться на переменные разных типов, с указателем в языке Си связывается тип того объекта, на который он ссылается. Для описания указателей используется операция косвенной адресации *.

    Общая форма объявления указателя:

    тип *имя;

    Например:

    int *p1;

    char *ch2;

    float *fl1;

    Понятие указателя тесно связано с понятием адреса объекта. В C есть специальная операция, позволяющая получить адрес любой переменной: &p - получение адреса, где p - идентификатор переменной. Результатом операции является адрес переменной p.

    Над указателями определено 5 основных операций:

    1. определение адреса указателя: &p, где p - указатель (&p - адрес ячейки, в которой находится указатель).

    2. присваивание. Указателю можно присвоить адрес переменной p=&q, где p - указатель, q - идентификатор переменной.

    3. определение значения, на которое ссылается указатель: *p (операция косвенной адресации).

    4. увеличение (уменьшение) указателя. Увеличение выполняется как с помощью операции сложения (+), так и с помощью операции инкремента (++).

    5. уменьшение - с помощью операции вычитания (-) либо декремента (--).

    Например, пусть p1 - указатель, тогда р1++ перемещает указатель на:

    a) 1 байт, если *p1 имеет тип char;

    b) 4 байта, если *p1 имеет тип int (в 32 разрядной операционной системе) или 2 байта (в 16 разрядной операционной системе);

    c) 4 байта, если *p1 имеет тип float.

    . Разность двух указателей. Пусть р1 и р2 - указатели одного и того же типа. Можно определить разность р1 и р2, чтобы найти, на каком расстоянии друг от друга находятся элементы массива.

    1.2 Понятие и виды блок-схем


    Блок-схема - распространенный тип схем (графических моделей), описывающих алгоритмы или процессы, в которых отдельные шаги изображаются в виде блоков различной формы, соединенных между собой линиями, указывающими направление последовательности.

    Наименование

    Обозначение

    Блок начало-конец (пуск-остановка)

    Элемент отображает вход из внешней среды или выход из неё (наиболее частое применение − начало и конец программы). Внутри фигуры записывается соответствующее действие.

    Блок действия

    Выполнение одной или нескольких операций, обработка данных любого вида (изменение значения данных, формы представления, расположения). Внутри фигуры записывают непосредственно сами операции.

    Логический блок (блок условия)

    Отображает решение или функцию переключательного типа с одним входом и двумя или более альтернативными выходами, из которых только один может быть выбран после вычисления условий, определенных внутри этого элемента.

    Предопределённый процесс

    Символ отображает выполнение процесса, состоящего из одной или нескольких операций, который определен в другом месте программы.

    Данные (ввод-вывод)


    Преобразование данных в форму, пригодную для обработки (ввод) или отображения результатов обработки (вывод).

    Граница цикла

    Символ состоит из двух частей − соответственно, начало и конец цикла − операции, выполняемые внутри цикла, размещаются между ними. Условия цикла и приращения записываются внутри символа начала или конца цикла − в зависимости от типа организации цикла.

    Соединитель

    Символ отображает вход в часть схемы и выход из другой части этой схемы. Используется для обрыва линии и продолжения её в другом месте.

    Таблица 1. Виды Блок-схем



    Глава 2. Практическая часть

    2.1 Составление блок-схемы и программы обработки одномерного массива


    Составить блок схему и программу обработки одномерного массива. Элементы массива заполнить, используя функцию генератора случайных чисел. Программу написать двумя способами:

    • осуществляя доступ к элементам массива с помощью индексов;

    • осуществляя доступ к элементам массива с помощью указателей.

    Словесное описание алгоритма:


    1. Начало алгоритма.

    2. Задать размерность массива, то есть константе N присвоить заданное значение. Заполнить массив A[N] случайными числами.

    4. Вывести элементы массива A[N].

    5. Обнулить переменные S и r.

    6. Организовать цикл с заданными параметрами от i=1; N; 1.

    Внутри цикла:

    Проверить: если а[i]%2=0, то суммируем нечётные элементы массива,

    т.е. S=S+а[i], и число нечётных элементов увеличить на 1, т.е. r=r+1, иначе перейти к следующему шагу цикла.

    . Находим целую часть среднего арифметического значения нечётных элементов массива A[N], т.е. k: k=abs(S/r).

    . Организовать цикл с заданными параметрами от i=1; k; 1.

    Внутри цикла:

    a. Запомнить последний элемент f=a[N-1].. Организовать цикл с заданными параметрами от j=N; 1; -1.

    Внутри цикла: последующему элементу присвоить предыдущий, т.е.

    a[j]=a[j-1].

    c. По окончании цикла по j первому элементу присвоить значение последнего, т.е. a[1]=a[N-1] и перейти к следующему циклу по i.

    . Вывести элементы массива a[i].

    . Конец алгоритма.



    Рис.1. Блок-схема обработки одномерного массива

    Описание и схема пользовательского интерфейса:


    При запуске данной программы должно появиться главное меню программы. Она будет состоять из названия данной работы.

    Ras4etno-grafi4eska9 rabota #2 zadanie A

    Далее необходимо ввести размерность массива, после ввода данных должен выходиться сгенерированный массив, и должны выходить элементы массива уже с циклическим сдвигом и должно выходит предложение о завершении программы или предложение вычислить заново.
    Razmernost' massiva A[N]N=

    massiv

    elementov massiva a[n] na k poziciy

    celaya chast srednego arifmeti4eskogo ne4etnyh 4isel' zanovo?

    (esli da t=1,esli net t=0)

    В случае выбора значение 1, программа должна продолжать работу и переходить к пункту 2. Если вы выбираете значение 0, программа завершит работу и перейдёт к пункту 4.

    В случае завершения работы, программа выведет посередине наименование студента, выполнившего данную работу, и его группы. Чуть ниже, с правой стороны, программа выведет наименование преподавателя проверившего работу.

    ****************************************

    ==Vipolnil Nechayev Nikita Igorevi4==

    =======Student gryppi BIS-12-2=======

    ****************************************

    ***************************************

    ==Proveril k.t.n. docent==

    ==_______________Ni A.G.==

    ==""__""____________201_3==

    ***************************************
    На следующей строчке будет надпись:
    Dl9 zaverweni9 nagmite klaviwu

    Ras4etno-grafi4eska9 rabota #2 zadanie A ================================= Razmernost' massiva A[N] Vvedite N N= Sgenerirovanniy massiv sdvig elementov massiva a[n] na k poziciy k-celaya chast srednego arifmeti4eskogo ne4etnyh 4isel Vichislit' zanovo? (esli da t=1,esli net t=0) ================================= **************************************** ==Vipolnil Nechayev Nikita Igorevi4== =======Student gryppi BIS-12-2======= **************************************** *************************************** ==Proveril k.t.n. docent== ==_______________Ni A.G.== ==""__""____________2013== *************************************** Dl9 zaverweni9 nagmite klaviwu


    Программное описание алгоритма с индексами:

    #include

    #include

    #include

    #include

    #include main()

    {k,N,S,r,i,t,f,j;a[N];b;("\t\t Ras4etno-grafi4eska9 rabota #2 zadanie A");("\t\t ===========================================");("Razmernost' massiva A[N]");:printf("\n Vvedite N\nN=");("%d",&N);=0;=0;(i=0;i
    {[i]=rand()%10-5;

    }("\n Sgenerirovanniy massiv\n");(i=0;i
    {=a[i]%2;(b!=0)

    {=r+1;=S+a[i];

    }

    }=abs(S/r);(i=0;i
    {

    f=a[N-1];

    for(j=N-1;j>0;j--)

    a[j]=a[j-1];

    a[0]=f;

    }

    printf("\n \n sdvig elementov massiva a[n] na %d poziciy \n",k);(i=0;i
    printf("%4d",a[i]);("\n k-celaya chast srednego arifmeti4eskogo ne4etnyh 4isel");("\n Vichislit' zanovo?\n (esli da t=1,esli net t=0)\nt=");

    scanf ("%d",&t);

    if (t>0)

    {printf("");goto m1;}

    if (t<1)("\t\t ===========================================");(" ****************************************");(" ==Vipolnil Nechayev Nikita Igorevi4==");

    puts(" =======Student gryppi BIS-12-2=======");

    puts(" ****************************************");

    puts(" ***************************************");

    puts(" ==Proveril k.t.n. docent==");

    puts(" ==_______________Ni A.G.==");

    puts(" ==""__""____________2013==");(" ***************************************");

    printf(" Dl9 zaverweni9 nagmite klaviwu ");( ); /* Zadergka do nagati9 luboi klaviwi */0;

    }

    С указателями:

    #include

    #include

    #include

    #include

    #include main()

    {k,N,S,r,i,t,f,j,*pa,*pb,*p;a[N];b;("\t\t Ras4etno-grafi4eska9 rabota #2 zadanie A");("\t\t ===========================================");("Razmernost' massiva A[N]");:printf("\n Vvedite N\nN=");("%d",&N);=0;=0;=&a[0];(i=0;i
    {

    *pa=rand()%10-5;

    }=&a[0];("\n Sgenerirovanniy massiv\n");(i=0;i
    {=*pa%2;

    ++pa;(b!=0)

    {=r+1;=S+*pa;

    }

    }=abs(S/r);(i=0;i
    {

    pb=&a[9];

    p=&a[0];

    f=*pb;

    for(j=0;j
    *pb=*(--pb);

    *p=f;

    p=&a[0];

    pb=&a[9];

    }

    printf("\n \n sdvig elementov massiva a[n] na %d poziciy \n",k);(i=0;i
    pb=&a[0];("%4d",*pb++);("\n k-celaya chast srednego arifmeti4eskogo ne4etnyh 4isel");("\n Vichislit' zanovo?\n (esli da t=1,esli net t=0)\nt=");

    scanf ("%d",&t);

    if (t>0)

    {printf("");goto m1;}

    if (t<1)("\t\t ===========================================");(" ****************************************");(" ==Vipolnil Nechayev Nikita Igorevi4==");

    puts(" =======Student gryppi BIS-12-2=======");

    puts(" ****************************************");

    puts(" ***************************************");

    puts(" ==Proveril k.t.n. docent==");

    puts(" ==_______________Ni A.G.==");

    puts(" ==""__""____________2013==");(" ***************************************");

    printf(" Dl9 zaverweni9 nagmite klaviwu ");( ); /* Zadergka do nagati9 luboi klaviwi */

    return 0;



    Рис. 2. Результат выполнения программы.

    2.2 Составление блок-схемы и программы обработки матрицы.


    Элементы матрицы необходимо заполнить, используя функцию генератора случайных чисел. Программу нужно написать двумя способами:

    • осуществляя доступ к элементам массива с помощью индексов; осуществляя доступ к элементам массива с помощью указателей.

    Дана целочисленная квадратная матрица. Определить:

    • Сумму элементов в тех строках, которые не содержат

    • отрицательных элементов.

    • Минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.

    Словесное описание алгоритма:

    1. Начало алгоритма.

    2. Задать размерность матрицы.

    3. Заполнить массив a[n][m] случайными числами.

    4. Вывести элементы массива a[n][m].

    5. Организовать цикл с заданными параметрами от i=1; m; 1.

    Внутри цикла по i:

    5.1. Обнулить сумму sum=0.

    5.2. Организовать цикл с заданными параметрами от j=1; n; 1.

    Внутри цикла по j:

    5.2.1. Проверить: если a[i][j]>=0, то суммировать элементы строки, иначе перейти к следующему шагу цикла.

    5.3. По окончании цикла проверить: если j=n, то вывести сумму элементов в тех строках, которые не содержат отрицательных элементов.

    5.4. Перейти к следующему шагу цикла по i.

    6. Минимум сумм диагоналей находим: min=a[0][n-1].

    7. Организовать цикл с заданными параметрами от i=1; m; 1.

    Внутри цикла по i:

    7.1. Сумма элементов диагоналей, параллельных главной диагонали матрицы с левой стороны равно сумме элементов диагоналей, параллельных главной диагонали матрицы с правой стороны и равно 0, т.е. t1=t2=0.

    7.2. Организовать цикл с заданными параметрами от j=0; n; 1.

    Внутри цикла по j:

    7.2.1. Суммировать элементы диагоналей, параллельных главной диагонали матрицы с левой стороны.

    7.2.2. Суммировать элементы диагоналей, параллельных главной диагонали матрицы с правой стороны.

    7.3. По окончании цикла по j проверить: если t1
    7.3.1. Перейти к следующему шагу цикла по i.

    8. Вывести минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.

    9. Конец алгоритма.




    Рис.3. Блок-схема обработки одномерного массива
    Описание и схема пользовательского интерфейса:

    1. При запуске данной программы появится главное меню программы.

    Она будут состоять из названия данной работы.

    Ras4etno-grafi4eska9 rabota #2 zadanie B

    2. Далее будет выходить сгенерированная матрица, выходят суммы элементов разных строк матрицы, которые не содержат отрицательных элементов, будет выходить минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы, и будет выходить предложение о завершении программы или предложение вычислить заново.
    Sgenerirovanna9 matrica

    Rezul'tat pervoy 4asti zadani9elementov stroki

    Rezul'tat vtoroy 4asti zadani9Summ

    Vichislit' zanovo?

    (esli da t=1,esli net t=0)
    3. В случае выбора значение 1, программа продолжит работу и перейдёт к пункту 2. Если вы выберете значение 0, программа завершит работу и перейдёт к пункту 4.

    4. В случае завершения работы, программа выведет с левой стороны наименование группы и студента, выполнившего данную работу. С правой стороны программа выведет наименование преподавателя, проверившего работу.

    ========================================

    ****************************************

    ==Vipolnil Nechayev Nikita Igorevi4==

    =======Student gryppi BIS-12-2=======

    ****************************************

    ***************************************

    ==Proveril k.t.n. docent==

    ==_______________Ni A.G.==

    ==""__""____________2013==

    ***************************************
    5. На следующей строчке будет надпись
    Dl9 zaverweni9 nagmite klaviwu

    Ras4etno-grafi4eska9 rabota #2 zadanie B ================================= Sgenerirovanna9 matrica Rezul'tat pervoy 4asti zadani9 Summa elementov stroki Rezul'tat vtoroy 4asti zadani9 Minimum Summ Vichislit' zanovo? (esli da t=1,esli net t=0) ======================================== **************************************** ==Vipolnil Nechayev Nikita Igorevi4== =======Student gryppi BIS-12-2======= **************************************** *************************************** ==Proveril k.t.n. docent== ==_______________Ni A.G.== ==""__""____________2013== *************************************** Dl9 zaverweni9 nagmite klaviwu


    Программное описание алгоритма с индексами:

    #include

    #include

    #include

    #include

    #include

    #define m 8

    #define n 8main()

    {i,j,t1,t2,sum,min,t;a[m][n];("\t\t Ras4etno-grafi4eska9 rabota #2 zadanie B");("\t\t ===========================================");:for(i=0; i
    {(j=0; j
    }("\n \t\t\t Rezul'tat pervoy 4asti zadani9");("\n\n");(i=0; i
    {=0;(j=0; j
    {(a[i][j]>=0)+=a[i][j];;

    }(j==n)("Summa elementov stroki #%d=%d\n",i+1,sum);

    }("\n \t\t\t Rezul'tat vtoroy 4asti zadani9");=a[0][n-1];(i=1; i
    {=t2=0;(j=0; j
    {+=a[i+j][j];+=a[j][i+j];

    }(t1
    min=t1;(t2
    min=t2;

    }("\n Minimum Summ= %d",min);("\n Vichislit' zanovo?\n (esli da t=1,esli net t=0)\nt=");

    scanf ("%d",&t);

    if (t>0)

    {printf("");goto m1;}

    if (t<1)("\t\t ===========================================");(" ****************************************");(" ==Vipolnil Nechayev Nikita Igorevi4==");

    puts(" =======Student gryppi BIS-12-2=======");

    puts(" ****************************************");

    puts(" ***************************************");

    puts(" ==Proveril k.t.n. docent==");

    puts(" ==_______________Ni A.G.==");

    puts(" ==""__""____________2013==");(" ***************************************");

    printf(" Dl9 zaverweni9 nagmite klaviwu ");( ); /* Zadergka do nagati9 luboi klaviwi */0;

    }

    С указателями:

    #include

    #include

    #include

    #include

    #include

    #define m 8

    #define n 8main()

    {i,j,t1,t2,sum,min,t;a[m][n];*mat;("\t\t Ras4etno-grafi4eska9 rabota #2 zadanie B");("\t\t ===========================================");=&a[0][0];:for(i=0; i
    {

    *mat=rand()%10-1;++;

    }=n*m;("\n Sgenerirovanna9 matrica\n");(i=0; i
    {(j=0; j
    {("%4d",*mat);++;

    }("\n");

    }("\n \t\t\t Rezul'tat pervoy 4asti zadani9");("\n\n");=&a[0][0];(i=0; i
    {=0;(j=0; j
    {(*mat>=0)+=*mat;;

    }(j==n)("Summa elementov stroki #%d=%d\n",i+1,sum);

    }("\n \t\t\t Rezul'tat vtoroy 4asti zadani9");=a[0][n-1];(i=1; i
    {=t2=0;(j=0; j
    {+=*(mat+i*m+j);+=*(mat+j*m+i);

    }(t1
    min=t1;(t2
    min=t2;

    }("\n Minimum Summ= %d",min);("\n Vichislit' zanovo?\n (esli da t=1,esli net t=0)\nt=");

    scanf ("%d",&t);

    if (t>0)

    {printf("");goto m1;}

    if (t<1)("\t\t ===========================================");(" ****************************************");(" ==Vipolnil Nechayev Nikita Igorevi4==");

    puts(" =======Student gryppi BIS-12-2=======");

    puts(" ****************************************");

    puts(" ***************************************");

    puts(" ==Proveril k.t.n. docent==");

    puts(" ==_______________Ni A.G.==");

    puts(" ==""__""____________2013==");(" ***************************************");

    printf(" Dl9 zaverweni9 nagmite klaviwu ");( ); /* Zadergka do nagati9 luboi klaviwi */

    return 0;

    }



    Рис. 4 Результат выполнения программы

    Заключение


    массив матрица алгоритм индекс

    В данной курсовой работе были закреплены навыки разработки и программирования на языке Си алгоритмов обработки сложных структур данных: одномерных массивов и матриц, представлены примеры алгоритмов обработки сложных структур данных на языке Си (одномерные и двумерные массивы). В ходе работы были выполнены следующие задачи:

    • подробное описание решения алгаритма в форме словесного описания;

    • составление блок-схемы алгоритма;

    • написание кода программы, на языке Си.

    Также были представлены блок-схемы, словесное и графическое описание. Как мы видим, для языка Си характерны лаконичность, стандартный набор конструкций управления потоком выполнения и обширный набор операций. Это и делает его столь востребованным языком в наши дни.


    Список использованной литературы


    1. Куликов, А. И. Алгоритмические основы современной компьютерной графики : учебное пособие для СПО / А. И. Куликов, Т. Э. Овчинникова. — Саратов : Профобразование, 2021. — 230 c. — ISBN 978-5-4488-0989-7. — Текст : электронный // Электронный ресурс цифровой образовательной среды СПО PROFобразование : [сайт]. — URL: https://profspo.ru/books/102182

    2. Зыков, С. В. Введение в теорию программирования. Объектно-ориентированный подход : учебное пособие для СПО / С. В. Зыков. — Саратов : Профобразование, 2021. — 187 c. — ISBN 978-5-4488-0995-8. — Текст : электронный // Электронный ресурс цифровой образовательной среды СПО PROFобразование : [сайт]. — URL: https://profspo.ru/books/102188

    3. Молдованова, О. В. Информационные системы и базы данных : учебное пособие для СПО / О. В. Молдованова. — Саратов : Профобразование, 2021. — 177 c. — ISBN 978-5-4488-1177-7. — Текст : электронный // Электронный ресурс цифровой образовательной среды СПО PROFобразование : [сайт]. — URL: https://profspo.ru/books/106617

    4. Моренкова, О. И. Программирование на языке С/С++ : практикум для СПО / О. И. Моренкова, Т. И. Парначева. — Саратов : Профобразование, 2021. — 102 c. — ISBN 978-5-4488-1192-0. — Текст : электронный // Электронный ресурс цифровой образовательной среды СПО PROFобразование : [сайт]. — URL: https://profspo.ru/books/106631

    5. Непейвода, Н. Н. Стили и методы программирования : учебное пособие для СПО / Н. Н. Непейвода. — Саратов : Профобразование, 2021. — 295 c. — ISBN 978-5-4488-1011-4. — Текст : электронный // Электронный ресурс цифровой образовательной среды СПО PROFобразование : [сайт]. — URL: https://profspo.ru/books/102204

    6. Кудрявцева, Л. Г. Информационные технологии : практикум / Л. Г. Кудрявцева, Р. В. Самолетов. — Саратов : Вузовское образование, 2020. — 80 c. — ISBN 978-5-4487-0729-2. — Текст : электронный // Электронный ресурс цифровой образовательной среды СПО PROFобразование : [сайт]. — URL: https://profspo.ru/books/97631

    7. Стасышин, В. М. Разработка информационных систем и баз данных : учебное пособие для СПО / В. М. Стасышин. — Саратов : Профобразование, 2020. — 100 c. — ISBN 978-5-4488-0527-1. — Текст : электронный // Электронный ресурс цифровой образовательной среды СПО PROFобразование : [сайт]. — URL: https://profspo.ru/books/87389

    8. Абрамов, Г. В. Проектирование и разработка информационных систем : учебное пособие для СПО / Г. В. Абрамов, И. Е. Медведкова, Л. А. Коробова. — Саратов : Профобразование, 2020. — 169 c. — ISBN 978-5-4488-0730-5. — Текст : электронный // Электронный ресурс цифровой образовательной среды СПО PROFобразование : [сайт]. — URL: https://profspo.ru/books/88888


    написать администратору сайта