Инфоурок Информатика Другие методич. материалыМетодические рекомендации по практикуму решения задач

Методические рекомендации по практикуму решения задач

Скачать материал

ГОУ СПО «Ленинградский  педагогический  колледж»

Краснодарского  края

 

 

 

 

 

 

 

 

 

 

 

 

 

Методические рекомендации

по

 «Практикум  решения

задач  на  ЭВМ»

 

для  специальности   050202   Информатика

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2013 год

 

 

 

 

 

Пояснительная записка

 

Курс «Практикум решения задач на ЭВМ» предназначен для овладения студентами практическими навыками решения задач  с помощью вычислительной техники и составляет 244 часа. Изучение курса опирается на полный цикл базовых знаний по дисциплине «Программирование»  включающий в себя знание основных конструкций языков программирования Паскаль  и основных алгоритмов.

Курс «Практикум решения задач на ЭВМ» должен способствовать активизации самостоятельной деятельности студентов, развитию их творческого потенциала, способности ставить перед собой задачу и решать ее, сформировать у них умения и навыки  самостоятельного анализа процесса поставки и решения проблемы, заложить основы для самостоятельной разработки программных продуктов учебного назначения.

В результате изучения курса «Практикум решения задач на ЭВМ» будущий учитель информатики должен иметь четкие представления об ЭВМ как инструменте решения задач определенного типа; понимать значение вычислительной техники  в решении задач,  невыполнимых обычными  средствами; выполнять все  этапы решения задачи: строить математическую модель,  разрабатывать алгоритм решения,  составлять программу, реализовывать ее на ЭВМ.

В данной методички рассмотрены вопросы  решения задач по темам:

 

1. Язык программирования  Паскаль. Среда программирования Паскаль. (8 часов)

 

2.  Переменная. Команда присвоения. Команды вывода. (8 часов)

 

3. Математические функции. Команда ввода. (8 часов)

 

4. Операторы условного и безусловного перехода. (12 ч.)

 

5. Циклические  конструкции. В Паскале (12 ч.)

 

6. Подпрограммы и функции пользователя. (10 ч.)

 

7. Массивы. Способы формирования  массивов. (16 ч.)

 

8. Графика в Паскале. (16 ч.)

 

9. Обработка  строк.  (14 ч.)

 

10. Составной  тип.  Записи. Множества. (16 ч.)

 

11. Внешние библиотеки и модули(10 ч.)

 

12. Работа с файлами. (12 ч.)

 

13. Понятие об объектно-орентированных языках программирования. (12 ч.)

 

14. Программирование на VB. (46 ч.)

 

15. Повторение. Решение задач на основные темы программирования на Паскале. (46ч.)

 

 

 

 

 

 

 

 

Тема: Язык программирования  Паскаль. Среда программирования Паскаль.

 

На данную тему отводится  8 часов. В данном разделе отрабатываются вопросы:

1.      Запуск среды программирования Паскаль.

2.      Файловые операции: создание нового файла, сохранение, открытие.

3.      Запуск  программ на  исполнение.

4.      Редактирование программ.

Основные знания и умения:  отработка навыков работы в среде  программирования Паскаль.

 

Для изучения данной темы можно воспользоваться литературой:

1.Семакин И.Г. Основы программирования: учебник для сред. проф. образования. Издательский центр «Академия», 2003. – 432с.

2. «Электронный курс лекций по программированию». Казарин Н.П. Электронная библиотека (адрес в сети 192.168.0.2).

 

Примерные задания на данную тему

Задание1. Запустите среду программирования и рассмотрите экран. Перед вами полоса меню, область окна и строка статуса. Нажмите клавишу F10 - теперь вам доступны все опции меню. С помощью клавиш перемещения курсора рассмотрите меню. С командами меню мы будем знакомиться постепенно. Нажмите клавишу Esc (вы вышли из меню). Перемещая курсор в окне следите за строкой статуса. Запишите в тетрадь ответ на вопрос: какая информация отражается в этой строке?

Почти все что вы видите и делаете в среде Турбо Паскаль происходит в окнах.

Окно - это область экрана, которую можно перемещать, изменять в размере, перекрывать, закрывать и открывать.

Интегрированная среда программирования Турбо Паскаль позволяет иметь любое количество открытых окон, но в любой момент времени активным может быть только одно.

Активное окно - это окно с которым вы в настоящий момент работаете.

Общие горячие клавиши:

F1 - выводит окно подсказки;

F2 - сохраняет файл активного окна;

F3 - появление диалогового окна и возможность открыть файл;

F4 - запускает программу до строки, на которой стоит курсор;

F5 - масштабирует диалоговое окно;

F6 - переходит к следующему открытому окну;

F7 - запускает программу в режиме отладки с заходом внутрь процедур;

F8 - запускает программу в режиме отладки, минуя вызов процедур;

F9 - компилирование программы в текущем окне;

F10 - возвращение в меню.

Мы начнем изучение меню с наиболее важных и необходимых режимов.

Как войти в меню? Всего есть три возможности:

  • с помощью "мышки"; 
  • с помощью клавиши F10;  
  • с помощью комбинации Alt+<выделенная буква>. О том, что мы в меню свидетельствует курсор - прямоугольник зеленого цвета.

С помощью клавиш управления курсором подсветите слово FILE и нажмите клавишу "Enter". Что вы видите?

Появилась вертикальная таблица со списком команд, называемая выпадающим меню. Познакомимся с ним.

Open-F3 - открыть существующий файл (при активизации этой опции появляется окно со списком файлов, где можно выбрать необходимый),

New - создать новый файл (очищает память редактора и переводит в режим создания нового файла, которому присваивается имя Noname.pas; имя можно изменить при записи файла на диск),

Save-F2 - сохранить файл (переписывает файл из памяти редактора на диск),

Save as - сохранить с новым именем,

Save all - сохранить все в окнах (записывает содержимое всех окон редактора в соответствующие файлы),

Change dir - смена каталога (позволяет изменить установленный по умолчанию диск или каталог),

Print - печать файла,

Get info - выдача информации о текущем состоянии программы и используемой памяти,

DOS Shell - выход в DOS без выгрузки из памяти (для возврата ввести команду exit),

Exit - выход и выгрузка из памяти.

Задание 2. Наберите и запустите программу :

Program Cylinder;

  Uses Crt; {Подключение библиотеки Crt}

  Var

    R, {радиус основания цилиндра}

    H, {высота цилиндра }

    V, {объем цилиндра }

    S: Real; {площадь боковой поверхности цилиндра}

BEGIN

  ClrScr; {Вызов из библиотеки Crt процедуры очистки экрана}

  Write('Введите высоту цилиндра : ');  ReadLn(H);

  Write('Введите радиус основания : '); ReadLn(R);

  V := Pi * R * R * H;

  S := 2 * Pi * R * H; 

WriteLn;

  WriteLn('Объем цилиндра = ', V : 5 : 2); {Здесь 5 - общее    количество позиций, занимаемых переменной V при выводе,  а 2 - количество позиций в дробной части значения V}

  WriteLn('Площадь боковой поверхности = ', S : 5 : 2);

  ReadLn

END.

Какая задача решается с помощью данной программы.

 

Тема: Переменная. Команда присвоения. Команды вывода.

На данную тему отводится  8 часов. В данном разделе отрабатываются вопросы:

1.      Отработка практических навыков понятия «Переменная», команда присваивания.

2.      Отработка практических навыков применения команды вывода.

3.      Реализация программы на ПЭВМ.

4.      Анализ  выполненных заданий.

Основные знания и умения: Отработка практических навыков составления линейных программ.

Для изучения данной темы можно воспользоваться литературой:

1.Семакин И.Г. Основы программирования: учебник для сред. проф. образования. Издательский центр «Академия», 2003. – 432с.

2. «Электронный курс лекций по программированию». Казарин Н.П. Электронная библиотека (адрес в сети 192.168.0.2).

 

Примерные задания на данную тему:

Program Summa2;
  {Задача. Вычислить сумму двух чисел и вывести на экран.}   
Var
  number1, {переменная для хранения первого числа}
  number2, {переменная для хранения второго числа}
  rezult {переменная для хранения результата вычисления}
  : integer;
Begin {признак начала программы}
  number1 := 3; {присваиваем переменной number1 значение 3}
  number2 := 4; {присваиваем переменной number2 значение 4}
  {складываем значения переменных number1 и number2 и результат присваиваем переменной rezult }
  rezult := number1 + number2;
  Write (number1, '+', number2,'=',rezult); {вывод примера на экран}
End. {признак конца программы}

Задание.

1.      Найдите в этой программе заголовок, раздел описания переменных, признак начала программы, признак конца программы, тело программы, комментарий.

2.      Что обозначает строчка:
number1, number2, rezult : integer;  

3.      Как вы понимаете запись:
number1 := 3;

4.      Чему равно значение переменной rezult после выполнения оператора:
rezult := number1 + number2;

5.      Переведите с английского языка слово Write. Как вы думаете, что должен делать оператор с таким названием?

6.      Поменяем местами второй и третий операторы. Будет ли программа работать? Почему? 

7.      Какой недостаток Вы видите у этой программы? Как нужно изменить условие задачи, чтобы решать подобные задачи с любыми числами. Подумайте, что должно измениться в теле нашей программы, чтобы выполнить эту задачу.

 

Задание 2. Составьте и запустите программу для решения следующей задачи:

Определите скорость поезда, если он за 2,5 часа прошел расстояние 278,5 км.

Решение:

Данные: t,Sreal;

Результат Vreal;

Метод решения:

Программа:

Program ZD2; заголовок программы

Uses Crt;                     включен модуля

Var t,s,v: Real;            описание переменных

Begin                          начало программы

ClrScr;                       очистка экрана

t:=2.5;             присваивание значения переменной

s:=278.5;                     присваивание значения переменной

V:=s/t;             вычисление пути

Writeln(‘Ответ: V=’,v:4:2);   вывод результата

Readln;                                               приостановка программы

End.                                                   Конец программы.

 

 

 

 

Тема: Математические функции. Команда ввода.

На данную тему отводится  8 часов. В данном разделе отрабатываются вопросы:

1.      Отработка практических навыков записи и использования математических функций в Паскале.

2.      Отработка практических навыков применения команды вывода.

3.      Реализация программы на ПЭВМ.

4.      Анализ  выполненных заданий.

Основные знания и умения: Отработка практических навыков составления линейных программ.

Для изучения данной темы можно воспользоваться литературой:

1.Семакин И.Г. Основы программирования: учебник для сред. проф. образования. Издательский центр «Академия», 2003. – 432с.

2. «Электронный курс лекций по программированию». Казарин Н.П. Электронная библиотека (адрес в сети 192.168.0.2).

Примерные задания.

Задача 1. Вычислите значение выражения по формуле

Решение:

Данные: x,yreal;

Результат zreal;

Метод решения:

Z:=(1+ sqr(sin(x+y)))/(2+abs(x-2*x/(1+x*x*y*y)))

Блоксхема:                                                                        Программа:

Program Funk;

Uses Crt;

Var x,y,z: Real;

Begin

ClrScr;

Writeln(‘введдите x,y’);

Readln(x,y);

Z:=(1+ sqr(sin(x+y)))/(2+abs(x-2*x/(1+x*x*y*y)))

Writeln(‘Ответ: z=’,z:4:2);

Readln;

End.

Задача №2.  Определить объём и площадь боковой поверхности цилиндра с заданными радиусом основания R и высотой H.

Решение:

Данные: R,Hreal;

Результаты: V,Sreal;

Метод решения:

 

Программа.

Program Cylinder;
  Uses Crt; {Подключение библиотеки Crt}
  Var
    R, {радиус основания цилиндра}
    H, {высота цилиндра }
    V, {объем цилиндра }
    S: Real; {площадь боковой поверхности цилиндра}
