Лекции по "Языкам и методам программирования" (PascalABC)

Автор: Пользователь скрыл имя, 07 Марта 2013 в 02:12, курс лекций

Описание работы

Лекция 1. Представление алгоритмов на языке Программирования ПаскальАВС.
Лекция 2. Построение линейных алгоритмов
Лекция 3. Алгоритмы, содержащие структуру ветвления.
Лекция 4. Алгоритмы, содержащие структурные операторы циклов.
...
Лекция 9. Файловый тип данных

Работа содержит 10 файлов

Лекция 1.Представление алгоритмов на языке программирования Паскаль..doc

— 120.50 Кб (Открыть, Скачать)

Лекция 10. Интуитивное понятие алгоритма.doc

— 366.50 Кб (Открыть, Скачать)

Лекция 2. Построение линейных алгоритмов.doc

— 209.50 Кб (Открыть, Скачать)

Лекция 3. Алгоритмы, содержащие структуру ветвления..doc

— 68.00 Кб (Открыть, Скачать)

Лекция 4. Алгоритмы, содержание циклы.doc

— 343.50 Кб (Открыть, Скачать)

Лекция 5.Процедуры и функции пользователя..doc

— 95.50 Кб (Открыть, Скачать)

Лекция 6. Символьные и строковые переменные.doc

— 69.00 Кб (Скачать)

Лекция 6.

Символьный и строковый тип данных.

В лекции рассматриваются  следующие вопросы:

1.Понятие символьной  переменной.

2.Объявление символьной  переменной в программе.

3.Решение задач с  использованием символьных переменных.

4.Объявление строковой  переменной в программе.

5.Операции над  строковыми переменными.

6.Процедуры  и функции работы со строковыми  переменными

 

 

 

 

1.Понятие символьной  переменной.

В языке Pascal возможно использование переменных, в которых может храниться один символ (буква, знак или любой символ клавиатуры). Как известно символьная информация в компьютере кодируется. Это значит каждому символу поставлено в соответствие некоторое целое число. Чтобы в таких кодировках не было разночтения, Институт стандартизации США ввел в действие систему кодирования ASCII (American Ctandard Code for Information Interchande – стандартный код информационного обмена США). В системе АSCII закреплены две таблицы кодирования – базовая и расширенная. Базовая таблица закрепляет значения кодов от 0 до 127, а расширенная относится к символам с номерами от 128 до 255.

Первые 32 кода базовой  таблицы, начиная с нулевого, отданы производителям аппаратных средств (в  первую очередь производителям компьютеров  и печатающих устройств). В этой области  размещаются так называемые управляющие коды, которым не соответствуют никакие символы языков. Эти коды не выводятся ни на экран, ни на устройства печати. Например, клавиши Enter, Backspase и другие.

Начиная с 32 по код 127 размещены  коды символов английского алфавита, знаков препинания, цифр, арифметических операций и некоторых других вспомогательных символов. Для национальных языков отводятся коды со 128 по 255.

2.Объявление  символьной переменной в программе.

Символьный тип переменных объявляется служебным словом CHAR.

Для работы с переменными символьного типа можно использовать следующие функции и процедуры:

Chr(a) – функция, которая определяет символ по коду а.

Ord(x) – функция, которая по символу х определяет его код.

UpCase(x) – функция, которая преобразует малые буквы в большие английского алфавита.

Pred(x) – функция, которая находит символ из таблицы ASCII, предшествующий символу из переменной х.

Succ(x) – функция, которая находит символ из таблицы ASCII, следующий за  символом из переменной х.

3.Решение задач  с использованием символьных переменных.

Задача. Составить таблицу кодов и символов, которые этим кодам соответствуют.

Решение. Поскольку коды ASCII имеют значения 0 до 255, то используя цикл можно на экран вывести необходимую таблицу.

Program a31;

Uses Crt;

Var I:Integer; 

Begin

Writeln(‘Таблица кодов’);

