- •Т.В. Панова основы информатики и программирования на языке высокого уровня си Лабораторный практикум
- •Лабораторная работа №1. Организация компьютерной системы. Операционная система. Оболочка операционной системы………………………………………..…………5
- •Лабораторная работа №1
- •Организация компьютерной системы. Операционная система. Оболочка операционной системы
- •I. Теоретические сведения.
- •1. Основные блоки фон-неймановской кс
- •Общая функциональная схему кс
- •Цп управ.
- •2. Программное обеспечение
- •2.1. Системное по.
- •Функциональные уровни в составе спо
- •2.2. Прикладное по.
- •2.3. Инструментальное по.
- •3. Операционная система
- •3.2. Файл – объект файловой системы.
- •3.3. Логический диск и каталоги.
- •3.4. Организация файловой структуры ос и доступ к файлу.
- •3.5. Дерево каталогов.
- •3.6. Группы файлов.
- •4. Оболочка операционной системы
- •4.1. Функциональные клавиши оболочки ос.
- •III. Практическая часть.
- •1.2. Операционная среда.
- •2. Состав Windows
- •3. Файловые системы Windows
- •3.1. Файловая система fat (File Allocation Table).
- •3.2. Файловая система ntfs (New Technology File System).
- •4. Объекты Windows
- •4.1. Логические объекты Windows.
- •4.2. Физические объекты Windows.
- •II. Контрольные вопросы.
- •III. Практическая часть.
- •2.2. Перемещение файла.
- •IV. Требования к защите
- •2. Текстовый процессор Microsoft Word
- •2.1. Элементы окна Word.
- •II. Контрольные вопросы.
- •III. Практическая часть.
- •IV. Требования к защите
- •1.2. Описание алгоритмов с помощью блок-схем.
- •Основные символы блок-схем алгоритмов
- •1 (Да)0 (нет)
- •II. Контрольные вопросы.
- •3. Блок-схема алгоритма задачи:
- •2. Выполнение индивидуального задания.
- •IV. Требования к защите индивидуальных заданий.
- •V. Варианты индивидуальных заданий.
- •Лабораторная работа №5
- •3.Тип данных
- •4. Базовые типы данных языка Си
- •6. Операции и выражения
- •6.1. Знаки операций.
- •6.2. Операции присваивания.
- •6.3. Арифметические операции.
- •6.4. Операции сравнения и логические операции.
- •6.5. Условная операция.
- •6.6. Операция явного преобразования типа.
- •7. Логика алгоритма и операторы
- •8. Операторы простой последовательности действий
- •8.1. Функции форматного ввода/вывода данных.
- •Функция форматного ввода данных
- •Функция форматного вывода данных
- •Пример организации форматного ввода/вывода данных
- •8.2. Основные стандартные функции. Стандартные функции консольного ввода/вывода
- •Стандартные математические функции
- •II. Контрольные вопросы.
- •III. Практическая часть.
- •2. Математическая модель и описательный алгоритм задачи:
- •Лабораторная работа №6
- •Условные конструкции: операторы ветвления
- •I. Теоретические сведения.
- •1. Условный оператор
- •2. Оператор множественного выбора (переключатель)
- •II. Контрольные вопросы.
- •2. Математическая модель и описательный алгоритм задачи:
- •Лабораторная работа №7
- •Циклические конструкции: операторы цикла
- •I. Теоретические сведения.
- •1. Оператор цикла с параметром (счетчиком)
- •2. Итерационные циклы
- •2.1. Оператор цикла с предусловием.
- •2.2. Оператор цикла с постусловием.
- •II. Контрольные вопросы.
- •III. Практическая часть.
- •1. Выполнение общего задания.
- •2. Математическая модель и описательный алгоритм задачи:
- •3. Блок-схема алгоритма задачи:
- •4. Текст программы:
- •5. Тестирование:
- •2. Математическая модель и описательный алгоритм задачи:
- •3. Блок-схема алгоритма задачи:
- •4. Текст программы:
- •5. Тестирование:
- •2. Математическая модель и описательный алгоритм задачи:
- •3. Блок-схема алгоритма задачи:
- •4. Текст программы:
- •5. Тестирование:
- •2. Математическая модель и описательный алгоритм задачи:
- •Лабораторная работа №8
- •Указатели и одномерные массивы данных
- •I. Теоретические сведения.
- •1. Указатели
- •1. Объявление переменных:
- •2. Операции присваивания объявленным переменным:
- •3. Использование косвенного обращения:
- •2. Массив как статическая структура данных
- •Одномерный массив данных
- •3. Адресная арифметика
- •4. Линейный поиск и сортировка в массивах данных
- •4.1. Признаки порядка.
- •4.2. Способы сортировки в массивах данных.
- •II. Контрольные вопросы.
- •III. Практическая часть.
- •1. Выполнение общего задания.
- •3. Блок-схема алгоритма программы:
- •4. Текст программы:
- •3. Блок-схема алгоритма программы:
- •4. Текст программы:
- •5. Тестирование:
- •3. Блок-схема алгоритма программы:
- •4. Текст программы:
- •5. Тестирование:
- •3. Блок-схема алгоритма программы:
- •4. Текст программы:
- •5. Тестирование:
4. Текст программы:
#include <stdio.h>
#include <conio.h>
void main()
{
const c=20;
int x[c],i,k=0,min,*p,n;
do
{
printf("\nInput number of elements of massiv n=");
scanf("%d",&n);
}
while (n<=0 || n>c);
p=&x[0];
printf("\nInput elements of massive:\n");
for (i=0;i<n;i++)
{
printf("x[%d]=",i);
scanf("%d",p);
p++;
}
p-=n;
printf("\nOutput massiv:\n");
for (i=0;i<n;i++)
{
printf("%d ",*p);
p++;
}
p--; min=*p;
for (i=n-2;i>=0;i--)
{
p--;
if (*p<min)
{
min=*p;
k=i;
}
}
*(p+k)=*(p+2);
*(p+2)=min;
printf("\nOutput massiv:\n");
for (i=0;i<n;i++)
{
printf("%d ",*p);
p++;
}
getch();
return;
}
5. Тестирование:
Теоретически рассчитанное выходное значение |
Практически полученное выходное значение |
Тест 1: входной массив: n=10; x[n]: -5 8 0 4 -5 7 9 0 9 -1 | |
x[n]: -5 8 -5 4 0 7 9 0 9 -1 |
x[n]: -5 8 -5 4 0 7 9 0 9 -1 |
Тест 2: входной массив: n=7; x[n]: 1 0 5 9 1 0 4 | |
вых. массив x[n]: 1 0 0 9 1 5 4 |
вых. массив x[n]: 1 0 0 9 1 5 4 |
Задача 3.
1. Постановка задачи: разработать алгоритм упорядочения по неубыванию значений элементов введенного массива, состоящего из n целых чисел, используя пузырьковую сортировку, и вывода отсортированного массива. Написать программу, реализующую разработанный алгоритм.
2. Математическая модель и описательный алгоритм: входной массив a: 9 0 -3 6 -3 2 8 9; входной массив индексов ai: 0 1 2 3 4 5 6 7; выходной массив после перестановок (после сортировки по неубыванию, когда aj+1≥aj): -3 -3 0 2 6 8 9 9; выходной массив индексов: 2 4 1 5 3 6 0 7.
В цикле с постусловием n≤0 или n>c ввести количество n элементов массива;
p=&a[0], в указатель pi занести адрес нулевого элемента массива индексов pi=&ai[0];
в цикле с параметром 0≤i<n ввести значения элементов по адресу p, p=p+1 и сформировать массив индексов *pi=i, pi=pi+1;
p=p-n; в цикле с параметром 0≤i<n вывести значения элементов массива *p, p=p+1;
для пузырьковой сортировки массива во внешнем цикле с параметром 0≤i<n-1 установить указатели p=p-n+i, pi=pi-n+i; во вложенном цикле с параметром 0≤j<n-1-i переставлять рядом стоящие элементы при нарушении признака порядка (неубывание – aj+1≥aj): если *(p+1)<*p, то менять элементы местами, используя дополнительную переменную b, вместе с элементами массива переставлять элементы массива индексов, чтобы отследить правильность сортировки по заданному признаку порядка, затем p=p+1, pi=pi+1;
в цикле с параметром 0≤i<n вывести значения элементов отсортированного массива *p, p=p+1;
в цикле с параметром 0≤i<n вывести значения элементов массива индексов после соответствующих перестановок *pi, pi=pi+1.
3. Блок-схема алгоритма программы:
4. Текст программы:
#include <stdio.h>
#include <conio.h>
void main()
{
const c=10;
int i,j,b,n,a[c],ai[c],*p,*pi;
do
{
printf("\nInput number of elements of massiv n=");
scanf("%d",&n);
}
while (n<=0 || n>c);
p=&a[0]; pi=&ai[0];
printf("\nInput elements of massive:\n");
for (i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",p);
*pi=i; p++; pi++;
}
p-=n; printf("\nOutput massiv:\n");
for (i=0;i<n;i++)
{
printf("%d ",*p); p++;
}
for (i=0;i<n-1;i++)
{
p=p-n+i; pi=pi-n+i;
for (j=0;j<n-1-i;j++)
{
if (*(p+1)<*p)
{
b=*(p+1);
*(p+1)=*p; *p=b;
b=*(pi+1);
*(pi+1)=*pi; *pi=b;
}
p++; pi++;
}
}
p--; pi--; printf("\nOutput massiv:\n");
for (i=0;i<n;i++)
{
printf("%d ",*p); p++;
}
printf("\n");
for (i=0;i<n;i++)
{
printf("%d ",*pi); pi++;
}
getch();
return;
}