BEGIN
  ClrScr; {Вызов из библиотеки Crt процедуры очистки экрана}
  Write('Введите высоту цилиндра : ');  ReadLn(H);
  Write('Введите радиус основания : '); ReadLn(R);
  V := Pi * R * R * H;
  S := 2 * Pi * R * H;  WriteLn;
  WriteLn('Объем цилиндра = ', V : 5 : 2); {Здесь 5 - общее количество позиций, занимаемых переменной V при выводе,а 2 - количество позиций в дробной части значения V}  
  WriteLn('Площадь боковой поверхности = ', S : 5 : 2);
  ReadLn
END.

Тест

 

Данные

Результат

R = 1

H = 1

V = 3.14

S = 6.28

 

Задача №3. Найти произведение цифр заданного целого четырехзначного числа.

 

Решение:

Данные: Ninteger;

Результат: Pinteger;

Метод решения:

i := N div 1000; {первая цифра}
  j :=N div 100 mod 10; {вторая цифра}
  k := N div 10 mod 10; {третья цифра}
  l :=N mod 10; {четвертая цифра}
  P := i * j * k * l ;
 
Блок – схема алгоритма

Программа:

Program DigitsProduct;
Uses Crt;
Var N,      {заданное число}
    i, j, k, l,  {цифры числа}
    P : Integer; {произведение цифр}
BEGIN ClrScr;
  Write( 'Введите четырехзначное число : ' ); ReadLn(N);
  N:=Abs(N);
   i := N div 1000; {первая цифра}
  j := N div 100 mod 10; {вторая цифра}
mod 10; {третья цифра}
 l := N mod 10; {четвертая цифра}
  P := i * j * k * l ;
  WriteLn( 'О т в е т : произведение цифр числа ‘,N,’ - равно ' , P );
  ReadLn
END.

 

Система тестов

 

Номер теста

Проверяемый 

случай

Число

Результат

1

Число положительное

2314

P = 24

2

Число отрицательное

-1245

P = 40

 

Задача 4. Пусть даны числа a,b,α. Найдите площадь треугольника, две стороны которого a и b, а угол между этими сторонами равен α. Считайте, что угол α задан в градусах.

Решение:

Данные: a,b,alfa: real;

Результат: S : real;

Метод решения:

1. Выразим угол  α в радианах: ;

2. Вычислим площадь треугольника по формуле:

Блок – схема алгоритма.                                                    Программа:

Program Pltr;

Uses Crt;

Var a,b,alfa,x,S:real;

Begin

ClrScr;

Writeln(‘введите стороны треугольника a,b’);

Readln (a,b);

Writeln(‘введите угол треугольника в градусах’);

Readln(alfa);

X:=alfa*Pi/180;

S:=1/2*a*b*sin(x);

Writeln(‘Ответ: S=’,s:4:2);

Readln;

End.

Система тестов.

 

a

b

Alfa

S

8

10

30

20

 

Задача №5. Вычислить сколько времени в с подает тело с высоты H при свободном падении.

Решение:

Данные: H :real;

Результат : t: real;

Метод решения:

1. Высота при свободном падении рассчитывается по формуле:, где g=9,8 м/c2 – ускорение свободного падения.

2. Из этой формулы, время падения .

Блок – схема алгорит

Программа:

Program Padenie;

Uses Crt;

const g=9.81;

var H,t:real;

begin

ClrScr;

Writelen(‘введите высоту H=’);

Readln(H);

t:=sgrt(2*H/g);

writeln(‘Ответ: t=’,t:4:2,’c’);

readln;

end.

 

 

Задачи для самостоятельного решения:

1.Дана сторона квадрата a. Найти его периметр P = 4·a.

2. Дана сторона квадрата a. Найти его площадь S = a2.

3. Даны стороны прямоугольника a и b. Найти его площадь S = a·b и периметр P = 2·(a + b).

4. Дан диаметр окружности d. Найти ее длину L = pi·d.

5. Дана длина ребра куба a. Найти объем куба V = a3 и площадь его поверхности S = 6·a2.

6. Даны длины ребер a, b, c прямоугольного параллелепипеда. Найти его объем V = a·b·c и площадь поверхности S = 2·(a·b + b·c + a·c).

7. Найти длину окружности L и площадь круга S заданного радиуса R:

L = 2·pi·R,        S = pi·R2;

8. Даны два числа a и b. Найти их среднее арифметическое: (a + b)/2.

9. Даны два неотрицательных числа a и b. Найти их среднее геометрическое, то есть квадратный корень из их произведения: (a·b)1/2.

10. Даны два ненулевых числа. Найти сумму, разность, произведение и частное их квадратов.

11. Даны два ненулевых числа. Найти сумму, разность, произведение и частное их модулей.

12. Даны катеты прямоугольного треугольника a и b. Найти его гипотенузу c и периметр P:

c = (a2 + b2)1/2,        P = a + b + c.

13. Даны два круга с общим центром и радиусами R1 и R2 (R1 > R2). Найти площади этих кругов S1 и S2, а также площадь S3 кольца, внешний радиус которого равен R1, а внутренний радиус равен R2:

S1 = pi·(R1)2,        S2 = pi·(R2)2,        S3 = S1 – S2.

14. Дана длина L окружности. Найти ее радиус R и площадь S круга, ограниченного этой окружностью, учитывая, что L = 2·pi·R,    S = pi·R2.

15. Дана площадь S круга. Найти его диаметр D и длину L окружности, ограничивающей этот круг, учитывая, что L = 2·pi·R,    S = pi·R2.

16. Найти расстояние между двумя точками с заданными координатами x1 и x2 на числовой оси: |x2 – x1|.

17. Даны три точки A, B, C на числовой оси. Найти длины отрезков AC и BC и их сумму.

18. Даны три точки A, B, C на числовой оси. Точка C расположена между точками A и B. Найти произведение длин отрезков AC и BC.

19. Даны координаты двух противоположных вершин прямоугольника: (x1, y1), (x2, y2). Стороны прямоугольника параллельны осям координат. Найти периметр и площадь данного прямоугольника.

20. Найти расстояние между двумя точками с заданными координатами (x1, y1) и (x2, y2) на плоскости. Расстояние вычисляется по формуле

((x2 – x1)2 + (y2 – y1)2)1/2.

1. Дано расстояние L в сантиметрах. Используя операцию деления нацело, найти количество полных метров в нем (1 метр = 100 см).

2. Дана масса M в килограммах. Используя операцию деления нацело, найти количество полных тонн в ней (1 тонна = 1000 кг).

3. Дан размер файла в байтах. Используя операцию деления нацело, найти количество полных килобайтов, которые занимает данный файл (1 килобайт = 1024 байта).

4. Даны целые положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Используя операцию деления нацело, найти количество отрезков B, размещенных на отрезке A.

5. Даны целые положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Используя операцию взятия остатка от деления нацело, найти длину незанятой части отрезка A.

6. Дано двузначное число. Вывести вначале его левую цифру (десятки), а затем — его правую цифру (единицы). Для нахождения десятков использовать операцию деления нацело, для нахождения единиц — операцию взятия остатка от деления.

7. Дано двузначное число. Найти сумму и произведение его цифр.

8. Дано двузначное число. Вывести число, полученное при перестановке цифр исходного числа.

9. Дано трехзначное число. Используя одну операцию деления нацело, вывести первую цифру данного числа (сотни).

10. Дано трехзначное число. Вывести вначале его последнюю цифру (единицы), а затем — его среднюю цифру (десятки).

11. Дано трехзначное число. Найти сумму и произведение его цифр.

12. Дано трехзначное число. Вывести число, полученное при прочтении исходного числа справа налево.

13. Дано трехзначное число. В нем зачеркнули первую слева цифру и приписали ее справа. Вывести полученное число.

14. Дано трехзначное число. В нем зачеркнули первую справа цифру и приписали ее слева. Вывести полученное число.

15. Дано трехзначное число. Вывести число, полученное при перестановке цифр сотен и десятков исходного числа (например, 123 перейдет в 213).

16. Дано трехзначное число. Вывести число, полученное при перестановке цифр десятков и единиц исходного числа (например, 123 перейдет в 132).

17. Дано целое число, большее 999. Используя одну операцию деления нацело и одну операцию взятия остатка от деления, найти цифру, соответствующую разряду сотен в записи этого числа.

18. Дано целое число, большее 999. Используя одну операцию деления нацело и одну операцию взятия остатка от деления, найти цифру, соответствующую разряду тысяч в записи этого числа.

19. С начала суток прошло N секунд (N — целое). Найти количество полных минут, прошедших с начала суток.

20. С начала суток прошло N секунд (N — целое). Найти количество полных часов, прошедших с начала суток.

21. С начала суток прошло N секунд (N — целое). Найти количество секунд, прошедших с начала последней минуты.

22. С начала суток прошло N секунд (N — целое). Найти количество секунд, прошедших с начала последнего часа.

 

Тема: Операторы условного и безусловного перехода.

На данную тему отводится  12 часов. В данном разделе отрабатываются вопросы:

1.          Отработка практических навыков составления программ с ветвлением.

2.          Реализация программы на ПЭВМ.

3.          Анализ выполненных заданий.

Основные знания и умения: Отработка практических навыков составления программ с ветвлением.

Для изучения данной темы можно воспользоваться литературой:

1.Семакин И.Г. Основы программирования: учебник для сред. проф. образования. Издательский центр «Академия», 2003. – 432с.

2. «Электронный курс лекций по программированию». Казарин Н.П. Электронная библиотека (адрес в сети 192.168.0.2).

Примерные задания:

Задача 1. Имеется условный оператор:

If D<>10 then writeln(‘ура’) else writeln(‘плохо’);

Можно ли его заменить следующими операторами:

If D=10 then writeln(‘ура’) else writeln(‘плохо’); 

If Not(D=W) then writeln(‘ура’) else writeln(‘плохо’);    

If D<>10 then writeln(‘плохо’) else writeln(‘ура’);           

