К.Ю. Поляков, Е.А. Ерёмин, 2013 Программирование на языке Паскаль § 59. Процедуры 1.

Презентация:



Advertisements
Похожие презентации
1 Программирование на языке Паскаль Тема 13. Функции © К.Ю. Поляков,
Advertisements

1 Программирование на языке Паскаль Функции Кулебякин В.В.
1 Программирование на языке Паскаль © К.Ю. Поляков, ВведениеВведение 2.ВетвленияВетвления 3.Сложные условияСложные условия 4.ЦиклыЦиклы 5.Циклы.
Программирование на языке Паскаль Тема 13. Процедуры Тема 14. Функции.
К.Ю. Поляков, Е.А. Ерёмин, 2013 Программирование на языке Паскаль § 58. Циклические алгоритмы 1.
1 Программирование на языке Паскаль Процедуры. 2 Подпрограммы Задача: Построить фигуру: Особенность: Три похожие фигуры. общее: размеры, угол поворота.
К.Ю. Поляков, Е.А. Ерёмин, 2013 Программирование на языке Паскаль § 64. Сортировка 1.
К.Ю. Поляков, Е.А. Ерёмин, Программирование на языке Паскаль § 63. Алгоритмы обработки массивовАлгоритмы обработки массивов.
Основы структурного программирования. Их удобно использовать, когда в программе несколько раз решается одна и та же подзадача, но для разных наборов данных.
К.Ю. Поляков, Е.А. Ерёмин, Программирование на языке Паскаль § 62. МассивыМассивы.
Рекурсивное программирование Рекурсия – это метод, сводящий общую задачу к некоторым задачам более узкого, простого типа Рекурсивный алгоритм – это алгоритм,
1 Программирование на языке Паскаль © К.Ю. Поляков, ВведениеВведение 2.ВетвленияВетвления 3.Сложные условияСложные условия 4.ЦиклыЦиклы 5.Циклы.
Множественный тип данных Множество в языке Паскаль – это ограниченный набор различных элементов одного (базового) типа, которые рассматриваются как единое.
Подпрограмма – это самостоятельная часть программы, реализующая определенный алгоритм.
1 Программирование на языке Паскаль Тема: Циклы по счётчику. © К.Ю. Поляков,
Подпрограммы -это повторяющаяся группа операторов, оформленная в виде самостоятельной программной единицы. Она записывается однократно, а в соответствующих.
Программирование «сверху вниз» Процедуры и функции пользователя в Pascal.
Функции. Функция- это подпрограмма, которая вычисляет и возвращает некоторое значение. Функции описываются в разделе описаний следующим образом: Function.
Решение задания В 8 ( ЕГЭ -2014) ( анализ численного алгоритма ) Вишневская М. П., МАОУ « Гимназия 3» 24 марта 2014 г., г. Саратов.
1 Рекурсивное программирование Рекурсия – это метод, сводящий общую задачу к некоторым задачам более узкого, простого типа Рекурсивный алгоритм – это алгоритм,
Транксрипт:

