1 / 159

Основы программирования в Pascal

Основы программирования в Pascal. Основы программирования в Pascal. Структура программы Линейные алгоритмы Ветвления Циклы Одномерные массивы Двумерные массивы Символьные и строковые переменные. Пример линейного алгоритма и программы в Паскале.

olwen
Download Presentation

Основы программирования в Pascal

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Основы программирования в Pascal

  2. Основы программирования в Pascal Структура программы Линейные алгоритмы Ветвления Циклы Одномерные массивы Двумерные массивы Символьные и строковые переменные

  3. Пример линейного алгоритма и программы в Паскале Задача 1.Составить алгоритм сложения двух чисел А и В, вводимых с клавиатуры. Результат сложения записать в виде переменной С. По данному алгоритму написать программу в Паскале Program summa; Var a,b,sum : integer; Begin readln(a); readln(b); sum := a + b; writeln(sum) end. Программа в Паскале Алгоритмический язык Блок-схема алг сложение цел А, В, С нач ввод А ввод В С := А + В вывод С кон начало Ввод А, В С:=A+B Вывод C конец

  4. Структура программы в Паскале (минимальные требования) Program имя программы; Var имя переменной : тип; Begin операторы end. - Имя программы - Раздел описания переменных - Раздел операторов

  5. Раздел описания переменных Var<список переменных(через запятую)>: <тип переменных>; Типы переменных: integer – целый тип (в интервале [-32.768, 32.767] – 2 байта Longint – длинный целый [-2.147.483.648, 2.147.483.647]– 4 байта real – вещественный тип - 6 байт и др.

  6. Ввод исходных данных с клавиатуры read(<список переменных>); readln(<список переменных>); read(a); read(b); read(a,b);

  7. Вывод данных на экран монитора write(<список переменных>); writeln(<список переменных>); Для целого типа: writeln(a); writeln(b); write(a,b); write(a,’ ‘,b); write(a:5,b:5); Для вещественного типа: writeln(a:5:2); writeln(b:7:3); write(a:7:2,b:9:3); writeln(b); (При b=1,234 на экран выведется: 1234e-3)

  8. Вывод данных на экран монитора Для целого типа: writeln(‘a=‘,a); writeln(‘b=‘,b); Для вещественного типа: writeln(‘a=‘,a:5:2); writeln(‘b=‘,b:7:3); При b=1,234 на экран выведется: b= 1,234

  9. Арифметические выражения в Паскале Сложение + Вычитание - Умножение * Деление / Целочисленное деление div Остаток от деления mod например: 11 div 5 = 2 2 div 3 = 0 17 div -5 = -3 -17 div 5 = -3 -17 div -5 = 3 например: 10 mod 5 = 0 10 mod 3 = 1 3 mod 5 = 3 17 mod -5 = 2 -17 mod 5 = -2 -17 mod -5 = -2

  10. Приоритет операций • Минус, not • *, /, div, mod, and • +, -, or • =, <>, <, >, <=, >=

  11. Стандартные функции в Паскале

  12. Этапы программирования • Постановка задачи • Математическая формализация • Построение алгоритма • Алгоритмический язык • Язык блок-схем • Составление программы на языке программирования (Паскаль) • Отладка и тестирование программы

  13. Линейные алгоритмы Задача 2.Написать программу нахождения периметра прямоугольного треугольника по известным катетам a и b(a и b – целые числа, вводимые с клавиатуры). алг периметр целa, b вещc, p нач ввод a ввод b c := p:= a + b +c вывод p кон нач Периметр Ввод a Ввод b c := p:= a + b +c Вывод p кон

  14. Линейные алгоритмы Задача 2.Написать программу нахождения периметра прямоугольного треугольника по известным катетам a и b(a и b – целые числа, вводимые с клавиатуры). Program perimetr; Var a,b : integer; c,p : real; Begin write(‘a=‘); readln(a); write(‘b=‘); readln(b); c := sqrt(sqr(a)+sqr(b)); p := a + b + c; writeln(‘p=‘,p:5:1); readln end.

  15. Линейные алгоритмы Задача 2.Написать программу нахождения периметра прямоугольного треугольника по известным катетам a и b(a и b – целые числа, вводимые с клавиатуры). Program perimetr; Var a,b : integer; p : real; Begin write(‘a=‘); readln(a); write(‘b=‘); readln(b); p := a + b + sqrt(sqr(a)+sqr(b)); writeln(‘p=‘,p:5:1); readln end.

  16. Линейные вычислительные алгоритмы Задача 2Даны переменные Xи YТребуется произвести между ними обмен значениями (№9 стр. 190) алг обмен вещ X, Y, Z нач ввод X ввод Y Z:= X X := Y Y := Z вывод X, Y кон Таблица трассировки:

  17. Решение задач Записать математические выражения в Паскале и вычислить их значения при a=2, b=3: Задача. Вычислить длину окружности и площадь круга одного и того же заданного радиуса R.

  18. Домашнее задание Задачник 1§ 4.4.1стр. 218-222; № 1, 13, 28

  19. Линейные алгоритмы Домашнее задание Задачник 1 № 28 стр. 225 Program treygol; VAR x1, x2, x3, y1, y2, y3 :integer; a, b, c:real; Begin Write (‘Введите: A(x1, y1), B(x2, y2), C(x3, y3)'); Readln (x1, y1, x2, y2, x3, y3); a:= sqrt(((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))); b:= sqrt(((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2))); c:= sqrt(((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1))); Writeln ('P=',a+b+c :5 :1); Writeln ('S=',sqrt((a+b+c)/2*((a+b+c)/2-a)*((a+b+c)/2-b)*((a+b+c)/2-c)):5 :1); Readln END.

  20. Решение задач Задача 1. Дано трёхзначное число. Найти сумму его цифр.

  21. Решение задач Задача 2.Дано трёхзначное число. Записать это число в обратном порядке. Задача 3. Дано трёхзначное число. Создать всевозможные числа, образованные перестановкой цифр исходного числа. Задача 4.С начала суток прошло nсекунд. Определить, сколько часов, минут и секунд прошло с начала суток.

  22. Разбор задач домашнего задания Задача 2.Дано трёхзначное число. Записать это число в обратном порядке. Var g :integer; Begin Readln (g); g:= ((g mod 10) * (100)) + ((g mod 100 div 10) * 10) + (g div 100); Writeln (g); End.

  23. Разбор задач домашнего задания Задача 4.С начала суток прошло nсекунд. Определить, сколько часов, минут и секунд прошло с начала суток. Uses crt; Var C, h, m :integer; Begin clrscr; write('Введите секунды: '); Readln(C); h:= C div 3600; m:= C mod 3600 div 60; C:= C mod 3600 mod 60; Writeln (h,' час. ',m,' мин. ',C, ' сек.'); End.

  24. Ветвление Если <условие> то <серия команд 1> иначе <серия команд 2> кон If <условие> then begin<операторы 1>end else begin<операторы 2>end;

  25. Программирование ветвлений Задача 1.Найти наибольшее значение среди двух величин, вводимых с клавиатуры. начало Program Bid1; Var a,b,max: real; Begin write(‘a=‘); readln(a); write(‘b=‘); readln(b); Ifa > b then max := a else max := b; writeln(‘max=‘,max:7:2); readln end. ввод а,в,с Нет a>b Да max := a max := b вывод max конец

  26. Программирование ветвлений Задача 2.Упорядочить значения двух переменных по возрастанию. начало Program Sort2; Var X,Y,C: integer; Begin readln(X,Y); IfX > Y then begin C := X; X := Y; Y := C end; writeln(X,Y); readln end. ввод X, Y X>Y Да C := X X := Y Y := C вывод X, Y конец

  27. Программирование ветвлений Задача 3.Найти наибольшее значение среди трех величин, вводимых с клавиатуры. Вариант 1 Вариант 2 начало начало ввод а,в,с ввод а,в,с a>b Да a>b Да max := a max := b b>c a>с Да Да Да c>max max := b max := c max := a max := c max := c вывод max вывод max конец конец

  28. Программирование ветвлений Задача 3.Найти наибольшее значение среди трех величин, вводимых с клавиатуры. Вариант 1 Вариант 2 Program BIT2; Var a,b,c,max: real; Begin readln(a,b,c); If a > b thenIf a > c then max := a else max := c elseIf b > c then max := b else max := c writeln(‘max=‘,max:7:2); readln end. Program BIT1; Var a,b,c,max: real; Begin readln(a,b,c); If a > b then max := a else max := b; If c > max then max := c; writeln(‘max=‘,max:7:2); readln end.

  29. Логические выражения в Паскале Задача 3.Найти наибольшее значение среди трех величин, вводимых с клавиатуры. Вариант 3 Program BIT3; Var a,b,c,max: real; Begin readln(a,b,c); If (a >= b) and (a >= c) then max := a; If (b >= a) and (b >= c) then max := b; If (c >= a) and (c >= b) then max := c; writeln(‘max=‘,max:7:2); readln end.

  30. Домашнее задание Задачник 1 § 4.4.2 Задача 1.Дано трёхзначное число. Определить, является ли оно палиндромом. Задача 2. Даны две точки А(X1,Y1) и B(X2,Y2). Определить, какая из точек лежит ближе к началу координат. Задача 3.Упорядочить значения трех целых чисел, вводимых с клавиатуры, по возрастанию (a<b<c). Задача 4. Решить уравнение вида: ax+b=0 Задача 5. Решить уравнение вида: ax²+bx+c=0

  31. Решение задач Задача 4.Упорядочить значения трех целых чисел, вводимых с клавиатуры, по возрастанию (a<b<c). Program sort; Var a,b,c,x: integer; Begin readln(a,b,c); writeln(a:4,b:4,c:4); If a > b then begin x := a; a := b; b := x end; If b > c then begin x := b; b := c; c := x end; If a > b then begin x := a; a := b; b := x end; writeln(a:4,b:4,c:4); readln end.

  32. Решение задач Задача 5.Определить, принадлежит ли точка Х отрезку [a;b]. Анализ решения задачи: Х должна удовлетворять неравенству:(X>=a) и (X<=b) Program z5; Var a,b,x: real; Begin readln(a,b); write(‘x=’); readln(x); If (x >= a) and (x <= b) then writeln(‘yes’) else writeln(‘no’); readln end.

  33. Решение задач Задача 6.Написать программу вычисления значения выражения: y=5/(a(a-9)) Анализ решения задачи: Если знаменатель равен 0, то выражение не имеет действительного значения. Program z6; Var a,y: real; Begin write(‘a=’); readln(a); If (a = 0) or (a = 9) then writeln(‘выражение не имеет действительного значения’) else begin y:=5/(a(a-9)); writeln(‘y=’,y:5:2) end; readln end.

  34. Решение задач Задача 7.Решить уравнение вида: ax+b=0 Анализ решения задачи: a, b– вводятся с клавиатуры, х – корень уравнения, выводится на монитор. Математическая формализация: Если а=0, то вывод «уравнение смысла не имеет», иначе x=-b/a Program z7; Var a,b,x: real; Begin write(‘a=’); readln(a); write(‘b=’); readln(b); If (a = 0) then writeln(‘уравнение смысла не имеет’) else begin x=-b/a; writeln(‘x=’,x:7:2) end; readln end.

  35. Худой или полный Считается нормой если масса человека (в кг) равна его росту (в см) минус 100. Будем считать человека стройным, если отклонение его массы от этого критерия не превышает 5%, иначе полным или худым соответственно отклонению от нормы. Составить программу. Входные данные: масса и рост – действительные числа. Выходные данные: Текст – thin (худой), или optimum (нормальный), или fat (полный) Лягушка Лягушка прыгает вдоль числовой оси от точки 0 до точки М, поворачивает и прыгает обратно до точки 0, поворачивает и т.д. Длина прыжков 1. Какова её координата K после N-го прыжка? Входная информация: M, N. Выходная информация: K

  36. Оператор выбора

  37. Решение задачи

  38. Решение задачи

  39. Самостоятельная работа Порядковый номер дня в году Вводятся число, месяц, год. Найти номер этого дня с начала года. При решении задачи учитывать разное количество дней в месяце, в том числе в високосные годы.

  40. Циклические алгоритмы Цикл – многократное повторение последовательности действий по некоторому условию. • Цикл с предусловием (цикл типа пока) нет Пока <условие> повторять нц <тело цикла> кц While <условие>do begin <тело цикла> end; условие да Тело цикла

  41. Циклические алгоритмы • Цикл c параметром (цикл типа для) Для <параметр цикла> повторять нц <тело цикла> кц For i:=1 to ndo begin <тело цикла> end; нет Параметр цикла да Тело цикла

  42. Циклические алгоритмы • Цикл с постусловием Повторять <тело цикла> Выполнено условие? кц Repeat <тело цикла> Until <условие>; Тело цикла нет условие да

  43. Решение задач(цикл типа пока) Задача 1. Вычислить сумму натурального ряда чисел от 1 до N. Program summa_1; Var i,N,S:integer; begin Write(‘N=‘); Readln(N); i:=1; S:=0; While i<=N do begin S:=S+i; i:=i+1 end; Writeln(‘Summa=‘,S) end. начало Ввод N i:=1 S:=0 нет i<=N да S:=S+i i:=i+1 Вывод S конец

  44. Решение задач(цикл типа пока) Задача 1. Вычислить сумму натурального ряда чисел от 1 до N. Program summa_1; Var i,N,S:integer; begin Write(‘N=‘); Readln(N); i:=1; S:=0; While i<=N do begin S:=S+I; i:=i+1 end; Writeln(‘Summa=‘,S) end. N i S 4 1 0 2 1 3 3 4 6 5 10 10

  45. Решение задач (цикл типа для) Задача 1. Вычислить сумму натурального ряда чисел от 1 до N. начало Program summa_2; Var i,N,S:integer; begin Write(‘N=‘); Readln(N); S:=0; for i:=1 to N do S:=S+i; Writeln(‘Summa=‘,S) end. Ввод N S:=0 нет i:=1;N да S:=S+i Вывод S конец

More Related