If Not(D<>10 then writeln(‘плохо’) else writeln(‘ура’);   

 

Задача 2. Какими будут значения переменных j, k после выполнения условного оператора:

If  j>k Then j:=k-2 Else k:=k-2

Если исходные значения переменных равны:

J=3, k=5:                                           

J=3, k=3                                            

J=3, k=2                                            

 

Задача 3. Вычислить значения выражения.

            not (a<15) or not (b<30)                               

            c or d and (b=20)                   

если a=10, b=20, c=true, d=false.

 

 3.1 Если n=3, то какое значение будет иметь переменная f после выполнения следующего составного оператора? Запишите в тетрадь.
begin f:=1; i:=2;
1: if i>n then goto 9;
f:=f*i; i:=i+1; goto 1;
9: end

Задача 4. Вычислить значения функции:

Решение:

 

Программа:

program funk;

uses Crt;

Var x,y:real;

begin

 Clrscr;

Write(‘введите x=’); Readln(x);

If  x>3 Then

Y:=x*x+5

Else

Y:=x-8;

Writeln(‘при x=’,x:5:2,’ y=’,y:5:2);

Readln;

End.

 

Задача 5. Если целое число M делится нацело на целое число N, то вывести на экран частное от деления, в противном случае – сообщение «M на N нацело не делится»

Решение:

            Блок - схема алгоритма:

Программа:

program prim21;

uses Crt;

Var m,n:integer;

begin

 Clrscr;

Write(‘введите числа M,N’); Readln(M,N);

If  m mod n=0 Then

Writeln(Ответ:’,m/n)

Else

Writeln(m,’ на ‘,n,’ на цело не делится’);

Readln;

End.

 

 

 

 

 

 

Задача 6. Составит программу вычисления выражения:

max(x+y+z,x*y*z)+3.

Решение:

           

 

Блок-схема алгоритма:

Программа:

program prim22;

uses Crt;

Var x,y,z,a,b,max:real;

begin

 Clrscr;

Write(‘введите числа x,y,z’); Readln(x,y,z);

a:=x+y+z;

b:=x*y*z;

If  a>b Then

max:=a

Else

max:=b;

Writeln(‘max(‘,a:5:2,’,’,b:5:2,’)+3=’,max+3:5:2);

Readln;

End.

 

 

 

 

Задача 7. Вычислить значение функции:

Для решения этой задачи рассмотрим координатную прямую, на которой отметим промежутки, на которые разбиваются все значения переменной х.

Начнем записывать условный оператор:

если х>0
  то
    вычислить у по формуле у=х-12
  иначе

Что же должно выполниться в случае иначе? На эту ветку оператора попадают все не положительные значения х. Если бы для этих чисел нужно было бы выполнить один и тот же оператор (или группу операторов), то проблемы бы не стояло. Но нам нужно этот промежуток разделить еще на две части (отрицательные и ноль), и для части выполнить свой оператор. Поэтому ветка Иначе будет содержать еще один условный оператор и наш вложенный условный оператор будет иметь вид:

если х>0
  то
    у вычислить по формуле у=х-12
  иначе
    если х=0
      то
        у вычислить по формуле у=5
      иначе
        у вычислить по формуле у=sqr(x);

Тогда фрагмент программы для решения этой задачи будет выглядеть так:

if х>0
  then
   
у := х-12
  else
    if
х=0
      then
       
у := 5
      else
       
у := sqr(x);

Итак, когда оператор if появляется внутри другого оператора if, они считаются вложенными. Такое вложение используется для уменьшения числа необходимых проверок. Этот метод часто обеспечивает большую эффективность, однако одновременно он уменьшает наглядность программы. Не рекомендуется использовать более одного-двух уровней вложения if. За вторым уровнем вложения становится трудно восстановить последовательность проверки условий каждым условным оператором.

Если часть else используется во вложенных if, то каждое else соответствует тому if, которое ему непосредственно предшествует. Таким образом, при определении последовательности выполнения фрагментов нет двусмысленности.

Задачи для самостоятельного решения:

1.      Найти наибольшее из трех данных чисел

2.      Вывести на экран номер четверти, которой принадлежит точка с координатами (x,y), при условии, что (x<>0) и (y<>0).

  1. Даны три различных числа, найти среднее из них. Средним назовем число, которое больше наименьшего из данных чисел, но меньше наибольшего.
  2. Составьте программу нахождения произведения двух наибольших из трех введенных с клавиатуры чисел.
  3. Запросить стороны треугольника и определить, является ли он разносторонним, равнобедренным или равносторонним. Учесть условие : третья сторона не должна превышать сумму двух других, иначе треугольник не существует.
  4. Составьте программу для вычисления выражения

а) max (x+y+z,xyz)+3;
b) min (x2+y2,y2+z2)-4;

Значения переменных x, y, z вводятся с клавиатуры. 

  1. Составьте программу, в которой из трех введенных с клавиатуры чисел возводятся в квадрат положительные, а отрицательные остаются без изменения. 
  2. Даны действительные числа a, b, c. Вычислить корни уравнения
     

9.      Найти минимальное из трёх чисел.

 

Тема: Циклические  конструкции.

На данную тему отводится  12 часов. В данном разделе отрабатываются вопросы:

1.          Отработка практических навыков составления программ с оператором FOR.

2    Отработка практических навыков составления программ с 

       операторами UNTIL  и WHILE.

2.          Реализация программы на  ПЭВМ.

3.          Анализ выполненных заданий.

Основные знания и умения: Отработка практических навыков составления программ с оператором FOR, UNTIL  и WHILE.

Для изучения данной темы можно воспользоваться литературой:

1.Семакин И.Г. Основы программирования: учебник для сред. проф. образования. Издательский центр «Академия», 2003. – 432с.

2. «Электронный курс лекций по программированию». Казарин Н.П. Электронная библиотека (адрес в сети 192.168.0.2).

Примерные задания:

Задачи на цикл While.

Задача 1. Составить программу, печатающую все делители целого числа в порядке убывания.

Решение:

Схема алгоритма:

Программа
program pros2;

uses crt;

var n,i:integer;

begin

 ClrScr;

 writeln('введите число');

 readln(n);

 writeln('делители числа ',n);

 i:=n;

 while i>=1 do

            begin

            if n mod i=0 then writeln(i);

 i:=i-1;

 end;

 readln; end.

 

 

 

Задача 2. Найти сумму корней квадратных из всех нечетных двухзначных чисел.

Решение:

Программа

program summkor;

uses crt;

var i:integer;

s:real;

begin

clrscr;

s:=0;

i:=11;

while i<=99 do

begin

s:=s+sqrt(i);

i:=i+2;

end;

writeln('сумма=',s:6:2);

readln;  end.

Задача 3. Вывести на экран числа, кратные К из промежутка [А,В]. Числа А, В, К задает пользователь.

 

 Решение:

Программа:

program summkor;

uses crt;

var a,b,k,i:integer;

begin

clrscr;

Writeln('введите концы отрезка a=,b=');

readln(a,b);

writeln('введите k=');

readln(k);

i:=a;

while i<=b do

begin

if i mod k=0 then writeln(i,' кратно ',k);

i:=i+1;

end;

readln;

end.

 

 

 

Задача 4. Запросите у пользователя положительное число А и найдите сумму всех натуральных чисел из промежутка [1, А].

Решение:

 

Блок - схема алгоритма:

Программа:

program summkor;

uses crt;

var a,s,i:integer;

begin

clrscr;

Writeln('введите a=');

readln(a);

s:=0;

i:=1;

while i<=a do

begin

s:=s+i;

i:=i+1;

end;

writeln('сумма чисел от 1 до ',a,'=',s);

readln; end.

 

 

 

5. Построить таблицу значений высоты тела при свободном падении за время t с шагом k.

Решение:

Высота при свободном падении определяется по формуле . Задаем  изменение времени t в промежутке от [0;t] с шагом k. Тогда в программе надо описывать:

Константа g=9,82 м/с2;

Данные t[c] –время и k – шаг изменения t;

Результат h[м] –высота.

Таблица должна иметь вид: ( при t=10;  k=1)

Время                   Высота

t=0.00;                  h=0.00;

t= 1.00;                 h=4.91;

………

t=10;                     h=491;

 

Блок - схема:

           

Программа:

program paden;

uses crt;

const g=9.81;

var h,k,t,i:real;

 begin

 clrscr;

 writeln('введите время падения t=');

 readln(t);

 writeln('введите шаг изменения времени k=');

 readln(k);

 i:=0;

 writeln('  врем     высота');

  while i<=t do

  begin

  h:=g*i*i/2;

      writeln ('t=',i:6:3,'  h=',h:8:3);

      i:=i+k;

      end;

 readln;

end.

 

 

6. Дано натуральное число n. Подсчитать количество цифр в числе.

Решение:

Подсчет количества цифр начнем с последней цифры числа. Увеличим счетчик цифр

на единицу. Число уменьшим в 10 раз (тем самым мы избавимся от последней цифры числа). Далее с получившимся числом проделаем ту же последовательность действий и т. д. , пока число не станет равным нулю.

Данные в задачи: n – число, в котором надо определить количество цифр;

Результат: k –количество цифр;

Блок-схема алгоритма

Программа:

Program kolzifr;

Uses crt;

Var m,n:longint;

            k: integer;

begin clrscr;

writeln(‘введите N=’); readln(n);

m:=n; k:=0;

while m<>0 do begin

k:=k+1; m:=m div 10;

end;

writeln(‘В числе ‘,n,’ - ‘,k,’ цифр’);

readln;

end.

 

 

 

 

 

 

Задачи на цикл REPEAT.

1.      Составить программу, печатающую все делители целого числа в порядке убывания.

Решение:

 

 

 

Программа:  

program pros2;

uses crt;

var n,i:integer;

begin

 ClrScr;

 writeln('введите число');

 readln(n);

 writeln('делители числа ',n);

 i:=n;

REPEAT

            if n mod i=0 then writeln(i);

 i:=i-1;

 until  i=1

 readln;

 end.

2.      Найти сумму корней квадратных из всех нечетных двухзначных чисел.

Решение:

Программа:

program summkor;

uses crt;

var i:integer;

s:real;

begin

clrscr;

s:=0;

i:=11;

REPEAT

s:=s+sqrt(i);

i:=i+2;

until  i>99

writeln('сумма=',s:6:2);

readln;

 

 

 

 

3. Вывести на экран числа, кратные К из промежутка [А,В]. Числа А, В, К задает пользователь.


Решение:

Блок-схема алгоритма:

Программа:

program summkor;

uses crt;

var a,b,k,i:integer;

begin

clrscr;

Writeln('введите концы отрезка a=,b=');

readln(a,b);

writeln('введите k=');

readln(k);

i:=a;

REPEAT

if i mod k=0 then writeln(i,' кратно ',k);

i:=i+1;

until  i=b

readln;

end.

4. Построить таблицу значений высоты тела при свободном падении за время t с шагом k.

Решение:

Высота при свободном падении определяется по формуле . Задаем  изменение времени t в промежутке от [0;t] с шагом k. Тогда в программе надо описывать:

Константа g=9,82 м/с2;

Данные t[c] –время и k – шаг изменения t;

Результат h[м] –высота.

Таблица должна иметь вид: ( при t=10;  k=1)

Время                   Высота

t=0.00;                  h=0.00;

t= 1.00;                 h=4.91;

………

t=10;                     h=491;

Блок-схема алгоритма:

Программа:

program paden;

uses crt;

const g=9.81;

var h,k,t,i:real;

 begin

 clrscr;

 writeln('введите время падения t=');

 readln(t);

 writeln('введите шаг изменения времени k=');

 readln(k);

 i:=0;

 writeln('  врем     высота');

  repeat

  h:=g*i*i/2;

      writeln ('t=',i:6:3,'  h=',h:8:3);

      i:=i+k;

      until i>t;

      readln;

      end.

 

 

Задачи на цикл FOR (цикл с параметром).

1. Составить программу, печатающую все делители целого числа в порядке убывания.

Решение:

 

 

 

Блок-схема алгоритма:

Программа:

program pros2;

uses crt;

var n,i:integer;

begin

 ClrScr;

 writeln('введите число');

 readln(n);

 writeln('делители числа ',n);

for i:=n downto 1 do

            if n mod i=0 then writeln(i);

 readln;

 end.

 

 

 

 

 

 

2. Найти сумму корней квадратных из всех нечетных двухзначных чисел.

Решение:

Блок-схема алгоритма:

Программа

program summkor;

uses crt;

var i:integer;

s:real;

begin

clrscr;

s:=0;

for i:=11 to 99 do

s:=s+sqrt(i);

writeln('сумма=',s:6:2);

readln;

end.

 

3. Вывести на экран числа, кратные К из промежутка [А,В]. Числа А, В, К задает пользователь.

Решение:

Блок-схема алгоритма:

Программа:

program summkor;

uses crt;

var a,b,k,i:integer;

begin

clrscr;

Writeln('введите концы отрезка a=,b=');

readln(a,b);

writeln('введите k=');

readln(k);

for i:=a  to b do

if i mod k=0 then writeln(i,' кратно ',k);

readln;

end.

 

 4. Запросите у пользователя положительное число А и найдите сумму всех натуральных чисел из промежутка [1, А]. (Исправьте программу, используя цикл с постусловием).

Решение:

Блок-схема алгоритма:

Программа:

program summkor;

uses crt;

var a,s,i:integer;

begin

clrscr;

Writeln('введите a=');

readln(a);

s=0;

for i:=1  to a do

s:=s+i;

writeln('сумма чисел от 1 до ',a,'=',s);

readln;

end.

 

5. Построить таблицу значений высоты тела при свободном падении за время t с шагом k.

Решение:

Высота при свободном падении определяется по формуле . Задаем  изменение времени t в промежутке от [0;t] с шагом k. Тогда в программе надо описывать:

Константа g=9,82 м/с2;

