Сравнение языков С++ и C

Лекции по предмету «Программирование»
Информация о работе
  • Тема: Сравнение языков С++ и C
  • Количество скачиваний: 1
  • Тип: Лекции
  • Предмет: Программирование
  • Количество страниц: 4
  • Язык работы: Русский язык
  • Дата загрузки: 2014-06-01 09:13:09
  • Размер файла: 22.65 кб
Помогла работа? Поделись ссылкой
Информация о документе

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

Если Вы являетесь автором текста представленного на данной странице и не хотите чтобы он был размешён на нашем сайте напишите об этом перейдя по ссылке: «Правообладателям»

Можно ли скачать документ с работой

Да, скачать документ можно бесплатно, без регистрации перейдя по ссылке:

Сравнение языков С++ и C#

В языке C# добавлено несколько новых типов данных, но они применяются не часто, поэтому в обычных разработках их можно не учитывать (например, финансовый тип – это число, которое может содержать до 28 знаков с фиксированным положением десятичной точки).
На уровне арифметических и логических выражений операторы языков С++ и C# практически одинаковы.
Объявления переменных, массивов и классов имеют отличия. Объявление скалярных переменных не отличается от объявлений в языке С++:
double a, b = 2, c; // Объявление переменных
Вместе с объявлением можно выполнять инициализацию.
Можно приписать атрибут const, обеспечивающий защиту переменной от случайного изменения. Например,
const int n = 5; // Объявление целочисленной константы n
В языке C# имеется оператор ??, который имеет следующий смысл
Фрагмент программы
int? x = null;
int y = x ?? 10;
Console.WriteLine("{0}", x);
Console.WriteLine("{0}", y);
Обратите внимание: перед цифрой 10 пустая строка

Если заменить строку описания x на такую:
int? x = 100;
То результат будет таким

Для применения оператора ?? после типа переменной должен быть знак вопроса.
Троелсен стр. 253
Хотя это хороший пример защитного программирования, C# предоставляет ключевое слово as для быстрого определения совместимости одного типа с другим во время выполнения. С помощью ключевого слова as можно определить совместость, проверив возвращенное значение на равенство null. Предлагается ключевое слово is, которое позволяет определить совместимость двух типов. В отличие от ключевого слова as, если типы не совместимы, ключевое слово is возвращает false, а не ссылку null.

Объявление одномерных массивов имеет приведенную ниже форму
int [ ]n = new int[5]; // Без инициализации
int [ ]n = {7, 1, 2, 3, 8}; // С инициализацией
Примечание: Массив, объявленный без инициализации, автоматически обнуляется.
Объявление многомерных массивов в языке C# отличается от объявлений на языке С++.
int [,] a= new int [2, 3]; // Массив из двух строк и трех столбцов
int [,] a={{7, 1, 2}, {8, 4, 5}}; // Тот же массив, но с инициализацией
Обратите внимание – на количество измерений указывает запятая, в квадратных скобках. При инициализации двухмерных массивов каждая строка значений записывается в своей паре фигурных скобок.
Любая объявленная в языке C# переменная типа массива является объектом класса Array. Это класс имеет ряд функций, которые могут быть полезны при работе с массивами. Для обращения к членам этого класса после имени объявленного массива ставят точку, после которой вставляют требуемую функцию. Для некоторых из этих функций после имени просто ставят пару круглых скобок (свойства), а для других записывают параметр в круглых скобках (статические методы).
Ниже перечислены основные функции.
Элемент Тип Назначение
Length свойство Количество элементов массива (по всем размерностям)
Clear статический метод Присваивание элементам массива значений по умолчанию
Copy статический метод Копирование заданного диапазона элементов одного массива в другой
CopyTo статический метод Копирование всех элементов текущего одномерного массива в другой массив
GetValue экземпляр Получение значения элемента массива
IndexOf экземпляр Поиск первого вхождения элемента в одномерный массив
LastIndexOf статический метод Поиск последнего вхождения элемента в одномерный массив
Reverse статический метод Изменение порядка следования элементов на обратный
SetValue статический метод Установка значения элемента массива
Sort экземпляр Упорядочивание элементов одномерного массива
Например, при выполнении приведенных ниже операторов будет выведено 4:
int [ ] ar = { 2, 3, 1, 4};
int len = ar.Length;
Кроме стандартных операторов цикла while, do-while и for (синтаксис которых не отличается от аналогичных операторов языка С++) в язык C# добавлен оператор цикла foreach, который применяется для перебора элементов в массивах и коллекциях. Этот оператор удобен тем, что он автоматически определяет количество элементов в рассматриваемом объекте и строит цикл, для которого не требуется специально объявлять переменную цикла (для обращения к индексам элементов). Это удобно при запросах в базу данных, когда неизвестно, сколько переменных будет извлечено в результате выполнения операции. При применении оператора foreach необходимо объявлять переменную, тип которой совпадает с типом элементов обрабатываемого массива (если элементом коллекции является класс, то требуется объявлять объект этого класса). В эту переменную заносится текущее значение из перебираемого списка. Например, пусть объявлен массив типа double.
double [ ] a = {1.0, 2.1, 3.5, 4.7, 5.2 };
Тогда для перебора элементов этого массива оператор будет иметь вид:
foreach (double x in a)
Переменная х будет поочередно получать значения из массива а, переменная для обозначения индексов отсутствует, а количество элементов определяется автоматически.
В языке C# существуют ступенчатые массивы (в языке С++ такие массивы называются массивами указателей).
Ступенчатый массив объявляется в виде одномерного массива первого уровня, каждый элемент которого ссылается на соответствующий ему одномерный массив. Таким образом получается двухмерный массив. Для реализации такой конструкции требуется выделять память для каждого из одномерных массивов второго уровня. Поскольку для каждого из массивов второго уровня память выделяется отдельно, то и их размерность (длина) может быть разной. Например:
int [ ][ ] a = new int [3][ ]; // Объявление массива из 3 строк первого уровня
a[0]=new int [3]; // Для строки 0 ссылка на строку из 3 элементов
a[1]=new int [6]; // Для строки 1 ссылка на строку из 6 элементов
a[2]=new int [4]; // Для строки 2 ссылка на строку из 4 элементов
Этот же ступенчатый массив можно объявить и так:
int [ ][ ] a= {new int [3], new int [6], new int [4]};
Примечание: Ступенчатые массивы можно только читать. После создания массива его элементы изменить нельзя, поскольку может возникать ошибка на стадии выполнения программы. Ниже приведена программа, выводящая коэффициенты бинома Ньютона для первых 4 степеней. Количество строк при объявлении ступенчатого массива указывается обязательно, а длину каждой строки, если она инициализируется, можно не указывать.
static void Main(string[] args)
{
// Коэффициенты бинома Ньютона
int [ ][ ] a = new int[4][ ]; // Объявление массива из 4 строк первого уровня
a[0] = new int[ ] {1}; // Для строки 0 ссылка на строку из 1 элемента
a[1] = new int[ ] {1, 2, 1}; // Для строки 1 ссылка на строку из 3 элементов
a[2] = new int[ ] {1,3, 3,1};// Для строки 2 ссылка на строку из 4 элементов
a[3] = new int[ ] {1,4,6,4,1};// Для строки 3 ссылка на строку из 5 элементов

for (int i = 0; i < a.Length; i++) // Внешний цикл
{
foreach (int x in a[i])
{
Console.Write("{0} ", x); // Печать текущей ст роки
}
Console.WriteLine(); // Перевод на новую строку
}
Console.ReadKey();
}
Результат выполнения программы:

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