Основы программирования и алгоритмические языки

Министерство образования и науки Украины

Национальный горный университет

Институт электроэнергетики

Факультет информационных технологий



Кафедра ПЗКС





Реферат  по теме:

«Освоение технологии структурного программирования

и применения стандартных методов работы

 с одномерными массивами

при разработке и создании программы на языке Турбо Паскаль»



по дисциплине



“Основы программирования и алгоритмические языки”





ВЫПОЛНИЛА: 

студент группы КС-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)







7