Текстовые переменные в паскале

Содержание раздела PASCAL

Введение. Общая характеристика языка. 1 Основы языка PASCAL 2 Структура программы 2.1 Раздел объявлений и соглашений, основнй блок 2.2 Типы переменных 3 Операторы языка PASCAL 4 Простые и структурные типы данных 5 Процедуры и функции 6 Динамическая память 7 Модули 8 Ключи и директивы компилятора 9 Файлы 10 Другие возможности Турбо-Паскаля 1 0 .1 Оверлей 10. 2 Прямое обращение к памяти и портам 11 Турбо-Паскаль 6.0 и структурное программирование 12 ТурбоПаскаль и ООП 13 Объектно-ориентированная библиотека Turbo Vision 14 Встроенная справочная система

Тип переменной задает вид того значения, которое ей присваивается и правила, по которым операторы языка действуют с переменной, например:

Если переменные A и B целочисленного типа, то программа:

Выведет на экран строку: “3.14 2.71 5.85”

Если же они строкового типа, то программа:

Выведет: “3.14 2.71 3.142.71”, так как оператор сложения просто добавит строку B в конец строки A.

Тип константы определяется способом записи ее значения:

Можно использовать выражения. Выражения должны в качестве операторов содержать только константы, в том числе ранее объявленные, а так же знаки математических операций, скобки и стандартные функции.

BYTE целое число от 0 до 255, занимает одну ячейку памяти (байт).
BOOLEAN логическое значение (байт, заполненный единицами, или нулями), true, или false.
WORD целое число от 0 до 65535, занимает два байта.
INTEGER целое число от –32768 до 32767, занимает два байта.
LONGINT целое число от –2147483648 до 2147483647, занимает четыре байта.
REAL

число с дробной частью от 2.9*10-39.до 1.7*1038, может принимать и отрицательные значения, на экран выводится с точностью до 12-го знака после запятой, если результат какой либо операции с REAL меньше, чем 2.9*10-39, он трактуется как ноль. Переменная типа REAL занимает шесть байт.

DOUBLE

число с дробной частью от 5.0*10-324.до.1.7*10308, может принимать и отрицательные значения, на экран выводится с точностью до 16-го знака после запятой ,если результат какой либо операции с DOUBLE меньше, чем 5.0*10-324, он трактуется как ноль. Переменная типа DOUBLE занимает восемь байт.

CHAR символ, буква, при отображении на экран выводится тот символ, код которого хранится в выводимой переменной типа CHAR, переменная занимает один байт. STRING строка символов, на экран выводится как строка символов, коды которых хранятся в последовательности байт, занимаемой выводимой переменной типа STRING; в памяти занимает от 1 до 256 байт – по количеству символов в строке, плюс один байт, в котором хранится длина самой строки.

При обьявлении переменной строкового типа можно заранее указать ее длину в байтах – X:

MyString:STRING[X];
При присвоении этой переменной строки длиннее X, присваиваемая строка будет обрезана с конца после X-того символа.

Размер переменной типа STRING в памяти можно узнать следующим способом:
Size:=SizeOf(MyString);
Функция SizeOf() возвращает размер, занимаемый переменной, служащей параметром. Параметром может служить и тип переменной; строка:
Writeln(SizeOf(STRING));
Выведет на экран число 256, так как по умолчанию под все строки отводится по 256 байт.

Кроме того, можно узнать, сколько символов в строке (индекс последнего непустого символа в строке):
Size:=Ord(MyString[0]);
Используется ибращение к нулевому элементу (символу) строки, в котором хранится ее длина, но MyString[0] – значение типа CHAR, тоесть символ, код которого равен длине строки, нужный нам код – число возвращает функция Ord()Таким же образом можно обратиться к любому N – тому элементу строки:
MyChar:=MyString[N];

ARRAY[a..b,c..d,….] OF “тип элемента”; массив некоторой размерности, содержащий элементы указанного типа.

Диапазоны индексов для каждого измерения указываются парами чисел или констант, разделенных двумя точками, через запятую (a..b,c..d). После OF записывается тип элементов массива. В памяти массив занимает место, равное: (b-a)*(d-c)*..* SizeOf(“тип элемента”). Размер массива не может превосходить 65536 байт.

