Главная » Все файлы » Просмотр файлов из архивов » Документы » Организация данных в ЭВМ и основы программирования

Организация данных в ЭВМ и основы программирования, страница 3

2017-07-08СтудИзба

Описание файла

Документ из архива "Организация данных в ЭВМ и основы программирования", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "информатика" в общих файлах.

Онлайн просмотр документа "Организация данных в ЭВМ и основы программирования"

Текст 3 страницы из документа "Организация данных в ЭВМ и основы программирования"

Var number,sigma: real;

Begin

Sigma:=0;

While sigma>=0 do

Begin

Read(number);

If number <0 them goto 99;

Sigma:=sigma+number;

End;

99: write(‘summa chisel=’,sigma);

end.

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

1.8. Организация циклов

Большинство задач, решаемых на ЭВМ, невозможно представить в виде последовательности простых вычислений; часто приходится организовывать повторяемость одних и тех же вычислений.

1.8.1. Использование операторов условного и безусловного перехода

1) Искусственно вводим счетчик числа шагов цикла

2) Проверяем условие окончания циклических расчетов

3) Если надо продолжить, увеличиваем значение счетчика

Задача. Вычислить таблицу квадратов и корней целых чисел от 1 до 100.

Здесь счетчиком чисел может служить само число. Дадим ему имя N.

Использовать операторы условного перехода в программе крайне не желательно!

1.8.2. Цикл с параметром

Если число повторений цикла известно, используется цикл FOR, для которого нет необходимости принудительно увеличивать значение параметра цикла. Такое увеличение производится автоматически.

Общий вид оператора цикла с параметром:

А) Если начальное значение параметра меньше конечного, то используется форма вида:

FOR I: = M TO N DO оператор;

Б) Если начальное значение параметра цикла больше конечного, то используется форма вида:

FOR I: = N DOWNTO M DO оператор;

M и N- выражения задающие начальное и конечное значения

параметра I,

А - простой или составной оператор.

Если после слова DO необходимо записать несколько операторов, то следует воспользоваться составным оператором BEGIN оператор1;

оператор2;

оператор3

END;

Параметр цикла не может быть вещественным(действительным), а только целым или другим типом, который можно пронумеровать и сосчитать. Шаг всегда равен 1 или –1. Задать другой шаг нельзя!

Пример(тот же).

For n :=1 to 100 do

Writeln(‘n=’,n,’sqr(n)=’,sqr(n),’sqrt(n)=’,sqrt(n));

С помощью этого цикла процедура WRITELN будет последовательно выполняться для следующих значений переменной N: 1,2,…,100.

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

Ограничения.

  1. Значения параметра цикла, начального и конечного значений параметра цикла изменять внутри цикла нельзя.

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

Итак, оператор цикла с параметром позволяет осуществить последовательный перебор значений параметра, но с приращением равным 1. В том случае, если шаг просмотра отличен от единицы или заранее не известно количество повторений тела цикла, необходимо применять один из двух других видов операторов цикла: с предусловием или с постусловием.

1.8.3. Цикл с предусловием - цикл WHILE

Пример. Составить таблицу квадратов и квадратных корней для чисел от 1 до 100.

N:=1 ;

While n<=100 do

Begin

Writeln (‘n=’,n,’sqr(n)’,sqr(n),’sqrt(n)’,sqrt(n));

N: =N+1

End;

В общем случае данный оператор цикла записывается так:

While условие DO оператор;

Правило его выполнения следующее: оператор выполняется до тех пор, пока остается истинным условие цикла. Как только значение условия становится ложным, цикл прекращает выполняться. Если значение условия ложно перед первым выполнением цикла, то он не выполняется ни разу. Обратите внимание на то, что после слова DО может стоять только один оператор, поэтому чаще всего после слова DO стоит составной оператор.

