Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Задано натуральное число. Необходимо найти в нем сумму четных цифр или сообщить, что ни одной четной цифры в числе нет.
Решение.
Попытаемся решить задачу, перебирая все цифры, определяя их четность, и добавляя нужные к сумме. Тогда мы не сможем отличить ситуацию числа без четных цифр от той, где есть четные цифры, но все они равны 0. Потребовалось ввести логическую переменную. В таких переменных мы обычно храним ответ на некоторый вопрос. В данном случае там будет храниться ответ на вопрос «встречались ли четные цифры». Первоначально ответ ложный.
Нач
цел n, c, s
лог w
ввести n
s:= 0
w:= нет
нцпока n > 0
c:= n mod 10
если (c mod 2) = 0
то s:= s + c
w:= да
Все
n:= n div 10
Кц
если w
товывести s
иначевывести “Нет четных цифр”
Все
Кон
Здесь мы использовали конструкцию если w. Это соответствует варианту если w= да. Дело в том, что переменная w уже является готовым ответом на некоторый вопрос. Нетрудно понять, что следующие два фрагмента алгоритма одинаковы. Просто в первом мы вычислили результат сравнения a и b заранее.
w:= a < b если w то a иначе b все | если a < b то a иначе b все |
Символьный и строковый тип
При создании программы необходимо обрабатывать и хранить не только числовые данные. Возникает необходимость работать с символами и строками.
Символы представляют собой отдельные знаки с изображением букв русского и латинского алфавита, цифр, знаков препинания и других специальных литер. Символьный тип часто называют литерным.
Примеры символов: 'a', 'A', 'B', '5', 's', '*', '#', '@'.
При хранении символов в компьютере реально хранятся целые числа, которые являются кодами соответствующих символов. В процессе операций ввода и вывода происходит преобразование между символами и их кодами. Для этого используются кодовые таблицы. В различных информационных системах и программах могут использоваться разные кодовые таблицы. Говорят о разных кодировках текстовой информации.
Наиболее известны следующие кодировки:
ANSI – Американский национальный стандарт информации;
ASCII – Американский стандартный код обмена информацией;
Unicode – стандарт, позволяющий представить знаки практически всех письменных языков.
Различные программы используют и хранят текст по-разному, например, текст, созданный в редакторе MS Word, не прочитается в Блокноте. Но даже обычный текстовый файл с расширением txt может храниться в разных кодировках. Наверняка многие уже сталкивались с тем, что программа пытается что-то вывести на экран по-русски, а результат не соответствует ожиданиям. Или Вы открываете страницу кого-нибудь сайта и получаете нечитабельное содержимое.
В рамках данной темы мы будем считать, что кодировка выбрана, зафиксирована и мы больше о ней не заботимся. Для нас важным является лишь то, что компьютер хранит не изображения символов, а их коды – целые числа.
Рассматривая символы как тип данных необходимо сказать о допустимых операциях. Символы можно сравнивать друг с другом с помощью операций отношения, таких как равно, больше, меньше и т.д. С этой точки зрения, символьный тип является упорядоченным.
Поскольку существует взаимно-однозначное соответствие между символом и его кодом, а они, являясь целыми числами, позволяют отвечать на вопрос «кто следующий», то символы относят к так называемым порядковым типам данных. Это, в частности, означает, что символы можно использовать в качестве параметров в циклах «для … от … до». В любом языке программирования есть средства преобразования символьной информации в числовую и наоборот.
В алгоритмах очень часто используется знание особенностей хранения символов. Так известно, что символы с изображением цифр расположены подряд в кодовой таблице. Это позволяет, например, на Паскале перевести символ x в целое число n.
n:= ord(x) – ord(‘0’); {здесь ord – функция вычисления кода символа}
Строки представляют собой последовательности символов. В языках программирования имеются разные подходы к организации хранения строк. В языке Паскаль, например, строки хранятся так, что прямо в них хранится информация об их длине, поэтому функция вычисления длины строки там выполняется почти мгновенно. Совсем по другому обстоит дело в языке Си. Там строка – это последовательность символов, заканчивающаяся специальным признаком конца строки – символом с кодом 0. Поэтому с Си функция вычисления длины стоки должна пробежать всю строку, прежде чем сообщит нам ответ.
Практически во всех языках программирования для строк имеется базовый набор операций. Обычно к ним относятся операции такого вида:
Длина (a) – вычисления длины строки a. (Тип «целое»)
Извлечь (a, i) – возвращает i -тый (слева) символ в строке a. (Тип «строка»)
Склеить (a, b) – возвращает строку, в которой записаны сначала все символы строки a, а затем все символы строки b. (Тип «строка»)
Копировать (a, i, k) – возвращает фрагмент строки a, начиная с i -того (слева) символа, содержащий k символов. (Тип «строка»)
Удалить (a, i, k) – возвращает строку a после удаления из нее фрагмента, начиная с i -того (слева) символа, содержащего k символов. (Тип «строка»)
В дополнение к этим базовым операциям со строками во многих языках программирования существуют и дополнительные средства.
Дата публикования: 2014-11-03; Прочитано: 523 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!