- •Материалы по информатике для 10 класса «Программирование»
- •Алгоритм и его свойства
- •Алгоритмы работы с величинами
- •Программирование на языке Паскаль
- •Первая программа
- •1.Общий вид программы.
- •3. Пояснения к программе.
- •4. Запуск программы.
- •Т ипы данных
- •Вещественные типы
- •Символьный тип
- •Логический (булевский) тип
- •Арифметические операции
- •Возведение положительного числа в вещественную степень
- •Программирование ветвящихся алгоритмов
- •Неполная форма условного оператора:
- •Логические операции
- •Пример Составить программу, по которой выведется значение true, если точка с заданными координатами (х, у) лежит внутри заштрихованной области (рис. 1), и false – в противном случае.
- •Решение
- •Оператор выбора
- •Программирование циклических алгоритмов
- •Задачи целочисленной арифметики
- •Структурное программирование. Подпрограммы.
- •Локализация имен.
- •Обработка строковых величин
- •Работа с массивами
Задачи целочисленной арифметики
Пример: Дано целое число. Определить, совпадают ли первая и последняя цифра данного целого числа
Решение Последнюю цифру числа можно сразу определить как остаток от деления данного числа на 10. А вот первую мы будем определять, последовательно отбрасывая цифры путем деления на 10 до тех пор, пока не останется одна цифра. Это и будет первая цифра данного числа.
{последняя цифра}
{тело цикла}
{условие выхода из цикла}
Var N,R : longint;
BEGIN
Write('Введите целое число'); readln( N);
R:= N mod 10;
Repeat
N:=N div 10
Until N < 10;
If R=N then writeln('совпадают') else writeln('не совпадают');
Readln;
END.
Подсчитать сумму и количество цифр данного натурального числа
Сообщить, есть ли в данном натуральном числе N цифра A.
Подсчитать количество нечетных натуральных чисел, принадлежащих интервалу ( a , b ), у которых количество четных цифр равно заданному числу.
Подсчитать количество чисел Фибоначчи, принадлежащих интервалу [ a , b ), в которых младшая цифра кратна заданной
Подсчитать количество четных натуральных чисел, принадлежащих интервалу [ a , b ), у которых количество четных цифр больше количества нечетных цифр
Подсчитать количество натуральных чисел, принадлежащих отрезку [ a , b ], в записи которых нечетные цифры отсутствуют.
Подсчитать количество n-значных натуральных чисел, в которых сумма цифр нечетная, а младшая цифра – четная
Подсчитать количество двузначных и трехзначных натуральных чисел, в которых сумма цифр четная и кратна младшей цифре.
Определить, есть ли среди простых чисел из интервала [ a , b ), такие, в которых младшая цифра больше старшей цифры.
Структурное программирование. Подпрограммы.
Структурное программирование подразумевает разбиение большой задачи на отдельные, логически законченные части и написание подпрограмм, реализующих каждую часть задачи. Каждая такая часть программы получает свое имя. Тогда всю большую программу мы можем написать, вызывая по именам отдельные ее части в нужной нам последовательности.
Для пояснения вышесказанного проведем аналогию, например, в кулинарии: Если мы собираемся испечь торт “Наполеон”, мы возьмем кулинарную книгу и посмотрим рецепт, который гласит, что нужно приготовить 300 г. слоеного теста, испечь из него 6 Вычислить значение функции коржей. Затем приготовить 200 г. заварного крема и смазать им коржи. Эта сложная задача имеет команды: приготовить слоеное тесто и приготовить заварной крем. В рецепте они подробно не описаны. Видимо, мы откроем раздел, где описано приготовление различного рода теста и посмотрим, как приготовить слоеное тесто. Затем в разделе “Кремы” посмотрим как приготовить заварной крем. Очевидно, что заварной крем может использоваться и в других рецептах, например, для изготовления заварных пирожных, возможно, что лишь количество его будет другим. Также и слоеное тесто. Очевидно, что было бы просто нерационально каждый раз, где потребуется в рецептах такой крем, заново описывать его приготовление- объем кулинарной книги неоправданно бы возрос.
Возвращаясь к программированию, можно сказать, что структурированная задача имеет следующие достоинства:
легче читается- становится понятней
легче отлаживается (отдельными подпрограммами)- сокращается вероятность ошибок
одну и ту же подпрограмму можно вызывать в программе многократно. (сокращается объем текста программы)
одну задачу могут разрабатывать несколько программистов одновременно (при не использовании глобальных величин)
Последнее пока непонятно, т.к. с глобальными и локальными величинами мы познакомимся позднее.
В Паскале данный механизм структурирования задач реализуется при помощи процедур и функций.
Процедура- это какая-то последовательность команд, снабженная именем и вызываемая при помощи этого имени. Процедура обычно реализует логически законченную подзадачу. Процедура должна быть описана в описательной части программы следующим образом:
procedure <имя процедуры> [(список формальных параметров)]; -{ заголовок
обязателен в отличие от
заголовка программы}
<раздел описаний > {здесь- описаны локальные величины}
Begin
<операторы> { исполняемая часть процедуры}
Еnd;
Вызывается процедура по имени в исполняемой части программы, как и любая команда Паскаля.
Процедура призвана решить какую-то небольшую задачу. В любой задаче есть результат решения, который должен после отработки процедуры быть сохранен в переменной. В задаче могут быть исходные данные (переменные или константы).
И исходные данные и результат должны быть занесены в список параметров процедуры. Параметры процедуры различаются:
Формальные
в описательной части программы
следуют за заголовком процедуры
п еречислены имена переменных с указанием типов
з адают шаблон для фактических
Фактические параметры
в исполняемой части программы
следуют за именем процедуры
перечислены только имена без указания типа
заполняют шаблон конкретными значениями
Решим задачу с использованием процедуры.
Пример Даны длины сторон двух треугольников. Определить, какой треугольник имеет большую площадь.
Решение Очевидно, что в данной задаче после ввода исходных данных необходимо будет дважды выполнять одни и те же действия: вычислять площадь треугольника (по Формуле Герона). Оформим данный алгоритм в виде подпрограммы. Тогда можно будет просто дважды вызвать эту подпрограмму по имени, указав в качестве параметров каждый раз длины сторон одного из треугольников.
Var
S1, S2: real; {площади двух треугольников}
a1,b1,c1,a2,b2,c2: real; {величины сторон}
procedure pl (a,b,c:real; var s:real);
var p:real;
begin
(p:=a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
end;
BEGIN
Write('Введите длины сторон первого треугольника ');readln(a1,b1,c1);
Write('Введите длины сторон второго треугольника ');readln(a2,b2,c2);
Pl(a1,b1,c1,s1);
Pl(a2,b2,c2,s2);
If s1>s2 then writeln('площадь первого треугольника больше')
else
if s2>s1 then writeln('площадь второго треугольника больше')
else writeln ('треугольники равновелики');
END.
Использование параметров делает подпрограмму универсальной. Именно использование параметров позволило получить разный результат работы одной и той же подпрограммы (площадь) при разных исходных данных (длины сторон). Исходные данные подпрограммы передаются по значению-параметры- значения (в списке формальных параметров указываются без слова var перед именами переменных). Результат работы процедуры передается по ссылке- параметры-переменные (в списке формальных параметров перед именами переменных пишется слово var)
При вызове процедуры в программе формальные параметры заменяются фактическими, причем параметры-значения могут заменяться как переменными, так и произвольными выражениями (как частный случай числами), параметры- переменные могут заменяться при вызове только переменными соответствующего типа. Фактические и формальные параметры должны совпадать по количеству, порядку следования и типу.