Часть 1 – Объектно-ориентированное программирование структур данных 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Часть 1 – Объектно-ориентированное программирование структур данных



МЕТОДИЧЕСКИЕ УКАЗАНИЯ

к выполнению лабораторных работ по дисциплине
«Конструирование алгоритмов и структур данных»

Лабораторная работа №1

 

Тема: Представление чисел в ЭВМ и операции над ними в языке C#

 

Цель: изучение возможностей MS Visual Studio для создания консольного приложения и программирования на объектно-ориентированном языке C#.

 

Теоретические положения

 

Создание проекта.

 

Запустить Microsoft Visual Studio и выполнить команду «Создать проект…», как показано на рисунок 1, или нажать комбинацию клавиш <Ctrl+Shift+N>.

Рисунок 1 Стартовое окно Microsoft Visual Studio

 

На экране появится диалоговое окно «New Project» (рисунок 2), где следует задать необходимые параметры проекта: тип проекта (Project types), шаблон (Templates), имя проекта (Name), расположение во внешней памяти (Location) и наименование решения (Solution Name). Флажок Create directory for solution оставить включенным.

Рисунок 2 Диалоговое окно задания параметров нового проекта

 

В результате выполненных действий в окне проводника Solution Explorer появится структура созданного проекта и откроется модуль Program.cs (рисунок 3).

 

Теперь можно приступать к программированию.

 

Пример 1. Простейшая программа на языке C# выглядит следующим образом:

 

using System;

 

namespace Lab_1

{

class Program

{

   static void Main(string[] args)

   {

       // Вывод предложения на экран

       System.Console.WriteLine("Привет, C#!\n");

       Console.ReadKey();

   }

}

}

 

Рисунок 3 Созданный проект в развернутом виде

 

Анатомия программы.

Пространство имен в С# представляет собой совокупность связанных типов. Некоторые пространства имен, например, System, очень велики и могут включать более 100 разного рода типов; другие пространства имен, например, System.Timers, содержат всего по несколько типов. Типы DateTime и Math входят в пространство имен System.

Использование пространств имен (также называемых пакетами, библиотеками или интерфейсами прикладного программирования, API от Application Programming Interface) — это практическая реализация концепции повторного использования, принципа, чрезвычайно поощряемого в современной программной инженерии.

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

Программа в примере начинается с заявления, что она собирается использовать пространство имен System, в частности, класс System.Console, содержащий методы для работы с консолью.

Внутри пространства имен Lab_1 объявляется класс Program вместе с его содержимым вслед за открывающей фигурной скобкой. Имена файла и программы (т. е. имя класса) не обязательно должны совпадать, хотя обычно они или одинаковы, или схожи. В языке C# отсутствуют глобальные переменные и функции, поэтому все объявления переменных и функций должны находиться внутри объявления класса (количество классов неограниченно).

В структуре класса прежде всего вводится метод Main, являющийся стартовой точкой (точкой входа) в приложение. Функция должна быть объявлена как статическая, так как в этом случае для вызова функции не требуется создавать объект класса.

Содержательные действия программы ограничивается выводом на экран некоторого текста и ожидания нажатия любой клавиши. Вывод осуществляется с помощью метода Console.WriteLine; для ожидания нажатия клавиши используется метод Console.ReadKey.

В языке C# нет заголовочных файлов. Все методы для работы с консолью содержатся в классе Console пространства имен System. Метод вызывается оператором принадлежности (.). Иными словами, чтобы вызвать WriteLine() объекта Console, следует написать Corsole.WriteLine(…), поставив вместо многоточия выводимую строку.

Запуск программы осуществляется выполнением команды меню Debug ® Start Debugging, или нажатием клавиши F5. Если в компилятор не обнаружил ошибок, то на экран выводится консольное окно с результатом работы программы (рисунок 4).

Рисунок 4 Консоль с результатами выполнения программы

 

 