For I:=1 to 255 do

   Write(‘код – ‘,I,’символ - ’, Chr(i):2);

Readln;

End.

 

 

4.Объявление строковой переменной в программе.

Для работы с  текстами, и вообще, наборами слов используются данные строкового типа. Формат объявления строковой переменной имеет следующий вид:

1 способ

Type

  Имя типа = String;

Var

   Имя преременной : имя типа;

2 способ

Var Имя переменной : String;


STRING – служебное слово переводится “строка”.

5.Операции  над строковыми переменными.

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

Для присваивания значения строковой переменной служит оператор присваивания. Значения строковых переменных можно вводить с клавиатуры, как и значения числовых переменных. Строковая переменная, которая не содержит ни одного символа, является пустой строкой или нуль-строкой (например, а:=’’).

Для объединения  нескольких строк и одну строку служит операция сцепления или конкатенации и обозначается знаком “+”. При  операции сцепления необходимо учитывать, чтобы длина полученной строки не превышала максимальной длины, иначе все лишние символы отбрасываются.

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

 

6.Процедуры и функции работы со строковыми переменными

Для работы со строковыми переменными используются специальные  процедуры и функции:

Функции

Length(имя строковой переменной)

Определение длины  строки

Pos(st1, st2)

Нахождение  первого появления в строке st2 строки st1

Copy(st, начальная позиция, количество копируемых позиций)

Выделение со строки st подстроки от начальной позиции указанное количество позиций

Процедуры

Delete(st, начальная позиция, количество удаляемых символов)

Удаление со строки st символов от начальной позиции указанное количество позиций

Insert(st1, st2, начальная позиция)

Вставка строки st1 в строку st2 с отмеченной позиции

Str(арифметическое выра-жение, строковая пере-менная)

Преобразование  числового значения арифметического  выражения в строковую переменную

Val(строковая переменная, числовая переменная, cod)

Преобразование  строковой переменной в числовую переменную. В строковой переменной не должно быть пробелов. Если во время перевода ошибок не было, то переменной cod присвоится значение 0. Если же ошибки были, то переменной cod присвоится значение той позиции строковой переменной, в которой стоит символ, который невозможно перевести в число.


 

Задача. Дано слово. Подсчитать, сколько раз в нем встречается данная буква и заменить ее на символ “ - “.

Program a39;

Var

 s,a,x :String;

l,i,k:Integer;

Begin

  Writeln('Ввести слово'); Readln(s); 

  l:=Length(s); {Определение длины слова}

  Writeln('Ввести букву'); Readln(a);

  x:=''; {новое слово пока пустое}

  k:=0; {счетчик количества данной буквы}

  For i:=1 to l do

     If copy(s,i,1)=a {если текущая буква слова равна данной букве}

           Then  Begin x:=x+'-'; k:=k+1; End

{то к новому слову  прибавляем символ «-» и к  счетчику прибавляем 1}

           Else x:=x+copy(s,i,1);

{иначе к новому  слову прибавляем текущую букву  старого слова}

  Writeln('Данное слово  --  ', s);

  Writeln('Буква  ',a,' встречается  ',k,'  раз');

  Writeln('Полученное слово --  ',x);

End.

 

Задача. Дан текст. Слова в тексте отделяются одно от другого одним пробелом. Определить, есть ли в тексте данное слово.

Program a40;

Var

 t,t1,x,y :String;

l,k,z:Integer;

Begin

  Writeln('Ввести текст'); Readln(t); 

  l:=Length(t); {Определение длины текста}

  t1:=t; {копирование текста, т.к. при работе с текстом исходный текст может пострадать}

  Writeln('Ввести слово Х'); Readln(x);

  k:=0;

{Переменная, которая  будет являться дополнительной  переменной. Сначала этой переменной  присвоим значение 0, а затем, если  в тексте обнаружим искомое слово, то значение этой переменной изменим, например на 5}

