370 likes | 908 Vues
Язык программирования Pascal. Структура программы Pascal. P rogram имя программы ; U ses раздел подключения модулей ; Const раздел констант ; Var раздел описаний переменных ; B egin операторы ; E nd. Пример структуры программы Pascal. Program pr1 ; { Заголовок } Const { константы }
E N D
Структура программы Pascal Programимя программы; Usesраздел подключения модулей; Constраздел констант; Varраздел описанийпеременных; Beginоператоры; End.
Пример структуры программы Pascal Programpr1; {Заголовок} Const{константы} g=9.8; Var{объявление переменных} a,b : integer; {целые числа -32768..+32767} x,y : real;{дробные числа} Begin A:=192+42;{оператор присваивания} X:=a/8; End.
Оператор присваивания Оператор присваивания имеет вид: переменная := выражение; i := i + 1; // увеличивает значение переменной i на 1 В PascalABC.NET определены также операторы +=, -=, *=, /=
Целые числа в Free Pascal integer{целые числа -32768..+32767} longint{длинные целые -2M..+2M} Byte {0..255} Word {0..65тыс}
Полный список типов целых чисел (PascalABC.NET)
Целочисленное деление и остаток Programpr2; {Заголовок} Var a,b : integer; {целые числа -32768..+32767} Begin A:=8 div 3 ; {=2 div - ц.ч. деление} B:=7 mod a; {=1 mod – остаток от деления} Write (‘a=’,a,’ b=’,b); {вывод на экран} Readln{пауза до нажатия enter} End.
Операторы ввода и вывода {выводит информацию в одну строку} Write (‘Hello ’,a+2*b); Writeln (‘Первая строка’); {переносит в конце} Writeln(‘Вторая строка’); Writeln(a:10,b:10,c:10,d:10); {Табуляция в 10} Read(a); {ввод значения a с клавиатуры} Readln(b); {ввод 1 строки}
сумматор Uses CRT; Var A, B:integer; Begin Clrscr; {очистка экрана} Textcolor(10); {цвет текста 0-15} Writeln(‘Введите два числа’); Readln(a,b); Write (‘Сумма чисел равна ’,a+b); Readln; End.
******* * * * * * * * * * * * * * *** * * * *******
Вещественные числа (real, double) Описание Ввод значений x y Вывод выражения Кол-во цифр после запятой Var x,y: real; Begin Write(‘Введите x,y ‘); Readln(x,y); Writeln(‘x/y=’, x/y :0:3) Readln; End.
Арифметические операции • Div • Mod
Найти корни квадратного уравнения Ax2+Bx+C=0 D=B2-4ac X= var a,b,c,d,x1,x2:real; begin writeln('Введите a,b,c'); readln(a,b,c); d:=sqr(b)-4*a*c; x1:=(-b-sqrt(d))/(2*a); x2:=(-b+sqrt(d))/(2*a); writeln(‘d=’, d :0:2, ‘ x1=’, x1 :0:2, ‘ x2=’, x2 :0:2); End.
Вычисления в программе • Дана сторона квадрата а. Найти его периметр P=4a Vara,p:real; Begin write(‘a=’); readln(a); P:= ; //пишем формулу P writeln(‘p=’, p :0:2) End. Примео ввода: a=7.21 Пример вывода: P=30.84
Условие Нет Да Действие 2 Действие 1 Условный оператор (ветвление) или разветвляющийся алгоритм - форма организации действий, при которой в зависимости от выполнения некоторого условия совершается одна или другая последовательность шагов
IfA mod 2 = 0 Нет Да ‘Нечетное’ ‘Четное’ Условный оператор (ветвление) ifусловие thenоператор1 elseоператор2; Var a:integer; Begin write(‘Введите число:‘); readln(a); if a mod 2 = 0 then write (‘Четное’) else write (‘Нечетное’); End. Ввод а
Цикл с параметром FOR i:=нач. to кон. Doопер.;
Даны целые числа K и N (N > 0). Вывести N раз число K. K=5 N=4 5 5 5 5 Var i,k,n:integer; Begin Write(‘k=‘); Readln(k); Write(‘N=’); Readln(n); For i:=1 to N do write(k, ’ ’); Readln End.
Цикл с предусловием WHiLEусловие DO оператор; WHiLEусловие DO begin оператор1; оператор2; … end; Условие Нет Да оператор
Задача While1 Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти длину незанятой части отрезка A. VarA,B:real; Begin write(‘A=’); readln(A); write(‘B=’); readln(B); While A>=B do A:=A-B; writeln(‘Остаток: ’, A :0:2); readln End. А
Задача While2 VarA,B:real; i:integer; Begin write(‘A=’); readln(A); write(‘B=’); readln(B); While A>=B do begin A:=A-B; i:=i+1 end; writeln(‘Остаток: ’, A :0:2); readln End. Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B(без наложений). Не используя операции умножения и деления, найти количество отрезков B, размещенных на отрезке A. А
While 3 Даны целые положительные числа N и K. Используя только операции сложения и вычитания, найти частное от деления нацело NнаK, а также остаток от этого деления.
While 4 Дано целое число N (> 0). Если оно является степенью числа 3, то вывести True, если не является — вывести False. Var N, M:integer; Begin M:=1; While M<N do M:=M*3; Writeln(M=N); End.
While 5 Дано целое число N (> 0), являющееся некоторой степенью числа 2: N = 2K. Найти целое число K — показатель этой степени. Var N, M, k:integer; Begin M:=1; While M<N do begin M:=M*3; end; End.
While 6 • Дано целое число N (> 0). Найти двойной факториал N: • N!! = N·(N−2)·(N−4)·…
Строковые типы • Символьный тип ‘A’ ‘2’ ‘%’ #32(по номеру) • Var c : char; • C:= ‘a’; chr(42); - возвр. символ ‘A’ по номеру ord(‘D’); - возвр. Номер символа • Строковый тип ‘Привет мир’ (макс. 255 симв) Vara,b : string; begina:=‘тепло’; B:=‘ход’; writeln(a+b); {Конкатинация} End.
Строковые операторы S:=‘информатика’; Length(s); возвр. длину строки Copy(s,3,5); возвр. часть строки нач.3-го 5 символов позиция^^кол-во символов Pos(‘а’,s); возвр. позицию вхождения подстроки в строку Delete(s,8,4); удаление части строки позиция^^кол-во символов Insert(‘ция’,s,8); вставка подстр. в строку позиция^ s[3] – возвращает 3-й символ ‘ф’ Writeln(copy(s,3,3) + s[8]); {‘фор’ + ’т’}
Program STRING7; var s:string; Begin readln(s); writeln('Код первого символа: ', ord(s[1])); writeln('Код последнего символа: ', ord(s[ length(s) ]) ); end. {Это фрагмент второй задачи. Пишите в новом файле. Допишите программу} For i:=1 to N do S:=S+C;
Одномерные массивы М- это упорядоченный набор данных Var a:array [нач..кон] of тип_данных; Var a:array [0..9] of integer; i:integer; Begin a[0]:=14; for i:=1 to 9 do a[i]:=i; End.
Array 1 (Массив) Дано целое число N (> 0). Сформировать и вывести целочисленный массив размера N, содержащий N первых положительных нечетных чисел: 1, 3, 5, … . Var a:array[1 .. 100] of integer; i, N :integer; Begin write(‘N=’); readln(n); a[1]:=1; for i:=2 to N do a[i]:=a[i-1]+2 ; for i:=1 to N do write(a[i],’ ‘); readln End.
Array 2 (Массив) Дано целое число N (> 0). Сформировать и вывести целочисленный массив размера N, содержащий N первых степеней двойки: 2,4, 8, 16 … . Var a:array[1 .. 100] of integer; i, N :integer; Begin write(‘N=’); readln(n); a[1]:=2; for i:=2 to N do begin a[i]:= a[i-1]*2 ; write(a[i],’ ‘); end; End.
Двумерные массивы матрица 5х4 Var a:array[1..5, 1..4] of integer; i – строка j – столбец For i:=1 to 5 do For j:=1 to 4 do a[i,j]:=(i-1)*4+j;
Matrix1. Даны целые положительные числа M и N. Сформировать целочисленную матрицу размера M × N, у которой все элементы I-й строки имеют значение 10·I (I = 1, …, M). M=3 N=5 VAR a:array[1..100,1..100]of integer; i, j, M,N:integer; Begin write(‘M=’);readln(M); write(‘N=’);readln(N); For i:=1 to M do begin For j:=1 to N do begin a[i,j]:=i*10; write(a[i,j] :4); end; writeln end; End.