Данные t[c] –время и k – шаг изменения t;

Результат h[м] –высота.

Таблица должна иметь вид: ( при t=10;  k=1)

Время                   Высота

t=0.00;                  h=0.00;

t= 1.00;                 h=4.91;

………

t=10;                     h=491;

 

Блок-схема алгоритма:

 

Программа:

program paden;

uses crt;

const g=9.81;

var t,h,k,x,z:real;

i,z1:integer;

 begin

 clrscr;

 writeln('введите время падения t=');

 readln(t);

 writeln('введите шаг изменения времени k=');

 readln(k);

 z:=t/k ;

 writeln('  врем     высота');

 x:=0;

 z1:=trunc(z);

 for i:=0 to z1 do

  begin

  h:=g*x*x/2;

      writeln ('t=',x:6:3,'  h=',h:8:3);

      x:=x+k;

      end;

      readln;

      end.

 

6. Дано натуральное число n. Подсчитать количество цифр в числе.

Решение:

Подсчет количества цифр начнем с последней цифры числа. Увеличим счетчик цифр

на единицу. Число уменьшим в 10 раз (тем самым мы избавимся от последней цифры числа). Далее с получившимся числом проделаем ту же последовательность действий и т. д. , пока число не станет равным нулю.

Данные в задачи: n – число, в котором надо определить количество цифр;

Результат: k –количество цифр;

Блок-схема алгоритма:

Программа:

program kolzifr;

uses crt;

var m,n:longint;

   I, k:integer;

 begin

 clrscr;

 writeln('введите число N=');

 readln(n);

 m:=n; k:=0;

  for i:=1 to 10 do

begin

  k:=k+1;

  m:=m div 10;

  if m=0 then break;

end;

      if k>4 then

      writeln('в числе ',n,' - ',k,' цифр!')

      else  if k=1 then

      writeln('в числе ',n,' - ',k,' цифра!')

                 else

        writeln('в числе ',n,' - ',k,' цифры!');

  readln;

  end.

 

Дополнительные задачи:

  1. Построить и записать в виде программы алгоритм вычисления суммы квадратов десяти произвольных чисел, водимых с клавиатуры в процессе выполнения программы. 
  2. Вводятся 15 чисел. Определить, сколько среди целых чисел. 

3. Вывести все чётные числа начиная с числа N и до числа M. Числа N и M задает пользователь.

Тема: Подпрограммы и функции пользователя.

На данную тему отводится  10 часов. В данном разделе отрабатываются вопросы:

Содержание:

1. Отработка практических навыков составления  вспомогательных алгоритмов.

2.   Реализация программы на  ПЭВМ.

3.   Анализ выполненных заданий.

Основные знания и умения: Отработка практических навыков составления  вспомогательных программ.

Для изучения данной темы можно воспользоваться литературой:

1.Семакин И.Г. Основы программирования: учебник для сред. проф. образования. Издательский центр «Академия», 2003. – 432с.

2. «Электронный курс лекций по программированию». Казарин Н.П. Электронная библиотека (адрес в сети 192.168.0.2).

Примерные задания:

 

Решение задач на подпрограммы.

 

Задача 1. Составить процедуру нахождения  максимального из двух действительных чисел, вводимых с клавиатуры. Используйте процедуру для нахождения максимального значения для четырех чисел.

Решение:

 

Блок- схема алгоритма:

 

Программа:

program bid;

uses crt;

var a,b,c,d,s:real;

procedure max(x,y:real;var s:real);

begin

if x<y then s:=y else s:=x;

end;

begin

clrscr;

writeln('введите 4 числа a,b,c,d=');

readln(a,b,c,d);

max(a,b,s);

max(c,s,s);

max(d,s,s);

writeln('max=',s:3:1);

readln;

end.

 

 

 

 

 

Задача 2. Составить программу, которая будет находить ab, где  a и b – это целые числа и b>0, вводимые с клавиатуры.

Решение:

 

Блок-схема алгоритма:

Программа

Program st;

Uses Crt;

Var a,b: Integer;

S:Longint;

Procedure stepen(x,y:integer;var s:Longint);

Var i:integer;

Begin

S:=1;

For i:=1 to y do

S:=s*x;

End;

Begin

Clrscr;

Writeln(‘ введите основание a=’);

Readln(a);

Writeln(‘ введите степень b=’);

Readln(b);

Stepen(a,b,s);

Writeln(‘a^b=’,s);

Readln;

 

 

 

Задача №3. Определить длину окружности L и площадь круга S. Радиус окружности задается с клавиатуры. Вычисление S и L оформить в виде процедуры.

Решение:

Программа:

Program proc2;

uses crt;

var r,s,l:real;

procedure plk(x:real;var s:real);

begin

s:=pi*x*x;

end;

 procedure dlk(y:real;var l:real);

begin

l:=pi*y*2;

end;

begin Clrscr;

writeln('введите R=');

readln(r);

plk(r,s);

dlk(r,l);

writeln('площадь=',s:6:2);

writeln('длина=',l:6:2);

readln;

end.

 

Задача №4. Составьте программу, которая с помощью строки символов разделит экран на части, где напечатает  таблицу квадратных корней для чисел 1, 2,…, 10 и таблицу натуральных логарифмов для чисел 12,…,  5.

Печать строки символов оформить как процедуру. Так как никакую информацию передавать из процедуры в программу не надо, то аргументы процедуры (вид и количество) будут описаны  как параметры-значения.

Решение:

Программа:

program section;

var x:integer;

 procedure line(a:integer;c:char);

    var j:integer;

    begin

         for j:=1 to a do write(c);

             writeln

             end;

begin

line(35,'-'); Writeln('Таблица квадратных корней');

line(35,'-');

for     x:=1 to 10  do writeln('sqrt(',x,')=',sqrt(x):8:4);

line(35,'-'); writeln('Таблица натуральных логарифмов');

line(35,'-');

for x:=1 to 5 do writeln('ln(',x,')=',ln(x):8:4);

line(35,'*');

readln;

end.

 

Задачи для самостоятельного решения:

1. Напишите программу (процедуру), которая будет возвращать значение среднего арифметического двух своих параметров а и b.

2. Написать процедуру, меняющую значения двух переменных а и b местами.

3. Используя процедуру обмена значений двух переменных, упорядочьте по возрастанию переменные a, b, c.

4. Описать процедуру PowerA3(A, B), вычисляющую третью степень числа A и возвращающую ее в переменной B (A — входной, B — выходной параметр; оба параметра являются вещественными). С помощью этой процедуры найти третьи степени пяти данных чисел.

5. Описать процедуру PowerA234(A, B, C, D), вычисляющую вторую, третью и четвертую степень числа A и возвращающую эти степени соответственно в переменных B, C и D (A — входной, B, C, D — выходные параметры; все параметры являются вещественными). С помощью этой процедуры найти вторую, третью и четвертую степень пяти данных чисел.

6. Описать процедуру Mean(X, Y, AMean, GMean), вычисляющую среднее арифметическое AMean = (X+Y)/2 и среднее геометрическое GMean = (X·Y)1/2 двух положительных чисел X и Y (X и Y — входные, AMean и GMean — выходные параметры вещественного типа). С помощью этой процедуры найти среднее арифметическое и среднее геометрическое для пар (A, B), (A, C), (A, D), если даны A, B, C, D.

7. Описать процедуру TrianglePS(a, P, S), вычисляющую по стороне a равностороннего треугольника его периметр P = 3·a и площадь S = a2·(3)1/2/4 (a — входной, P и S — выходные параметры; все параметры являются вещественными). С помощью этой процедуры найти периметры и площади трех равносторонних треугольников с данными сторонами.

8. Описать процедуру RectPS(x1, y1, x2, y2, P, S), вычисляющую периметр P и площадь S прямоугольника со сторонами, параллельными осям координат, по координатам (x1, y1), (x2, y2) его противоположных вершин (x1, y1, x2, y2 — входные, P и S — выходные параметры вещественного типа). С помощью этой процедуры найти периметры и площади трех прямоугольников с данными противоположными вершинами.

 

Решение задач с использованием функции.

Задача 1. Составить функцию нахождения  максимального из двух действительных чисел, вводимых с клавиатуры. Используйте эту функцию для нахождения максимального значения для четырех чисел.

Решение:                               Блок-схема алгоритма:

Программа:

program bid;

uses crt;

var a,b,c,d,s:real;

function max(x,y:real):real;

begin

if x<y then s:=y else s:=x;

max:=s;

end;

begin

clrscr;

writeln('введите 4 числа a,b,c,d=');

readln(a,b,c,d);

s:=max(max(max(a,b),c),d);

writeln('max=',s:3:1);

readln;

end.

 

Задача 2. Составить программу, которая будет находить ab, где  a и b – это целые числа и b>0, вводимые с клавиатуры. Использовать функцию для вычисления степени.

Решение:

            Блок-схема алгоритма:

program stepen;

uses crt;

var n:integer;

x,z:real;

function st(k:integer;a:real):real;

var i:integer; z:real;

begin

z:=1; i:=1;

while i<=k do

begin

z:=z*a;

i:=i+1;

end;

st:=z;

end;

begin   CLrscr;

     Writeln('введите n,x');

     readln(n,x);

     if n=0 then

     z:=1

     else if n>0 then

     z:=st(n,x)

     else

    z:= st(-n,1/x);

     writeln(x:4:2,' в степени ',n,' =',z:4:2);

     readln;

     end.

 

 

 Задача №3. Определить длину окружности L и площадь круга S. Радиус окружности задается с клавиатуры. Вычисление S и L оформить в виде функции.

Решение:

Программа

Program proc2;

uses crt;

var r,s,l:real;

function plk(x:real):real;

var s:real;

begin

s:=pi*x*x;

plk:=s;

end;

function  dlk(y:real):real;

var l:real;

begin

l:=pi*y*2;

dlk:=l;

end;

begin Clrscr;

writeln('введите R=');

readln(r);

s:=plk(r);

l:=dlk(r);

writeln('площадь=',s:6:2);

writeln('длина=',l:6:2);

readln;

end.

 

Задача №4. Определить НОД для трех величин a+b, |a-b|, a*b, используя функцию.

Решение:

Программа:

program nod;

var a,b,rez:integer;

function Evk(m,n:integer):integer;

begin

     While m<>n do

     if m>n

     then m:=m-n

     else n:=n-m;

     evk:=m

     end;

begin

Write('a=');

readln(a);

Write('b=');

readln(b);

rez:=evk(evk(a+b,abs(a-b)),a*b);

writeln('rez=',rez);

readln;

end.

 

Дополнительные задачи:

1. Описать функцию Sign(X) целого типа, возвращающую для вещественного числа X следующие значения:

–1,    если X < 0;        0,    если X = 0;        1,    если X > 0.

С помощью этой функции найти значение выражения Sign(A) + Sign(B) для данных вещественных чисел A и B.

2. Описать функцию RootsCount(A, BC) целого типа, определяющую количество корней квадратного уравнения A·x2 + B·x + C = 0 (AB, C — вещественные параметры, A  0). С ее помощью найти количество корней для каждого из трех квадратных уравнений с данными коэффициентами. Количество корней определять по значению дискриминанта:

D = B2 – 4·A·C.

3. Описать функцию CircleS(R) вещественного типа, находящую площадь круга радиуса R (R — вещественное). С помощью этой функции найти площади трех кругов с данными радиусами. Площадь круга радиуса R вычисляется по формуле S = π·R2. В качестве значения π использовать 3.14.

4. Описать функцию RingS(R1, R2) вещественного типа, находящую площадь кольца, заключенного между двумя окружностями с общим центром и радиусами R1 и R2 (R1 и R2 — вещественные, R1 > R2). С ее помощью найти площади трех колец, для которых даны внешние и внутренние радиусы. Воспользоваться формулой площади круга радиуса R: S = Pi·R2. В качестве значения Pi использовать 3.14.