Лабораторная работа №2

 

Тема: Программирование алгоритмов с ветвлением, вычисление математических выражений

Цель: изучение основных арифметических и логических операций C# а также структурных операторов ветвления

Теоретические положения

C# - это язык, который основывается на семействе "C"-подобных языков (С, C++, Java) поэтому многие его механизмы работают по схожему принципу, например, операторы. В С# существуют четыре основных класса операторов: арифметические, логические, операторы сравнения, побитовые, а также несколько дополнительных, которые используются для ряда специальных ситуаций.

Арифметические операторы

Оператор Значение
+ Сложение
- Вычитание
* Умножение
/ Деление
% Остаток от деления
++ Инкремент
-- Декремент

 

Все перечисленные выше операторы, кроме % работают точно так же как в C/C++. В C# оператор деления по модулю может применяться как к целочисленным данным, так и к значениям с плавающей точкой. В С/С++ этого делать нельзя было.

using System;class Sample{ public static void Main()    { try{     int a=5,b=2;     double c = 19.67, d=3;     Console.WriteLine("Результат {0}%{1}={2}",a,b,a%b);     Console.WriteLine("Результат {0}%{1}={2}",c,d,c%d);    } catch(Exception ex){     Console.WriteLine(ex.Message);    }                    Console.Read(); }}

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

Оператор Значение
== Равно
!= Не равно
> Больше чем
< Меньше чем
>= Больше или равно
<= Меньше или равно

Логические операторы

Оператор Значение
& И
| Или
^ Исключающее или
&& И (сокращенная схема)
|| Или (сокращенная схема)
! Не

Результатом выполнения операторов сравнения и логических операторов являются значения типа bool(true/false).Например:

using System;class Sample{ public static void Main()    { try{     int a=2,b=3;     if((a==2)&&(b==3)){        Console.WriteLine("Это видно на экране 1!!!");     }  if(a>31){             Console.WriteLine("Это не видно на экране 2!!!");     }     bool b1=false,b2=false;     if(b1^b2){        Console.WriteLine("Это не видно на экране 3!!!");     }     b1=true;     b2=false;     if(b1^b2){       Console.WriteLine("Это видно на экране 4!!!");     }                  }   catch(Exception ex){      Console.WriteLine(ex.Message);   }   Console.Read(); }}