К.Ю. Поляков, Е.А. Ерёмин, Программирование на языке Паскаль § 59. Процедуры 1

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Зачем нужны процедуры? 2 writeln('Ошибка программы'); много раз! program withProc; var n: integer; begin read(n); if n < 0 then Error;... end. program withProc; var n: integer; begin read(n); if n < 0 then Error;... end. procedure Error; begin writeln('Ошибка программы') end; procedure Error; begin writeln('Ошибка программы') end; вызов процедуры

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Что такое процедура? 3 Процедура – вспомогательный алгоритм, который выполняет некоторые действия. текст (расшифровка) процедуры записывается до основной программы в программе может быть много процедур чтобы процедура заработала, нужно вызвать её по имени из основной программы или из другой процедуры

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Процедура с параметрами 4 Задача. Вывести на экран запись целого числа (0..255) в 8-битном двоичном коде. много раз! Алгоритм: Как вывести первую цифру? ? разряды n:= n div 128 n mod 128 Как вывести вторую цифру? ? n1 div 64

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Процедура с параметрами 5 Задача. Вывести на экран запись целого числа (0..255) в 8-битном двоичном коде. Алгоритм: k:= 128; while k > 0 do begin write(n div k); n:= n mod k; k:= k div 2 end; k:= 128; while k > 0 do begin write(n div k); n:= n mod k; k:= k div 2 end; nkвывод Результат зависит от n ! !

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Процедура с параметрами 6 program binCode; begin printBin(99) end. program binCode; begin printBin(99) end. procedure printBin(n: integer); var k: integer; begin k:= 128; while k > 0 do begin write(n div k); n:= n mod k; k:= k div 2 end end; procedure printBin(n: integer); var k: integer; begin k:= 128; while k > 0 do begin write(n div k); n:= n mod k; k:= k div 2 end end; Параметры – данные, изменяющие работу процедуры. локальная переменная значение параметра (аргумент) значение параметра (аргумент)

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Несколько параметров 7 procedure printSred(a: integer; b: integer); begin write((a+b)/2); end. procedure printSred(a: integer; b: integer); begin write((a+b)/2); end. procedure printSred(a, b: integer); begin write((a+b)/2); end. procedure printSred(a, b: integer); begin write((a+b)/2); end.

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 8 «A»: Напишите процедуру, которая принимает параметр – натуральное число N – и выводит на экран линию из N символов '–'. Пример: Введите N: «B»: Напишите процедуру, которая выводит на экран в столбик все цифры переданного ей числа, начиная с первой. Пример: Введите натуральное число:

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 9 «C»: Напишите процедуру, которая выводит на экран запись переданного ей числа в римской системе счисления. Пример: Введите натуральное число: 2013 MMXIII

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Изменяемые параметры 10 Задача. Написать процедуру, которая меняет местами значения двух переменных. program Exchange; var x, y: integer; begin x:= 2; y:= 3; Swap(x, y); write(x, ' ', y) end. program Exchange; var x, y: integer; begin x:= 2; y:= 3; Swap(x, y); write(x, ' ', y) end. procedure Swap(a, b: integer); var c: integer; begin c:= a; a:= b; b:= c; end; 2 3 Процедура работает с копиями переданных значений параметров! ! Почему не работает? ? передача по значению

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Изменяемые параметры 11 procedure Swap( a, b: integer); var c: integer; begin c:= a; a:= b; b:= c; end; procedure Swap( a, b: integer); var c: integer; begin c:= a; a:= b; b:= c; end; var передача по ссылке переменные могут изменяться var a, b: integer;... Swap(a, b); { правильно } Swap(2, 3); { неправильно } Swap(a, b+3); { неправильно } var a, b: integer;... Swap(a, b); { правильно } Swap(2, 3); { неправильно } Swap(a, b+3); { неправильно } Вызов:

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 12 «A»: Напишите процедуру, которая переставляет три переданные ей числа в порядке возрастания. Пример: Введите три натуральных числа: «B»: Напишите процедуру, которая сокращает дробь вида M/N. Числитель и знаменатель дроби передаются как изменяемые параметры. Пример: Введите числитель и знаменатель дроби: После сокращения: 5/3

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 13 «C»: Напишите процедуру, которая вычисляет наибольший общий делитель и наименьшее общее кратное двух натуральных чисел и возвращает их через изменяемые параметры. Пример: Введите два натуральных числа: НОД(10,15)=5 НОК(10,15)=30

