Upload
maris-garcia
View
58
Download
1
Embed Size (px)
DESCRIPTION
Язык программирования Pascal. Структура программы Pascal. P rogram имя программы ; U ses раздел подключения модулей ; Const раздел констант ; Var раздел описаний переменных ; B egin операторы ; E nd. Пример структуры программы Pascal. Program pr1 ; { Заголовок } Const { константы } - PowerPoint PPT Presentation
Citation preview
Язык программирования Pascal
Структура программы Pascal
Program имя программы;Uses раздел подключения модулей;Const раздел констант;Var раздел описаний переменных;Begin
операторы;End.
Пример структуры программы Pascal
Program pr1; {Заголовок}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)
Тип Размер, байт Диапазон значений
shortint 1 -128..127
smallint 2 -32768..32767
integer, longint 4 -2147483648..2147483647
int64 8 -9223372036854775808..9223372036854775807
byte 1 0..255
word 2 0..65535
longword, cardinal 4 0..4294967295
uint64 8 0..18446744073709551615
Целочисленное деление и остаток
Program pr2; {Заголовок}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;
BeginWrite(‘Введите 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.
Вычисления в программе
1. Дана сторона квадрата а. Найти его периметр P=4a
Var a,p:real;Begin
write(‘a=’);readln(a);P:= ; //пишем формулу Pwriteln(‘p=’, p :0:2)
End.
Примео ввода:
a=7.21Пример вывода:
P=30.84
Условный оператор (ветвление)или разветвляющийся алгоритм - форма организации действий, при которой в зависимости от выполнения некоторого условия совершается одна или другая последовательность шагов
Условие
Действие 2Действие 1
Да Нет
Условный оператор (ветвление)
if условие then оператор1
else оператор2;
Vara:integer;
Beginwrite(‘Введите
число:‘);readln(a);if a mod 2 = 0then write (‘Четное’)else write (‘Нечетное’);
End.
IfA mod 2 = 0
‘Нечетное’‘Четное’
Да Нет
Ввод а
Цикл с параметром
FOR i:=нач. to кон. Do опер.;
Даны целые числа K и N (N > 0). Вывести N раз число K.
K=5 N=45 5 5 5
Var i,k,n:integer;
BeginWrite(‘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.
Var A,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
Var A,B:real; i:integer;Begin
write(‘A=’); readln(A);write(‘B=’); readln(B);While A>=B do
beginA:=A-B;i:=i+1end;
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
beginM:=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 симв)Var a,b : string;begin
a:=‘тепло’;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;Beginreadln(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;
Begina[0]:=14;for i:=1 to 9 do a[i]:=i;
End.
0 1 2 3 4 5 6 7 8 9
14 1 2 3 4 5 6 7 8 9
Array 1 (Массив)
Дано целое число N (> 0). Сформировать и вывести целочисленный массив размера N, содержащий N первых положительных нечетных чисел: 1, 3, 5, … .
Var a:array[1 .. 100] of integer;i, N :integer;
Beginwrite(‘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;
Beginwrite(‘N=’); readln(n);a[1]:=2;for i:=2 to N do
begina[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 doa[i,j]:=(i-
1)*4+j;
i j 1 2 3 4
1 1 2 3 4
2 5 6 7 8
3 9 10 11 12
4 13 14 15 16
5 17 18 19 20
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 dobegin
a[i,j]:=i*10;write(a[i,j] :4);
end;writeln
end;End.