5. Описать функцию TriangleP(ah), находящую периметр равнобедренного треугольника по его основанию a и высоте h, проведенной к основанию (a и h — вещественные). С помощью этой функции найти периметры трех треугольников, для которых даны основания и высоты. Для нахождения боковой стороны b треугольника использовать теорему Пифагора: b2 = (a/2)2 + h2.

Тема Массивы. Способы формирования  массивов.

На данную тему отводится  12 часов. В данном разделе отрабатываются вопросы:

1.      Отработка практических навыков составления алгоритмов формирования массивов.

2.      Отработка практических навыков составления алгоритмов обработки массивов.

3.      Реализация программы на  ПЭВМ.

4.      Анализ выполненных заданий.

Основные знания и умения: Отработка практических навыков составления  программ формирования массивов и обработки массивов.

Для изучения данной темы можно воспользоваться литературой:

1.Семакин И.Г. Основы программирования: учебник для сред. Проф. Образования. Издательский центр «Академия», 2003. – 432с.

2. «Электронный курс лекций по программированию». Казарин Н.П. Электронная библиотека (адрес в сети 192.168.0.2).

 

Примерные задания:

Задание 1.  Сформировать одномерный массив из N элементов, где элементы массива – целые случайные числа в пределах от 1 до 45. Напечатать элементы массива в прямом и обратном порядке.

Решение.

Для получения случайных чисел воспользуемся  функцией Random(x). Для получения массива целых случайных чисел из диапазона от [A,B] воспользуемся формулой

random(B-A+1)+A.

Схема алгоритма:

 

Программа

 Program prim1;

Uses Crt;

Var I,n:integer;

A:array[1..10000] of integer;

Begin

Clrscr;

Randomize;

Write(‘введите размер=’);

readln(n);

For i:=1 to n do begin

a[i]:=random(46)+1;

writeln(‘a[‘,I,’]=’,a[i]);

end;

for i:=n downto 1 do

writeln(‘a[‘,I,’]=’,a[i]);

readln;

end.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 Задание 2. Разработать программу обработки одномерного массива (вектора). Организовать диалоговый режим ввода компонентов массива, используя циклический процесс.

Дан вектор X(n), выдать на печать номера отрицательных элементов вектора.

Решение:

Схема алгоритма:                                                                           Программа:

 

program ZD6;

uses CRT;

const k=100;

var  I,n:byte;

x:array[1..k] of real;

begin

clrscr;

Writeln('введите размерность вектора n=');

readln(n);

{ввод элементов массива}

for i:=1 to n do

begin

Writeln(‘введите x[‘,I,’]=’);

readln(x[i]);

end;

{вывод массива на экран}

clrscr;

writeln(‘заданный массив’);

for i:=1 to n do

writeln(‘x[‘,I,’]=’,x[i]:6:2);

{вывод номера отрицательного элемента}

writeln('номера отрицательных элементов');

for i:=1 to n do

if x[i]<0 then Writeln(i);

readln;

end.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание 3. Вычислить сумму элементов числового массива   A = (a1 , a2 , … , aN ).

Решение:

Блок-схема алгоритма        Программа:

Program Summa;
 Uses Crt;
  Type Mas = Array [1..20] of Real;
  Var A    : Mas;
      I, N : Integer;
      S    : Real;
BEGIN
  ClrScr;    {очистка экрана }
  Write(‘Введите N = ‘);
  ReadLn(N); {ввод значения N}
  For i := 1 to N dо {цикл по элементам массива}
    begin
      Write(‘A [ ‘, I , ‘ ] = ‘);
      ReadLn(A[i])   {ввод элементов массива}
    end;
  S := 0; {присваивание начального значения}
  For I := 1 to N do S := S+A[i]; {суммирование}
  WriteLn;
  WriteLn(‘Сумма равна ‘, S : 5 : 1);
  ReadLn
END.
 
Задание 4. Найти наибольший элемент числового массива A = (a1, a2 , …, aN ) и его номер.

Решение:

Блок-схема                                                    Программа:

Turbo Pascal

Program MaxElem;

  Uses Crt;

  Type Mas = Array [1..20] of Real;

  Var A    : Mas;

      I, N : Integer;

      k    : Integer;

      Amax : Real;

BEGIN

  СlrScr;

  Write(‘Введите N = ‘);

  ReadLn(N);

  For i := 1 to N do {Ввод значений элементов массива А}

    begin

      Write(‘A [ ‘, I, ‘ ] = ‘); ReadLn(A[i])

    end;

  Amax := A[1]; k:=1; {Поиск максимального элемента}

  For I := 2 to N do

    If A[i] > Amax then

      begin

        Amax := A[i]; k := i

      end;

  WriteLn; WriteLn(‘Наибольший элемент’ , k , ‘-й’);

  WriteLn('Его значение ', Amax : 5 : 1); ReadLn

END.                                                  

Задание 5. Разработать программу обработки двумерного массива (матрицы).  Организовать диалоговый режим ввода компонентов массива, используя вложенный циклический процесс. Определить сумму положительных элементов матрицы.

Решение:       

Схема алгоритма:

 


Программа:

program ZD7;

uses CRT;

const k=100;

var  I,n,j,m:byte; s:real;

x:array[1..k,1..k] of real;

begin

clrscr;

Writeln('введите размерность матрицы n,m=');

readln(n,m);

{ввод элементов матрицы и ахождении суммы

положительных элементов}

 s:=0;

for i:=1 to n do

for j:=1 to m do

begin

Writeln(‘введите x[‘,I,’,’,j,’]=’);

readln(x[I,j]);

if x[I,j]>0 then s:=s+x[I,j];

end;

{вывод массива на экран}

clrscr;

writeln(‘заданный массив’);

for i:=1 to n do

for j:=1 to m do

writeln(‘x[‘,I,’,’,j,’]=’,x[I,j]:6:2);

writeln('сумма положительных элементов=',s:6:2);

readln;

end.

 

Результат работы программы;

введите размерность матрицы n,m=

2

3

Введите x[1,1]=

2

Введите x[1,2]=

-6

Введите x[1,3]=

4

Введите x[2,1]=

-1

Введите x[2,2]=

-6

Введите x[2,3]=

0

Заданный массив

X[1,1]=2.00

X[1,2]=-6.00

X[1,3]=4.00

X[2,1]=-1.00

X[2,2]=-6.00

X[2,3]=0.00

Сумма положительных элементов=6.00

 

Дополнительные задачи:

1. Дан массив целых чисел, состоящий из 20 элементов. Запол­нить его с клавиатуры. Найти:

-   сумму элементов, имеющих нечетное значение;

-   вывести индексы тех элементов, значения которых больше
заданного числа А.

2. Определить, есть ли в данном массиве положительные эле­менты, кратные к (к вводить с клавиатуры).

3. Дан массив целых чисел, состоящий из 25 элементов. Запол­нить его с клавиатуры. Найти:

-   сумму элементов, имеющих нечетные индексы;

-   подсчитать количество элементов массива, значения которых больше заданного числа А и кратны 5.

4. Найти номер первого отрицательного элемента, делящегося на 5 с остатком 2.

 

Тема: Графика в Паскале.

На данную тему отводится  16 часов. В данном разделе отрабатываются вопросы:

1.             Отработка практических навыков инициализации графического режима.

2.      Отработка практических навыков составления программ, используя основные процедуры графики.

3.      Реализация программы на  ПЭВМ.

4.      Анализ выполненных заданий.

Основные знания и умения: Отработка практических навыков составления  программ, использующие графические процедуры.

Для изучения данной темы можно воспользоваться литературой:

1.Семакин И.Г. Основы программирования: учебник для сред. проф. образования. Издательский центр «Академия», 2003. – 432с.

2. «Электронный курс лекций по программированию». Казарин Н.П. Электронная библиотека (адрес в сети 192.168.0.2).

 

Примерные задания на данную тему:

Задание 1. Начертить на экране все известные Вам графические объекты.

Решение:

program pr_1;

uses graph;

var d,m:integer;

begin

d:=detect;

initgraph(d,m,'c:\language\pascal\bgi');

setcolor(2);

circle(50,50,50); -окружность

setcolor(4);

arc(200,80,45,135,50);  - дуга

setcolor(1);

ellipse(400,220,0,360,100,40); - эллепс

setcolor(14);

rectangle(100,250,300,360);  -прямоугольник

setcolor(5);

bar3d(100,100,200,200,40,true);  -параллелепипед

readln;

closegraph;

end.

 

Задание 2. Закрасить основные графические объекты.

Решение:

program pr_2;

uses graph;

var d,m:integer;

begin

d:=detect;

initgraph(d,m,'c:\language\pascal\bgi');

setcolor(4);

setfillstyle(1,4);

bar(10,10,110,110);

bar3d(140,10,200,110,10,true);

setcolor(14);

setfillstyle(3,7);

pieslice(50,170,10,150,50);

sector(155,170,10,170,50,40);

setcolor(2);

setfillstyle(8,11);

ellipse(50,250,0,360,50,20);

floodfill(50,250,2);

circle(160,250,50);

floodfill(160,250,2);

setcolor(9);

line(20,200,70,200);

setlinestyle(2,0,3);

readln;

closegraph;

end.

 

Задание 3. Построить прямоугольник и подписать его вершины.

Решение:

program pr_3;

uses graph;

var d,m:integer;

begin

d:=detect;

initgraph(d,m,'c:\language\pascal\bgi');

setcolor(14);

rectangle(100,100,300,250);

setcolor(11);

settextstyle(10,0,4);

setcolor(4);

outtextxy(90,90,'A');

setcolor(1);

outtextxy(305,90,'B');

setcolor(7);

outtextxy(305,255,'C');

setcolor(10);

outtextxy(90,255,'D');

readln;

closegraph;

end.

Задание 4. Составить программу построения графика функции Y=SIN(X) для , используя точечный метод.

Из условия задачи следует, что . В этих пределах функция SIN(X) меняется от  -1 до 1. Поэтому Ymin=-1, Ymax=1.

Выберем следующие границы окна:

Xgmin=10;   Xgmax=200;

Ygmin=140;  Ygmax=40.

График строится в виде последовательности точек с математическими координатами

.

Шаг h выбирается минимально возможным, соответствующий шагу графической сетки:

.

Приведенные выше формулы перевода математических координат в графические примут вид:

;

.

Вместе с графиком функции строим оси координат.

 

Uses Graph;

Var D,M:Integer;

    X:Real; Xg,Yg,I:Integer;

Begin

{Инициализация графического режима}

    D:=Detect;

    InitGraph(D,M,’C:\TP\BGI’);

SetColor(2);{зеленый цвет};

Line(10,90,200,90);{ось X};

Line(10,20,10,160); {ось Y};

            {Построение графика функции красными точками};

            X:=0

            For I:=0 To 190 Do

            Begin Xg:=10+Round(95/Pi*X);

            Yg:=90-Round(50*sin(X));

            PutPixel(Xg,Yg,4);

            X:=X+Pi/95;

            End;

            {Разметка осей, запись функции};

OutTextXY(15,30,’Y’);

OutTextXY(205,90,’X’);

OutTextXY(130,40,’Y=SIN(X)’);

ReadLn; {Задержка};

CloseGraph;{Выход из графики}

END

 

Примерные задания на данную тему:

1.Написать на экране введенную строку пятью различными стилями.

2. Построите на экране все виды углов и подпишите. (Углы бывают острыми, тупыми, прямыми и развернутыми.)

3. Построить снеговика, разукрасить его по своему вкусу. Дайте картинке название.

4. Выполните построение следующей картинки.
 

 

 

 

 

 

 

 

 

5. Построить график функции у=cos(x).

 

 

 

Тема: Обработка  строк. 

На данную тему отводится  14 часов. В данном разделе отрабатываются вопросы:

1.      Отработка практических навыков составления программ по обработке   строк.

2.   Реализация программы на  ПЭВМ.