Пример показанный ниже это ошибка на этапе компиляции, так как в С# невозможно неявное преобразование от int к bool.

       int a = 7;       if(a){ // Так нельзя в C#, а в С++ можно             Console.WriteLine("Ошибка!!!");       }

И Даже любимая логическая ошибка программистов на C++ для С# превратится в ошибку на этапе компиляции, по причине, указанной выше.

int a = 7; if(a=8){ // В этой строке ошибка на этапе компиляции Console.WriteLine("Ошибка!!!"); }

Побитовые операторы

Как и в C/C++ они работают непосредственно с конкретными битами своих операндов.Операндами побитовых операторов могут быть только целочисленные значения.

Оператор Значение
& Побитовое И
| Побитовое Или
^ Побитовое Исключающее Или
~ Побитовое Отрицание
>> Побитовый сдвиг вправо
<< Побитовый сдвиг влево

Они выполняют те же операции, что и их булевы логические эквиваленты.Отличие состоит в том, что побитовые операторы работают с операндами на уровне битов, впрочем это информация не должна являться для вас новостью, так как вы уже сталкивались с ними в C/С++. Давайте рассмотрим пример их использования:

using System;class Sample{ public static void Main()    { try{     int a = Convert.ToInt32(Console.ReadLine());       // Проверка на четность     if((a&1)==1)        Console.WriteLine("Нечетное значение");     else        Console.WriteLine("Четное значение");     int b = 2,c=5;     int f = b|c;     // На Экране 7     Console.WriteLine(f);           int kvadrat = b<<1;     int kub = b<<2;     Console.WriteLine("Квадрат "+b+" = "+kvadrat);           Console.WriteLine("Куб "+b+" = "+kub);          }    catch(Exception ex){       Console.WriteLine(ex.Message);    }    Console.Read(); }}

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

Оператор ветвления.

В C# поддерживаются многие операторы условий и циклов, применяемых в C++, поэтому рассмотрим только отличия.

Оператор условия if-else внешне выглядит, как в C++:

if (условие)

{

...

}

else if (условие)

{

...

}

...

else

{

...

}

Однако, в C# выражение в скобках должны иметь тип bool. Это означает, что выражения типа if(a) /* a не имеет тип bool) */ и if(a = 5) будут вызывать ошибку компиляции. Таким образом C# позволяет избежать известной ошибки, связанной с потерей одного знака = внутри оператора условия.

 

Тринарный условный оператор:

условие? выражение 1 /*условие истинно*/: выражение 2 /*условие ложно*/

 

Пример 2. Пусть необходимо вычислить значение функции y:

Некорректные ситуации при вычислении возможны, если: , , .

Фрагмент кода C#, который реализует вычисление функции, представлен ниже.

       int a, b, x;

       double y;

       a = 7;

       b = 10;

       x = -10;

       y = Math.Pow(x, 2); // Вычисление y = x^2

       if ((x == 0) || (b <= 0) || (b == y))

       {

           Console.WriteLine("Вычисление невозможно!");

       }

       Else

{

           y = (a * y - b) / Math.Log10(b / y);

           Console.WriteLine("Значение y: {0}", y);

       }

       Console.ReadKey();

 

В этой программе вначале объявляются переменные a, b, x типа int, а также переменная y типа double. При объявлении переменных для них резервируется место в оперативной памяти, а идентификаторы (имена) переменных представляют собой ссылки на соответствующие места в памяти. Так, например, идентификатор b является ссылкой на область памяти размером 2 байта (для типа данных int), а идентификатор y является ссылкой на область памяти размером 4 байта (для типа данных double).

Далее следует 4 операции присваивания на основе оператора присваивания (=). Первые три операции присваивания обеспечивают инициализацию переменных a, b, x. Фактически при этом в области памяти, связанные с этими переменными заносятся указанные справа от оператора присваивания “=” константы (в примере числа 7,10, –10). Четвертая операция присваивания отличается от первых трех тем, что в правой части записано выражение, значение которого вычисляется и присваивается указанной слева переменной y. Можно сказать также, что переменная y инициализируется значением выражения. В этом выражении Math — наименование класса пространства имен System, который содержит методы для вычисления математических функций, таких как Pow (возведение в степень) или Log10 (вычисление десятичного логарифма), и др.

Структурный оператор ветвления if … else предназначен здесь для проверки возможности вычисления,чтобы исключить ошибки выполнения (например, деление на ноль). Этот оператор рассматривается подробно в теоретических положениях к лабораторной работе №2.

 

Перечень математических функций, которые могут быть использованы при вычислении значений заданных функций:

Функция Назначение
Abs(Double) Возвращает абсолютное значение аргумента
Exp(Double) Вычисляет значение экспоненты в степени аргумента
Log(Double) Вычисляет логарифм натуральный от аргумента
Log10(Double) Вычисляет логарифм десятичный от аргумента
Log(Double, Double) Вычисляет логарифм от аргумента 1 по основанию аргумента 2
Pow(Double, Double) Вычисляет значение аргумента 1 возведенного в степень аргумента 2
Sqrt(Double) Вычисляет значение квадратного корня из значения аргумента

 

Некоторые приемы упрощенного решения вычислительных задач:

Выражение Вариант вычисления
x 2 x * x
x 3 x * x * x
Math.Sqrt(Math.Sqrt(x))
p =1/ n; Math.Pow(x, p)
p = m / n; Math.Pow(x, p)

Задание

 

1. Создать консольное приложение так, как показано в примере 1.

2. Запустить программу и убедиться в корректности ее выполнения.

3. Дополнить функцию Main кодом, который вычисляет значение математической функции y в соответствии с индивидуальным заданием из табл. 2 и выводит его на консоль. Значения аргументов задать явным присваиванием констант. При невозможности вычисления вывести на консоль сообщение.

4. Составить блок-схему алгоритма функции Main.

5. Выполнить контрольный просчет и сделать вывод.

 

Таблица 2. Варианты заданий к лабораторной работе №2

1 11 21
2 12 22
3 13 23
4 14 24
5 15 25
6 16 26
7 17 27
8 18 28
9 19 29
10 20 30

 

Содержание отчета:

- тема, цель, задание, в том числе индивидуальная часть и номер варианта;

- листинг программы;

- консольное окно с результатами работы программы;

- блок-схема алгоритма;

- контрольный просчет;

- вывод по работе.

 


 

Лабораторная работа №3

 

Тема: Программирование алгоритмов циклической структуры

 

Цель: изучение возможностей C# для программирования алгоритмов циклической структуры.

 

Теоретические положения

 

Форматирование вывода

 

Применяется для форматирования данных, выводимых в поток при помощи методов Write() или WriteLine(), в частности, для аккуратного выравнивания данных в таблице (в т.ч. контроль числа выводимых десятичных разрядов). Выполняется с использованием форматирующей строки, которая содержит всю информацию о выводимых элементах текста, а также шаблон для каждой указываемой далее переменной, причем каждый шаблон может содержать спецификацию формата. Например, форматированный вывод аккуратно выровненной таблицы значений функции y от варьируемого аргумента x можно выполнить таким предложением вывода:

 

Console.WriteLine("{0,4} {1,8:f2}", x, y);

 

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

 

0 0.00

10 3.16

20 4.47

30 5.48

Форматирующий параметр является первым параметром вызова Write или WriteLine, которая имеет, таким образом, альтернативную форму:

 

Console.WriteLine("текст{формат0}текст{формат1}текст…"элемент0, элемент1, …);

 

Элементами вывода могут быть любые переменные С#, для которых может существовать спецификация формата. Спецификации формата формат0, формат1,... описаны ниже. Текстовые вставки текст не обязательны. В качестве формата может также выступать отдельная символьная строка.

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

Спецификация формата: { N, M: s }

N — указывает на позицию элемента в списке выводимых переменных после того, как строка формата будет передана в метод Write; позиции элементов нумеруются от 0.

М — задает ширину области, в которую будет помещено форматированное значение. Если М отсутствует или отрицательно, значение будет выровнено влево, иначе — вправо.

s — является необязательной строкой форматирующих кодов, которые используются для управления форматированием чисел, даты и времени, денежных знаков и т. д. Параметр s носит название спецификатора формата. В системе.NET имеются три стандартных типа спецификаторов формата: для чисел, объектов даты/времени и для перечислимых объектов.

Таблица 3. Примеры числовых спецификаторов форматов

Спецификатор Буква Данные Пример Строка
Общий G Все (настраивается) 8:G 8:G __1234.5 ____1234
Фиксированная точка F Все 8:F2 _1234.50
С возвратом R Все 8:R2 1234.5
Число N Все 8:N1 1,2345.6
Выражение со степенью Е Все 14:E6 _1.234500E+003
Десятичное выражение D Только целые 8:D 00001234
Денежные единицы С Все 10:С _$1,234.50
Проценты Р Все 0:P 89.00%
Шестнадцатеричный код X Только целые 0:X FCA0h

 

Спецификатор G при использовании его с числами обладает наибольшей гибкостью. Он подстраивается к типу получаемого им значения и не принимает в расчет спецификаторы точности. Им удобно пользоваться, если требуется вставлять числа в текст. Для таблиц он не так удобен. Для того чтобы выровнять числа и десятичные точки, следует использовать F или даже R.

Спецификатор R формирует строку примерно так же, как F или Е, но имеет то дополнительное преимущество, что формируемая им строка при вводе может быть преобразована в точности в то число, из которого она получена, поэтому он удобен для сериализации.

Спецификатор N удобен для представления больших чисел, потому что он делит число на группы из трех цифр, хотя во многих странах вставляемую им запятую приходится преобразовывать в пробел (см. ниже).

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

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

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

 

Операторы цикл ов

 

Цикл с предусловием:

while (условие)

{

...

}

 

Цикл с постусловием:

do

{

...

}while (условие);

 

Параметрический цикл:

for (инициализация; условие; приращение)

{

...

}

 

Во всех циклах, как и в операторе if, условие должно иметь тип bool.

Оператор досрочного перехода к следующей итерации: continuous.

Оператор досрочного выхода из цикла: break.

 

Задание

 

Составить блок-схему алгоритма и программу на языке C#, реализующую такие операции в соответствии с индивидуальным заданием, выбираемым из таблицы 4:

  1. вычисления в цикле заданного вида значений заданной функции y выполнить для переменной x, изменяющейся в заданном интервале [ x 1, x 2] с заданным шагом D x, проверяя при этом возможность вычислений, как в предыдущей лабораторной работе;
  2. в теле цикла организовать поиск максимального y_ max и минимального y_ min значений функции y, а также номеров шагов n_ max и n_ min, на которых достигаются эти значения;
  3. вычисленные значения вывести на консоль в виде таблицы такого формата:

| № шага | x | y  | y _min | n_min | y _max | n_max |

  1. выполнить ручной просчет для значения аргумента на третьем шаге и сравнить его с результатами выполнения программы;
  2. сделать вывод.

 

 

Содержание отчета:

- тема, цель, задание;

- листинг программы;

- консольное окно с результатами работы программы;

- блок-схема алгоритма;

- ручной просчет;

- вывод.

 

Контрольные вопросы

 

  1. Структура оператора ветвления.
  2. Синтаксис условного оператора.
  3. Структура оператора множественного выбора.
  4. Ограничения на использование оператора множественного выбора.
  5. Преимущества и недостатки оператора множественного выбора.
  6. Виды циклов, отличия и особенности использования.
  7. Что такое логическое выражение?
  8. Правила составления сложных логических выражений.
  9. Как работает оператор ветвления?
  10. Как работает оператор множественного выбора?
  11. Что такое тело цикла?
  12. Что такое параметрический цикл?
  13. Структура заголовка параметрического цикла.
  14. Что такое итерация?
  15. Оператор досрочного выхода из цикла и особенности его использования.

Таблица 4 Варианты индивидуальных заданий для лабораторной работы №3

№ варианта Заданная функция Интервал аргумента и величина шага Вид цикла
1 x Î [0,3; 3], Dx = 0,15 с предусловием
2 x Î [-1; 2], Dx = 0,15 с постусловием
3 x Î [0,8; 2], Dx = 0,1 параметрический
4 x Î [1; 1,5], Dx = 0,05 с предусловием
5 x Î [1; 3], Dx = 0,1 с постусловием
6 x Î [0,2; 4], Dx = 0,2 параметрический
7 x Î [0; p], Dx = p/20 с предусловием
8 x Î [1; 4], Dx = 0,2 с постусловием
9 x Î [-5; 3], Dx = 0,5 параметрический
10 x Î [0; 2p], Dx = p/10 с предусловием
11 x Î [2; 7], Dx = 0,2 с постусловием
12 x Î [0; p/2], Dx = p/60 параметрический
13 x Î [0,5; 3,5], Dx = 0,25 с предусловием
14 x Î [0,25; 2], Dx = 0,05 с постусловием
15 x Î [0; 3p/2], Dx = p/10 параметрический
16 x Î [-3; -1], Dx = 0,1 с предусловием
17 x Î [2; 3], Dx = 0,05 с постусловием
18 x Î [1; 4], D x = 0,2 параметрический
19 x Î [-5; -4], Dx = 0,025 с предусловием
20 x Î [0; 2p/3], Dx = p/40 с постусловием
21 x Î [0; p/2], D x = p/40 параметрический
22 x Î [0; 2p/3], D x = p/30 с предусловием
23 x Î [0,5; 2,5], D x = 0,1 с постусловием
24 x Î [0; p], D x = p/30 параметрический
25 x Î [-5; 1], D x = 0,25 с предусловием
26 x Î [1,5; 3], D x = 0,05 с постусловием
27 x Î [0; 2p], D x = p/15 параметрический
28 x Î [0,25; 5,25], D x = 0,25 с предусловием
29 x Î [0; p/4], D x = p/60 с постусловием
30 x Î [-2,5; 2,5], D x = 0,25 параметрический
31 x Î [0; 3p/2], D x = p/20 с предусловием
32 x Î [-0,5; 2,5], D x = 0,15 с постусловием
33 x Î [1,3; 6,1], D x = 0,3 параметрический
34 x Î [p/2; 3p/2], D x = p/30 с предусловием
35 x Î [0; p/2], D x = p/40 с постусловием
36 x Î [3p/2, 5p/2], D x = p/60 параметрический
37 x Î [–p/2; p/2], D x = p/40 с предусловием
38 x Î [-5; 3], D x = 0,4 с постусловием
39 x Î [2,5; 7,5], D x = 0,25 параметрический
40 x Î [0; p/3], D x = p/60 с предусловием

 

double pi = Math.PI

Лабораторная работа №4

 

Тема: Алгоритмизация обработки одномерных массивов.

Цель: изучение возможностей C# для программирования алгоритмов обработки одномерных массивов и освоение технологий составления и тестирования программ

 

Теоретические положения

Массив — это индексированный набор объектов одного типа. Массив может хранить элементы любого типа, но для всех элементов массива тип должен быть одним и тем же.

Объявление массивов

Объявление массивов имеет следующий синтаксис:

Тип[] имя-массива.

Например:

int[] myIntArray;

Квадратные скобки ([ ]) сообщают компилятору С#, что определяется массив, а тип указывает тип элементов этого массива. В примере, приведенном выше, myIntArray является целочисленным массивом.

Экземпляр массива создается ключевым словом new. Например:

myIntArrsy = new int[5];

Это объявление отводит память для массива, состоящего из пяти целых чисел.

В языке С# массивы относятся к ссылочным типам, объекты которых создаются в куче. Соответственно, массив myIntArray находится в куче. Элементы массива размещаются в соответствии с их типами. Целочисленный тип относится к размерным типам, поэтому элементы массива myIntArray будут иметь размерный тип, а не упакованный целочисленный тип. Массив элементов, имеющих ссылочный тип, будет содержать только ссылки на элементы, размещенные в куче.

Значения по умолчанию

Когда создается массив элементов, имеющих тип значения, каждый элемент первоначально содержит значение, устанавливаемое по умолчанию для данного типа (см. таблице 5). Вышеуказанное объявление создает массив из пяти целых, причем каждому элементу присваивается нулевое значение, устанавливаемое по умолчанию для переменных типа int.

Таблица 5 Базовые типы и их значения по умолчанию

Типы Значения по умолчанию
Числовые (int, long и т. д.) 0
bool false
char ‘\0’, (null)
enum 0
Ссылочные null

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

Цикл foreach

Данный оператор позволяет перебрать все значения в массиве или в классе-коллекции. Например, если arr - массив, а N - его длина, то вывести на экран значения элементов массива можно следующими способами (рассматриваются циклы for и foreach):

for(int i = 0; i < N; i++)

Console.WriteLine("{0} ", arr[i]);

и

foreach(int i in arr) // знать длину массива не обязательно

Console.WriteLine("{0} ", i);

 

Примечание: параметр цикла в блоке операторов, следующих за foreach, доступен только для чтения.

foreach(int i in arr) // знать длину массива не обязательно

i++; // Ошибка

 

Лабораторная работа №5

 

Тема: Алгоритмизация обработки символьных строк. Пользовательский функции

 

Цель: освоение составления и тестирования алгоритмов и программ обработки символьных строк с использованием регулярных выражений и функций пользователя.

 

Теоретические положения

Библиотека System.String

 

Некоторые члены типа данных System.String, которые могут быть полезны при выполнении лабораторной работы, представлены в табл. 7 (подробности см. в MSDN).

 

Таблица 7. Стандартные функции библиотеки System.String для обработки строк

Член типа данных System.String Описание
Length Это свойство возвращает информацию о длине текущей строки.
Compare() Позволяет сравнивать две указанные строки.
CompareTo() Позволяет сравнивать данную строку с указанной строкой
Concat() Сцепляет элементы указанного массива System.String, или указанных строк (до четырех)
Contains() Позволяет определять, содержит ли строка определенную подстроку.
Copy() Создает копию указанной строки
CopyTo() Копирует заданное число знаков из данной строки, начиная с указанной позиции и до указанной позиции
Equals() Позволяет проверять, содержат ли два строковых объекта идентичные символьные данные.
Format() Позволяет форматировать строку с помощью других элементарных типов данных (например, числовых данных или других строк) и обозначений типа {0}, о которых рассказывалось ранее в этой главе.
IndexOf() Определяет и возвращает индекс первого вхождения подстроки в строку. Параметры задают начальную позицию поиска и количество проверяемых знаков
Insert() Позволяет вставлять данную строку внутри строки с заданной позиции.
LastIndexOf() Определяет и возвращает индекс последнего вхождения подстроки в строку. Параметры задают начальную позицию поиска и количество проверяемых знаков
PadLeft() PadRight() Применяются для дополнения строки символами, соответственно, справа или слева.
Remove() Удаляет из строки все символы, начиная с заданной и до последней позиции
Replace() Заменяет все вхождения заданного образца на другой заданный образец
Split() Возвращает массив String, содержащий присутствующие в данном экземпляре подстроки, которые отделяются друг от друга элементами из указанного массива Char или String.
Substring() Извлекает подстроку с указанного знака и указанной длины
ToUpper() ToLower() Переводят всю строку целиком в нижний и в верхний регистр соответственно
Trim() Этот метод позволяет удалять все вхождения указанного ряда символов из начала и конца текущей строки.

Пользовательские функции

 

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

Параметры и возвращаемое значение функции вместе называются заголовком, или сигнатурой функции.

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

 

static void <имяФункции>()

{

...

}

 

Ключевое слово static имеет отношение к понятиям объектно-ориентированного программирования, и гарантирует выполнение функции. Ключевое слово void (отсутствует) указывает, что функция не возвращает никакого значения.

Если функция должна возвращать вовне какие-либо данные, то синтаксис следующий:

 

static <возвращаемыйТип> <имяФункции>()

{

...

return <возвращаемоеЗначение>

 

}

 

Единственным ограничением в данном случае является требование того, ЧТО <возвращаемоеЗначение> ДОЛЖНО иметь ТИП <возвращаемыйТип> ИЛИ же должна существовать возможность его неявного преобразования в этот тип.

 

В простейшем случае это может выглядеть следующим образом:

 

static double getVal()

{

return 3.2;

}

 

Если же функция должна принимать извне какие-либо данные, то необходимо задать:

­ список принимаемых функцией параметров в ее описан



Поделиться:


Последнее изменение этой страницы: 2021-09-26; просмотров: 69; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.111.85 (0.212 с.)