Основы программирования и алгоритмические языки
Основы программирования и алгоритмические языки
7 Министерство образования и науки Украины Национальный горный университет Институт электроэнергетики Факультет информационных технологий Кафедра ПЗКС Реферат по теме: «Освоение технологии структурного программирования и применения стандартных методов работы с одномерными массивами при разработке и создании программы на языке Турбо Паскаль» по дисциплине “Основы программирования и алгоритмические языки” ВЫПОЛНИЛА: студент группы КС-06-2 Иванова Е.И. ПРОВЕРИЛА: ассистент кафедры ПЗКС Попова Т.С. Днепропетровск 2006 1.Условие задачи: В массиве T(12) хранится среднемесячная температура для каждого из 12 месяцев в г. Днепропетровске. Определить самую большую отрицательную и самую маленькую положительную температуры. 2. Решение задачи в ее предметной области: Создадим массив T12, где хранится среднемесячная температура для каждого из 12 месяцев в г. Днепропетровске. Создадим массивы А и В. Из массива Т12 перенесем все отрицательные элементы в массив А, а все положительные элементы в массив В. В массиве А найдем самую большую отрицательную температуру, а в массиве В - самую большую положительную температуру. 3. Проектируем структуры данных (их имена и типы). Понятно, что все имена массивов с их типами, входящие в условие задачи, нужно описать в программе. Кроме того, нам понадобятся: переменная цикла i, количество отрицательных элементов KolOtric, , количество положительных элементов KolPolozh, самая большая отрицательная температура Max и самая маленькая положительная температура Min и - все типа Integer. Значит в разделе описаний программы, назовем ее ALENA5, с учетом требований о необходимости обеспечения легкочитаемости программы и размещения необходимых комментариев, поместим следующие описания: Type VectorType= Array[1..12] of integer; Var A, {massiv dlya hranenija otric. chisel} B, {massiv dlya hranenija polozh. chisel} T12:VectorType; {massiv dlya hraneniya vektora} i, {parametr cikla} kolOtric, {kolichestvo otric. elementov} kolPolozh, {kolichestvo polozhitelnih elementov} Max, {samaya bol'shaya otric. temper.} Min:integer; {samaya mal. polozhit. temper} 4. Проводим нисходящую разработку (проектирование) программы методом пошаговой детализации с помощью псевдокода. Воспользуемся результатами для получения первой версии алгоритма: Ввести данные ALENA5 Выполнить вычисления ALENA5 Вывести результаты ALENA5 С учетом требований к «дружественности» интерфейса, детализация псевдокода Ввести данные ALENA5 дает следующее: Вывести на экран приглашение для ввода массива T12 Ввести массив T12 Детализация псевдокода Выполнить вычисления ALENA5 дает следующее: Определить отрицательные элементы T12 и переписать в массив А Определить положительные элементы T12 и переписать в массив В Найти наибольший отрицательный элемент массива А или доказать, что его не существует Найти наименьший положительный элемент массива В или доказать, что его не существует Детализация псевдокода Вывести результаты ALENA5 дает следующее: Вывести наибольший отрицательный элемент массива T12 Вывести наименьший положительный элемент массива T12 5. Выполняем структурное программирование с использованием стандартных приемов: BEGIN CLRSCR; {ochicshaem ekran} Writeln('Vvedite 12 elementov vectora T12: '); for i:=1 to 12 do {organizovivaem cikl po kolichestvu elementov} begin Write ( ' T12 [ ' , i , ' ] = ') ; {Udobno videt' nomera elementov} Readln (T12[i]) end; Writeln; {Ustanavlivaem kursor na novuju stroku} {perenosim otric. elementi iz T12 v A } KolOtric:=0; for i:=1 to 12 do If T12[i]<0 then begin KolOtric := kolOtric + 1; A[KolOtric] := T12[i];{zanosim po etomu nomeru} end; {perenosim polozhitelnie elementi iz T12 v B} KolPolozh :=0; fOR I:=1 TO 12 DO If T12[i]>0 then begin KolPolozh := KolPolozh + 1; B[KolPolozh] := T12[i];{zanosim po etomu nomeru} end; {opredelyaem samuju bol'shuju otric. temperaturu} if ( KolOtric >= 1 ) then begin Max:= A[1]; {Chitaem, chto eto pervij element massiva} if ( KolOtric > 1 ) then for i:=2 to KolOtric do {poetomu nachinaem obrabotku so 2-go elementa} If A[i] > Max then {sravnivaem s tekush. max otric. znach} Max := A[i]; {zapominaem samoe bol'shoe otric. znach} Writeln ('samaja bolshuju otric. temperatura Max= ', Max); end else Writeln('Otricatelnyh znacheniy net'); {opredelyaem samuju malen'kuju polozhit. temperaturu} if ( KolPolozh >= 1 ) then begin Min:= B[1]; {Chitaem, chto eto pervij element massiva} if ( KolPolozh > 1 ) then for i:=2 to KolPolozh do {poetomu nachinaem obrabotku so 2-go elementa} If B[i] < Min then {sravnivaem s tekush. min.polozh. znach} Min := B[i]; {zapominaem samoe maloe polozh. znach} Writeln ('samaja malaja polozh. temperatura Min= ', Min); end else Writeln('Polozhitelnyh znacheniy net'); {Vividim rezultat} Readln End. 6. Отладка программы. Рис. 1. Результат работы программы Рис. 2. Результат работы программы 7. Тестирование программы. Тестовый пример для нашей задачи будет включать два варианта: Пример1: При T12[1] = 1, T12[2]=-2, T12[3]=3, T12[4]=-4, T12[5]=5, T12[6]=-6, T12[7]=7, T12[8]=-8, T12[9]=9, T12[10]=-10, T12[11]=11, T12[12]=-12. Как мы видим, самая большая отрицательная температура у нас T12[2]=-2, а самая малая положительная T12[1] = 1. Рис. 3. Результат тестирования программы( пример 1) Пример2: При T12[1] = -1, T12[2]=2, T12[3]=-3, T12[4]=4, T12[5]=-5, T12[6]=6, T12[7]=-7, T12[8]=8, T12[9]=-9, T12[10]=10, T12[11]=-11, T12[12]=12. Как мы видим, самая большая отрицательная температура у нас T12[1]=-1, а самая малая положительная T12[2]=2. Рис. 4. Результат тестирования программы( пример 2)
|