3.   Анализ выполненных заданий.

Основные знания и умения: Отработка практических навыков составления программ  по обработке  строк

Для изучения данной темы можно воспользоваться литературой:

1.Семакин И.Г. Основы программирования: учебник для сред. проф. образования. Издательский центр «Академия», 2003. – 432с.

2. «Электронный курс лекций по программированию». Казарин Н.П. Электронная библиотека (адрес в сети 192.168.0.2).

 

 

 

 

Примерные задания на данную тему:

 

1. Вывести на экран все  печатные буквы русского алфавита. Код буква А-128.

 

Решение:


 

Программа:

program Brus;

uses CRT;

var a:char;

i:integer;

begin

clrscr;

for i:=128 to 159 do begin

a:=chr(i);

Write(a,'; ')

end;

readln;

end.

 

 

 

2. Вывести в одну строку АаБбГг.

Решение:                                                                   Программа:

program Brus;

uses CRT;

var b,a:char;

k,i:integer;

begin

clrscr;

i:=128;k:=160;

while i<=131 do

begin

a:=chr(i);b:=chr(k);

Write(a,b);

i:=i+1;

k:=k+1;

end;

readln;

end.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. Ввести символ и проверить является ли он цифрой.

Решение:

Программа:

program Brus;

uses CRT;

var a:char;i:integer;

begin

clrscr;

writeln('Введите символ');

Readln(a);

i:=Ord(a);

if (i>=48) and  (i<=57) then

Writeln('цифра')

else

Writeln('не цифра');

readln;

end.

 

 

 

 

 

 

 

4.Дана непустая строка. Вывести код и символ ее первого и последнего символа.

Решение.

Программа:

program ZD121;

uses CRT;

Var s:string;

a,b,c:integer;

begin

Clrscr;

Writeln('введите строку');

Readln(s);

b:=length(s);

a:=Ord(s[1]);

c:=Ord(s[b]);

Writeln('первый символ ',s[1],' его код=',a);

Writeln('последний символ ',s[b], ' его код=',c);

readln;

end.

 

 

 

 

 

 

 

 

5. Ввести строку и подсчитать количество цифр в ней.

Решение:

Программа:

program ZD122;

uses CRT;

Var s,s1:string;

k,b,i,f:integer;

begin

Clrscr;

Writeln('введите строку');

Readln(s);

k:=0;

Clrscr;

for i:=1 to length(s) do

begin

val(s[i],b,f);

if f=0 then

begin

Writeln (b);

k:=k+1;

end;

end;

Writeln('количество цифр в строке ','"',s,'" =',k);

readln;

end.

 

 

Задача 6. Составить программу, которая выводит слово записанное на оборот.

Решение:

Программа:

program ZD123;

uses CRT;

Var s,s1:string;

i:integer;

begin

Clrscr;

Writeln('введите строку');

Readln(s);

s1:='';

for i:=1 to length(s) do

s1:=s[i]+s1;

Writeln('введенное слово ','"',s,'" наоборот ','"',s1,'"');

readln;

end.

 

 

 

 

 

Задача 7. Ввести число, записать его в обратном порядке, найти квадрат данного числа, а также сумму его цифр.

Решение:

Программа:

program ZD131;

uses CRT;

Var s,s1:string;

i,n,k,c,kw,l:integer;

begin

Clrscr;

Writeln('введите число n=');

Readln(n);

Str(n,s);s1:=''; c:=0;

For i:=length(s) downto 1 do

begin

s1:=s1+s[i];

val(s[i],k,l);

c:=c+k;

end;

kw:=n*n;

writeln('обратное число=',s1);

writeln('квадрат числа=',kw);

writeln('сумма цифр=',c);

readln;

end.

 

 

 

 

Задача 8. Составить программу заменяющую в некотором слове все буквы «а» на букву «б».

Решение:

Программа:

program ZD132;

uses CRT;

Var s,s1:string;

i:integer;

begin

Clrscr;

Writeln('введите слово s=');

Readln(s);

s1:='';

For i:=1 to length(s) do

begin

if s[i]='а' then s[i]:='б';

s1:=s1+s[i];

end;

writeln('новое слово ',s1);

readln;

end.

 

 

 

Дополнительные задания:

1.      Составьте программу вычисления суммы мест, на которых в слове Х стоят буквы "в" и "п"

2.      Дана строка символов. Дано слово. Удалить из строки это слово.

3.      Дана строка символов. Выделить подстроку между первой и второй точкой.

4.      Дана строка символов до точки. Группы символов в ней между группами пробелов считаются словами. Определить, сколько слов начинается и кончается одной и той же буквой. 

5.      Дана строка символов до точки. Группы символов в ней между группами пробелов считаются словами. Определить, сколько слов содержат хотя бы одну букву "е".

 

Тема: 10. Составной  тип.  Записи. Множества.

На данную тему отводится  16 часов. В данном разделе отрабатываются вопросы:

1.      Отработка практических навыков составления программ с использованием записи, множества.

2.   Реализация программы на  ПЭВМ.

3.   Анализ выполненных заданий.

Основные знания и умения: Отработка практических навыков составления программ  с использованием записи, множества.

Для изучения данной темы можно воспользоваться литературой:

1. «Электронная библиотека» (www.192.168.0.2) ПрограммированиеÜ ПаскальÜ Электронный учебник по Паскалю

2. «Электронный курс лекций по программированию». Казарин Н.П. Электронная библиотека (адрес в сети 192.168.0.2).

 

Задание 1. Найти произведение и частное двух обыкновенных дробей.

Решение:

Схема алгоритма:

 Программа:

program ZAP;

uses CRT;

type z=record

     chis:integer;

     znam:integer

  end;

  var z1,z2,p,ch:z;

  begin Clrscr;

  Writeln('введите первую дробь');

  readln(z1.chis,z1.znam);

   Writeln('введите вторую дробь');

  readln(z2.chis,z2.znam);

  p.chis:=z1.chis*z2.chis;

  p.znam:=z1.znam*z2.znam;

  ch.chis:=z1.chis*z2.znam;

  ch.znam:=z1.znam*z2.chis;

  writeln('p=',p.chis,'/',p.znam);

  writeln('ch=',ch.chis,'/',ch.znam);

  readln;

  end.

 

 

 

Рассмотрим еще одну задачу. В первом примере при выводе результата дроби надо сократить.

Схема алгоритма                                                                       Программа:

program ZAP;

uses CRT;

type z=record

     chis:integer;

     znam:integer

end;

Function nod(m,n1:integer):integer;

begin

while m<>n1 do

if m>n1

then m:=m-n1

else n1:=n1-m;

nod:=m;

end;

  var x,y,p,ch:z;

  n:integer;

  begin Clrscr;

  Writeln('введите первую дробь');

  readln(x.chis,x.znam);

   Writeln('введите вторую дробь');

  readln(y.chis,y.znam);

  p.chis:=x.chis*y.chis;

  p.znam:=x.znam*y.znam;

  ch.chis:=x.chis*y.znam;

  ch.znam:=x.znam*y.chis;

  n:=nod(p.chis,p.znam);

  p.chis:=p.chis div n;

  p.znam:=p.znam div n;

  n:=nod(ch.chis,ch.znam);

  ch.chis:=ch.chis div n;

  ch.znam:=ch.znam div n;

  with p do writeln('p=',chis,'/',znam);

  with ch do writeln('ch=',chis,'/',znam);

  readln;

  end.

 

 

Пример 3.  Описать множества гласных и согласных букв русского языка, определить количество гласных и согласных букв в предложении, введенном с клавиатуры.

Решение:

Зададим тип Letters – множество букв русского языка, затем опишем переменные этого типа: Glasn – множество гласных букв, Sogl – множество согласных букв. Вводимое с клавиатуры предложение опишем переменной Text типа String. Для указания символа в строке Text применим переменную i типа byte. Для подсчета количества гласных и согласных букв опишем переменные G и S. Проверку принадлежности символов, составляющих предложение множествам гласных или согласных букв русского языка запишем с использованием оператора повтора For, параметр i которого, изменяясь от 1 до значения длины предложения, будет указывать порядковый номер символа в предложении. Принадлежностьб очередного символа предложения множеству гласных или согласных букв запишем операцией in. Если выполняется условие Text[i] in Sogl, тогда увеличивается на 1 счетчик S. Если выполняется условие Text[i] in Glasn, тогда увеличивается на 1 счетчик G. Если не выполняется ни первое, ни второе условие, значит, очередной символ в предложении не является гласной или согласной буквой русского языка.

Теперь рассмотрите текст программы:

Program GlasnSogl;

Type

   Letters = set of 'A'..'я';

Var

   Glasn, Sogl : Letters;

   Text : String;

   i, G, S : byte;

Begin

   Glasn := ['A', 'я', 'Е', 'е', 'И', 'и', 'О', 'о', 'У', 'у', 'Э', 'э', 'Ю', 'ю', 'Я', 'я'];

   Sogl := ['Б'..'Д', 'б'..'д', 'Ж', 'ж', 'З', 'з', 'К'..'Н', 'к'..'н', 'П'..'Т', 'п'..'т', 'Ф'..'Щ', 'ф'..'щ', 'ь'];

   Write('Введите предложение ');

   Readln(Text);

   G := 0;

   S := 0;

   For i := 1 to Length(Text) do

      Begin

          If Text[i] in Glasn

             Then

                 G := G+1;

          If Text[i] in Sogl

             Then

                 S := S+1;

      End;

   Write('В предложении " ', Text, ' " ', G, ' гласных и ', S, ' согласных букв');

End.

Дополнительные задачи:

1. В массиве хранятся данные об учениках класса: школа, фамилия, класс. Вывести список учеников, которые учатся в восьмом классе.

2. Описать множество М(1..50). Сделать его пустым. Вводя целые числа с клавиатуры, заполнить множество 10 элементами.

 

Тема: Внешние библиотеки и модули.

На данную тему отводится  10 часов. В данном разделе отрабатываются вопросы:

1.      Отработка практических навыков составления программ с использованием понятия внешние библиотеки и модуль.

2.   Реализация программы на  ПЭВМ.

3.   Анализ выполненных заданий.

Основные знания и умения: Отработка практических навыков составления программ  с использованием понятия внешние библиотеки и модуль.

 

1.Семакин И.Г. Основы программирования: учебник для сред. проф. образования. Издательский центр «Академия», 2003. – 432с.

Примерные задания:

Задание 1. Дано натуральное число n. Най­ти сумму первой и последней цифр этого числа.

Решение:

Для решения будет использована функция, вычисляющая ко­личество цифр в записи натурального числа. Вот ее возможный вариант:

Function Digits(N: Longint): Byte;

Var  Kol:   Byte;

Begin

Kol:=0;

While N<>0  Do

Begin

Kol:=Kol+l;

N:=N  Div   10

End;

Digits:=Kol

End;

Сохраним этот текст в файле с расширением inc (это расширение внешних подпрограмм в Турбо Паскале), например digits.inc.

Опишем еще одну функцию: возведение натурального число; натуральную степень n).

Function   Power(A,N:Longint):   Longint;

Var   I,St:   Longint;

Begin

St:=l;

For   I:=l   To  N  DO  

St:=St*A;

Power:=St;

End;

А теперь составим основную программу, решающую поставлиную задачу. В ней будут использованы описанные выше функции

Program Examplel;

Var N,S: Integer;

{$1 digits.inc} {подключение внешней функции из

файла digits.inc, вычисляющей количество цифр в

записи числа}

{$1 power.inc} {подключение внешней функции из

файла power.inc, вычисляющей результат возведения

числа А в степень n}

Begin CLRSCR;

Write('Введите  натуральное число:');   ReadLn(N);

 {для  определения последней цифры числа  N берется  остаток  от  деления этого числа  на  10, а для  определения  первой цифры N делится на  10, возведенное  в  степень  на единицу меньшую,   чем количество цифр в  записи числа   (т.к.   нумерация разрядов  начинается  с  0)}

