В языке программирования Pascal используются не только функции, но и процедуры, представляющие собой подпрограммы, не возвращающие значений. Передача параметров может происходить как по значению, так и по ссылке. При решении задач на это следует обращать особое внимание.
- Функция, возвращающая среднее арифметическое двух аргументов
- Процедура нахождения по заданным длине стороны треугольника и прилежащим углам длин остальных сторон
- Написать функцию возведения в степень и вычислить выражение
- Процедура вычисления корней квадратного уравнения
- Наименьшее общее кратное пар чисел
- Функция, вычисляющая наибольший общий делитель
- Нахождение НОД (наибольшего общего делителя) с помощью рекурсивной функции
- Перевод десятичного числа в двоичную или восьмеричную систему счисления
- Перевод десятичного числа в шестнадцатеричное
- Перевод двоичного числа в десятичное
- Рекурсия. Процедура перевода чисел из десятичной системы счисления в другие
- Заполнение массива и его вывод на экран
- Функция циклического сдвига
- Сортировка массива и бинарный поиск
Источник: pas1.ru
Линейные программы. Решение задач. Ч.2.
Решение задач. День первый. Задачи Begin1-10
Итак, с сегодняшнего дня мы начинаем вести новую рубрику: «Решение задач», в которой будем рассматривать задачи, взятые из сборника М.Э.Абрамяна «1000 ЗАДАЧ ПО ПРОГРАММИРОВАНИЮ».
Открыв задачник и прочитав аннотацию, Вы, скорее всего, озадачитесь тем, что данное пособие предназначено для студентов механико-математического, физического и экономического факультетов, но смею Вас заверить, что это весьма универсальная книга, которая подходит как студентам, так и школьникам. Возможно, задачи из первых разделов книги покажутся Вам простыми — в этом случае используйте наш разбор только для проверки своих решений; но если же по каким-либо причинам решить задачи Вы не в состоянии, то тогда присоединяйтесь к нам.
Begin1. Дана сторона квадрата a. Найти его периметр P = 4·a.
Прежде всего напомню, что для ввода и вывода информации, в Паскале используют следующие операторы:
- Read (Readln) — ввод значений с клавиатуры;
- Write (Writeln) — вывод результата (и вообще чего-либо) на экран.
Таким образом, решение задачи становится очевидным.
program Begin1; var a, P: real; begin write(‘Введите a:’); readln(a); P := 4 * a; write(‘P=’, p); end.
Begin2. Дана сторона квадрата a. Найти его площадь S = a 2 .
При решении данной задачи воспользуемся функцией sqr . Можно, конечно, вычислять квадрат, умножая число само на себя (S=a*a), но при вводе действительно больших чисел наша программа будет выполняться гораздо дольше, нежели при использовании sqr .
Решение задач по программированию на языке Pascal
program Begin2; var a, s: real; begin write(‘Введите a: ‘); readln(a); s := sqr(a); write(‘Площадь квадрата — ‘, s); end.
Begin3°. Даны стороны прямоугольника a и b. Найти его площадь S = a·b и периметр P = 2·(a + b).
Да, задача по сути своей проста и подобна предыдущим, поэтому поскорее составим к ней решение и перейдем к следующей.
program Begin3; var a, b, S, P: real; begin write(‘Введите a: ‘); readln(a); write(‘Введите b: ‘); readln(b); s := a * b; p := 2 * (a + b); write(‘Площадь прямоугольника — ‘, s, ‘; Периметр прямоугольника — ‘, p); end.
Begin4. Дан диаметр окружности d. Найти ее длину L = π·d. В качестве значения π использовать 3.14.
У вас, наверняка, возникает вопрос π — это константа или переменая? Так как π не изменяется в течение программы, π — константа. Вообще в Паскале уже встроена такая константа, но ее значение:
А так как в условии задачи указано, что в качестве значения π нужно использовать 3.14, то следует объявить π в разделе описания констант.
program Begin4; const pi = 3.14; var d, L: real; begin write(‘Введите диаметр окружности : ‘); readln(d); L := pi * d; write(‘Длина окружности — ‘, L); end.
Begin5. Дана длина ребра куба a. Найти объем куба V = a 3 и площадь его поверхности S = 6·a 2 .
Для решения задачи используем функцию power(x, a), где a — степень, x — число возводимое в степень (разумеется, использовать ее мы будем только для возведения числа в третью степень, квадрат числа по-прежнему находим с помощью sqr(x) ).
program Begin5; var v, a, s: real; begin write(‘Введите значение a: ‘); readln(a); v := power(a, 3); s := 6 * sqr(a); writeln(‘Объем куба — ‘, v); writeln(‘Площадь поверхности куба — ‘, s); end.
Begin6. Даны длины ребер a, b, c прямоугольного параллелепипеда. Найти его объем V = a·b·c и площадь поверхности S = 2·(a·b + b·c + a·c).
program Begin6; var v, a, b, c, s: real; begin write(‘Введите значения a, b, c: ‘); readln(a, b, c); v := a * b * c; s := 2 * (a * b + b * c + a * c); writeln(‘Объем параллелепипеда — ‘, v); writeln(‘Площадь поверхности параллелепипеда — ‘, s); end.
Begin7°. Найти длину окружности L и площадь круга S заданного радиуса R:
L = 2·π·R, S = π·R 2 .
В качестве значения π использовать 3.14.
program Begin7; const pi = 3.14; var l, s, r: real; begin write(‘Введите значение R: ‘); readln(r); l := 2 * pi * r; s := pi * sqr(r); writeln(‘Длина окружности — ‘, l); writeln(‘Площадь окружности — ‘, s); end.
Begin8. Даны два числа a и b. Найти их среднее арифметическое: (a + b)/2.
program Begin8; var srednee, a, b: real; begin write(‘Введите значения a и b: ‘); readln(a, b); srednee := (a + b) / 2; writeln(‘Среднее арифметическое — ‘, srednee); end.
Begin9. Даны два неотрицательных числа a и b. Найти их среднее геометрическое, то есть квадратный корень из их произведения: √(a*b).
Напомню, что для нахождения квадратного корня мы используем функцию sqrt .
program Begin9; var a, b, srednee: real; begin write(‘Введите значения a и b: ‘); readln(a, b); srednee := sqrt(a * b); writeln(‘Среднее геометрическое — ‘, srednee); end.
Begin10. Даны два ненулевых числа. Найти сумму, разность, произведение и частное их квадратов.
program Begin10; var a, b, summ, razn, proizv, chast: real; begin write(‘Введите значения a и b: ‘); readln(a, b); a := sqr(a); b := sqr(b); summ := a + b; razn := a — b; proizv := a * b; chast := a / b; writeln(‘Сумма квадратов — ‘, summ); writeln(‘Разность квадратов — ‘, razn); writeln(‘Произведение квадратов — ‘, proizv); writeln(‘Частное квадратов — ‘, chast); end.
Ну вот и все. Следующая публикация с решением задач выйдет в ближайшие дни.
Всем удачи и веселого Нового года:)
Источник: learnpascal.ru
Урок — Решение задач на Паскале по теме «Линейные алгоритмы».
методическая разработка по информатике и икт (9 класс) на тему
Разработка урока. Сначала идет повторение темы «Оператор присваивания и ввод-вывод на язаке Паскаль».
Затем рассматриваются этапы решения задач на ЭВМ. Рассматривается решение линейных задач на языке программирования Паскаль.
Скачать:
Предварительный просмотр:
«Линейные алгоритмы и их реализация на языке программирования Pascal»
Масленникова Наталья Алексеевна, преподаватель информатики
Раздел статьи: «Алгоритмизация и программирование».
Тип урока: закрепление полученных знаний и изучение нового материала.
Вид урока: комбинированный урок.
- повторение темы ввод и вывод данных
- повторение оператор присваивания
- составление программ, реализующих линейные алгоритмы,
- стимулирование интереса учащихся к данной теме и предмету в целом
- воспитание у учащихся самостоятельности, коллективизма, ответственности за себя и других
- развитие логического и аналитического мышления
Образовательная: актуализировать и закрепить ранее изученный материал, научиться составлять линейные алгоритмы и программы на языке программирования Паскаль;
Развивающая: развитие алгоритмического мышления, памяти, внимательности, умения применять полученные знания при решении задач различной направленности;
Воспитательная: развитие познавательного интереса, логического мышления, организованности, ответственности, повысить интерес обучающихся к данной теме.
Методы обучения: объяснительно-иллюстративный, исследовательский, практический.
Оборудование и программное обеспечение:
- компьютер;
- проектор;
- операционная система;
- презентация;
- язык программирования Паскаль.
- Организационный момент.
- Актуализация начальных знаний учащихся.
- Тест.
- Изучение нового материала.
- Создание проблемной ситуации. Закрепление пройденного материала. Решение задач.
- Подведение итогов урока.
- Домашнее задание.
1 . Организационный момент.
Приветствие учащихся, ознакомление учащихся с целями и задачами урока.
2. Актуализация начальных знаний учащихся (презентация).
Вопрос . Какова цель оператора присваивания?
Ответ. Задание переменной некоторого значения.
Вопрос . Как записывается оператор присваивания?
Ответ. переменная := выражение;
Вопрос . Как выполняется оператор присваивания?
1. вычисляется значение выражения в правой части,
2. это значение присваивается переменной, указанной в левой части. После этого старое значение переменной пропадает («стирается»)
Вопрос . Допустимо ли присваивание переменной вещественного типа значения выражения целого типа?
Вопрос . Допустимо ли присваивание переменной целого типа значения выражения вещественного типа?
Вопрос . Чему равны значения переменных r, a, d?
Ответ . r = 187.5; a = 9; d = 45.0
Вопрос . Можно ли выполнить оператор a:=d;
Вопрос. С помощью каких стандартных процедур осуществляется вывод на экран монитора?
Ответ. Write (перечисляем все, что выводим через запятую),
Writeln (перечисляем все, что выводим через запятую)
Вопрос. Чем отличаются действия процедур Write и Writeln?
Ответ . Write — после вывода, курсор остается после последнего выведенного значения, Writeln — после вывода, курсор переходит на новую строку.
Вопрос. В чем состоит действие процедуры Writeln без параметров?
Ответ. Пропуск пустой строки.
Вопрос. Что мы можем выводить на экран и как это сделать?
- Константы
- символьные — заключаем их в апострофы. Writeln(‘Привет!’);
На экране увидим
И курсор перейдет на новую строку.
- Константы числовые — Write (1,2); Write (3, ‘ ‘,56); (числа выводятся без дополнительных пробелов)
И курсор будет стоять после цифры 6.
2) Значения переменных — надо написать имя переменной.
a:= 4; writeln(a); a := 2*a; writeln(a);
На экране увидим
3) Значение выражения — пишем выражение
a:= 4; writeln(2 * a);
На экране увидим
4) Комбинированный вывод
a := 4; writeln(‘Значение а = ‘, а, ‘, а 2*а = ‘, 2*а);
На экране увидим
Значение а = 4, а 2*а = 8
Вопрос . Что будет на экране, в результате работы последовательности команд
r := 715.432; writeln (r);
r1 := -567.986; writeln(r1/2);
На экране увидим (числа в экспоненциальном виде).
Вопрос. Можем ли мы изменить такой вывод?
Ответ . Да. Надо использовать форматы вывода .
Вопрос. Что увидим на экране, после выполнения следующего фрагмента?
r := 715.432; writeln (r:8:3);
r1 := -567.946; writeln(r1:10:1);
На экране увидим ( обозначаем пробел)
Вопрос. Как можно ввести информацию в переменные?
Ответ. Для ввода исходных данных используются стандартные процедур ввода:
1) Readln (список переменных через запятую);
2) Read (список переменных через запятую);
Вопрос. Сколько переменных можно писать в этих процедурах?
Ответ. Одну и более.
Вопрос. Как набираются на клавиатуре значения переменных?
Ответ. На клавиатуре данные набираются через пробел . В конце набора надо нажать клавишу ENTER .
Вопрос. Может ли быть пустым список ввода, т.е. ReadLn;
Ответ . Да. Программа ждет нажатия клавиши Enter.
3. Тест.(приложение1).
Учащиеся выполняют тест. Затем меняются тетрадями, проверяют тест и выставляют оценки.
4. Объяснение нового материала.
Сегодня мы рассмотрим с вами, как изученные ранее операторы используются для реализации линейных алгоритмов на языке программирования. Вспомним, какие алгоритмы называются линейными?
Учащиеся отвечают. (в которых действия выполняются последовательно одно за другим)
Решение задачи на компьютере — это процесс автоматического преобразования исходных данных в искомый результат в соответствии с заданным алгоритмом.
Поэтому перед решением задачи на компьютере, она должна пройти некоторые этапы подготовки.
Этапы решения задач на компьютере.
1) Постановка задачи — необходимо четко определить цель задачи, дать словесное описание содержания задачи, выделить исходные данные для ее решения. Предложить общий подход к её решению, определиться какие результаты и в каком виде должны быть получены.
2) Построение математической модели — представление ее в виде формул, уравнений, соотношений, которые могут быть реализованы в компьютере.
3) Алгоритмизация — построение алгоритма.
4) Составление сценария работы на компьютере (этот этап мы пока будем опускать).
5) Написание задачи на языке программирования .
Программа должна быть универсальной (не зависящей от конкретного набора данных). Необходимо предусмотреть контроль вводимых данных. Необходимо повысить эффективность программы, т. е. уменьшить количество выполняемых операций и время работы программы.
6) Отладка и тестирование программы .
На этом этапе происходят выполнение алгоритма с помощью компьютера, поиск и исключение ошибок. При этом программисту приходится выполнять рутинную работу по проверке работы программы, поиску и исключению ошибок, и поэтому для сложных программ этот часто требует гораздо больше времени и сил, чем написание первоначального текста программы.
Программист должен составить тест — это специально подобранные исходные данные, в совокупности с результатами, которые должны получиться.
Отладка — это исправление ошибок — сложный и нестандартный процесс. Исходный план отладки заключается в том, чтобы оттестировать программу на составленных контрольных тестах.
7) Анализ полученных результатов .
Рассмотрим эти этапы на примере следующей задачи.
Задача. «Покупка в мазазине»
Человек делает в магазине покупки. Определите сколько денег у него останется после покупки в магазине перчаток стоимостью А руб., портфеля стоимостью B руб. и галстука стоимостью D руб. Все исходные данные задаются с клавиатуры.
1 этап. Постановка задачи
a — стоимость перчаток;
b — стоимость портфеля;
d — стоимост галстука;
dengi — количество денег у человека.
Все эти переменные будут вещественного типа.
ostatok — количество денег, которое останется у человек (вещественный тип).
2 этап. Построение математической модели (метод решения)
ostatok = dengi – a – b – d
3 этап. Алгоритмизация.
5 этап. Написание программы.
write (‘введите стоимость перчаток, портфеля и галстука ‘);
write (‘введите количество имеющихся у вас денег ‘);
oststok := den – a – b – c;
writeln (‘после покупки у вас останется ‘, ostatok:5:2, ‘руб. ‘);
a = 500; b = 450; d = 320
ostatok = 1700 – 500 – 450 – 320 = 430
Набираем программу на компьютере и запускаем с данными заданными в тесте.
7 этап. Анализируем результат.
5. Создание проблемной ситуации. Закрепление знаний.
Учащиеся делятся на группы по 4 человека, выбираю ответственного за работу. Каждой группе выдаются 4 задачи.
Задания дифференцированные, задача 1 – слабым учащимся, задача 4 – сильным ученикам.
Задача №1 . В пяти тестовых опросах мальчик получил оценки. Составьте алгоритм и программу, которая определит среднее значение оценок, полученных мальчиком в пяти опросах.
Задача №2. Имеется садовый участок, имеющий форму прямоугольника со сторонами А метров и В метров. Составьте алгоритм и программу, которая определит сколько досок надо купить, чтобы поставить сплошной забор. Ширина одной доски 10 см.
Задача №3 . В магазине продается костюмная ткань. Ее цена В руб. за квадратный метр. Составьте алгоритм и программу, которая подсчитает и выведет на экран стоимость куска этой ткани длиной Х метров и шириной 80 см.
Задача №4. Хозяин хочет оклеить обоями длинную стену в своем доме. Длина этой стены равна А метров, а высота — В метров. Рулон обоев имеет длину 12 метров и ширину K см. Составьте алгоритм и программу, которая определит стоимость обоев для всей стены, если цена одного рулона К руб.
Учащиеся готовят задачи для решения на компьютере вместе, а затем распределяются, кто какую задачу набирает на компьютере.
Как только все задания выполнены, ответсвенный сообщает об этом.
По окончании работы, ответственные (жюри) проверяют работу программ и оцениваю.
6. Подведение итогов урока.
Группа, которая первая правильно решила все задачи получает пять, вторая группа получает четыре.
7. Домашнее задание.
Фруктовый магазин продает яблоки по А руб. за кг., груши по В руб. за кг., апельсины по С руб. за кг. В первые два дня недели продано: понедельник – Х кг. яблок, Y кг. груш, Z кг. апельсинов; вторник – X кг. яблок, Y кг. груш, Z кг. Апельсинов (X, Y, Z — принимают разные значения в понедельник и во вторник). Напишите программу, которая будет вычислять, на какую сумму продал магазин фруктов в каждый из этих дней и за оба дня вместе.
Спасибо за работу. Наша цель выполнена – мы повторили оператор присваивания и процедуры ввода/вывода и успешно применили свои знания по решению линейных задач в практических ситуациях.
А теперь оцените свою работу на уроке, используя смайлики. Нарисуйте на листочках такое настроение, которое сейчас у вас.
Ребята, мне приятно было работать с вами на уроке, надеюсь, что это взаимно.
До свидания. Желаю вам успехов.
- Попов В.Б. Turbo Pascal для школьников. – Москва, Финансы и статистика, 1999 г.
- Сэм А. Аболрус. Программирование на Pascal. – Санкт-Петербург — Москва, 2003 г.
- Л. Залогова и др. Задачник — практикум. – Москва, Лаборатория БазовыхЗнаний, 1999 г.
- Алексеева Е.Р., Чеснокова О.В. Турбо Паскаль 7.0. – Москва, NT Press, 2006 г.
Предварительный просмотр:
Подписи к слайдам:
Повторение Оператор присваивания и процедуры ввода-вывода.
Оператор присваивания 1. Задать переменной некоторое значения. 2. переменная := выражение; 3. 1) вычисляется значение выражения в правой части 2) затем это значение присваивается переменной, указанной в левой части. После этого старое значение переменной пропадает («стирается») 1. Какова цель оператора присваивания? 2. Как записывается оператор присваивания? 3. Как выполняется оператор присваивания?
Оператор присваивания Чему равны значения переменных r, a, d? 2. Можно ли выполнить оператор a := d ; 3. Почему? Есть следующий фрагмент программы: Var a, b, c: integer; r, d: real; a := 5; b := 20; c := -7; d := 2.5; r := a + (4 * b + c) * d; a := a + 4; d := a * 7; 1. r = 187.5; a = 9; d = 45.0 2. Нет. 3. а имеет тип целый, а d — вещественный
Вывод данных на экран 1. Write (перечисляем все, что выводим через запятую); Writeln (перечисляем все, что выводим через запятую); 2. Write — после вывода, курсор остается после последнего выведенного значения Writeln — после вывода, курсор переходит на новую строку. 3. Пропуск пустой строки . 1. С помощью каких процедур можно вывести данные на экран монитора? 2. Чем отличаются процедуры Write и Writeln ? 3.В чем состоит действие процедуры Writeln без параметров?
Вывод данных на экран 1. Что мы можем выводить на экран? 1. Константы Значения переменных Значения выражений 2. заключить текст в апострофы . Writeln (‘Привет!’); Привет! 3. без дополнительных пробелов Write (1,2); Write (3, ‘ ‘,56); 123 56 2. Что надо сделать, чтобы вывести текст на экран? 3. Как выводятся числа на экран?
Вывод данных на экран 1. надо написать имя переменной без апострофов a := 4; writeln (a); a := 2 * a; writeln (a); 4 8 2. пишем выражение a := 4; writeln (2 * a ); 8 1. Что надо сделать, чтобы вывести значение переменной? 2. Как вывести значение выражения?
Вывод данных на экран a := 4; Значение а = 4, а 2*а = 8 Комбинированный вывод writeln (‘Значение а = ‘, а, ‘, а 2*а = ‘, 2*а);
Вывод данных на экран Рассмотрим вывод вещественных чисел. 1. Можем ли мы изменить такой вывод? r := 715.432; writeln (r); r 1 := -567.986; writeln ( r 1/2); На экране? 7.1543200000 E +02 -2 . 839930000E+02 1. Да. Как? Надо использовать форматы вывода. r := 715.432; writeln ( r :8:3); r 1 := -567.946; writeln ( r 1:10:1); writeln ( r 1:10:2); ( обозначаем пробел) 715.432 -567.9 -567.95 2. Что увидим на экране, после выполнения следующего фрагмента?
Ввод данных 1. Read ln (список переменных через запятую); Read (список переменных через запятую); 2. Одну и более. 3. Через пробел . В конце набора надо нажать клавишу ENTER . 1. Какие процедуры используются для ввода значений в переменные? 2. Сколько переменных можно писать в этих процедурах? 3. Как набираются на клавиатуре значения переменных?
Тест А сейчас выполним тест. Успехов.
Вопрос 1 write (23, 72); write (5); writeln; writeln ( Успехов ! ); Что будет выведено на экране в результате работы следующей последователь-ности операторов?
Вопрос 2 Writeln ( Фара , он ); Writeln(78, , 3, , 6); Writeln(78:3, 3:3, 6:2); Что будет выведено на экране в результате работы следующей последовательности операторов?
Вопрос 3 с := 5; b := 3; c := 2 * c + b ; b := c + 2 * b ; Какое значение будут иметь переменные c и b после следующих операторов присваивания?
Вопрос 4 writeln ( 7x+7); a+b := c; Исправьте ошибки в следующих операторах.
Вопрос 5 var c, a : integer; d : integer ; begin c:=10; a := 6; d :=2* c /( a +2; write ( При с = , c ); writeln ( Значение d , = , d ); end . Исправьте ошибки в программе.
Ответы Проверим результаты теста.
Вопрос 1 write (23, 72); write (5); writeln; writeln ( Успехов ! ); 23725 Успехов! Что будет выведено на экране в результате работы следующей последователь-ности операторов?
Вопрос 2 Writeln ( Фара , он ); Writeln(78, , 3, , 6); Writeln(78:3, 3:3, 6:2); Фараон 78 3 6 78 3 6 Что будет выведено на экране в результате работы следующей последовательности операторов?
Вопрос 3 с := 5; b := 3; c := 2 * c + b ; b := c + 2 * b ; с = 23; b = 29; Какое значение будут иметь переменные c и b после следующих операторов присваивания?
Вопрос 4 writeln ( 7x+7); a+b := c; writeln ( 7*x+7); c:= a+b; Исправьте ошибки в следующих операторах.
Вопрос 5 var c, a : integer; d : integer ; begin c:=10; a := 6; d :=2* c /( a +2; write ( При с = , c ); writeln ( Значение d , = , d ); end. d : r eal; d :=2* c /( a +2); writeln( Значение d = , d ); Исправьте ошибки в программе.
Молодцы! Вы отлично поработали!
Источник: nsportal.ru