Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Задача 3. Задано натуральное число



Задано натуральное число. Необходимо найти в нем сумму четных цифр или сообщить, что ни одной четной цифры в числе нет.

Решение.

Попытаемся решить задачу, перебирая все цифры, определяя их четность, и добавляя нужные к сумме. Тогда мы не сможем отличить ситуацию числа без четных цифр от той, где есть четные цифры, но все они равны 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...