Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Раздел1. Основные принципы алгоритмизации и программированияСтр 1 из 11Следующая ⇒
КОЛЛЕДЖ СВЯЗИ ОСНОВЫ ПРОГРАММИРОВАНИЯ Часть 1 Учебное пособие
для специальностей: 09.02.03 – Программирование в компьютерных системах
Самара 2015
Составил преподаватель: Игнатов А.С.
Содержание. Пояснительная записка…………………………………………………………….……..3 Раздел1. Основные принципы алгоритмизации и программирования…………….5 Тема 1.1.Основные понятия алгоритмизации………………………………………….….5 Тема 1.2 Алгоритмы………………………………………………………………………....8 Тема 1.3 Языки программирования……………………………………………………......10 Раздел 2. Программирование на языке Pascal…………………………………………12 Тема 2.1 Основные элементы языка Pascal………………………………………………..12 Тема 2.2 Переменные и константы. Типы данных……………………………………..…16 Тема 2.3 Операторы языка: ввода-вывода, условные операторы………………………...23 Тема 2.4 Составной оператор. Операторы цикла. Операторы управления……………...26 Тема 2.5 Одномерные и многомерные массивы. Обработка массивов.............................32 Тема 2.6 Операции со строками……………………………………………………………38 Тема 2.7 Процедуры и функции……………………………………………………………42 Тема 2.8 Файлы……………………………………………………………………………...50 Тема 2.9 Указатели и динамическая память…………………………………………….…58 Тема 2.10 Модули……………………………………………………………………………65 Раздел 3. Программирование на языке С++……………………………………………72 Тема 3.1 Лексика языка С++………………………………………………………………..72 Тема 3.2 Константы и строки………………………………………………………….……77 Тема 3.3 Линейные программы на С++. Программирование ветвлений…….……….….81 Тема 3.4 Программирование циклов. Операторы управления…………………………...85 Тема 3.5 Одномерные и многомерные массивы…………………………………………..89 Тема 3.6 Указатели…………………………………………………………………………..93 Список литературы………………………………………………………………………...99
П ОЯСНИТЕЛЬНАЯ ЗАПИСКА
Дисциплина «Основы программирования» относитьсяв общепрофессиональный цикл для студентов специальности 09.02.03 – «Программирование в компьютерных системах». Рабочая программа для указанного курса составлена в соответствии с требованиями Государственного образовательного стандарта СПО к минимуму содержания и уровню подготовки выпускников данной специальности. Целью изучения дисциплины «Основы программирования» является: · этапы решения задач на компьютере; · типы данных; · базовые конструкции изучаемых языков программирования; · принципы структурного и модульного программирования; · принципы объектно-ориентированного программирования. . Задачи дисциплины: · работать в среде программирования; · реализовывать построенные алгоритмы в виде программ на конкретном языке программирования. Последовательность изучения тем предмета определяется межпредметными связями и призвана обеспечить формирование у студентов навыков и умений комплексного подхода при выборе лучшей математической модели. Методика изучения дисциплины строиться из следующих элементов: - теоретическая часть (лекция, урок); - лабораторно-практические занятия; - самостоятельная работа с книгой и конспектами лекций; - домашние задание; - аудиторная контрольная работа; - консультации. Цель лекции - сообщение новых знаний, систематизация и обобщение накопленных, развитие познавательных и профессиональных интересов. Лабораторно-практические занятия - как обязательный элемент образовательного процесса по данной дисциплине, призван закрепить полученные теоретические знания и обеспечить формирование основных навыков и умений практической работы в области компьютерного моделирования. Они проводятся по мере изучения теоретического материала и выполняются индивидуально каждым студентом. Перечень и содержание лабораторных работ приводиться в содержательной части данной рабочей программы и может быть изменен или дополнен с учетом региональных особенностей и возможностей лабораторной базы учебного заведения.
Изучение дисциплины начинается с теоретического вступления о основных понятиях данной темы, о моделировании в целом. Самостоятельная работа с книгой ставит своей целью - закрепление, углубление, расширение и систематизация знаний, полученных в ходе аудиторных занятий, самостоятельное овладение новым учебным материалом описательного характера, развитие самостоятельного мышления. Домашние задание - выполняется студентами после изучения соответствующих тем программного материала данного курса и является формой промежуточного контроля знаний студентов по дисциплине. Аудиторная контрольная работа - предусмотренная действующим учебным планом и рабочей программой. Это форма итогового контроля знаний и проверки уровня усвоения программного материала изучаемой дисциплины. Она проводиться за счет времени, отведенного на изучение предмета, и рассчитана на 1 час, с использованием современных средств контроля. Формы проведения других видов учебных занятий регламентируются учебным заведением и определяются преподавателем, исходя из содержания программного материала, опыта его работы, материальной базой учебного заведения, характера контингента студентов и специфики специальности. для специальностей: Рабочая программа рассчитана на: Максимальная учебная нагрузка обучающегося 210 часов, в том числе: - обязательная аудиторная учебная нагрузка – 140 часа; в том числе: лабораторные занятия – 70 часа; самостоятельная работа – 70 часов; Итоговая аттестация в форме экзамена После изучения предмета «Основы программирования" студент должен: · иметь представление о роли и месте знаний по дисциплине «Основы программирования»; · знать основные понятия и принципы программирования; · уметь работать с языками программирования- Pascal, C++, Delphi. · уметь разрабатывать алгоритмы и программы для решения практических задач;
Кон. End. Здесь использовано следующее равенство:
Даже не заглядывая в учебник по Паскалю, в данной программе можно все понять. Для этого достаточно знать английский язык. Заголовок программы начинается со слова Program (программа), за которым следует произвольное имя, придуманное программистом (division — деление). Раздел описания переменных начинается со слова Var (variables — переменные), за которым следует список переменных. Тип указывается после двоеточия словом integer — целый. Начало и конец раздела операторов программы отмечаются словами Begin (начало) и End (конец). В конце программы обязательно ставится точка. Ввод исходных данных с клавиатуры производится с помощью процедуры ReadLn (read line — читать строку). На клавиатуре набирают четыре числа, отделяемые друг от друга пробелами, которые отражаются строкой на экране дисплея. После набора чисел нажимают на клавишу ввода. Операторы присваивания в Паскале записываются так же, как в АЯ. Знак умножения — * (звездочка). Вывод результатов на экран дисплея производится с помощью процедуры WriteLn (write line — писать в строку). В рассмотренном примере два целых числа тип выведутся в строчку, курсор на экране перейдет в начало следующей свободной строки и работа программы завершится.
Необходимо строгое соблюдение правил правописания (синтаксиса) программы. В частности, в Паскале однозначно определено назначение знаков пунктуации. Точка с запятой (;) ставится в конце заголовка программы, в конце раздела описания переменных, после каждого оператора. Перед словом End точку с запятой можно не ставить. Запятая (,) является разделителем элементов во всевозможных списках: списке переменных в разделе описания, списке вводимых и выводимых величин. Строгий синтаксис в языке программирования необходим прежде всего для транслятора. Транслятор — это программа, которая исполняется формально. Если, допустим, разделителем в списке перемен- ных должна быть запятая, то любой другой знак будет восприниматься как ошибка. Если точка с запятой является разделителем операторов, то транслятор в качестве оператора воспринимает всю часть текста программы от одной точки с запятой до другой. Если вы забыли поставить этот знак между какими-то двумя операторами, то транслятор будет принимать их за один, что неизбежно приведет к ошибке. Основное назначение синтаксических правил — придать однознач ный смысл языковым конструкциям. Если какая-то конструкция может трактоваться двусмысленно, значит, в ней обязательно содержится ошибка. Лучше не полагаться на интуицию, а выучить правила языка. В дальнейшем мы строго опишем синтаксические правила Паскаля, а пока для получения первоначального представления о языке обратимся еще к нескольким примерам программирования несложных алгоритмов. «Оттранслируем» алгоритм вычисления факториала натурального числа (N \) на Паскале. Из этого примера, во-первых, видно, как записывается на Паскале оператор цикла с предусловием (цикл-пока): While <условие выпог.нения> Do <тело цикла> (while — пока, Do — делать). Если тело цикла содержит последовательность операторов, то говорят, что оно образует составной оператор, в начале и в конце которого надо писать Begin и End. Служебные слова Begin и End часто называют операторными скоб ками, которые объединяют несколько операторов в один составной. Если же тело цикла — один оператор (не составной), то операторных скобок не требуется. Тогда транслятор считает, что тело цикла заканчивается на ближайшем знаке «;». Во-вторых, из примера видно, что в Паскале нет специальных слов для обозначения начала цикла (нц) и конца цикла (кц). На все случаи есть универсальные слова Begin и End.
Рассмотрим еще один примерного уравнения. В этой программе по сравнению с предыдущими появилось много новых элементов. Имя вещественного типа в Паскале —r e a l. Цикл с постусловием (цикл-до) программируется оператором Repeat <тело цикла> Until <условие окончания> (здесь Repeat — повторять, Until — до). Тело цикла может быть как одиночным, так и составным оператором, однако употребления Begin и End не требуется, поскольку сами слова Repeat и Until выполняют роль операторных скобок. Знак не равно в Паскале пишется так: <>, знак больше или равно: >=. Правила записи арифметических выражений мы подробно рассмотрим немного позже. В формулах вычисления корней используется стандартная функция квадратного корня (Vx), которая в Паскале записывается так: sqrt (x). Порядок выполнения операций в выражении определяется скобками и старшинством операций. Старшинство операций такое же, как и в алгебре. Операции одинакового старшинства выполняются в порядке их записи (слева направо). Ветвление в Паскале программируется с помощью условного оператора, который имеет следующую форму: If <условие> Then <оператор 1> Else <оператор 2> (здесь If — если, Then — то, Else — иначе). Операторы 1 и 2 могут быть как простыми, так и составными. Составной оператор следует заключать в операторные скобки Begin и End. Так же, как и в Алгоритмическом языке, возможно использование неполной формы условного оператора: if <условие> then <оператор> Характерной чертой данной программы является использование в тексте комментариев. Комментарий — это любая последовательность символов, заключенных в фигурные скобки {...}. Можно употреблять также следующие ограничители комментариев (*...*). Комментарий не определяет никаких действий программы и является лишь пояснительным текстом. Он может присутствовать в любом месте программы, где можно поставить пробел. Программист пишет комментарии не для компьютера, а для себя. Комментарий придает тексту программы большую ясность. Хорошо откомментированные программы называют самодокументированными. Во многих подобных программах объем комментариев превышает объем вычислительных операторов. Удачное использование комментариев — признак хорошего стиля программирования. Чтобы выполнить программу на ЭВМ, ее нужно ввести в память, оттранслировать и исполнить. Для того чтобы проделать всю эту работу, на компьютере должны быть специальные средства программного обеспечения. На ПК они составляют систему Турбо Паскаль. Алфавит. Алфавит языка состоит из множества символов, включающих в себя буквы, цифры и специальные символы. Латинские буквы: от А до Z (прописные) и от а до z (строчные). Цифры: О, 1, 2, 3, 4, 5, 6, 7, 8, 9. Шестнадцатеричные цифры: О, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, E, F. Специальные символы: + — */ = <>[].,():;{}А@$#. Следующие комбинации специальных символов являются едиными символами (их нельзя разделять пробелами):
:= знак присваивания; <= меньше или равно; >= больше или равно; (* *) ограничители комментариев <> не равно; (используются наряду с { }); (..) эквивалент [ ]. Пробелы — символ пробела (ASCII-32) и все управляющие символы кода ASCII (от 0 до 31). К спецсимволам относятся служебные слова, смысл которых определен однозначно. Служебные слова не могут быть использованы для других целей. С точки зрения языка это единые символы. Вот список служебных слов Турбо Паскаля:
Последние версии языка содержат еще ряд служебных слов, относящихся к работе с объектами и встроенным ассемблером. Идентификаторы. Идентификатором называется символическое имя определенного программного объекта. Такими объектами являются имена констант, переменных, типов данных, процедур и функций, программ. С помощью синтаксической диаграммы идентификатор можно определить, как показано на рис. 3.
Расшифровать это можно так: идентификатор — это любая последовательность букв и цифр, начинающаяся с буквы. В Турбо Паскале к буквам приравнивается также знак подчеркивания. Строчные и прописные буквы в идентификаторах и служебных словах не различаются. Например: max, мах, Мах и тАх — одно и то же имя. Длина идентификатора может быть произвольной, но значащими являются только первые 63 символа. Комментарии. Следующие конструкции представляют собой комментарии и поэтому игнорируются компилятором: {любой текст, не содержащий символ «}» } (* любой текст, не содержащий символы «*)»*) Буквы русского алфавита употребляются только в комментариях, в литерных и текстовых константах. Строка, начинающаяся с символов {$ или (*$, является директивой компилятора. За этими символами следует мнемоника команды компилятора.
Тема 2.2 Переменные и константы. Типы данных. Концепция типов данных является одной из центральных в любом языке программирования. С типом величины связаны три ее свой ства: форма внутреннего представления, множество принимаемых значений и множество допустимых операций. Турбо Паскаль характеризуется большим разнообразием типов данных, отраженном на рис. 4. В стандартном Паскале отсутствует строковый тип. Кроме того, в Турбо Паскале целые и вещественные — это группы типов. В старших версиях Турбо Паскаля существует процедурный тип и тип объект. Каждый тип имеет свой идентификатор. В табл. 2 представлена информация о простых типах данных, определенных в Турбо Паскале. Для вещественных типов в скобках указано количество сохраняемых значащих цифр мантиссы в десятичном представлении числа.
табл. 2
В стандарте Паскаля из вещественных типов определен только тип Real; из целых типов — Integer. Типы Single, Double, Extended употребляются в Паскаль-программах только в том случае, если ПК снабжен сопроцессором «плавающей арифметики» (для процессоров IBM PC, начиная с Intel-80486 и старше, это условие всегда выполняется). Тип данных называется порядковым, если он состоит из счетного количества значений, которые можно пронумеровать. Отсюда следует, что на этом множестве значений существуют понятия «следующий» и «предыдущий». Описание переменных. Для всех переменных величин, используемых в программе, должны быть указаны их типы. Это делается в разделе переменных программы. Структура раздела переменных показана на рис. 5.
Пример раздела переменных программы: Var m,n,k: Integer; х,у,z: Real; Symbol: Char; Константы. Тип константы определяется по контексту, т.е. по форме ее записи в программе. Целые десятичные константы записываются в обычной форме целого числа со знаком или без знака, например 25, -24712, 376. Целые шестнадцатеричные константы записываются с префиксом $. Они должны находиться в диапазоне от $00000000 до SFFFFFFFF. Вещественные константы с фиксированной точкой записываются в обычной форме десятичного числа с дробной частью. Разделитель целой и дробной части — точка, например: 56.346, 0.000055, -345678.0. Вещественные константы с плавающей точкой имеют форму: <мантисса>Е<порядок> Здесь мантисса — целое или вещественное число с фиксированной точкой, порядок — целое число со знаком или без, например 7Е-2 (7-e-2), 12.25Е6 (12,25-106), 1Е-25 (10"25). Символьная константа — любой символ алфавита, заключенный в апострофы, например, 'W, '!', '9'. Логическая константа — одно из двух слов: true, false. Строковая константа — строка символов, заключенная в апострофы, например Turbo Pascal', 'Ответ:', '35-45-79'. Максимальная длина — 255 символов. Константе может быть поставлено в соответствие определенное имя. Назначение имени константе производится в разделе констант программы. Структура раздела констант показана на рис. 6. В дополнение к сказанному заметим, что в Турбо Паскале допустимо употребление типизированных констант. Типизированная константа аналогична переменной, которой задается начальное значение. Причем происходит это на этапе компиляции. Описание типизированной константы приведено на рис. 7. В Турбо Паскале имеется ряд имен, зарезервированных за определенными значениями констант. Ими можно пользоваться без предварительного определения в программе (табл. 3). Таблица 3
Типы пользователя. Один из принципиальных моментов состоит в том, что пользователю разрешается определять свои типы данных. Типы пользователя всегда базируются на стандартных типах данных Паскаля. Для описания типов пользователя в Паскале существует раздел типов, структура которого представлена на рис. 8. Перечисляемый тип (рис. 9) задается непосредственно перечислением всех значений, которые может принимать переменная данного типа. Определенное имя типа затем используется для описания переменных. Например: Type Gaz=(C,0,N, F); Metal=(Fe,Co,Na,Cu, Zn); Var Gl,G2,G3:Gaz; Metl,Met2:Metall; Day:(Sun,Mon,Tue,Wed,Thu,Fri,Sat) Здесь Gaz и Metal — имена перечисляемых типов, которые ставятся в соответствие переменным Gl, G2, G3 и Metl, Met2. Переменной Day назначается перечисляемый тип, которому не присвоено имя. Значения, входящие в перечисляемый тип, являются константами. Действия над ними подчиняются правилам, применимым к константам. Каждое значение в перечисляемом типе занимает в памяти 2 байта. Поэтому число элементов не должно превышать 65535. Перечисляемый тип — упорядоченное множество. Его элементы пронумерованы начиная от 0 в порядке следования в описании. В программе, в которой присутствует данное выше описание, возможен такой фрагмент: if Day=Sun then WriteLn('Ура!Сегодня выходной!'); Интервальный тип (рис. 10) задается как упорядоченное ограниченное подмножество некоторого порядкового типа. Рис. 10 Порядковый номер первой константы не должен превышать номера второй константы в соответствующем базовом типе. При исполнении программы автоматически контролируется принадлежность значений переменной интервального типа установленному диапазону. При выходе из диапазона исполнение программы прерывается. Пример: Type Numbers=l..31; Alf='A'..'Z'; Var Data:Numbers;; Bukva:Alf;
Форматы процедуры Write / — выводится десятичное представление величины /, начиная с позиции расположения курсора: Значение / Оператор Результат 134 Write(I) 134 287 Write(1,1,1) 287287287 1:Р — выводится десятичное представление величины /в крайние правые позиции поля шириной Р: Значение / Оператор Результат 134 Write(I:6) 134 312 Write ((I + I):7) 624 R — в поле шириной 18 символов выводится десятичное представление величины R в формате с плавающей точкой. Если R > 0,0, используется формат _#.##########Е*##. Если R < 0,0, то формат имеет вид _-#.##########Е*##: Значение R Оператор Результат 715.432 Write(R) _7.1543200000Е+02 -1.919Е+01 Write(R) _-1.9190000000Е+01 R: Р — в крайние правые позиции поля шириной Р символов выводится десятичное представление значения R в нормализованном формате с плавающей точкой. Минимальная длина поля вывода для положительных чисел составляет 7 символов, для отрицательных — 8 символов. После точки выводится по крайней мере одна цифра: Значение R Оператор Результат 511.04 Write(R:15) 5.110400000Е+02 46.78 Write(-R:12) -4.67800Е+01 R: P: Q — в крайние правые позиции поля шириной Р символов выводится десятичное представление значения R в формате с фиксированной точкой, причем после десятичной точки выводится Q цифр (0 < Q< 24), представляющих дробную часть числа. Если Q— 0, то ни дробная часть, ни десятичная точка не выводятся. Если Q > 24, то при выводе используется формат с плавающей точкой: Значение R Оператор Результат 511.04 Write(R:8:4) 511.0400 -46.78 Write(R:7:2) _-46.78 Ch: P — в крайнюю правую позицию поля шириной Р выводится значение СИ: Значение СИ Оператор Результат 'X' Write(Ch:3) __ X '!' Write(Ch:2,Ch:4) _!___! S — начиная с позиции курсора выводится значение S: Значение S Оператор Результат 'Day N' Write(S) Day N 'RRDD' Write(S,S) RRDDRRDD S. P — значение S выводится в крайние правые позиции поля шириной Р символов: Значение S Оператор Результат 'Day N' Write(S:10) .__ Day N 'RRDD' Write(S:5,S:5) _RRDD_RRDD В — выводится результат выражения В: true или false, начиная с текущей позиции курсора: Значение В Оператор Результат True Write (В) True False Write(В,Not B) FalseTrue B: P — в крайние правые позиции поля шириной Рсимволов выводится результат булевского выражения: Значение В Оператор Результат True Write(В:6) —True False Write (В: б,Not В: 7) _False____ True
Тема 2.4 Составной оператор. Операторы цикла. Операторы управления. Алгоритмическая структура ветвления программируется в Паскале с помощью условного оператора. Раньше мы его описывали в таком виде: If <условие> Then <оператор 1> Else <оператор 2>; Кроме того, возможно использование неполной формы условного оператора: If <условие> Then <оператор>; Теперь дадим строгое описание условного оператора в форме синтаксической диаграммы (рис. 13). То, что мы раньше называли условием, есть логическое выраже ние, которое вычисляется в первую очередь. Если его значение равно true, то будет выполняться <оператор 1> (после Then), если Рис. 13 false, то <оператор 2> (после Else) для полной формы или сразу следующий оператор после условного для неполной формы (без Else). Пример 1. По длинам трех сторон треугольника а, Ь, с вычислить его площадь. Для решения задачи используется формула Герона у]р(р-а)(р-Ь)(р-с), где р = (а + b + с) /2 — полупериметр треугольника. Исходные данные должны удовлетворять основному соотношению для сторон треугольника: длина каждой стороны должна быть меньше длин двух других сторон. Имея возможность в одном условном операторе записывать достаточно сложные логические выражения, мы можем сразу «отфильтровать» все варианты неверных исходных данных. Program Geron; Var A,B,C,P,S: Real; Begin WriteLn('Введите длины сторон треугольника:'); Write('a='); ReadLn(A) Write Cb='); ReadLn (В) Write('c='); ReadLn(C) If (A>0) And (B>0) And (C>0) And (A+B>C) And (B+OA) And (A+OB) Then Begin P:=(A+B+C)/2; S:=Sqrt(P*(P-A)*(P-B)* (P-C)); WriteLn('Площадь=',S) End Else WriteLn('Неверные исходные данные') End. Теперь рассмотрим синтаксическую диаграмму оператора цикл- пока, или цикл с предусловием (рис. 14). Сначала вычисляется <Логическое выражение > Пока его значение равно t r u e, выполняется <Оператор> — тело цикла. Здесь <Оператор> может быть как простым, так и составным. Пример 2. В следующем фрагменте программы на Паскале вычисляется сумма конечного числа членов гармонического ряда Суммирование прекращается, когда очередное слагаемое становится меньше е или целая переменная /достигает значения Maxint. S:=0; I: = l; While (l/I>=Eps) And (KMaxInt) Do Begin S:=S+1/I; I:=I+1 End; Синтаксическая диаграмма оператора цикл-до, или цикл с постусловием, представлена на рис. 15. Исполнение цикла повторяется до того момента, когда Логическое выражение станет равным true. Предыдущая задача с использованием цикла с постусловием решается так: S:=0; 1:=1; Repeat S:=S+1/I; I:=I+1 Until (1/KEps) Or (I>=MaxInt); Тема 2.4 Составной оператор. Операторы цикла. Операторы управления. Алгоритмическая структура ветвления программируется в Паскале с помощью условного оператора. Раньше мы его описывали в таком виде: If <условие> Then <оператор 1> Else <оператор 2>;
Кроме того, возможно использование неполной формы условного оператора: If <условие> Then <оператор>;
Теперь дадим строгое описание условного оператора в форме синтаксической диаграммы (рис. 16). То, что мы раньше называли условием, есть логическое выражение, которое вычисляется в первую очередь. Если его значение равно true, то будет выполняться <оператор 1> (после Then), если
false, то <оператор 2> (после Else) для полной формы или сразу следующий оператор после условного для неполной формы (без Else). Пример 1. По длинам трех сторон треугольника а, b, с вычислить его площадь. Для решения задачи используется формула Герона
где р = (а + b + с) /2 — полупериметр треугольника. Исходные данные должны удовлетворять основному соотношению для сторон треугольника: длина каждой стороны должна быть меньше длин двух других сторон. Имея возможность в одном условном операторе записывать достаточно сложные логические выражения, мы можем сразу «отфильтровать» все варианты неверных исходных данных. Program Geron; Var A,B,C,P,S: Real; Begin WriteLn('Введите длины сторон треугольника:'); Write ('a='); ReadLn(A) Write('b='); ReadLn(В) Write('c='); ReadLn(С) If (A>0) And (B>0) And (C>0) And (A+B>C) And (B+OA) And (A+OB) Then Begin P:=(A+B+C)/2; S:=Sqrt(P*(P-A)*(P-B)* (P-C)); WriteLn('Площадь=',S) End Else WriteLn('Неверные исходные данные') End. Теперь рассмотрим синтаксическую диаграмму оператора циклока, или цикл с предусловием (рис. 17).
Сначала вычисляется <Логическое выражение Пока его значение равно true, выполняется <Оператор> — тело цикла. Здесь <Оператор> может быть как простым, так и составным. Пример 2. В следующем фрагменте программы на Паскале вычисляется сумма конечного числа членов гармонического ряда Суммирование прекращается, когда очередное слагаемое становится меньше или целая переменная i достигает значения Maxint. S:=0; I:=l; While (l/I>=Eps) And (KMaxInt) Do Begin S:=S+1/I; I:=I+1 End; Синтаксическая диаграмма оператора цикл-до, или цикл с постусловием, представлена на рис. 18.
Исполнение цикла повторяется до того момента, когда <Логическое выражение> станет равным true. Предыдущая задача с использованием цикла с постусловием решается так: S:=0; 1:=1; Repeat S:=S+1/I; I:=I+1 Until (1/I<Eps) Or (I>=MaxInt); Цикл по параметру Рассмотрим следующую простую задачу: требуется вычислить сумму целых чисел от М до N путем прямого суммирования. Здесь M и N — целые числа. Задачу можно сформулировать так Алгоритм и программа решения этой задачи с использованием структуры цикл-пока представлены на рис. 19. А теперь введем новый тип циклической структуры, который будет называться цикл по параметру, или цикл-для. Блок-схема и программа на Паскале для решения рассматриваемой задачи с использованием этой структуры приведены на рис. 20. Здесь целая переменная I последовательно принимает значения в диапазоне от М до N. При каждом значении I выполняется тело цикла. После последнего выполнения цикла при I= N происходит выход из цикла на продолжение алгоритма. Цикл выполняется хотя бы один раз, если M<N, и не выполняется ни разу при М > N.
В программе используется оператор цикла For, синтаксическая диаграмма которого представлена на рис. 21.
1. Вычисляются значения <Выражения 1> и <Выражения 2>. Это делается только один раз при входе в цикл. 2. Параметру цикла присваивается значение <Выражения 1>. 3. Значение параметра цикла сравнивается со значением вы ражения 2>. Если параметр цикла меньше или равен этому значе нию, то выполняется тело цикла, в противном случае выполне ние цикла заканчивается. 4. Значение параметра цикла изменяется на следующее значение в его типе (для целых чисел — увеличивается на единицу); происходит возврат к пункту 3. Оператор цикла For объединяет в себе действия, которые при использовании цикла while выполняют различные операторы: присваивание параметру начального значения, сравнение с ко начнем значением, изменение на следующее. Как известно, результат суммирования целых чисел не зависит от порядка суммирования. Например, в рассматриваемой задаче числа можно складывать и в обратном порядке, т.е. от./V до М (N S М). Для этого можно использовать второй вариант оператора цикла For:
Слово DownTo буквально можно перевести как «вниз до». В таком случае параметр цикла изменяется по убыванию, т.е. при каждом повторении цикла параметр изменяет свое значение на предыдущее (равносильно i:=pred(i)). Тогда ясно, что цикл не выполняется ни разу, если N < М. Работая с оператором For, учитывайте следующие правила: • параметр цикла не может иметь тип Real; • в теле цикла нельзя изменять переменную «параметр цикла»; • при выходе из цикла значение переменной-параметра является неопределенным.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2021-04-05; просмотров: 103; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.103.227 (0.26 с.) |