- •Введение в программирование омск 2011
- •Введение
- •Структурное программирование и оформление программ
- •Теоретические сведения
- •Структурное программирование
- •Оформление программ
- •Отладка и тестирование программ
- •Задание к работе
- •Пример построения цикла
- •Определения элементов цикла
- •Пример формального построения цикла
- •Задание к работе
- •Содержание отчета
- •Контрольные вопросы
- •Алгоритмы сортировки
- •Теоретические сведения
- •Задача сортировки
- •Реализация простейшего алгоритма сортировки
- •Сложный алгоритм сортировки
- •Задание к работе
- •Содержание отчета
- •Контрольные вопросы
- •644046, Г. Омск, пр. Маркса, 35
Содержание отчета
Отчет должен содержать листинг программы, в которой реализованы задание и функции тестирования, представлены результаты работы программы.
Контрольные вопросы
Опишите простой алгоритм сортировки.
Опишите алгоритм быстрой сортировки.
Как изменятся условия для простого алгоритма сортировки, если элементы массива нужно расположить в порядке убывания?
Как изменятся условия для простого алгоритма сортировки, если элементы в массиве начать располагать начиная с наибольшего?
Объясните назначение функции print_mas из примера в теоретической части.
Какое количество операций сравнения потребуется для простого алгоритма сортировки при количестве элементов, равном шести?
Как связаны между собой значения, обозначенные одинаковыми буквами со штрихом и без штриха?
––––––––––––––––––––––––––––––––––––––––––
К е р н и г а н Б. Язык программирования C / Б. К е р н и г а н, Д. Р и т -
ч и. М.: Вильямс, 2009. 304 с.
ПРИЛОЖЕНИЕ
ПРИМЕР ТЕСТИРОВАНИЯ ФУНКЦИЙ
// Пример тестирования функций
// Для вывода отладочных сообщений нужно определить символ DEBUG_MAX
// Сделать это можно при компиляции с помощью ключа –D:
// Например: «C:\MinGW\bin>gcc d:/work/prog4_1.c -D DEBUG_MAX»
#include "stdio.h"
int max_len_equ_symb(char* str, int n)
// Функция находит количество элементов в наиболее длинной последовательности элементов в массиве str
// n - количество элементов в массиве str
{
int i; // Текущий просматриваемый символ
int l=1; // Максимальное количество одинаковых символов среди просмотренных
int m=1; // Текущее количество символов
char c=str[0]; // Последний встретившийся символ
for(i=1; i<n; i=i+1)
{
if(str[i]==c)
m=m+1;
else
{
m=1;
c=str[i];
}
if(m>l)
l=m;
// Это директивы препроцессора
// Все, что между ними, будет включено в программу только в случае, если определен символ DEBUG_MAX
#ifdef DEBUG_MAX
О к о н ч а н и е п р и л.
printf("i = %i, l= %i \n", i, l); // Это отладочные сообщения, которые будут печататься только при отладке. Выводим на экран интересующие нас переменные
#endif
}
return l;
}
// В примере тесты проводятся в главной функции программы
// В общем случае нужно создавать тестирующие функции для каждой созданной функции
int main()
{
int l, n=10;
// Строки, на которых мы будем тестировать нашу функцию:
char str1[]="aaabbbccdd\0";
char str2[]="abbbbbccdd\0";
char str3[]="aabbbcdddd\0";
l = max_len_equ_symb(str1, n);
printf("\nTEST 1\n str=%s,\n l=%i\n", str1,l);
// Для первой строки функция должна выдать результат 3
if (l==3)
printf("Test passed\n\n");
else
printf("Test fail\n\n");
l = max_len_equ_symb(str2, n);
printf("\nTEST 1\n str=%s,\n l=%i\n", str2,l);
if (l==5)
printf("Test passed\n\n");
else
printf("Test fail\n\n");
l = max_len_equ_symb(str3, n);
printf("\nTEST 1\n str=%s,\n l=%i\n", str3,l);
if (l==4) printf("Test passed\n\n");
else
printf("Test fail\n\n");}
Учебное издание
АЛЬТМАН Евгений Анатольевич,
АЛЕКСАНДРОВ Александр Владимирович,
АНАНЬЕВА Надежда Геннадьевна,
АКТАЕВ Нуркен Ерболатович
ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ
____________________________________
Редактор Н. А. Майорова
Корректор Д. А. Волнина
* * *
Подписано в печать .05.2012. Формат 60 84 1/16.
Плоская печать. Бумага офсетная. Усл. печ. л. 1,9. Уч.-изд. л. 2,2.
Тираж 100 экз. Заказ .
* *
Редакционно-издательский отдел ОмГУПСа
Типография ОмГУПСа
*