Приведенный в примере оператор WHILE работает так. Первоначальное значение переменной NUMBER равно 1. Оно задается оператором присваивания. Затем проверяется условие, которое в данном случае имеет вид: N<=100. Знак <= означает “ меньше или равно”. Естественно, что условие 1<= 100 истинно, поэтому выполняется оператор стоящий после слова DO. Этот оператор называется телом цикла. Он вычисляет и выдает на печать значения квадрата и квадратного корня числа 1, а также увеличивает значение переменной на единицу. Теперь ее значение равно двум, условие цикла остается истинным, и цикл выполняется еще раз. Последний раз цикл будет выполняться для значения n=100. Условие 100<=100 истинно, и цикл выполняется. Внутри цикла происходит очередное увеличение переменной N на 1, и ее значение становится равным 101. Очередная проверка условия цикла дает значение условия ложное, и выполнение цикла прекратится. Таким образом, данный цикл выдает значения квадратов и квадратных корней для чисел от 1 до 100 включительно.

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

1.8.4. Цикл с постусловием - цикл repeat

Он имеет вид:

REPEAT оператор1;

оператор2;

оператор3;

……………

оператор n

UNTIL условие;

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

Заметим, что если в операторе WHILE условие проверяется до очередного выполнения цикла, то в операторе REPEAT - после очередного выполнения.

Таким образом, оператор REPEAT - оператор с постусловием) всегда выполняется, по крайней мере, 1 раз, в то время как оператор WHILE(оператор с постусловием) может не выполняться ни разу.

Еще одна особенность цикла REPEAT - в нем разрешается использовать произвольное число операторов.

Пример (тот же).

Repeat

Writeln (‘n=’,n,’sqr(n)’,sqr(n),’sqrt(n)’,sqrt(n));

N: =N+1

Until n>100;

Когда переменная NUMBER принимает последовательно значения 1,2,…,100, значение условия N>100 остается ложным и для них цикл выполняется (UNTIL- до тех пор, пока не). Как только переменная NUMBER принимает значение 101, то условие N>100 становится истинным (101>100) и выполнение цикла прекращается.

Заметьте, что при использовании как цикла WHILE, так и цикла REPEAT.

Необходимо принудительно увеличить значение переменной N. Если этого не делать, то цикл никогда не завершится, т.к. переменная N так и остается равным единице. Условие N<=100 никогда не станет ложным, а условие N>100 никогда не станет истинным. В результате оба цикла будут выполняться бесконечно долго. В этом случае говорят, что программа зацикливается. Оба этих цикла применяются, когда число повторений неизвестно(хотя это число можно сосчитать).

Пример. Лист бумаги разрезан пополам. Одну из полученных половинок снова делят пополам и т.д. Сколько понадобится делений, чтобы получить частицы размером с атом? Масса листа 1 грамм(М), масса атома 1Е-24 грамма.

Решение:

Program List;

Var m: real;

I: integer;

Begin

I:=1;m:=1;

While m>1E-24 do

Begin

M:=m/2;

I:=I+1;

End;

Writeln(‘I=’,I,’ делений’);

Writeln;

End.

1.9. Оператор выбора варианта

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

Пусть перед нами стоит следующая задача.

Пример. Числами от 1 до 7 пронумерованы дни недели от понедельника до воскресенья. Необходимо преобразовать числовое значение соответствующего дня недели в его название и вывести на печать.

Задача легко решается с использованием последовательности условных операторов:

If day =1 then writeln(‘понедельник’) else

If day =2 then writeln(‘вторник’) else

………….

………….

If day =7 then writeln(‘воскресенье’);

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

Case day of

1: writeln(‘понедельник’);

2: writeln (‘вторник’) ;

3: ………………….

……………………..

7: writeln(‘воскр.’);

else writeln(‘ошибка….’);

end;

Если переменная day принимает значение 1, то выполняется оператор, перед которым стоит 1:. Если day равно 2, то выполняется оператор, перед которым стоит 2: и т.д. Если же переменная принимает значение вне диапазона1…7, скажем 0 или 8, то выполняется следующий оператор.

Общий вид оператора выбора варианта:

Case селектор of

метка1:оператор1;

…………………….

метка n: оператор N;

End; {of case}

Другой вид оператора выбора:

Case селектор of

Метка1:оператор1;