S:=N Mod   10+N  Div   Power(10,Digits(N)-1);

 WriteLn('Искомая   сумма:',S)

Readln;

 End.

 

Задание 2. Вычислите сумму 1+1/2+1/3+…+1/n. Ввод данных и вывод результата сделать в цвете и вывести в середину экрана.

Решение:

Program prim2;

uses CRT;

var n,i:integer;

   s:real;

begin clrscr;

TextColor(4);

GoToxy(24,12);

write(‘введите n=’); readln(n);

s:=0;

for i:=1 to n do

 s:=s+1/I;

TextColor(2);

GoToxy(24,13);

Writeln(‘сумма=’,s:4:2);

readln;

end.

Дополнительные задачи

Решите следующую задачу, ввод данных и вывод результата поместить в центр экрана и в цвете. Для этого используйте модуль CRT.

1.Даны два ненулевых числа. Найти сумму, разность, произведение и частное их квадратов.

2. Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае не изменять его. Вывести полученное число.

3. Даны два неотрицательных числа a и b. Найти их среднее геометрическое, то есть квадратный корень из их произведения: (a·b)1/2.

4. Дано целое число. Если оно является положительным, то прибавить к нему 1; если отрицательным, то вычесть из него 2; если нулевым, то заменить его на 10. Вывести полученное число.

 

Тема: Работа с файлами.

На данную тему отводится  12 часов. В данном разделе отрабатываются вопросы:

1.      Отработка практических навыков составления программ, реализующих различные способы работы с  записями и файлами.

2.      Реализация программ на ПЭВМ.

Основные знания и умения: Отработка практических навыков составления программ,   используя файлы

Для изучения данной темы можно воспользоваться литературой:

1.Семакин И.Г. Основы программирования: учебник для сред. проф. образования. Издательский центр «Академия», 2003. – 432с.

2. «Электронный курс лекций по программированию». Казарин Н.П. Электронная библиотека (адрес в сети 192.168.0.2).

 

Примерные задания на данную тему:

 Задание 1. Открыть файл f86.txt и сохранить в нем N целых чисел в пределах от 65 до 90.

Решение:

Program fi186; 

Uses  CRT;

var f:file of integer;

    n,m,i,s:integer;

    a:string;

begin

     clrscr;

     a:='e:\work\f86';

     assign(f,a);rewrite(f);

     randomize;

     write('введите количество чисел n=');readln(n);

     writeln('числа записанные в файл');

     for i:=1 to n do begin

     m:=trunc(random(25))+65;

     write(f,m);

     write(m,';','');

     end;

     close(f);

     writeln;

     assign(f,a);reset(f);

     Writeln('числа считанные из файла');

     while not eof(f) do begin

     read(f,n);

     write(n,';','');

     s:=s+n

     end;

     close(f);

     writeln;

     writeln('сумма чисел, считанных из файла s=',s);

     readln;

     end.

 

Пример 2.Открыть текстовой файл Pr1.txt и сохранить в нем N чисел в пределах от -25 до 25 и вывести эти числа на экран.

 

Решение:

program faltext1;

uses crt;

var f:text;

x,i,n:integer;

y:string;

begin

clrscr;

assign(f,'e:\work\pr1.txt');

rewrite(f);

randomize;

Write('введите количество чисел N=');

readln(n);

for i:=1 to n do begin

x:=trunc(random(50)-25);

str(x,y);

y:=y+'; ';

write(f,y);

write(x,'; ');

end;

close(f); readln;

end.

 

Пример 3. С помощью программы «Блокнот» создайте текстовой файл, состоящий из целых чисел. Числа в файл записываются в столбик. Напишите программу, которая  печатает числа из этого файла и находит их сумму.

Решение:

program prob56;

uses Crt;

var f:text;

x:string;

i,n,s,k:integer;

begin

clrscr;

s:=0;

assign(f,'e:\work\prob.txt');

reset(f);

While not Eof(f) do

begin

k:=0;

while not Eoln(f) do

begin

Read(f,x);

Write (x,' ');

val(x,n,i);

s:=s+n;

inc(k);

end;

readln(f);

end;

close(f);

writeln;

Writeln('сумма чисел=',s);

readln;

end.

 

Дополнительные задачи:

1.     Дан файл F, компоненты которого являются действительны­ми числами. Найти сумму компонент файла.

2.   Дан файл F, компоненты которого являются действительны­ми числами. Найти наибольшее из значений компонент с нечетны­ми номерами.

3.   Даны символьный файлы F и G. Записать в файл Н все на­чальные совпадающие компоненты файлов F и G.

 

Тема: Понятие об объектно-орентированных языках программирования .

На данную тему отводится  12 часов. В данном разделе отрабатываются вопросы:

1.      Запуск среды программирования. Интерфейс программы.

2.      Отработка практических навыков работы с формами и их свойствами.

3.      Отработка практических навыков по созданию проекта в VB.

4.      Реализация проектов в среде VB.

Основные знания и умения:  Уметь создавать простейшие проекты.

Для изучения данной темы можно воспользоваться литературой:

 «Электронный курс лекций по программированию». Казарин Н.П. Электронная библиотека (адрес в сети 192.168.0.2).

 

Примерные задания на данную тему:

 Создать проект, в котором после запуска, форма располагается в центре экрана монитора, а четыре кнопки располагаются в центре формы. После щелчка по кнопкам они должны перемещаться в углы формы.

Решение:

Проект «Расположение формы на экране монитора и управляющих элементов на форме».

1

Создать новый проект. Активизировать форму Form1 щелчком мыши. В окне Свойства объекта выбрать свойство Caption и присвоить ему значение Первый проект.

2

Разместить в центре формы четыре кнопки Command1, Command2, Command3 и Command4.

            

3

Последовательно активизировать форму и кнопки. В окне Свойства объекта последовательно для всех объектов изменить свойство Name на frm1, cmd1, cmd2, cmd3 и cmd4.

 

4

Активизировать форму frm1. В окне Свойства объекта последовательно присвоить свойствам Left, Top, Width и Height значения 1000, 3000, 4000, 3000.

 

5

Двойным щелчком по форме вызвать окно Программный код с пустой процедурой Form_Load(). Ввести код процедуры выравнивания. 

 

 

6

Разместить четыре кнопки в центре формы с помощью мыши. При необходимости задать точное положение каждой кнопки на форме и их размеры с помощью окна Свойства объекта

 

Создать для каждой кнопки событийные процедуры, реализующие их перемещение в углы формы.

 

7

Для кнопки cmd3, которая должна перемещаться в правый нижний угол код событийной процедуры следующий:

Private Sub cmd3_Click()

cmd3.Move frm1.Width - cmd3.Width, frm1.Height - cmd3.Height

End Sub

8

Запустить проект. Форма появится в центре экрана монитора. Последовательно щелкнуть по всем кнопкам, они переместятся в углы формы.

Сохранение проекта. Проект готов и его необходимо сохранить на диске. Найдите в меню File пункт Save as Сначала Visual Basic предложит вам сохранить форму, причем по умолчанию даст то имя, которое вы задали ей в свойстве Name. Файл с формой и кодами будет храниться под именем вашей формы с расширением frm.

Полный код данного проекта:

Private Sub Form_Load()

frm1.Move (Screen.Width - frm1.Width) / 2, (Screen.Height - frm1.Height) / 2

End Sub

Private Sub cmd1_Click()

cmd1.Move 0, 0

End Sub

Private Sub cmd2_Click()

cmd2.Move frm1.Width - cmd3.Width, 0

End Sub

Private Sub cmd3_Click()

cmd3.Move frm1.Width - cmd3.Width, frm1.Height - cmd3.Height

End Sub

Private Sub cmd4_Click()

cmd4.Move 0, frm1.Height - cmd4.Height

End Sub 

Дополнительные задачи:

1. Модернизировать проект «Местоположение формы и управляющих элементов» так, чтобы местоположение кнопок задавалось с помощью свойств Top и Left.

2.   Создать проект, который позволяет перемещать по форме надпись с помощью управляющих элементов Кнопка (CommandButton).

3.    Создать проект, который позволяет перемещать по форме надпись с помощью управляющих элементов Переключатель (OptionButton).

 

Тема: Программирование на VB.

На данную тему отводится  46 часов. В данном разделе отрабатываются вопросы:

1.      Отработка  практических навыков по разработке   проектов на линейные алгоритмы

2.      Отработка  практических навыков по разработке   проектов с использованием стандартных функций.

3.      Отработка  практических навыков по разработке   проектов на ввод  и вывод данных.

4.      Отработка  практических навыков по разработке   проектов на логические выражения.

5.      Отработка  практических навыков по разработке   проектов на ветвления.

6.      Отработка  практических навыков по разработке   проектов на циклы.

7.      Отработка  практических навыков по разработке   проектов на массивы.

8.      Отработка  практических навыков по разработке   проектов на обработку строковых выражения.

9.      Отработка  практических навыков по разработке   проектов на графику в VB.

Для изучения данной темы можно воспользоваться литературой:

 «Электронный курс лекций по программированию». Казарин Н.П. Электронная библиотека (адрес в сети 192.168.0.2).

 

Примерные задания на данную тему:

Задание 1 Рассмотрим фрагмент программы, состоящей из операторов объявления переменных и константы  и нескольких операторов присваивания.

 

Private Sub Command1_Click()

Dim R As Single                                                   ‘Объявление переменных

Dim S As Single                                                   ‘Объявление переменных

Const Pi = 3.1416                                  ‘объявление константы – числа “пи”

R = 10                                                                     ‘Присвоение значения переменной R

S = Pi * R ^ 2                                                         ‘вычисление площади круга

Print "Площадь круга при r=10 ", S ‘вывод результата

R = 2 * R                                                                ‘Присвоение нового значения переменной R

S = Pi * R ^ 2                                                         ‘вычисление площади круга

Print " Площадь круга при r=20 ", S                ‘вывод результата

End Sub

 

Задание 2.Применение оператора деления. Разработайте приложение, состоящее из 5 текстовых полей, 5 меток и кнопки.

Интерфейс приложения
Введите следующий код.

Private Sub Command1_Click()

Dim x As Integer

Dim y As Integer

x = Text1.Text

y = Text2.Text

Text3.Text = x / y

Text4.Text = x \ y

Text5.Text = x Mod y

End Sub

 

 

 

Задание 3. Введите стороны треугольника и определите его площадь. Предусмотреть случай, когда стороны не являются сторонами треугольника.

Решение:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание 4. Найти сумму N-значных  чисел (N=1,2,3,4).

Решение:                                                                   Интерфейс приложения

Код программы:

Private Sub Command1_Click()

Dim i As Integer

Dim s As Long

Dim n As Single

  n = Text1.Text

s = 0

Select Case n

Case 1

For i = 1 To 9

s = s + i

Next

Text2.Text = s

Case 2

For i = 10 To 99

s = s + i

Next

Text2.Text = s

Case 3

For i = 100 To 999

s = s + i

Next

Text2.Text = s

Case 4

For i = 1000 To 9999

s = s + i

Next

Text2.Text = s

Case Is > 4

Text2.Text = "Такой значности нет"

Case Is < 1

Text2.Text = " Такой значности нет "

 

End Select

 

End Sub

 

Private Sub Command2_Click()

End

End Sub

 

Задание  5. Вычислить корень квадратный из числа Х с заданной точностью.

Решение:

1. Код программы:

Private Sub Command1_Click()

Dim a1, a2, eps As Single

eps = Text1.Text

x = Text2.Text

a1 = x

a2 = (a1 + x / a1) / 2

While Abs(a1 - a2) >= eps

a1 = a2

a2 = (a1 + x / a1) / 2

Wend

Text3.Text = a2

End Sub

Private Sub Command2_Click()

End

End Sub