Обращение к элементам массива происходит следующим образом:
X:=MyArray[a,b,c. ];

При этом переменная X должна быть того же типа, что и элементы массива или приводимого типа. Число индексов (a,b,c. ) должно быть равно числу обьявленных при описании измерений массива.

В Паскале существуют ограничения на присвоение значений одних переменных другим. Если переменные которую и которой присваивают одного типа, то никаких проблем не возникнет. Но если они разных типов, присвоение не всегда может быть произведено. Это связано стем, что при таком присвоении необходимо отсечь часть информации, а какую – компьютер “не знает”.

Проблема возникает при следующих присвоениях:
I:=J;
A:=B;

В то же время, такие присвоения будут выполнены вполне корректно:
J:=I;
B:=A;

При этом переменная J примет значение с нулевой дробной частью, а B – станет строкой, содержащей один символ – из A.

В первом же случае, можно поизвести следующие операции:
I:=Trunc(J); <функция trunc() возвращает целую часть аргумента>
I:=Round(J);

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

Вычислительные машины имеют дело не только с числами. Едва ли не больше времени они бывают заняты обработкой текста. В Паскале для этого есть специальный тип данных, который называется CHAR (от слова character – символ).

12.1.Тип CHAR (символьный или строковый или литерный).
Его значениями являются отдельные символы: буквы, цифры, знаки. Символьные константы заключаются в кавычки, например, ‘A’, ‘B’, ‘C’, ‘4’, ‘7’, ‘ ‘(пробел).

Символьные переменные описываются предложением:

Var имя переменной : char;

Символьные значения можно вводить и выводить, присваивать, сравнивать. Ниже приведен пример, где выполняются все эти действия.

Var x,y:char;
Begin
Write(‘Введите символ’);
Readln(x);
Y:=’A’;
If x =, ,<>.

12.2.Стандартные символьные функции.
В Паскале имеются стандартные символьные функции:

CHR(N) – возвращает в программу символ с кодом N,
ORD(S) – возвращает код символа S,
PRED(S) -возвращает предыдущий символ
SUCC(S) – возвращает следующий символ

Примеры:
CHR(128) = Б
ORD(‘:’) = 58
PRED(‘Б’) = А
SUCC(‘Г’) = Д

Каждый символ имеет свой уникальный двоичный код. Коды всех символов сведены в таблицу. Первая половина таблицы стала международным стандартом, который называется ASCII – American Standard Code Information Interchange ( читается "аски код") в ней кроме прочего содержится латинский алфавит, вторая имеет разные варианты для разных языков. Кириллица (русский алфавит) имеет несколько стандартов. В Паскале используется стандарт КОИ-8.

Пример использования переменной символьного типа.
Составить программу, по которой компьютер многократно вычисляет сумму А+В при различных значениях А и В. в конце каждого этапа появляется запрос о продолжении или прекращении вычислений: "Завершить программу?(Д/Н)".

Тренировочные задания.
1. Что вернет функция CHR(ORD(X))?
2. Определить значения следующих функций (как правило таблица аски кодов есть в любом справочнике по программированию):
CHR(68)
ORD(‘d’)
PRED(1)
SUCC(‘Я’)
3. С клавиатуры вводится два числа. Составить программу сравнивающую эти числа и в зависимости от результата сравнения выводящую на экран нужный знак. Например: 3 2. Процедуру WRITE для вывода результата разрешается использовать только один раз.
4. Составить программу, по которой компьютер находит произведение нечетных чисел, начиная с единицы, и до тех пор, пока на вопрос, задаваемый после каждого шага вычислений: "Продолжить вычисления? (Д/Н)", отвечают ‘Д’.

Читайте также:  0590 Мтс что это

В ы уже познакомились с символьным типом данных CHAR, который позволяет работать с отдельными символами текста. Для обработки более крупных текстовых единиц – строк введен тип данных, который называется STRING (строка).

Значениями этого типа являются строки любых символов длиной до 255.
Переменные строки должны быть описаны предложением:

Строки можно присваивать, сравнивать, вводить, выводить и соединять. Соединение обозначается знаком "+". Вот примеры некоторых операций сравнения над строками:

‘стол’ Var
a,b:string[4];
begin
write(‘ введите слово ‘);
readln(a);
write(a);
readln
end.

Если при выполнении этой программы ввести слово КУКУРУЗА, то программа выведет КУКУ.

ЗАПОМНИТЕ . Если при выполнении программы необходимо ввести значение для нескольких строковых переменных, для каждой из них должен быть указан свой оператор ввода READLN. Например ,

Var
a,b,c:string;
begin
readln(a);
readln(b);
readln(c);
write(a+b+c);
readln
end.

Проверьте, что произойдет, если записать READLN(a,b,c); или READ(a,b,c).

Пример 1.
Составить программу определяющую, какая из двух фамилий длиннее. Фамилии имеют разную длину.

Var
a,b:string;
begin
readln(a);
readln(b);
if length(a)>length(b) then write(a) else write(b);
readln
end.

Пример 2.
Даны два слова. Составить программу определяющую верно ли, что первое слово начинается на ту же букву, которой оканчивается второе слово.

Тренировочные задания.
1. Дано название города. Определить, четно или не четно количество символов в нем.
2. Дано слово. Вывести на экран его третий символ и дважды его последний символ.
3. Дано слово. Верно ли, что оно начинается и оканчивается на одну и ту же букву?
4. Дано слово. Получить и вывести на экран буквосочетание, состоящее из его третьего и последнего символа.
5. Составить программу которая запрашивает название футбольной команды и повторяет его на экране со словами: "Это чемпион!".

1. Дано натуральное число N. Определить, является ли оно палиндромом. Число палиндром можно читать справа налево и слева направо: 4 88 121 767767 и т.д.

var k,n,m:longint;
begin
Repeat
write(‘Введите натуральное число ‘); readln(n);
until n>0;
m:=n; k:=0;
while m div 10<>0 do <собираем число в обратном порядке>
begin
k:=k*10+m mod 10;
m:=m div 10
end;
k:=k*10+m mod 10;
if k=n then writeln(‘данное число палиндром’)
else writeln(‘это не палиндром’);
readln;
end.

3. Дано натуральное число. Найти:
a. Число, получаемое при прочтении его цифр справа налево;
b. Число, получаемое в результате приписывания по двойке в начало и конец записи исходного числа;
c. Число, получаемое удалением из исходного всех цифр А;
d. Число, получаемое из исходного перестановкой его первой и последней цифр;
e. Число, образованное из исходного приписыванием к нему такого же числа.

<б>
Repeat <проверка ввода>
write(‘Введите натуральное число ‘); readln(n);
until n>0;
m:=n;
k:=10;
while m div 10<>0 do <определяем разрядность числа>-
begin
k:=k*10;
m:=m div 10;
end;
m:=(2*k+n)*10+2;
writeln(‘число c двойками=’,m);