………………………….

Метка n: оператор N;

Else оператор M;

End; {of case}

1.10. Расположение операторов в программе

Текст любой программы можно записать многими разными способами.

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

Первый вариант.

program length;

Var side1,side2,side3,angle: real;

Begin

Read(side1,side2,side3,angle);

Side3 :=sqrt(sqr(side1)+sqr(side2)-2*side1*side2*cos(angle));

Write (‘third side=’,side3)

End.

Второй вариант. Все то же записано в строчку: Var side1,side2,side3,angle: real; Begin Read(side1,side2,side3,angle); Side3 :=sqrt(sqr(side1)+sqr(side2)-2*side1*side2*cos(angle)); Write (‘third side=’,side3) End.

Большинство программистов предпочтет 1-ый вариант, поскольку он нагляднее выражает структуру программы. Такую программу легче читать и понимать. Наконец, она красивее.

С точки зрения. ЭВМ совершенно безразлично, как записана программа, важно лишь, чтобы она была правильной. Если принять эту точку зрения, то говорить о стиле программирования становится просто бессмысленно. Но программы пишутся все-таки и для людей. Да, они выполняются на вычислительной машине, но разбираться в них, использовать, модифицировать должны программисты. Поэтому писать программы необходимо так, чтобы читатель программы затрачивал наименьшие усилия на ее понимание. Поэтому важно расположение операторов в программе. Для усвоения хорошего стиля можно дать некоторые рекомендации, цель которых заключается в том, чтобы текст программы имел хорошую структуру и его легко было бы читать.

Правила форматирования

1. Составной оператор

BEGIN здесь S1, S2,…,Sn - операторы

S1;

S2;

….

Sn

End;

2. Условный оператор

if B

then S1

else S2; В- логическое выражение(условие); S1,S2- операторы

Если S1,S2 - составные операторы, то надо использовать такое расположение:

If B

Then

S1

Else

S2;

3. Операторы цикла

while B DO

begin

S1;

S2;

….

Sn;

End;

Если один из операторов S1 есть снова оператор цикла WHILE, то рекомендуется расположение:

While B DO

Begin

S1;

S2;

While B1 DO

Begin

S3;

S4;

End;

S5

End;

Оператор REPEAT располагается так:

Repeat

S1;

S2;

….

Sn;

Until B;

Оператор FOR располагается следующим образом:

For i:=A1 to A2 DO A1,A2- выражения

S1;

4. Оператор выбора

CASE C OF

A1: S1;

A2: S2;

……..

An: Sn;

End;

5. Оператор WITH

with k DO

S1; k - идентификатор поля

6. Служебные (зарезервированные) слова PROGRAM, LABEL, CONST, TYPE, VAR, PROCEDURE ,FUNCTION записываются в самой левой позиции. При использовании вложенных процедур и функций соответствующие им слова PROCEDURE, FUNCTION записываются правее. Соответственно сдвигаются вправо и тела вложенных процедур и функций. Итак, при написании программ вложенную конструкцию рекомендуется располагать правее на 3-5 позиций объемлющей ее конструкции.

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

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

Но могут быть ошибки в форматировании записи, вводящие в заблуждение.

1.11. Концепция типов данных

Язык должен способствовать повышению надежности программ. Поэтому надежности программ отдается предпочтение даже по сравнению с легкостью их написания. Требование описывать все переменные- это явная избыточность в программе, которая, однако, повышает надежность программы.

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

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

Программа, написанная на языке Паскаль, оперирует некоторыми объектами, называемыми данными. Каждый элемент данных в программе является либо константой, либо переменной. Для каждой переменной задается некоторый тип, определяющий как возможные значения переменной, так и операции, которые могут над ней выполняться. Тип переменной задается в разделе переменных. Константа отличается от переменной тем, что ее значение не может изменяться во время выполнения программы и она описывается в разделе констант. Тип константы однозначно определяется ее значением и в явном виде не указывается

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

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5183
Авторов
на СтудИзбе
435
Средний доход
с одного платного файла
Обучение Подробнее