Программа Pascal ABC
-
Автор темыМариам
- Костяк форума

- Всего сообщений: 1731
- Зарегистрирован: 07.12.2012
- Моя будущая профессия: врач-педиатр
- Любимый школьный предмет: математика (особенно геометрия), химия
- Откуда: Беларусь
- Возраст: 29
- Контактная информация:
Программа Pascal ABC
Мы каждый год проходим эту программу по информатике. У меня с ней никогда не было проблем, но в этом году я не понимаю как делать некоторые задания (тема: строковые величины).
Кто-нибудь может мне помочь? 
"Убираем учебники! Берем двойные листочки!" – самые страшные слова моего детства.
-
Лунтик
- Я здесь новичок

- Всего сообщений: 2
- Зарегистрирован: 21.12.2012
- Откуда: Россия
- Контактная информация:
-
Автор темыМариам
- Костяк форума

- Всего сообщений: 1731
- Зарегистрирован: 07.12.2012
- Моя будущая профессия: врач-педиатр
- Любимый школьный предмет: математика (особенно геометрия), химия
- Откуда: Беларусь
- Возраст: 29
- Контактная информация:
Re: Программа Pascal ABC
Мы составляем алгоритмы с использованием строковых величин. Например, надо составить программу, которая находит сумму цифр введенного натурального числа. 
"Убираем учебники! Берем двойные листочки!" – самые страшные слова моего детства.
-
Лунтик
- Я здесь новичок

- Всего сообщений: 2
- Зарегистрирован: 21.12.2012
- Откуда: Россия
- Контактная информация:
Re: Программа Pascal ABC
Сразу немножко оговорюсь, не знаю всех тонкостей именно Pascal ABC, но постараюсь говорить о стандартах языка Pascal.
Строка -- последовательность символов. В паскале есть тип данных string, который определяет строку из произвольного количества символов в интервале от 0 до 255. Т.е. длина строки может быть произвольной, но не более 255 символов.
Можно в цикле обращаться к отдельному элементу строки по ее индексу(порядковому номеру). Массивы проходили? Если да, то принцип тот же. Строка трактуется как цепочка символов.
В основном для работы со строками сущеcтвуют стандартные функции Length, Delete, Copy, Pos, Concat, Str, Val. Известны? Или они в АВС называются как-то по-другому? По ним есть вопросы?
Один элемент строки -- символ. То есть если введена строка st '1234', то st[2] = '2'. Это символ '2', а не цифра 2. У каждого символа есть свой код в таблице символов. Про них известно? Или дальше лучше не продолжать?
Так вот при решении задачи с определением суммы цифр получается примерно следующий фрагмент.
var
i, a:integer;
st:string;
begin
// ввод строки
// инициализация начального значения переменной для хранения суммы цифр
a := 0;
for i:= 1 to Length(st) do
a := a + Ord(st) - Ord('0');
end;
Такой код в случае, если мы обрабатываем коды символов из таблицы. Т.к. знаем, что у символа '1' код на 1 больше, чем у символа '0', то мы в результате разности Ord(st) - Ord('0') получаем само значение цифры. Ord(x) возвращает значение кода символа х.
Если мы обрабытываем всю строку целиком, то используем функцию Val(строка, число, код ошибки). Процедура пытается преобразовать строку в число, если не получается, то код ошибки ненулевой, если возможно, то код ошибки = 0, а в одном из параметров будет число, т.е. строка '123' будет преобразована в число 123. Затем уже определяются цифры и их сумма. Код будет примерно таким
var
st : string;
a, code, b, sum : integer;
begin
// ввод строки
val(st,a,code);
sum := 0;
while a <> 0 do
begin
b := a mod 10;
sum := sum + b;
a := a div 10;
end;
Жду еще вопросы. В Паскаль АВС есть это все, или там что-то несколько другое?
Строка -- последовательность символов. В паскале есть тип данных string, который определяет строку из произвольного количества символов в интервале от 0 до 255. Т.е. длина строки может быть произвольной, но не более 255 символов.
Можно в цикле обращаться к отдельному элементу строки по ее индексу(порядковому номеру). Массивы проходили? Если да, то принцип тот же. Строка трактуется как цепочка символов.
В основном для работы со строками сущеcтвуют стандартные функции Length, Delete, Copy, Pos, Concat, Str, Val. Известны? Или они в АВС называются как-то по-другому? По ним есть вопросы?
Один элемент строки -- символ. То есть если введена строка st '1234', то st[2] = '2'. Это символ '2', а не цифра 2. У каждого символа есть свой код в таблице символов. Про них известно? Или дальше лучше не продолжать?
Так вот при решении задачи с определением суммы цифр получается примерно следующий фрагмент.
var
i, a:integer;
st:string;
begin
// ввод строки
// инициализация начального значения переменной для хранения суммы цифр
a := 0;
for i:= 1 to Length(st) do
a := a + Ord(st) - Ord('0');
end;
Такой код в случае, если мы обрабатываем коды символов из таблицы. Т.к. знаем, что у символа '1' код на 1 больше, чем у символа '0', то мы в результате разности Ord(st) - Ord('0') получаем само значение цифры. Ord(x) возвращает значение кода символа х.
Если мы обрабытываем всю строку целиком, то используем функцию Val(строка, число, код ошибки). Процедура пытается преобразовать строку в число, если не получается, то код ошибки ненулевой, если возможно, то код ошибки = 0, а в одном из параметров будет число, т.е. строка '123' будет преобразована в число 123. Затем уже определяются цифры и их сумма. Код будет примерно таким
var
st : string;
a, code, b, sum : integer;
begin
// ввод строки
val(st,a,code);
sum := 0;
while a <> 0 do
begin
b := a mod 10;
sum := sum + b;
a := a div 10;
end;
Жду еще вопросы. В Паскаль АВС есть это все, или там что-то несколько другое?
-
Автор темыМариам
- Костяк форума

- Всего сообщений: 1731
- Зарегистрирован: 07.12.2012
- Моя будущая профессия: врач-педиатр
- Любимый школьный предмет: математика (особенно геометрия), химия
- Откуда: Беларусь
- Возраст: 29
- Контактная информация:
Re: Программа Pascal ABC
Лунтик, спасибо! Все очень понятно

"Убираем учебники! Берем двойные листочки!" – самые страшные слова моего детства.
Мобильная версия