<в>
Repeat <проверка ввода>
write(‘Введите натуральное число ‘); readln(n);
until n>0;
Repeat <проверка ввода>
write(‘Введите цифру ‘);readln(a);
until (a>=0) and (a 0 do <собираем число исключая цифру>
begin
if m mod 10<>a then
begin
p:=p+(m mod 10)*k;
k:=k*10
end;
m:=m div 10;
end;
if m mod 10<>a then p:=p+m mod 10*k;
writeln(‘число без цифры ‘,a:2,’=’,p);

<г>
Repeat <проверка ввода>
write(‘Введите натуральное число больше 9=’); readln(n);
until n>9;
m:=n; k:=10; p:=0;
a:=m mod 10;
m:=m div 10;
while m div 10<>0 do <собираем число, исключая цифру>
begin
p:=p+(m mod 10)*k;
k:=k*10;
m:=m div 10
end;
p:=a*k+p+m;
writeln(‘число с перестановкой первой и последней цифр ‘,a:2,’=’,p);

<д>
Repeat <проверка ввода>
write(‘Введите натуральное число ‘); readln(n);
until (n>0)and(n 0 do <определяем разрядность>
begin
k:=k*10;
m:=m div 10
end;
p:=n*k+n;
writeln(‘число= ‘,a:2,’=’,p);
readln;
end.

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

Пример 1.
Дано слово, состоящее из четного числа букв. Вывести на экран его первую половину.

Var i,x:byte;
a:string;
begin
repeat
write(‘Введите слово из четного числа букв’);
readln(a);
x:=length(a); <определяем длину слова>
until (x mod 2 = 0);
x:= x div 2; <применяем целочисленное деление>
for i:=1 to x do write(a[i]);
readln
end.

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

Var i,x:byte;
a:string;
begin
write(‘ Введите слово ‘);
readln(a);
x:=length(a); < определяем длину слова >
for i:=x downto 1 do write(a[i]);
readln
end.

Пример 3.
Дано предложение . Определить число пробелов в нем .

Var i,x,k:byte;
a:string;
begin
write(‘ Введите предложение ‘);
readln(a);
x:=length(a); < определяем длину слова >
k:=0;
for i:=1 to x do if a[i]=’ ‘ then k:=k+1;
writeln(k);
readln
end.

Пример 4.
Дано предложение. Определить порядковый номер первой встреченной буквы ‘к’. Если такой буквы нет, сообщить об этом.

Var i,x,k,f:byte;
a:string;
begin
write(‘ Введите предложение ‘);
readln(a);
x:=length(a);< определяем длину слова >
k:=0; I:=0; f:=0;
repeat
I:=I+1;
if a[i]<>’ к ‘ then k:=k+1 else f:=1;
until (I=x)or( a[i]=’ к ‘ );
if f=1 then writeln(k) else writeln(‘ Нет такой буквы ‘);
readln
end.

Тренировочные задания.
1. Дано слово. Получить его часть, образованную идущими подряд буквами, начиная с m-й и кончая n-й (m Var x:byte;
a:string;
begin
write(‘ Введите слово ‘);
readln(a);
x:=length( а );
if odd(x) then write(‘ не четно ‘) else write(‘ четно ‘);
readln
end.

Значение функции odd(x) истинно, если число x не четное.

2. Дано слово. Вывести на экран его третий символ и дважды его последний символ.
3. Дано слово. Верно ли, что оно начинается и оканчивается на одну и ту же букву?
4. Дано слово. Получить и вывести на экран буквосочетание, состоящее из его третьего и последнего символа.

Var x:byte;
a:string;
begin
repeat
write(‘ Введите слово не менее четырех букв ‘);
readln(a);
x:=length(a); < определяем длину слова >
until x>= 4;
write(a[3],a[x]);
readln
end.

5. Составить программу которая запрашивает название футбольной команды и повторяет его на экране со словами: "Это чемпион!".

Var a:string;
begin
write(‘Введите название футбольной команды’);
readln(a);
write(a, ‘ Это чемпион!’);
readln
end.

Primary tabs

Forums:

Примечание: далее мы начнём говорить о типах данных в Паскале. Выясним следующие:

  • все данные в паскале имеют в определённый момент времени выполнения программы какой-то тип (разные данные -разный);
  • узнаем какие конструкции обладают типом данных;
  • поговорим о первом типе данных, который служит для описания целых чисел и имеет название "integer". А о данный других типов поговорим уже в следующих уроках;

Деление данных на виды "по представление в коде программы" на языке Pascal

Рассмотрим три вида представления данных в коде программы на языке Паскаль ("виды представления данных"):

  1. В виде литералов — т.е. быть явно записаны в программе, например, как числа или строки в кавычках.
  2. По именам переменных. Переменная — это псевдоним (имя) для хранящихся в ней данных (например, числа или строки).
Читайте также:  Холодильник стинол 102 не морозит нижняя камера

Любая переменная похожа на звание чемпиона — конкретный человек носящий это звание меняется, но само звание звучит одинаково (не меняется) для разных людей в разные годы.

Здесь звание чемпиона – это имя переменной, а конкретный человек — данные, в данный момент записанные в неё. Значения переменных в программе можно менять сколько угодно раз.

В отличие от литерала, переменная может сколько угодно раз в теле программы менять своё значение.

Подробнее о переменных мы поговорим далее в этом уроке.

Как результаты выражений, в которые входят переменные или литералы.

Выражение — последовательность действий над фрагментами данных, приводящая к каком-то результату. В Паскале этот результат всегда имеет определённый тип. Выражения работающие с числами называют арифметическими выражениями. Существуют и другие типы выражений.

Подробнее о выражениях мы поговорим далее.

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

  • или к переменным
  • или к литералам
  • или к результатам выражений

Сильная типизация

Паскаль — язык т.н. статической ("сильной" ."постоянной") типизации. Это значит, что для каждой переменной требуется, чтобы переменная было объявлена с указанием к какому типу она принадлежит до использования этой переменной в теле программы. Далее мы изучим базовые типы данных и, как следствие, переменные, которые используются в Паскале.

Типы данных в Pascal

В Паскале выделяют 5 типов данных (в списке сразу укажем ключевые слова, с помощью которых обозначаются эти типы в программном коде):

  1. integer — целые числа.
  2. real — вещественные числа.
  3. boolean — логический тип данных (значения типа да/нет, истина/лож).
  4. char — символьный тип.
  5. string — строковый тип.

В этом уроке мы будем говорить об понятия общих для всех типов данных на примере конкретного типа данных — integer (целые числа).

Чем отличаются "виды представления данных" от типов данных

Если виды представление данных – это просто различная форма записи обращения к какой либо информации в коде программы, то деление на типы данных – позволяет отнести к одной группе данные вне зависимости от их вида.

Как мы увидим позднее одного и того же типа могут быть и переменные и литералы и результаты выражений, а , в связи с чем, можно нарисовать такую диаграмму, иллюстрирующую соотношение между типами данных и видами представления данных:

Объявление переменных

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

При объявлении переменной всегда указывают:

Объявление переменных происходит после ключевого слова var, до до тела программы.

В общем виде объявление переменной можно записать так (как схему):

Пример объявления переменных по одной:

То есть сначала идёт имя переменной, потом двоеточие, а потом один из типов данных (integer, string или иной — смотря какой требуется).

Объявление переменных списком

Также переменные можно объявлять списком (переменные одного типа можно просто перечислить через запятую, а потом после двоеточия указать типа):

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

В этом уроке мы поговорим о типе integer и рассмотрим примеры работы с этим типом данных.

Объявление целочисленных переменных

Integer — тип данных соответствующий целым числам.

Объявим переменную такого типа:

Можно объявить несколько переменных немного по-разному:

Перед запуском программы, все переменные которые используются в её теле необходимо объявить.
Если вы объявите какие-то переменные, но использовать их не будете, то к ошибке это не приведёт, но считается плохим стилем.

Оператор присваивания

Оператор — это знак операции, например знак суммы это "$+$".

Оператор присваивания обозначается знаком (из двух символов):
$:=$
Этот оператор позволяет записывать значение в переменную ("запоминать это значение в переменной"), схема его работы такова:

Или, опять же схематично:

А теперь как это выглядит с конкрентыми именами переменных и значениями в коде (пример работы оператора присваивания):

Присваивание переменным литералов и вывод значений переменных на экран

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

— если это литералы, то они должны быть целочисленными, так как типы данных при присваивании в Паскаль всегда должны совпадать.
После операции присваивания ставится точка с запятой.

Целый тип также поддерживает ноль и отрицательные значения:

Присваивание значений одних переменных другим переменным

Можно присваивать одним переменным значение других, например:

Вывод значений переменных на экран

Чтобы узнать чему стало равно значение переменной $a$ можно вывести её значение в консоль, передав как аргумент в стандартную процедуру writelen() или write(). Тогда наш код будет выглядеть так:

Что мы получим в консоли? Запустите код, объявив обе переменные и оформив тело программы (его содержимое это и есть последние 3 строчки).

Переменные тоже можно передавать во writeln() в любом количестве, разделяя запятой, например две шутки:

в том числе и вперемежку с литералами, например символьными:

Присваивание переменным результатов выражений

Переменным можно присваивать результаты выражений. Для для переменных числового типа (integer или real) такие выражения называются арифметическими.
Целочисленным переменным можно присваивать значения выражений, которые получаются в результате выполнения операций:

  1. $+$ суммы (сложения)
  2. $-$ разности (вычитание)
  3. $*$ произведения (умножение)

— так как эти операции возвращают тип integer. Операцию же деления $/$ использовать нельзя, так она возвращает другой тип — real (вещественные числа). В Паскале любая попытка присвоить переменной данные другого типа приводит к ошибке ("падению" программы).

Что определяет тип арифметических выражений

Также в выражения, значения которых можно присваивать переменным типа integer должны входить только:

  • целочисленные литералы
  • или целочисленные переменные.

Можно сказать что тип, который возвращается выражением (тип его результата) определяется двумя моментами:

  1. типом операций (допустимые перечислены выше)
  2. типом операндов. Операнды — это аргументы операций, подобно аргументам процедуры, на их
    основе производятся какие-то действия. Но операнды операций, в отличие от операндов процедур,
    записываются не в скобках, а справа и слева от знака операций, так как мы это делаем в математических выражениях:

Таким образом, допустимы выражения:

А также выражения с участием других переменных:

Работа с результатом выражений

Результат выражения является данными с каким-то конкретным типом, а потому с выражениями можно делать то же, что и с переменными и литералами ,а именно:

  1. Присваивать их значения переменным, например: a := 22 + 3* 999;
  2. Делать одни выражения частью других (в этом случае части называют подвыражениями), например сделаем предыдущее выражение подвыражением:

Подвыражение — это любая часть основного выражения, в которой есть хотя бы один оператор (как и выражение всегда обладает каким-то возвращаемым значение известного типа). Например:

Это подвыражение выражения:

Читайте также:  Цвет заливки в excel горячие клавиши

Передавать результаты выражения (и как следствие — их результаты) в процедуры, например:

Во write() и writeln() также можно передавать любое количество аргументов-выражений, а также аргументов другого вида:

Инициализация переменной


Инициализация переменной
— это первое присваивание какого-то значения переменной. Это может быть:

  1. или значение литерала
  2. или считывание значения для переменной извне (например, пользователь может вводить значение переменных в консоли, но об этом мы поговорим в следующих уроках)
  3. или присваивание данной переменной значения значения другой уже инициализированной переменной.
  4. или значение выражения, в котором или одни литералы или инициализированные переменные

Таким образом один из примеров выше мы могли бы переписать с такими комментариями:

Программа выполняется сверху вниз построчно — перезапись значений переменных

Программа выполняется сверху вниз построчно, т. е. сначала первая строка тела программы потом вторая и т.д. — а потому значение переменной в каждой строке программы (по мере её достижения) меняется в случае если очередной раз присваивается какое-то другое значение, отличное от того, что было раньше.

Для одного из приведённых примеров справа в комментариях допишем чему оказываются равны переменные после выполнения очередной строки:

— то есть (во время выполнения программы) после её выполнения, например:

— с помощью комментариев для последней строки показано, что значение меняется после выполнения операции присваивания "сразу после точки с запятой", и если в следующих строках переменной не присваивают какое-то другое значение, то оно и не меняется.

Разбор практических примеров

Пример №1

У вас есть целочисленная переменная $a$ и два строковых литерала:

Присвойте переменной $a$ значение и выведете на экран фразу с этим значением — используя указанные выше литералы (можно не только их, но их обязательно), например для:

Начнём писать код, в теле программы:

— таким образом мы выполнили первое требование задачи, присвоив значение переменной. Далее от нас хотят, чтобы программа выводила фразу, где число яблок зависит от значения переменной $a$ (а точнее равно ему), при этом про число груш ничего не сказано.
Второй момент — необходимо использовать литералы в точности так как они приведены в условии, что ж попробуем вывести фразу, используя значение переменной и указанные литералы:

— раз про груши ничего не сказано, то их число выводим просто в составе строкового литерала (оно не будет меняться пока мы не изменим сам литерал), а вот число яблок передаём в процедуру как значение переменной $a$.
Заметьте, что литерал:
‘ и 8 груш’
мы начали с пробела, чтобы при выводе он не "склеился" со словом "яблок".

Запустите последний код. Чего-то там не хватает? А именно — в консоли мы получим:

— почему склеилось имя и значения? Чтобы понять это нужно внимательно посмотреть на код вызова процедуры:

— как мы можем видеть, здесь в конце первого аргумента-литерала нет пробела, а значит значение переменной $a$ (которое есть само по себе просто число, а значит содержать пробелов не может) просто выведется вплотную к первому аргументу. Чтобы исправить эту ситуацию, можно было бы изменить первый литерал, добавив в его конец символ-пробел:

НО: таким образом мы бы не следовали строго условию задачи использовать указанные строковые литералы (‘У Коли’ и ‘ яблок’), так как фактически

— это разные литералы (в первом на один символ больше и этот символ — пробел). А значит, чтобы не модифицировать первый строковый литерал, просто добавим в вызов ещё один аргумент — символьный литерал (а точнее – пробел):

— что и будет подходящим вызовом процедуры writeln() для решения задачи.

Пример №2

Пусть у вас есть задача:

Васе $m$ лет, а Паше $k$ лет. Напишите программу, в которая считает разницу между возрастом Васи и Паши (то есть выясняет насколько Вася старше Паши). Конкретные значения возрастов этих двух человек задайте в коде в виде двух переменных, которым присвойте значения целые численные значения (используя целочисленные литералы). Результат суммы запишите в третью переменную и выведите значение на экран.

Начнём решать данную задачу. В начале условия сказано, что возраста обоих героев надо задать как значения переменных, давайте сделаем это с помощью оператора присваивания:

Далее разницу их возрастов просят записать в третью переменную, что ж сделаем и это:

В самом конце нас просили вывести значение разницы на экран, сделаем и это используя вызов стандартной процедуры writeln(), в качестве пояснения пользователю передав строковый литерал как аргумент перед вторым аргументом-переменной:

То есть в данный момент мы имеем код:

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

Запустите этот код и посмотрите как он работает, если консоль закрывается сразу после выполнения кода, используйте вызов для задержки консоли.

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

Теоретические вопросы:

Объясните что здесь происходит.

И ещё один вопрос:
Будет ли работать код:

Объясните что здесь происходит.

Есть программный код:

Два задания к этому коду:

  • Ответьте на вопросы в комментариях письменно.
  • Запустите этот код, предварительно объявив используемые переменные, и выведите в консоль с write() или writeln() значения переменных, в строках, где в комментариях к коду задан вопрос.
  • Что такое выражение? Что такое арифметическое выражение? Что такое подвыражение?
    • Запишите строку, в которой с помощью одного writeln() выводятся результаты трёх разных (любых) арифметических выражений.
    • Сделайте то же самое, но выводя уже три переменные, каждой из которых предварительно присвойте значение одного из арифметических выражений.
    • Что такое "плохой стиль" в программировании? Как это понятие связано с объявлением переменных?
    • Чем виды представления данных отличаются от типов данных? Какие вы знаете типы данных? Какие вы знаете виды представления данных?
    • Что такое компилятор?
    • Какие выражения можно присваивать переменным целого типа? Какие операнды могут входить в эти выражения?
    • Задачи:

      (напишите код и продемонстрируйте его работу):

    • Объявите пять целочисленных переменных списком, ещё две списком и ещё две по одной. Тело программы можно сделать пустым.
    • Напишите программу, которая выводит на экран значения выражений:
    • двумя способами (чтобы в консоли получилось оба варианта):

      • в столбик, разделив пробелами
      • в строчку
    • У вас есть целочисленная переменная $a$ и два строковых литерала:
    • Присвойте переменной $a$ значение и выведете на экран фразу с этим значением — используя указанные выше литералы (можно не только их, но их обязательно), например для:

    • Васе $m$ лет, а Паше $k$ лет. Напишите программу, в которая считает их суммарный возраст и выводит значение на экран. Конкретные значения возрастов этих двух человек задайте в коде в виде двух переменных, которым присвойте значения целочисленных литералов. Результат суммы запишите в третью переменную и выведите значение на экран.
    • Напишите программу с тремя переменными целого типа, первым двум присвойте значения, а третьей переменной их произведение за вычетом их суммы (например, для значений $5$ и $2$ должно получиться выражение эквивалентное: $5*2 – (5+2)$). Выведете значение третей переменной на экран.
    • Оцените статью
      Добавить комментарий

      Adblock
      detector