- Преподавателю
- Информатика
- Текстовый файл по теме Алгоритмизация и программирование
Текстовый файл по теме Алгоритмизация и программирование
Раздел | Информатика |
Класс | 10 класс |
Тип | Другие методич. материалы |
Автор | Василенко И.А. |
Дата | 15.02.2016 |
Формат | doc |
Изображения | Есть |
Информатика, 10-11 класс Василенко И.А.
Основы алгоритмизации
Слово «алгоритм» происходит от algorithmi - латинской формы написания имени великого узбекского математика IX века Мухаммеда Бен Мусса аль-Хорезми, который сформулировал правила выполнения арифметических действий в десятичной системе счисления.
Алгоритм - четкое описание последовательности действий или система формальных правил, приводящих к решению задачи. Каждое действие (указание) называют командой.
Построение алгоритма для решения задачи из какой-либо области требует от человека глубоких знаний в этой области, бывает, как правило, связано с тщательным анализом поставленной задачи, сложными, иногда очень громоздкими рассуждениями.
Формальное исполнение алгоритма - означает отвлечение от поставленной задачи и сводится к строгому выполнению команд алгоритма. Исполнителем может выступать человек, станок, машина, программа, ПК и т.п.
Алгоритм можно записать несколькими способами:
-
на естественном языке (задачи на построение в планиметрии);
-
в виде блок-схем (линии соединения не должны пересекаться);
-
на специальном языке (алгоритмическом или программирования).
Пример. Запишем формулу объема куба.
На естественном языке V=. На языке программирования V=4*PI*R*R*R/3.
На языке блок-схем
Блок-схема - графическое изображение структуры алгоритма, в которой каждый этап процесса обработки данных представляется в виде графических символов (блоков) - геометрических фигур, в контуры которых внесено содержание операции.
Форма, размеры блоков, их перечень, наименование, правила выполнения схем определены ГОСТом 19.701-90.
Свойства алгоритма:
-
дискретность - преобразование исходных данных в результат осуществляется по времени дискретно;
-
детерминированность (определенность) - каждое правило алгоритма должно быть четким, однозначным и не оставлять место для произвола.
-
Конечность (результативность) - алгоритм должен приводить к решению задачи за конечное и разумное число шагов;
-
Массовость - алгоритм разрабатывается в общем виде, то есть он должен быть применим для некоторого класса задач, различающихся лишь исходными данными.
С помощью компьютера решаются только те задачи, автоматизируются только те виды деятельности человека, для выполнения которых разработаны (или могут быть разработаны) алгоритмы.
Программа - это алгоритм, записанный на алгоритмическом языке.
Задачи для самостоятельного решения по теме: «Основы алгоритмизации»
-
Имеются два кувшина емкостью 3 л и 8 л. Напишите алгоритм, выполняя который можно набрать из реки 7 л воды (разрешается пользоваться только этими кувшинами). Решение оформить в виде трассировочной таблицы. -2 б.
-
Некий человек должен перевезти через реку волка, козу и капусту. Каждый раз он может перевезти только либо волка, либо козу, либо капусту. На одном берегу нельзя оставить вместе козу и волка, а также козу и капусту. Составьте алгоритм переправы на другой берег. - 1 б.
-
Дозор в составе двух человек подошел к реке. Мост разрушен, а река слишком глубока и широка, чтобы переправиться через нее вброд или вплавь. Около берега в маленькой лодке проплывали два мальчика. Как переправиться на этой лодке через реку, если она может выдержать только либо одного взрослого, либо двух мальчиков? - 3 б.
-
На полустанке одноколейной железной дороги остановился поезд в составе тепловоза и пяти вагонов. На этом полустанке имеется небольшой тупик, в котором может поместиться тепловоз с двумя вагонами или три вагона. Следом за поездом к этому же полустанку подошел пассажирский поезд. Составьте алгоритм, позволяющий пропустить пассажирский поезд.
-4 б.
-
После занятий 4 студента решали и отлаживали задачи на ПК. Первый полностью отладил задачу за N минут (число вводится), все последующие тратили времени на 10 минут больше предыдущего. Сколько компьютерного времени им понадобилось? - 1 б.
-
Заколдованный принц нашел 4 волшебных палочки, длины их a, b, c и d. Чтобы расколдоваться, ему нужно из них построить «волшебный треугольник» с наибольшим периметром, затем встать внутрь этого треугольника. Определить, из каких волшебных палочек построен данный треугольник, а также найти его периметр. Если расколдоваться не удастся, то нужно напечатать сообщение об этом. - 2 б.
-
Хакер взламывал пароль банковской сети. Ему нужно найти число, равное
И ввести первые восемь цифр, стоящие в этом числе после запятой. Найти эти цифры. 3 б.
-
Одинокий путник. На пути у одинокого путника, идущего в глубоком тумане по экрану монитора, встречается препятствие, стенки которого параллельны краям монитора. Вам требуется найти способ определения формы препятствия. Путешественник не ориентируется в пространстве, у него нет карты, и он не может запоминать точки, в которых он был, но он знает, где у него правая рука, а где левая.
Особенности задачи.
А. Путник не может использовать свои координаты. Таким образом, для принятия решения о том, обошёл ли он всё препятствие, путник может использовать только типы пройденных стенок. Всего типов стенок 4.
Б. Под формой препятствия подразумевается последовательность типов стенок препятствия. - 5б.
-
*Восемь монет выложены в ряд:
Необходимо собрать их в две группы по 4 штуки в каждой группе (в которой монеты, например, лежат одна на другой), перекладывая за каждый ход одну монету. При этом перекладываемую монету можно соединять лишь с монетой, отделенной от неё ровно двумя монетами (разрозненными или объединенными в группу). -8б.
-
Опишите правила перехода улицы на нерегулируемом перекрестке (на пешеходном переходе нет светофора). - 3б.
-
Даны два натуральных числа А=anan-1…a1a0, B=bmbm-1…b1b0. Составьте алгоритм сложения в столбик двух натуральных чисел. Предполагается, что операция сравнения двух натуральных чисел для человека является выполнимой. - 3б.
-
Два встречных поезда, в каждом из которых паровоз и 21 вагон, встретились на дороге с одним тупиком
Тупик вмещает 11 вагонов или 10 вагонов и паровоз. Как поездам разъехаться (т.е. как должны маневрировать машинисты, чтобы каждый поезд продолжал движение в своем направлении)? Постройте систему команд исполнителя «Диспетчер». Запишите последовательность команд, которая позволит поездам разъехаться. - 3б.
13. Есть двое песочных часов: на 3 минуты и на 8 минут. Для приготовления эликсира бессмертия его необходимо варить ровно 7 минут. Как это сделать? Придумайте систему команд исполнителя «Колдун». Запишите последовательность команд этого исполнителя для приготовления эликсира. - 3б.
Темы для рефератов
-
Методы разработки алгоритмов [3].
-
Метод частных целей.
-
Метод подъема.
-
Программирование с отходом назад.
-
Алгоритмы ветвей и границ.
-
-
Жизненный цикл программного обеспечения [3].
-
Создание программного продукта [1].
-
Методология проектирования программных продуктов.
-
Структурное проектирование и программирование.
-
Объектно-ориентированное программирование.
-
-
Реляционные языки манипулирования данными [1, 4].
-
Абстрактная машина Поста [2, 3].
-
Машина Тьюринга [2, 3].
-
Нормальные алгоритмы Маркова [2, 3].
-
Рекурсивные функции [2, 3].
Контрольные вопросы
-
Какую последовательность предписаний можно назвать алгоритмом? Приведите примеры алгоритмов.
-
Что понимается под командой алгоритма?
-
Могут ли автоматические устройства быть исполнителями алгоритмов?
-
Какие свойства алгоритмов позволяют человеку автоматизировать их выполнение?
-
Что такое блок-схема?
-
В чем заключается формальность выполнения алгоритма?
-
Что такое программа?
-
Сформулируйте определение метода частных целей?
-
В чем суть программирования с отходом назад?
-
Дайте сравнительную характеристику метода подъема и метода частных целей разработки алгоритмов.
-
Что такое ветви и границы в алгоритмах ветвей и границ?
-
Перечислите способы повышения эффективности программ.
-
Что означает фраза: «Машины Поста и Тьюринга являются абстрактными машинами»?
-
Для чего предназначены машины Поста и Тьюринга?
-
Как «устроена» машина Поста?
-
Перечислите и запишите команды машины Поста.
-
С помощью бумаги, карандаша и стиральной резинки «исполните» вместо машины Поста программы сложения чисел из текста.
-
Составьте (и проверьте) программу для машины Поста, создающую на ленте копию заданной последовательности меток справа от нее.
-
Пользуясь предыдущей программой, составьте программу умножения чисел для машины Поста.
-
Как «устроена» машина Тьюринга?
-
Каков принцип исполнения программы машиной Тьюринга?
-
Сравните машины Поста и Тьюринга. Укажите различия.
-
Выполните вместо машины Тьюринга примеры программ из текста.
-
Каким образом могут быть обобщена машина Тьюринга?
-
Что такое ассоциативное исчисление?
-
Постройте дедуктивную цепочку от слова «мука» к слову «торт», заменяя каждый раз по одной букве так, чтобы каждый раз получалось слово.
-
Дайте определение нормального алгоритма Маркова.
-
В чем состоит принцип нормализации алгоритмов?
-
Охарактеризуйте способы композиции нормальных алгоритмов.
-
Как алгоритм может быть связан с рекурсивной функцией?
-
Дайте определения частичной, полувычислимой и вычислимой функции.
-
В чем состоит тезис Черча в слабейшей и в обычной формах?
-
Перечислите простейшие функции.
-
Перечислите элементарные операции.
-
Чем отличается рекурсивная функция от примитивно-рекурсивной?
-
Дайте определение частично-рекурсивной функции.
-
Что называется массовой проблемой? Что означает алгоритмическая разрешимость массовой проблемы?
Основы программирования
Классификация языков программирования
Замечание. Процедурные языки ориентированы на машинное мышление. А программа на языке логического программирования Пролог не является алгоритмом, а представляет собой запись условия задачи на языке формальной логики.
Язык программирования Pascal
-
Введение в язык программирования Турбо Паскаль 7.0
-
Первая версия языка программирования Паскаль была разработана на кафедре информатики Стэнфордского университета швейцарским ученым Никлаусом Виртом в 1968 году. Признание программистов и простых пользователей пришло вследствие появления языка программирования Турбо Паскаль (ТП) - диалекта языка, созданного американской фирмой Борланд. Эта фирма объединила очень быстрый компилятор с редактором текста и добавила к стандартному Паскалю мощное расширение.
-
Характеристика Турбо Паскаль 7.0:
-
многооконный режим работы;
-
возможность использования мыши;
-
возможность использования при написании программ языка программирования низкого уровня Ассемблер;
-
возможность создавать объектно-ориентированные программы;
-
возможность выделять определенным цветом различные элементы исходного текста (зарезервированные слова, идентификаторы, числа и др., что упрощает правку программы);
-
-
Лингвистическая концепция языка Паскаль (основные принципы):
-
Структурное программирование, то есть оформление последовательностей команд как замкнутых функций или процедур, объединение данных, связанных по смыслу, в сложные структуры (поэтому повышается наглядность текста и упрощается его отладка).
-
Проектирование сверху вниз, то есть программист разбивает свою задачу на несколько более простых, после чего каждая из задач решается по отдельности, а затем компонуются результаты проектирования простых задач и решается задача проектирования сверху вниз в целом.
-
Объектно-ориентированное программирование, то есть данные объединяются со свойственными им операциями обработки в некоторые объекты (инкапсулируются), при этом свойства одних объектов могут передаваться другим (переносится на другие классы объектов), имеет место явление полиморфизма.
-
-
Структурное программирование1 - процесс обработки алгоритмов с помощью структурных блок-схем.
Программирование сверху вниз1 - это процесс пошагового разбиения алгоритма на все более мелкие части с целью получения таких элементов, для которых можно написать конкретные команды.
Структурное программирование сверху вниз1 - это процесс программирования сверху вниз, ограниченный использованием структурных блок-схем.
-
Этапы разработки программы на языке Паскаль.
Программирование как процесс создания программы формально состоит из выбора языка программирования и замены элементов блок-схемы алгоритма соответствующими операторами. Текст программы записывается и редактируется как обычный документ. Переводом программы на машинный язык (в последовательность кодовых слов процессора) занимается программа-компилятор. На вход компилятору поступает исходный текст программы, а результатом работы является программа в машинных кодах (объектный модуль). Так как многие программы выполняют одни и те же действия (ввод/вывод, вычисление математических функций и т.п.), поэтому были созданы библиотеки подпрограмм, где алгоритмы этих действий хранятся переведенными на машинный язык. При написании программы требуется указать библиотеку, из которой будет вызываться подпрограмма. Связыванием программы и библиотек занимается программа-компоновщик (редактор связей). Компоновщик производит загрузочный модуль (программу в машинных кодах), полностью готовый к запуску и выполнению.
Процесс программирования на языке высокого уровня Паскаль состоит из следующих действий:
-
ввод и редактирование текста программы;
-
трансляция;
-
отладка.
Для выполнения каждого этапа применяются специальные средства интегрированной среды программирования Паскаль: редактор текста (editor), компилятор (compiler), компоновщик (linker), отладчик (debugger).
Схема этапов разработки программы
-
Интерфейс программы Turbo Pascal 7.0
Для запуска Паскаля щелкните два раза по файлу R:\BP7\BIN\TURBO.EXE
Alt+Enter -распахнуть окно программы на весь экран.
По команде File/New - открывается новый лист (синий, по умолчанию имеет имя NONAME00.PAS), в котором производится набор текста программы.
Чтобы скопировать текст программы или полученные результаты в Ms Word, необходимо воспользоваться системным меню (Изменить/Пометить, выделить мышкой, Изменить/Копировать)
Перед первым запуском программы её сохраняют (имя может состоять не более, чем из 8 латинских символов) File/Save as. Если программа уже была сохранена, но производилось редактирование, то для сохранения подают команду File/Save.
Запуск набранной программы на выполнение осуществляется по команде строки меню RUN или Ctrl+F9. Нажатие клавиш alt="Текстовый файл по теме Алгоритмизация и программирование"+F5 приводит к появлению на экране результатов программы. Пункт меню Output позволяет при отладке программы одновременно видеть и часть программы и результаты вычислений.
-
Правила написания программ на языке Паскаль.
4.1 Главными элементами любой программы являются переменные, константы и операторы. Переменная - это ячейка (или несколько ячеек) оперативной памяти компьютера. Такой ячейке присвоено определенное имя, её содержимое может изменяться в ходе выполнения программы.
Вид информации, содержащейся в ячейке, набор преобразований, которые можно выполнять над этой информацией, и множество допустимых значений определяются типом переменной. Константа отличается от переменной тем, что её значение фиксировано и не может быть изменено в ходе выполнения программы.
Операторы задают те или иные действия, которые должна выполнять программа. Паскаль состоит приблизительно из 80 зарезервированных слов и специальных символов, которые могут использоваться только в качестве имен операторов, названий операций. Алфавит языка составляют буквы лат. Алфавита, цифры и специальные символы (одиночные или пары).
Таблица специальных символов.
:= присваивание переменной (слева от символа) значения выражения (справа от символа)
; разделитель операторов в программе
() скобки для арифметических и логических выражений
: разделитель в описаниях переменных и формате операторов вывода
.. многоточие для списков
+ - / * бинарные операции (не только арифметические)
= логическое равенство, элемент описания констант и типов
<> логическое неравенство
< > отношение "меньше чем" и "больше чем"
<= меньше или равно
>= больше или равно
. конец программы, модуля, десятичная точка в константах вещественного типа
' ограничители константы строкового типа
{} пары скобок для комментариев
(* *)
, разделитель элементов списка
[ ] скобки для ссылки на элемент массива или уазания диапазона значений индекса
В общем случае программа на языке Паскаль может иметь 7 разделов:
-
заголовок программы program
-
описание меток label
-
описание констант const
-
описание типов переменных type
-
описание переменных var
-
описание функций и процедур function/ procedure
-
раздел операторов begin
Операторы отделяются друг от друга точкой с запятой (;), а завершается раздел операторов служебным словом END, после которого в обязательном порядке ставится точка (.).
Таблица «Арифметические операции»
-
операция
Знак операции
Тип аргумента
Тип результата
Сложение
+
Integer, real
Integer, real
Умножение
*
Integer, real
Integer, real
Вычитание
-
Integer, real
Integer, real
Деление
/
Integer, real
real
Целочисленное деление
DIV
integer
integer
Остаток от деления
MOD
integer
integer
Таблица «Элементарные функции»
-
функция
назначение
функция
назначение
ABS(X)
Модуль числа Х
LN(X)
Натуральный логарифм
SQR(X)
Квадрат числа X
SQRT(X)
Корень квадратный
SIN(X)
Синус числа Х
INT(X)
Значение целой части Х
COS(X)
Косинус числа Х
TRUNC(X)
Отбрасывание дробной части Х
ARCTAN(X)
арктангенс
ROUND(x)
Округление Х в сторону ближайшего целого
EXP(X)
Экспонента
FRAC(x)
Значение дробной части Х
Примечание. Выражение 5х+3 запишется так: exp((x+3)*ln(5)).
4.3 Типы переменных.
SHORTINT - короткое целое число со знаком от -128 до 127 занимает 1 байт памяти.
INTEGER - целое число со знаком от -32768 до 32767 занимает 2 байта памяти.
LONGINT - длинное целое число со знаком от -2147483648 до 2147483647 занимает 4 байта памяти.
BYTE - короткое целое число без знака от 0 до 255 занимает 1 байт памяти.
WORD - целое число без знака от 0 до 65535 занимает 2 байта памяти.
SINDLE - вещественное число одинарной точности от 1,5*10-45 до 3,4*1038 занимает 4 байта памяти.
REAL - вещественное число от 2,9*10-39 до 1,7*1038 занимает 6 байт памяти. Может быть с фиксированной точкой и с плавающей запятой. Число не может начинаться или заканчиваться точкой, не может содержать только степень, а показатель степени не может быть дробным и в записи числа не должны использоваться пробелы.
DOUBLE - вещественное число двойной точности от 5,0*10-324 до 1,1*10308 занимает 8 байт памяти.
EXTENDED - вещественное число повышенной точности от 3,4*10-4932 до 3,4 *104932 занимает 10 байт памяти.
COMP - целое число в формате вещественного от -9,2*1018 до 9,2*1018 занимает 8 байт памяти. Этот тип является своеобразным гибридом целого и вещественного типов: с одной стороны, переменные и константы этого типа могут иметь только целые значения (свойство целых типов), с другой стороны этот тип не является, в отличие от целых типов, порядковым (свойство вещественных типов).
BOOLEAN - занимает 1 байт памяти, BYTEBOOL - занимает 1 байт памяти, WORDBOOL - занимает 2 байта памяти, LONGBOOL - занимает 2 байта памяти. Значению FALSE соответствует число 0, а значению TRUE - любое число, отличное от 0.
BOOLEAN - логический тип данных, результат которых равен TRUE (истина) или FALSE (ложь). Свои значения переменные логического типа получают в результате выполнения операций сравнения (<, <=, >, >=, =, <>) или логических операций (NOT, AND, OR, XOR).
BYTEBOOL, WORDBOOL и LONGBOOL введены для обеспечения совместимости с оболочкой Windows.
CHAR - переменные и константы этого типа могут принимать значения из множества символов ASCII кода. Это могут быть любые символы: буквы, цифры, знаки препинания и специальные символы.
STRING и PCHAR - в отличие от других стандартных типов, являются структурированными.
STRING - строка символов с максимальной длинной 255 знаков.
PCHAR - поддерживает формат представления строк, признаком конца которых служит 0 и которые называются ASCIIZ-строками. Такие строки используются в Windows.
POINTER - стандартный указательный тип. Значениями переменных и констант указательного типа являются адреса оперативной памяти, состоящие из адреса сегмента (1 слово = 2 байта) и смещения (1 слово = 2 байта). Адрес сегмента хранится в старшем слове, а смещение - в младшем слове полного адреса. Элементы указательного типа, в отличие от определяемых пользователем указательных типов, могут содержать адрес переменной любого типа.
TEXT - стандартный текстовый тип используется для описания текстовых файлов.
-
Составление линейных программ
В линейных алгоритмических структурах операторы выполняются последовательно друг за другом, при этом используются операторы ввода (readln), вывода (writeln) и присваивания (:=).
Обозначение в блок-схеме
Оператор в программе
WRITELN
READLN
ПРИСВОЕНИЕ (:=)
IF …THEN…ELSE
REPEAT… UNTIL…
WHILE … DO…
FOR …:=… TO… DO
Задача 1 Составьте программу вычисления объема шара.
Листинг программы
P
Program - служебное слово, с которого начинается любая программа. End. - конец программы. END;-конец блока.
Obiom - имя программы (произвольное).
Const - раздел описания постоянных величин.
Var - всегда присутствует в программе раздел описания переменных.
Real - вещественный тип.
Begin - служебное слово раздела операторов.
Write - вывод текста на экран
readln - ввод данных с клавиатуры
writeln - вывод результата на экран и после переход на новую строку
USES CRT- оператор подключает модуль CRT.
CLRSCR - оператор очистки экрана.rogram obiom;
USES CRT;
Const pi=3.14159;
Var r, v: real;
Begin
CLRSCR;
Write('введите радиус круга ');
Readln(r);
V:=4/3*pi*r*sqr(r );
Writeln('объем шара ', v);
End.
Г
1 блок - начало
2 блок - выполнение действий, присвоение
3 блок - вывод на экран сообщения
4 блок - ввод с клавиатуры
5 блок - выполнение действий, присвоение
6 блок - вывод на экран сообщения значения переменной v
7 блок - конец
рафический способ записи алгоритмов - блок-схема. Составим блок- схему к задаче 1.
Задача 2. Составить программу «знакомство» (ввести фамилию и имя, вывести сообщение на экран «Вас зовут …»).
Листинг программы
program z2;
Uses CRT;
Var fam, name:string;
BEGIN
CLRSCR;
writeln('vvedy fam');
readln(fam);
writeln('vvedy name');
readln(name);
writeln('Вас зовут ', fam, ' ',name);
END.
Результаты выполнения программы
vvedy fam
Petrov
vvedy name
Ivan
Вас зовут Petrov Ivan
Задача 3. Составить программу, которая меняет местами первую и последнюю цифры введенного трехзначного числа.
Пусть x - введенное трехзначное число; x1 - полученное трехзначное число; a - число сотен числа х, b - число десятков числа х; c - число единиц числа х.
Число х=а*100 + b*10 + c, тогда число x1=c*100 + b*10 + a.
Листинг программы
program z3;
Uses CRT;
Var x,x1,a,b,c:integer;
BEGIN
CLRSCR;
writeln('vvedy x');
readln(x);
a:=x div 100;
c:=x mod 10;
b:= (x div 10) mod 10;
x1:= c*100 + b*10 + a;
writeln('x1= ', x1);
END.
Результаты выполнения программы
vvedy x
123
x1=321
-
Составление программ с условием
В альтернативе (алгоритм с условием, ветвление) проверяется условие и в зависимости от результатов проверки выполняется то или иное действие.
Краткая форма оператора условия
Полная форма оператора условия
if условие then оператор1;
if условие then оператор1 else оператор2;
Б
лок-схема с условием
Любая встретившаяся часть ELSE соответствует ближайшей к ней «сверху» части THEN условного оператора. Перед ELSE не ставится точка с запятой, так как это один оператор. Если за словами ELSE и THEN необходимо выполнить группу операторов, то тогда используются операторные скобки begin … end, а такая структура называется вложенной:
Begin
If условие then begin
Оператор1;
Оператор2;
…
оператор n
end
else begin
Оператор1;
Оператор2;
…
оператор n
end;
End.
Задача4
Составьте программу для вычисления Y по заданному X. Y=
Program zadanie;
Var x, y: real;
Begin
Writeln('введите x= ');
Readln(x);
If x<=10 then y:=210 else y:=x*x*x;
Writeln('при х= ', х, 'y= ', y);
End.
Задача 5
Найти корни квадратного уравнения ax+ bx + c = 0.
Program uravnenie;
Var a, b,c,d,x1,x2,x : real;
Begin
Writeln('введите коэффициенты a, b, c ');
Readln(a, b, c);
d:=b*b - 4*a*c;
If d>0 then begin
x1:=(-b + sqrt(d))/(2*a);
x2:=(-b - sqrt(d))/(2*a);
Writeln('х1= ', х1, 'x2= ', x2);
End;
else
if d=0 then begin
x:=-b/(2*a);
Writeln('х= ', х);
End;
Else writeln ('уравнение не имеет корней')
End.
Задача 6
Составьте программу вычислений значений функции:
Program zadanie1;
Var x, y: real;
Begin
Writeln('введите x= '); Readln(x);
If x>5 then y:=5*x-7
else begin
if (x>=-3) and (x<=5) then y:=sin(x)+cos(x)
else y:=exp((-1)*x)+LN(x+11);
end;
Writeln('при х= ', х, 'y= ', y); End.
Выделенным шрифтом отмечено описание кусочной функции y(x) при помощи оператора условия if … then … else (используется два оператора условия, а не три, так как непринадлежность х к двум промежуткам автоматически (по логике) означает принадлежность к третьему промежутку и вычисление по третьей формуле).
Аналогично решается задача вычисления значений функции с учетом области определения.
Задача 7 Составить программу, определяющую, принадлежит ли точка с координатами (x, y) пересечению кругов: (x-1)2+y2=4, (x+1)2+y2=4.
Program zadanie1;
Var x, y: real;
Begin
Writeln('введите координаты (x,y) точки через пробел '); Readln(x,y);
If (sqr(x-1)+sqr(y)<=4) and (sqr(x+1)+sqr(y)<=4)
then write ('принадлежит') else write ('не принадлежит');
End.
-
Организация циклов
В языке Паскаль существует три различных оператора цикла: оператор цикла с параметром, оператор цикла с постусловием, оператор цикла с предусловием.
Оператор цикла с параметром
For i := n to m do оператор;
i - параметр цикла( шаг равен 1)
n - начальное значение параметра цикла (n<m)
m - конечное значение параметра цикла
to - до
do - делать
оператор - тело цикла
For i := n to m do begin
Оператор1;
Оператор2;
…
ОператорN;
End;
Если тело цикла состоит из нескольких операторов
For i := n downto m do оператор;
For - для
i - параметр цикла( шаг равен -1)
n - начальное значение параметра цикла (n>m)
m - конечное значение параметра цикла
downto - до
do - делать
оператор - тело цикла
Задача 8 Вычислить S=1+2+3+4+…+N.
Program summa;
Var n, s, i: integer;
Begin
Writeln('введите натуральное число N= ');
Readln(N);
S:=0;
For i:=1 to n do s:=s+i;
Writeln('сумма ', s);
End.
Задача 9 Вычислить
Program summa;
Var n, i: integer;
S: real;
Begin
Writeln('введите натуральное N= ');
Readln(N);
S:=0;
For i:=1 to n do s:=sqrt(2+s);
Writeln('сумма ', s); End.
Задача 10 Вычислить N!
Program faktorial;
Var p,n, i: integer;
Begin
Writeln('введите число N= ');
Readln(N);
p:=1;
For i:=1 to n do p:=p*i;
Writeln('факториал числа ', n, '=', p);
End.
Блок-схема для обозначения оператора цикла с параметром (задача 9).
Оператор цикла с постусловием
(используется, если число повторений заранее неизвестно).
Repeat
Оператор1;
Оператор2;
…
оператор N
until условие
repeat - повторять
Оператор1 …операторN - последовательность операторов внутри цикла (тело цикла)
Until - до
Условие - логическое выражение
Задача 11 Вычислить значение переменной Y, при заданном значении N. Y=.
Program summa;
Var n, i: integer;
y: real;
Begin
Y:=0; I:=1;
Repeat
Y:=y+1/i;
I:=i+1
Until i>n;
Writeln('y= ', y);
End.
Оператор цикла с предусловием
While условие do оператор ;
While - пока
Do - делать
Условие - логическое выражение
Оператор - тело цикла
Задача 12 Подсчитать сумму всех нечетных чисел от 101 до 301
Program summa;
Var s, i: integer;
Begin
s:=0; I:=101;
While i<=301 do
Begin
S:=s+I;
I:=i+2;
End;
Writeln('сумма трехзначных нечетных= ', s);
End.
Блок-схемы для описания операторов цикла с предусловием и постусловием.
-
Логические выражения в алгоритмах и программах
Часто при решении задач переменные связаны отношениями: =, ≠, ≤, ≥. Если условие выполняется, то говорят, что соответствующее выражение истинно (логическая единица), если не выполняется - выражение ложно (логический ноль). Речь идет о логическом выражении. Для построения сложных условий в Паскале имеются логические операции and (и), or (или), not (не).
Построим таблицы истинности для этих операций.
X
Y
X and Y
X or Y
X
notX
0
0
0
0
0
1
0
1
0
1
1
0
1
0
0
1
1
1
1
1
Пример. Пусть требуется определить принадлежит ли точка х отрезку [a,b]. Это условие в математике записывается в виде двойного неравенства a≤x≤b. В Паскале двойное неравенство записывается с помощью логических операций: (x>=a) and (x<=b). Если точка не принадлежит отрезку, то запись будет следующий вид иметь: not((x>=a) and (x<=b)) или (x<a) or (x>b).
Примечание. Отношения, между которыми стоит логическая операция, заключаются в скобки.
-
Задачи табулирования функций.
Задача 13 Составить программу табулирования функции y(x)=x2 -1 на отрезке [a; b] с шагом h, использую три варианта организации цикла.
Цикл с параметром
Листинг программы
Полученные результаты
program z11;
Uses CRT;
Var x,y,a,b,h:real;
k:integer;
BEGIN
CLRSCR;
writeln('vvedy a, b, h');
readln(a,b,h);
x:=a;
k:=trunc((b-a)/h+1);
for k:=1 to k
do begin
y:=x*x-1; x:=x+h;
writeln('k=', k, ' ','y(',x:5:3,')=',y:5:3); end;
END.
vvedy a, b, h
-2 2 0.5
k=1 y(-1.500)=3.000
k=2 y(-1.000)=1.250
k=3 y(-0.500)=0.000
k=4 y(0.000)=-0.750
k=5 y(0.500)=-1.000
k=6 y(1.000)=-0.750
k=7 y(1.500)=0.000
k=8 y(2.000)=1.250
k=9 y(2.500)=3.000
Цикл с постусловием
program z11;
Uses CRT;
Var x,y,a,b,h:real;
k:integer;
BEGIN
CLRSCR;
writeln('vvedy a, b, h');
readln(a,b,h);
x:=a; k:=0;
repeat
y:=x*x-1; x:=x+h; k:=k+1;
writeln('k=', k, ' ','y(',x:5:3,')=',y:5:3);
until x>b;
END.
vvedy a, b, h
-2 2 0.5
k=1 y(-1.500)=3.000
k=2 y(-1.000)=1.250
k=3 y(-0.500)=0.000
k=4 y(0.000)=-0.750
k=5 y(0.500)=-1.000
k=6 y(1.000)=-0.750
k=7 y(1.500)=0.000
k=8 y(2.000)=1.250
k=9 y(2.500)=3.000
Цикл с предусловием
program z11;
Uses CRT;
Var x,y,a,b,h:real;
k:integer;
BEGIN
CLRSCR;
writeln('vvedy a, b, h');
readln(a,b,h);
x:=a; k:=1;
while x<=b do begin
y:=x*x-1;
writeln('k=', k, ' ','y(',x:5:3,')=',y:5:3);
x:=x+h; k:=k+1; end;
END.
vvedy a, b, h
-2 2 0.5
k=1 y(-2.000)=3.000
k=2 y(-1.500)=1.250
k=3 y(-1.000)=0.000
k=4 y(-0.500)=-0.750
k=5 y(0.000)=-1.000
k=6 y(0.500)=-0.750
k=7 y(1.000)=0.000
k=8 y(1.500)=1.250
k=9 y(2.000)=3.000
Задача 14
Составьте программу вычисления значений функции y на отрезке [a, b] c шагом h.
Учитывая область определения данной функции a=-10, переменная b будет пробегать все значения правее 5, а значение h задается произвольно (от значения переменной h зависит количество вычислений функции в цикле).
program z_1;
uses CRT;
var a,b,x,y,h,: real;
i: integer;
BEGIN
clrscr;
a:=-10;
writeln('vvedite b, h');
readln(b,h);
k:=trunc((b-a)/h+1);
x:=a;
writeln(' Таблица значений функции');
writeln(' x',' y');
for i:=1 to k do begin
If x>5 then y:=5*x-7
else begin
if (x>=-3) and (x<=5) then y:=sin(x)+cos(x)
else y:=exp((-1)*x)+LN(x+11);
end;
writeln(x:8:2,y:8:2);
x:=x+h;
end;
readln;
END.
Обобщением оператора условия является оператор выбора (Case ключ выбора OF список варианта Else оператор end;), который по ключу выбора выбирает вариант.
Для Паскаля созданы библиотеки стандартных модулей, которые расширяют возможности пользовательской учебной программы и каждый модуль - это законченная программа со своими функциями. Для подключения модуля используется оператор USES, который размещается сразу после заголовка программы. Модуль CRT управляет режимами экрана, цвета, окна и звуковых сигналов. Программы без модуля CRT выводят информацию с помощью средств ОС MS-DOS, что связано с дополнительными операциями и замедляют вывод. При использовании этого модуля выводимая информация посылается в BIOS или, для ещё большего ускорения операций, непосредственно в видеопамять. Подключение модуля CRT дает возможность использовать в программе функцию очистки экрана CLRSCR (после каждой загрузки программы экран будет очищаться, курсор будет расположен в верхнем левом углу).
Контрольные вопросы и задания
-
Какие операторы используются при составлении линейных программ?
-
Как записывается оператор условия? Какие две формы этого оператора существуют?
-
Как обозначается вложение в операторе условия?
-
Цикл? Разновидности циклической структуры?
-
Тело цикла?
-
Операторы цикла с постусловием.
-
Операторы цикла с предусловием.
-
Операторы цикла- пересчет.
-
Особенности цикла ПОКА.
-
Сколько раз выполнится оператор цикла repeat, если условие после слова until истинно при входе в цикл.
-
Какие логические выражения используются при написании программ?
Одномерные массивы
Массив - это упорядоченный набор фиксированного количества некоторых однотипных значений. Эта структура представляет собой набор пронумерованных компонентов, причем индивидуальное имя получает только весь набор, а для компонентов этого набора определяется лишь порядок следования и общее их количество.
1
2
3
4
…
N
-10
0
15
0
0
A( i ) - значение i-ого элемента массива A
А - имя массива (латинская буква)
i - номер элемента (от 1 до N)
А
-79.6=
A[1]=-10, A[2]=0, A[3]=15, A[4]=0, A[…]=-79.6, A[N]=0
Формат описания массива
Var имя массива : array [количество] of тип компонентов;
имя массива - идентификатор массива
array - массив
количество- количество элементов в массиве
of - для
тип компонентов - описание типа переменных в массиве
Пример
Массив b из 100 элементов.
Var b: array [1..100] of real;
Символьный массив name из 5 элементов, каждый элемент имеет длину строки 10 символов.
Var Name: array [1..5] of string (10);
Задача9 Заполнить массив с клавиатуры А(10) и вывести значение элементов в столбик.
Program z9;
Var a: array [1..10] of real;
i: integer ;
begin
for i:= 1 to 10 do begin
writeln ('ввести', i, '- элемент массива');
readln (a[i]);
writeln ('A(',i,')=', a[i]);
end;
End.
Задача10 Заполнение элементов массива по формуле a[i]:=(sqr(i)+1)/sin(i). Вывод в строку.
Program z10;
Var a: array [1..10] of real;
i: integer ;
begin
for i:= 1 to 10 do begin
a[i]:=(sqr(i)+1)/sin(i);
write ('A(',i,')=', a[i]);
end;
End.
Задача11 Массив А(10) заполнен с клавиатуры. Найти количество (k) элементов, меньших числа t.
Program z11;
Var a: array [1..10] of real;
i, k : integer ;
t: real;
begin
k:=0;
writeln ('ввести значение переменной t ');
readln (t);
for i:= 1 to 10 do begin
writeln ('ввести', i, '- элемент массива');
readln (a[i]);
if a[i]
end;
writeln ('A(',i,')=', a[i]);
End.
Задача12 Дан массив А(10). Найти сумму положительных элементов.
Program z12;
Var a: array [1..10] of real;
i: integer ;
s: real;
begin
s:=0;
for i:= 1 to 10 do begin
writeln ('ввести', i, '- элемент массива');
readln (a[i]);
if a[i]>0 then s:=s+a[i];
end;
writeln ('сумма положительных элементов=', s);
End.
Задача13 Дан массив А(30), заполненный датчиком случайных чисел (датчик случайных чисел randomize). Найти минимальный и максимальный элемент массива.
Program z13;
Var a: array [1..30] of integer;
i, min, max: integer ;
begin
randomize;
for i:= 1 to 30 do begin
a[i]:= random(50);
writeln ('значение', i, 'элемента массива', a[i]);
end;
min:=a[1];
max:=a[1];
for i:= 1 to 30 do begin
if a[i]
if a[i]>max then max:=a[i];
end;
writeln ('max=', max, 'min=', min);
End.
Задача14 Дан массив А(20), заполненный датчиком случайных чисел. Отсортировать данный массив по возрастанию элементов.
Program z14;
Const n=20;
Var a: array [1..n] of real;
i, j, n: integer ;
x: real;
begin
randomize;
for i:= 1 to n do begin
a[i]:= random(50);
writeln ('значение', i, 'элемента массива', a[i]);
end;
for j:= n-1 downto 1 do
for i:= 1 to j do
if a[i]>a[i+1] then begin
x:=a[i];
a[i]:=a[i+1];
a[i+1]:=x;
end;
for i:= 1 to n do
writeln ('a(',i,)=', a[i]);
End.
Примечание. Часто массив формируется при помощи датчика случайных чисел:
…
Randomiz;
For i:=1 to k do begin
Y[i]:=Random; {для задания массива Y, для которого значения элементов берутся случайным образом из отрезка от 0 до 1, то есть 0≤y[i]≤1}
G[i]:=Random(100); {для задания массива G, для которого значения элементов берутся случайным образом из отрезка от 0 до 1, то есть 0≤g[i] ≤100}
End;
…
Примечание. Блок ввода, вывода, обработки элементов одномерного массива осуществляется при помощи цикла с параметром (параметр позволяет перебирать все элементы массива).
Примечание. Описание массива может быть выполнено и через введение типа данных пользователя:
-
Type наименование типа = array[диапазон индекса] of тип компонента;
Var имя массива: наименование типа;
Пример. Описание числового вещественного массива F (10) через введение пользовательского типа данных.
…
Type mass=array[1..10 of real];
Var F:mass;
…
Алгоритм нахождения наибольшего (наименьшего) элемента массива
Трудность при разработке алгоритма решения заключается в том, что надо записать в виде команд компьютеру привычные для человека действия: выделение большего (меньшего) из последовательности чисел. Чтобы лучше представить себе, как последовательно просматривать и сравнивать между собой числа, записанные в памяти, вообразим, что каждое значение элемента массива- это вес арбуза. Берем первый арбуз, полагаем, что он имеет наибольший вес и кладем его на чашу весов с надписью max. Затем берем второй арбуз и кладем его на вторую чашу весов. Если его масса оказалась больше массы «max арбуза», то первый арбуз откладываем в сторону, а второй арбуз перекладываем на чашу весов с надписью max. Так перебираем все арбузы (все элементы массива). В результате на чаше весов с надписью max оказывается самый большой по весу арбуз. Промежуточное значение и ответ содержит переменная max.
Упорядочение массива по возрастанию (убыванию)
«Метод пузырька»
Пусть имеется числовой массив А(n), элементы которого необходимо упорядочить по возрастанию. Зафиксируем первый элемент и будем последовательно сравнивать его со стоящим справа. Если какой-то из элементов справа окажется меньше первого, то мы поменяем местами этот элемент с первым и продолжим сравнение уже нового элемента, стоящего на первом месте, с оставшимися справа числами. Если снова выявится элемент, меньший зафиксированного, то повторим перестановку. В результате первого просмотра последовательности на первом месте окажется наименьший из всех элементов, то есть он, как более «легкий», как бы всплывает наверх. Теперь зафиксируем второй элемент и повторим просмотр, выполняя при необходимости перестановки элементов, и т.д.
Чтобы при переборе элементов, стоящих справа от проверяемого, не менялся индекс последнего, индексы фиксируемого и стоящих правее него элементов должны быть различными: i (от 1 до n-1) и j (от i+1 до n). Для каждого значения i индекс j должен последовательно принять все допустимые значения, следовательно, конструкция программы, отражающая полный перебор всех элементов и их упорядочение по возрастанию, представляет собой двойной цикл.
При перестановке двух элементов используется третья переменная (происходит обмен значениями в памяти посредством третьей переменной).
Задача13.1
Составим программу поиска наибольшего элемента одномерного массива FG(6).
Program max_1;
Uses crt;
Const n=6;
Var fg: array[1..n] of real;
Max: real;
I: integer;
BEGIN
clrscr;
For i:=1 to n do begin
Write('fg[',I,']='); Readln(fg[i]);
end;
max:=fg[1];
for i:=2 to n do
if max
write ('max=', max:6:2);
END.
{Название программы}
{Подключение модуля crt}
{Раздел описания констант (6 элементов в массиве FG)}
{Раздел описания переменных}
{Операторные скобки (начинается тело программы)}
{Очистка экрана}
{Начало цикла с параметром i
Блок ввода значений элементов массива fg с клавиатуры
Конец цикла}
{Изначально max:= значение первого элемента}
{Блок обработки: поиск максимального элемента массива fg в цикле с параметром}
{Вывод на экран max значения массива fg}
{конец программы}
Задача 14.1
Составим программу сортировки по возрастанию массива FG(6).
Program sort;
Const n=6;
Var fg: array[1..n] of real;
c: real;
I,j: integer;
BEGIN
For i:=1 to n do begin
Write('fg[',I,']=');
Readln(fg[i]);
end;
For i:=1 to n-1 do
For j:=i+1 to n do
if fg[i] >fg[j]
then begin
c:=fg[i];
fg[i]:= fg[j];
fg[j]:=c;
end;
writeln ('упорядоченный по возрастанию массив');
For i:=1 to n do
Write(fg[i]);
END.
Двумерные массивы (матрицы)
Каждый элемент двумерного массива однозначно задается двумя индексами: номером строки (i) и номером столбца (j). Для элементов с произвольными значениями матрицы А(N, M) имеем:
A= , где i=1, 2, 3, … , N, j=1, 2, 3, …, M
Если i=j, то элементы матрицы находятся на главной диагонали. Если i>j, то элементы матрицы находятся под главной диагональю. Если i<j, то элементы матрицы находятся над главной диагональю.
Если N=M, то матрица называется квадратной, иначе матрица называется прямоугольной.
A(i, j) - значение элемента матрицы А
i - номер строки (всего строк N)
j - номер столбца (всего столбцов M)
A - имя матрицы
Количество элементов в матрице = N*M.
Формат описания массива
-
Var имя массива : array [количество строк, количество столбцов] of тип компонентов;
-
Var имя массива : array [количество строк] of array [количество столбцов] of тип компонентов;
имя массива - идентификатор массива
array - массив
of - для
тип компонентов - описание типа переменных в массиве
Пример Массив b из 4 столбцов и 3 строк.
Var b: array [1..3, 1..4] of real;
или
Var b: array [1..3] of array [1..4] of real;
Целочисленные массивы c и d состоят из 3 столбцов и 3 строк.
Var d,c: array [1..3, 1..3] of integer;
Задача15 Заполнение элементов матрицы с клавиатуры A(10, 10) (организуется два цикла, параметр первого перебирает номера строк, а параметр второго перебирает номера столбцов).
Program z15;
Var a: array [1..10, 1..10] of real;
i, j : integer ;
begin
for i:= 1 to 10 do
for j:= 1 to 10 do begin
readln (a[i, j]);
writeln ( a[i, j]);
end;
End.
Задача16 Заполнение элементов матрицы A(10, 10) по формуле a[i, j]:= (i+0.5)/(j + sin(j)).
Program z16;
Var a: array [1..10, 1..10] of real;
i, j : integer ;
begin
for i:= 1 to 10 do begin
for j:= 1 to 10 do begin
a[i, j]:= (i+0.5)/(j + sin(j));
write ( a[i, j], ' ');
end;
writeln;
end;
End.
Задача17 Заполнение элементов матрицы A(10, 10) случайными числами.
Program z17;
Var a: array [1..10, 1..10] of integer;
i, j : integer ;
begin
randomize;
for i:= 1 to 10 do
for j:= 1 to 10 do begin
a[i, j]:=random (30);
write ( a[i, j]);
end;
End.
Задача18 найти сумму значений всех элементов матрицы A(2, 15), заполненную датчиком случайных чисел.
Program z18;
Var a: array [1..10, 1..10] of integer;
i, j, s : integer ;
begin
s:=0;
randomize;
for i:= 1 to 10 do
for j:= 1 to 10 do begin
a[i, j]:=random (30);
s:=s+ a[i, j]
end;
writeln ( 'Сумма значений =', s);
End.
Задача19 Дана матрица А(10, 20), заполненная датчиком случайных чисел в диапазоне -10 до 19 включительно (a[i, j]:= random(30) -10). Выдать на печать максимальное значение элементов данной матрицы.
Program z19;
Var a: array [1..10, 1..20] of integer;
i, j, max : integer ;
begin
randomize;
for i:= 1 to 10 do
for j:= 1 to 20 do a[i, j]:=random (30)-10;
max:=a[1, 1];
for i:= 1 to 10 do
for j:= 1 to 20 do
if a[i, j]> max then max:=a[i, j];
writeln ( 'максимальное значение=', max);
end;
End.
Задача20 Матрица А(10, 15), заполнена датчиком случайных чисел в диапазоне от 0 до 29 включительно. Найти число положительных значений элементов каждой строки матрицы.
Program z20;
Var a: array [1..10, 1..15] of integer;
i, j, k : integer ;
begin
randomize;
for i:= 1 to 10 do begin
k:=0;
for j:= 1 to 15 do begin
a[i, j]:=random (30);
if a[i, j]>0 then k;=k+1;
end;
writeln ('число положительных значений в строке=', k);
end;
End.
Контрольные вопросы и задания
-
Массив. Примеры массива.
-
Для чего необходимо описание массива?
-
Может ли массив содержать разнородные данные?
-
Алгоритм поиска максимального элемента массива.
-
Алгоритм поиска минимального элемента массива.
-
Алгоритм упорядочения по возрастанию элементов массива.
-
Алгоритм упорядочения элементов массива по убыванию.
-
Какие изменения необходимо внести в программу поиска максимального элемента, чтобы определялся ещё и номер максимального элемента.
-
Как осуществляется ввод, вывод, обработка элементов одномерного массива?
-
Матрица. Примеры матриц.
-
Описание матрицы.
-
Поиск минимального элемента.
-
Сортировка элементов матрицы.
-
Как осуществляется ввод, вывод, обработка элементов двумерного массива?
-
Объясните работу двойного цикла (внешний и внутренний цикл)?
Обработка символьных переменных
Для работы с текстовой информацией используются символьные величины. Они записываются в виде строки, заключенные в кавычки. Большие и маленькие буквы считаются различными символами. Тип данных string (строка). Переменная типа string состоит из цепочки символов, то есть элементов типа Char. Количество символов - это длина символьной величины. Длина символьной величины совпадает с номером последнего символа. Операции со строками: слияние (конкатенация) - объединение двух и более строк с помощью знака +; выделение (вырезание) символов; замена символов в строке. От перемены мест слагаемых сумма меняется для символьных величин.
Для доступа к отдельному символу в строке указывается имя строки и в квадратных скобках номер символа.
Stroka [5] - пятый символ в переменной stroka
Операции над символьными величинами
-
функция
Назначение функции
Chr (x)
Возвращает символ, соответствующий числу Х по таблице ASCII кодов.
Ord (x)
Возвращает число, соответствующее символу Х в таблице ASCII кодов.
Upcase (x)
Преобразует символы (латинские) из строчных букв в прописные.
Pred (x)
Возвращает символ, который предшествует числу Х в таблице ASCII кодов.
Succ (x)
Возвращает символ, который следует за символом Х в таблице ASCII кодов.
-
Описание строковых переменных
Var имя переменной: string [количество символов]
По умолчанию количество символов равно 256 в строке
Стандартные процедуры и функции для строк
функции
Length (имя переменной)
Определяет длину текстовой строки, включая пробелы
Copy(откуда фрагмент, позиция, с которой копируется фрагмент, число копируемых символов)
Позволяет копировать фрагмент некоторой строки из одной переменной в другую
Pos
Поиск определенного фрагмента в строке (возвращает № позиции, с которого этот фрагмент начинается)
процедуры
Insert (stroka1, stroka, 4)
В строку stroka перед 4 позицией вставить строку Stroka1
Delete (stroka1, 2, 3)
Удаляет из строки Stroka1 фрагмент, состоящий из 3-х символов и начинающийся со 2 позиции
Задача21 Совпадает ли первая и последняя буквы в слове Y.
Program z21;
Var y: string [10];
Begin
Writeln('введите слово'); readln(y);
If copy(y, 1, 1)=copy(y, length(y),1) then writeln ('совпадают') else writeln ('не совпадают');
End.
Задача22 Составьте программу утраивающую каждую букву слова Y.
Program z22;
Var x, y: string [30];
i: integer ;
Begin
Writeln('введите слово'); readln(y);
x:=' ';
For i:= 1 to length(y) do
x:=x+ copy(y, i, 1)+copy(y, i,1) + copy(y, i,1);
writeln ('преобразованное слово', x);
End.
Задача23 Составьте программу, вычеркивающую из слова Х русские буквы «а», стоящие на нечетных местах.
Program z22;
Var x, y: string [45];
i: integer ;
Begin
Writeln('введите слово'); readln(x);
Y:=' ';
For i:= 1 to length(x) do
If (copy(x, i, 1)<>'а') or ( i mod 2=0) then y:= y +copy(x, i, 1);
writeln ('преобразованное слово', x);
End.
Задания для самостоятельного решения
-
Составьте программу вычисления площади шара.
-
Составьте программу вычисления значений функции с учетом области определения Y= .
-
Составьте программу вычисления значений функции с Y= .
-
Составьте программу нахождения корней уравнения a*x4 + b*x2-2=0.
-
Составьте программу вычисления значений функции y=+sin(x) на отрезке [-10, -1] с шагом 1.
-
Составьте программу вычисления суммы .
-
Составьте программу подсчета натуральных чисел, не превосходящих 1000, которые при делении на три дают в остатке 2.
-
Составьте программу вычисления остатка от деления нацело натурального числа N на M.
-
Составьте программу, выясняющую, является ли натуральное число Q делителем числа N.
-
Составьте программу, выясняющую, совпадают ли вторая и предпоследняя буквы слова X.
-
Составьте программу удваивающую каждую букву слова X.
-
Составьте программу, вычеркивающую из слова X все буквы «а».
-
Составьте программу, вычеркивающую из слова Х буквы «а», стоящие на четных местах.
-
Составьте программу подсчета числа букв «а» в слове Х.
-
Составьте программу, выясняющую является ли введенное слово русским.
-
Составьте программу вычисления произведения элементов одномерного массива В(К) вещественных чисел.
-
Составьте программу, подсчитывающую число отрицательных элементов массива В(К).
-
Составьте программу поиска минимального элемента массива В(К).
-
Составьте программу, выводящую номера четных элементов массива.
-
Составьте программу генерирования массива В[1..М], состоящего исключительно из положительных элементов одномерного массива А(N) вещественных чисел.
-
Найти произведение элементов, расположенных на главной диагонали матрицы F(N,M).
-
Найти наибольший элемент матрицы F(N,M).
-
Вывести номера отрицательных элементов матрицы F(N,M).
-
Составьте программу вывода элементов одномерного массива А[3..10], если значение каждого вычисляется по формуле: ai:= 3*ai-1 - ai-2, где a1=1, a2=2.
-
Составьте программу подсчета числа элементов матрицы A(N, M) меньших 3.
-
Составить программу, переводящую десятичные числа в двоичную систему счисления.
-
Составить программу, переводящую десятичные числа в восьмеричную систему счисления.
-
Составить программу, переводящую десятичные числа в шестнадцатеричную систему счисления. - 3б.
-
*Дан целочисленный массив А[N]. Проверьте, есть ли в нем элементы, равные нулю. Если есть, найдите номер первого из них, то есть наименьшее I, при котором A[I]=0. - 3 б.
-
*Подсчитайте количество различных чисел, встречающихся в целочисленном массиве A[N]. Повторяющиеся числа учитывайте один раз. - 4 б.
-
*Проверьте, образуют ли элементы двухмерного массива А[N, N] «магический» квадрат (это значит, что суммы чисел во всех его вертикалях, всех горизонталях и двух диагоналях одинаковы). - 4 б.
-
*Составить программу, определяющую количество «счастливых» автобусных билетов (номер билета шестиразрядный). Билет считается счастливым», если сумма трех первых цифр его номера совпадает с суммой трех последних цифр. - 5 б.
-
*В стране имеется N городов, соединенных авиационным сообщением. Стоимость билета из I-го города в J-й записана в массиве A[N, N]. Составьте алгоритм, находящий стоимость перелета из I-го города в J-й по самому дешевому маршруту (возможно с пересадками). - 5 б.
-
*Написать все предложения, которые можно составить из слов «Ваши прекрасные глаза», «прекрасная маркиза», «от любви», «сулят», «мне», «смерть» путем их всевозможных перестановок (данная ситуация обыгрывается в пьесе Мольера «Мещанин во дворянстве»).
- 5 б.
Примечание Ко всем заданиям следует составить блок - схему, написать (и отладить) программу на языке программирования.
Основная литература
-
Информатика. Учебник.-3-е перераб.изд./Под ред. Н.В. Макаровой.-М.:Финансы и статистика, 2004
-
Могилев А.В. и др. Практикум по информатике: Учеб пособие для студ. высш. учеб. заведений. - М.: «Академия», 2002
-
Могилев А.В.
-
Советов Б.Я. Базы данных: теория и практика: учебник для вузов/ Б.Я. Советов, В.В. Цехановский, В.Д. Чертовской. - М.: Высш. шк., 2005
-
Острейковский В.А. Информатика: Учеб. Для вузов.-М.:Высш.шк., 2000
-
Турбо Паскаль 7.0 - К.: Торгово-издательское бюро BHV, 1996
-
Фигурнов В.Э. IBM PC для пользователя. Краткий курс. - М.:ИНФРА-М, 1997
Дополнительная литература
-
Кузнецов А.А., Апатова Н.В. Основы информатики. 8-9 кл.: Учеб. для общеобразоват. учеб. заведений. - М.: Дрофа, 2001
-
Семакин И.Г. Информатика. Базовый курс. 7-9 классы. - М.: Лаборатория знаний, 2002
Сетевые ресурсы
http:/fizmat.vspu.ru/pascal/common.html - учебное пособие по языку Паскаль.
alleng.ru/edu/comp1.html - учебник Могилева А.В. И др. Информатика.
softportal.com/software-2409-borland-turbo-pascal.html-Pascal7.0{скачать ... с других серверов}
1 Острейковский В.А. Информатика: Учеб. Для вузов.-М.: Высш. Шк., 2000
30