{Алгоритм будет заключаться  в следующем. Поскольку слова  в тексте отделяются друг от  друга одним пробелом, то будем  находить позицию пробела в  тексте. Сделаем копию от начала текста до этой позиции – это есть слово текста. Сравним полученное слово текста и данное слово. Если они равны, то изменим значение дополнительной переменной. После этого слово из текста вместе с пробелом удалим. В конце получим, что исходный текст станет пустым.}

  While t<>’’ do {пока текст не пустой}

     Begin

     Z:=Pos(‘ ‘,t); {поиск позиции пробела в тексте}

     Y:=Copy(t,1,z-1); {копирование слова из текста}

     If x=y {если данное слово ч равно слову из текста}

           Then  k:=5;

     Delete(t,1,z); {удаление слова из текста}

     End;

  If k=0

     Then Writeln(‘В тексте ’,t1,’ нет слова ’, x)

     Else Writeln(‘В тексте ’,t1,’ есть слово ’,x);

  End.

Задача. Дан текст. Слова в тексте отделяются одно от другого одним пробелом. Заменить одно данное слово Х другим данным словом У.

Program a41;

Var

 t,t1,t2,x,y,s :String;

l,z:Integer;

Begin

  Writeln('Ввести текст'); Readln(t); 

  l:=Length(t); {Определение длины текста}

  t1:=t; {копирование текста, т.к. при работе с текстом исходный текст может пострадать}

  Writeln('Ввести слово Х'); Readln(x);

  Writeln('Ввести слово У'); Readln(у);

  T2:=’’;

{Алгоритм будет заключаться  в следующем. Поскольку слова  в тексте отделяются друг от  друга одним пробелом, то будем  находить позицию пробела в  тексте. Сделаем копию от начала текста до этой позиции – это есть слово текста. Сравним полученное слово текста и данное слово. Если они равны, то к новому тексту прибавим новое слово. Если же они не равны, то к новому тексту прибавим слово из старого текста. Затем из старого текста слово удаляем.}

  While t1<>’’ do {пока текст не пустой}

     Begin

     Z:=Pos(‘ ‘,t1); {поиск позиции пробела в тексте}

     s:=Copy(t1,1,z-1); {копирование слова из текста}

     If x=s {если данное слово х равно слову у их текста }

           Then   t2:=t2+’ ‘+s  {к новому тексту прибавляем слово из исходного текста}

           Else   t2:=t2+’ ‘+y; {к новому тексту прибавляем данное слово y }

     Delete(t1,1,z); {удаление слова из текста}

     End;

  Writeln(‘Исходный текст ’,t1);

  Writeln(‘Полученный текст ’,t2);

    End.

Задача. С клавиатуры вводится длинное целое число, не менее 50 цифр. Определить сумму цифр данного числа.

Program а42;

Var

 t,x :String;

l,s,z,I,cod:Integer;

Begin

{Введем число как  текст, т.е. набор символов-цифр}

  Writeln('Ввести текст'); Readln(t); 

  l:=Length(t); {Определение длины текста}

  {Будем выделять по одному символу из текста, переводить этот символ в цифру и прибавлять ее к сумме}

s:=0;

For i:=1 to l do

  Begin

  x:=Copy(t,I,1); {выделение одного символа из текста}

  Val(x, z, cod); {перевод символа х в цифру z}

   If cod=0 {Если перевод прошел без ошибок, то переменная cod принимает значение 0}

      Then s:=s+z

      Else Writeln(’при переводе ’,I,’ символа обнаружена ошибка’);

   End;

Writeln(‘Сумма цифр исходного числа =’,s);

End.




Лекция 7.Структурный тип данных (массивы).doc

— 128.50 Кб (Открыть, Скачать)

Лекция 8.Комбинированный тип данных.doc

— 62.00 Кб (Открыть, Скачать)

Лекция 9.Файловый тип данных.doc

— 114.50 Кб (Открыть, Скачать)

Информация о работе Лекции по "Языкам и методам программирования" (PascalABC)