К.Ю. Поляков, Е.А. Ерёмин, Программирование на языке Паскаль § 60. Функции 14

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Что такое функция? 15 Функция – это вспомогательный алгоритм, который возвращает значение-результат (число, символ или объект другого типа). Задача. Написать функцию, которая вычисляет сумму цифр числа. Алгоритм: сумма:= 0; while n <> 0 do begin сумма:= сумма + n mod 10; n:= n div 10 end; сумма:= 0; while n <> 0 do begin сумма:= сумма + n mod 10; n:= n div 10 end;

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Сумма цифр числа 16 program Sum; begin writeln(sumDigits(12345)) end. program Sum; begin writeln(sumDigits(12345)) end. function sumDigits(n: integer): ; var sum: integer; begin sum:= 0; while n <> 0 do begin sum:= sum + n mod 10; n:= n div 10; end; end; function sumDigits(n: integer): ; var sum: integer; begin sum:= 0; while n <> 0 do begin sum:= sum + n mod 10; n:= n div 10; end; end; sumDigits:= sum передача результата integer тип результата

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Использование функций 17 x:= 2*sumDigits(n+5); z:= sumDigits(k) + sumDigits(m); if sumDigits(n) mod 2 = 0 then begin writeln('Сумма цифр чётная'); writeln('Она равна ', sumDigits(n)) end; x:= 2*sumDigits(n+5); z:= sumDigits(k) + sumDigits(m); if sumDigits(n) mod 2 = 0 then begin writeln('Сумма цифр чётная'); writeln('Она равна ', sumDigits(n)) end; Функция, возвращающая целое число, использоваться везде, где и целая величина! !

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 18 «A»: Напишите функцию, которая находит наибольший общий делитель двух натуральных чисел. Пример: Введите два натуральных числа: НОД( , ) = «B»: Напишите функцию, которая определяет сумму цифр переданного ей числа. Пример: Введите натуральное число: 123 Сумма цифр числа 123 равна 6.

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 19 «C»: Напишите функцию, которая «переворачивает» число, то есть возвращает число, в котором цифры стоят в обратном порядке. Пример: Введите натуральное число: 1234 После переворота: 4321.

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Логические функции 20 Задача. Найти все простые числа в диапазоне от 2 до 100. program PrimeNum; var i: integer; begin for i:=2 to 100 do if then writeln(i) end. program PrimeNum; var i: integer; begin for i:=2 to 100 do if then writeln(i) end. i - простое функция, возвращающая логическое значение (True/False) isPrime(i)

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Функция: простое число или нет? 21 Какой алгоритм? ? function isPrime(n: integer): ; var count, k: integer; begin count:= 0; k:= 2; while (k*k <= n) and (count = 0) do begin if n mod k = 0 then count:= count + 1; k:= k + 1 end; end; function isPrime(n: integer): ; var count, k: integer; begin count:= 0; k:= 2; while (k*k <= n) and (count = 0) do begin if n mod k = 0 then count:= count + 1; k:= k + 1 end; end; boolean логическое значение (True/False) isPrime:= (count = 0) if count = 0 then isPrime:= True else isPrime:= False if count = 0 then isPrime:= True else isPrime:= False

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Логические функции: использование 22 read(n); while isPrime(n) do begin writeln('простое число'); read(n) end; read(n); while isPrime(n) do begin writeln('простое число'); read(n) end; Функция, возвращающая логическое значение, может использоваться везде, где и логическая величина! !

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 23 «A»: Напишите логическую функцию, которая определяет, является ли переданное ей число совершенным, то есть, равно ли оно сумме своих делителей, меньших его самого. Пример: Введите натуральное число: 28 Число 28 совершенное. Пример: Введите натуральное число: 29 Число 29 не совершенное.

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 24 «B»: Напишите логическую функцию, которая определяет, являются ли два переданные ей числа взаимно простыми, то есть, не имеющими общих делителей, кроме 1. Пример: Введите два натуральных числа: Числа 28 и 15 взаимно простые. Пример: Введите два натуральных числа: Числа 28 и 16 не взаимно простые.

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 25 «С»: Простое число называется гиперпростым, если любое число, получающееся из него откидыванием нескольких цифр, тоже является простым. Например, число 733 – гиперпростое, так как и оно само, и числа 73 и 7 – простые. Напишите логическую функцию, которая определяет, верно ли, что переданное ей число – гиперпростое. Используйте уже готовую функцию isPrime, которая приведена в учебнике. Пример: Введите натуральное число: 733 Число 733 гиперпростое. Пример: Введите натуральное число: 19 Число 19 не гиперпростое.