2. Интерфейс программы:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Задание 6. Создадим событийную процедуру для заполнения одно­мерного целочисленного массива из 20 элементов случайными  положительными числами:

 

Решение                                       Результат работы

Dim   A(20), I   As   Byte

'    Заполнение   массива    присваиванием

Sub   cmdl_Click()

Cls

randomize

For i=1 to 20

A(i)= Int(Rnd    *    100)

Print “A(“;i:”)=”;a(i)

Next  

End   Sub

 

 

 

 

Динамические массивы

Задание 7. Проект «Сортировка числового массива»

  1. Создайте интерфейс проекта:

  

Сохраните проект в D:\ваша папка\Сортировка массива

2Создайте событийную процедуру заполнение массива.

 

 

 

 

 3.Создайте событийную процедуру сортировки.

 

 

  

 

       

4. Запустите проект.

 


  

 

 

 

 

 

 

5.Сохраните проект в существующей папке.

Задание 8.Создадим строковый калькулятор, который позволит производить различные преобразования строк.

Проект «Строковый калькулятор».

1

Создать новый проект. Разместить на форме три текстовых поля и кнопку. Присвоить им имена: txt1, txt2, txt3, cmdCon.

2

Для кнопки ввести программный код событийной процедуры cmdCon_Click(), реализующий операцию конкатенации:

 

Private Sub cmdCon_Click()

txt3.Text = txt1.Text + txt2.Text

End Sub

3

Запустить проект, в два первых поля ввести строки и щелкнуть по кнопке Конкатенация. В третьем поле появится результат сложения двух строк.

Воспользуемся теперь для преобразования строк строковой функцией Left$(строка$,N). Функция вырезает из строки$ подстроку, содержащую N символов, начиная с первого символа. В качестве строки будем рассматривать значение свойства первого текстового поля txt1.Text, а количество символов будет задаваться в текстовом поле txtLeft.Text и преобразовываться в числа с помощью функции Val.

4

Разместить на форме кнопку и текстовое поле. Присвоить им имена cmdLeft и txtLeft.

5

Для кнопки ввести программный код событийной процедуры cmdLeft_Click(), реализующий операцию вырезания подстроки:

 

Private Sub cmdLeft_Click()

txt3.Text = Left$(txt1.Text, Val(txtLeft.Text))

End Sub

6

Запустить проект, в первое поле ввести строку, в поля функции вырезки подстроки ввести числа и щелкнуть по кнопке Left$. В третьем поле появится вырезанная подстрока.

Аналогично создается событийная процедура, позволяющая реализовать вырезку подстроки, начиная с последнего правого символа строки, с использованием функции Right$(строка$,N).

7

Разместить на форме кнопку и текстовое поле cmdRight и txtRight и ввести программный код событийной процедуры cmdLeft_Click():

Private Sub cmdRight_Click()

txt3.Text = Right$(txt1.Text, Val(txtRight.Text))

End Sub

Для определения количества символов в строке используется функция определения длины строки Len(строка$), аргументом которой является строка, а возвращает функция число, равное количеству символов в строке.

8

Разместить на форме кнопку и присвоить ей имя cmdLen.

9

Для кнопки ввести программный код событийной процедуры cmdLen_Click(), реализующий операцию определения количества символов в строке:

 

Private Sub cmdLen_Click()

txt3.Text = Len(txt1.Text)

End Sub

10

Запустить проект, в первое поле ввести строку и щелкнуть по кнопке Len. В третьем поле появится число символов в строке.

Для преобразования символов в соответствующий им числовой код используется функция Asc(строка$), при этом необходимо иметь в виду, что функция возвращает числовой код первого символа строки.

11

Разместить на форме кнопку и присвоить ей имя cmdAsc.

12

Для кнопки ввести программный код событийной процедуры cmdAsc_Click(), реализующий операцию определения числового кода символа:

Private Sub cmdAsc_Click()

txt3.Text = Asc(txt1.Text)

End Sub

13

Запустить проект, в первое поле ввести символ и щелкнуть по кнопке Asc. В третьем поле появится числовой код символа.

14

Сохранить проект в файле ZD7.

 

Разработаем проект, который будет выполнять функции простого графического редактора, в котором в качестве поля для рисования будет использоваться графическое поле.

 Прежде всего, необходимо задать удобную систему координат с помощью оператора Scale, который фиксирует координаты левого верхнего и нижнего правого углов поля.

Проект «Графический редактор».

1

Разместить на форме графическое поле Picture1

2

Разместить на форме кнопку cmdScale и создать  событийную процедуру установки системы координат (0 в левом нижнем углу поля, максимальные значения координат X и Y равны 100:

 

Private Sub cmdScale_Click()

Picture1.Scale (0, 100)-(100, 0)

End Sub

 

            Процедура установки точки. Координаты точки будем запрашивать с помощью функции ввода InputBox, а цвет зададим с помощью одной из восьми констант, определяющих цвет (vbBlack – черный, vbBlue – синий, vbGreen – зеленый,  vbCyan – голубой,  vbRed – красный,  vbMagenta – сиреневый,  vbYellow – желтый,  vbWhite - белый).

3

Разместить на форме кнопку cmdPoint и создать  событийную процедуру установки точки:

 

Private Sub cmdPoint_Click()

bytX1 = Val(InputBox("Введите координату Х", "Координата X"))

bytY1 = Val(InputBox("Введите координату Y", "Координата Y"))

Picture1.PSet (bytX1, bytY1), 4

End Sub

 

            Процедура рисования линии. Координаты концов линии и числовой код цвета будем запрашивать с помощью функции ввода InputBox. Цвет будем задавать с помощью функции QBColor(number), аргументом которой являются числа от 0 до 15, а результатом – один из основных 16 цветов.

4

Разместить на форме кнопку cmdLine и создать  событийную процедуру рисования линии:

 

Private Sub cmdLine_Click()

bytX1 = Val(InputBox("Введите координату Х1", "Координата X1"))

bytY1 = Val(InputBox("Введите координату Y1", "Координата Y1"))

bytX2 = Val(InputBox("Введите координату Х2", "Координата X2"))

bytY2 = Val(InputBox("Введите координату Y2", "Координата Y2"))

bytC = Val(InputBox("Введите цвет", "Цвет"))

Picture1.Line (bytX1, bytY1)-(bytX2, bytY2), QBColor(bytC)

End Sub

 

            Процедура рисования прямоугольника. Координаты противоположных вершин прямоугольника и числовые коды интенсивностей красного, зеленого и синего цветов будем запрашивать с помощью функции ввода InputBox.

 Цвет будем задавать с помощью функции RGB(bytRed,bytGreen,bytBlue), аргументами которой являются три числа в диапазонах 0 до 255 (интенсивности базовых цветов), а результатом – число типа Long в диапазоне от 0 до 2563 (16 777 215). Таким образом, определяется  цветовая палитра с более чем 16 миллионами цветов, а каждый цвет задается числом, которое вычисляется по формуле bytRed + 256*bytGreen + 2562*bytBlue.

5

Разместить на форме кнопку cmdLineB и создать  событийную процедуру рисования прямоугольника:

 

Private Sub cmdLineB_Click()

bytX1 = Val(InputBox("Введите координату Х1", "Координата X1"))

bytY1 = Val(InputBox("Введите координату Y1", "Координата Y1"))

bytX2 = Val(InputBox("Введите координату Х2", "Координата X2"))

bytY2 = InputBox("Введите координату Y2", "Координата Y2")

bytR = Val(InputBox("Введите интенсивность красного цвета", "Красный цвет"))

bytG = Val(InputBox("Введите интенсивность зеленого цвета", "Зеленый цвет"))

bytB = Val(InputBox("Введите интенсивность синего цвета", "Синий цвет"))

Picture1.Line (bytX1, bytY1)-(bytX2, bytY2), RGB(bytR, bytG, bytB), B

End Sub

6

Разместить на форме кнопки cmdLineBF и cmdCircle и самостоятельно создать событийные процедуры рисования закрашенных прямоугольников и окружностей.

 

7

Запустить проект. Последовательно щелкнуть на кнопки рисования объектов и ввести необходимые параметры на появляющихся панелях ввода.

8

Сохранить проект.

 

Дополнительные задачи:

Создайте проект для решения следующих задач:

1.Дана сторона квадрата a. Найти его периметр P = 4·a.

2. Дана сторона квадрата a. Найти его площадь S = a2.

3. Даны стороны прямоугольника a и b. Найти его площадь S = a·b и периметр P = 2·(a + b).

4. Найти наибольшее из трех данных чисел.
5. Вывести на экран номер четверти, которой принадлежит точка с координатами (x,y), при условии, что (x<>0) и (y<>0).
6. Даны три различных числа, найти среднее из них. Средним назовем число, которое больше наименьшего из данных чисел, но меньше наибольшего.
Построить и записать в виде программы алгоритм вычисления суммы квадратов десяти произвольных чисел, водимых с клавиатуры в процессе выполнения программы. 

7. Вводятся 15 чисел. Определить, сколько среди целых чисел. 

8. Вывести все чётные числа начиная с числа N и до числа M. Числа N и M задает пользователь

 

Тема: 15. Повторение. Решение задач на основные темы программирования на Паскале. (46 ч.)

В этой теме можно решать все задачи рассмотренные выше в разделах:

1. Язык программирования  Паскаль. Среда программирования Паскаль. (8 часов)

2.  Переменная. Команда присвоения. Команды вывода. (8 часов)

3. Математические функции. Команда ввода. (8 часов)

4. Операторы условного и безусловного перехода. (12 ч.)

5. Циклические  конструкции. В Паскале (12 ч.)

6. Подпрограммы и функции пользователя. (10 ч.)

7. Массивы. Способы формирования  массивов. (16 ч.)

8. Графика в Паскале. (16 ч.)

9. Обработка  строк.  (14 ч.)

10. Составной  тип.  Записи. Множества. (16 ч.)

11. Внешние библиотеки и модули(10 ч.)

12. Работа с файлами. (12 ч.)

 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Методические рекомендации по практикуму решения задач"

Методические разработки к Вашему уроку:

Получите новую специальность за 3 месяца

Животновод

Получите профессию

HR-менеджер

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 625 349 материалов в базе

Скачать материал

Другие материалы

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 18.08.2015 4556
    • DOCX 4 мбайт
    • Оцените материал:
  • Настоящий материал опубликован пользователем Казарин Николай Петрович. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Казарин Николай Петрович
    Казарин Николай Петрович
    • На сайте: 8 лет и 7 месяцев
    • Подписчики: 1
    • Всего просмотров: 10326
    • Всего материалов: 8

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Методист-разработчик онлайн-курсов

Методист-разработчик онлайн-курсов

500/1000 ч.

Подать заявку О курсе
  • Сейчас обучается 66 человек из 34 регионов

Курс профессиональной переподготовки

Информационные технологии в профессиональной деятельности: теория и методика преподавания в образовательной организации

Преподаватель информационных технологий

300/600 ч.

от 7900 руб. от 3950 руб.
Подать заявку О курсе
  • Сейчас обучается 188 человек из 53 регионов

Курс повышения квалификации

Теоретические и методологические основы преподавания информатики с учётом требований ФГОС ООО

72 ч. — 180 ч.

от 2200 руб. от 1100 руб.
Подать заявку О курсе
  • Сейчас обучается 153 человека из 51 региона

Курс профессиональной переподготовки

Создание и обеспечение электронного архива с использованием информационно-коммуникационных технологий

Специалист по формированию электронного архива

600 ч.

9840 руб. 5900 руб.
Подать заявку О курсе
  • Сейчас обучается 29 человек из 21 региона

Мини-курс

Развитие мотивации к обучению

4 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 131 человек из 40 регионов

Мини-курс

Детско-родительские отношения: эмоциональный аспект

6 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 24 человека из 15 регионов

Мини-курс

Методология и организация образовательного процесса по информатике

4 ч.

780 руб. 390 руб.
Подать заявку О курсе