
5. Способы записи алгоритмов
Для записи алгоритмов используют самые разнообразные средства. Выбор средства определяется типом исполняемого алгоритма. Выделяют следующие основные способы записи алгоритмов:
- вербальный, когда алгоритм описывается на человеческом языке;
- символьный, когда алгоритм описывается с помощью набора символов;
- графический, когда алгоритм описывается с помощью набора графических изображений.
Общепринятыми способами записи являются графическая запись с помощью блок-схем и символьная запись с помощью какого-либо алгоритмического языка.
Описание алгоритма с помощью блок схем осуществляется рисованием последовательности геометрических фигур, каждая из которых подразумевает выполнение определенного действия алгоритма. Порядок выполнения действий указывается стрелками. Написание алгоритмов с помощью блок-схем регламентируется ГОСТом. Внешний вид основных блоков, применяемых при написании блок схем, приведен на рисунке:
В зависимости от последовательности выполнения действий в алгоритме выделяют алгоритмы линейной, разветвленной и циклической структуры.
В алгоритмах линейной структуры действия выполняются последовательно одно за другим:
В алгоритмах разветвленной структуры в зависимости от выполнения или невыполнения какого-либо условия производятся различные последовательности действий. Каждая такая последовательность действий называется ветвью алгоритма.
В алгоритмах циклической структуры в зависимости от выполнения или невыполнения какого-либо условия выполняется повторяющаяся последовательность действий, называющаяся телом цикла. Вложенным называется цикл, находящийся внутри тела другого цикла. Различают циклы с предусловием и послеусловием:
Итерационным называется цикл, число повторений которого не задается, а определяется в ходе выполнения цикла. В этом случае одно повторение цикла называется итерацией.
6. Программа на языке высокого уровня
Пример «Hello, World!»
Ниже представлен код классической программы «Hello world» на C# для консольного приложения:
using System;
namespace Example
{
class Program
{
static void Main()
{
Console.WriteLine("Hello World!"); // Вывод заданного текста в консоль
Console.ReadKey(); // Ожидание нажатия клавиши пользователем
}
}
}
и код этой же программы для приложения Windows Forms:
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) // Элементы label и button добавлены предварительно
{
label1.Text = "Hello, World!";
}
}
}
7. Стандартные типы данных
В C# поддерживается стандартный набор типов данных. Для каждого типа данных, поддерживаемого C# , существует соответствующий тип .NET Common Language Runtime. Например, тип int в C# соответствует типу System.Int32 времени выполнения. В большинстве случаев вместо типа int можно указывать System.Int32, однако подобные замены не рекомендуются, поскольку это усложняет чтение программы.
Основные типы данных перечислены в следующей таблице. Типы данных времени выполнения определяются в пространстве имен System среды .NET Common Language Runtime.
Различия между базовыми (встроенными) и пользовательскими типами в C# в основном искусственны, поскольку пользовательские типы работают практически так же, как встроенные. В сущности, единственное отличие встроенных типов данных от пользовательских заключается в том, что во встроенные типы можно записывать литералы.
Типы данных делятся на ссылочные (reference types) и структурные (value types). Память для структурных типов выделяется либо из стека, либо в соответствии со специальным механизмом, который описан ниже. Объекты ссылочных типов размещаются в куче.
И ссылочные, и структурные типы являются производными от корневого базового класса object. В тех ситуациях, когда структурный тип должен действовать как object, в куче создается временный объект, имитирующий поведение ссылочного объекта. В созданный объект копируются данные из структурного объекта. При этом временный объект снабжается специальной пометкой, чтобы система знала, к какому типу он относится. Этот процесс называется упаковкой (boxing), а обратный процесс называется распаковкой (unboxing). Механизм упаковки обеспечивает возможность интерпретировать любой тип как object, что позволяет использовать конструкции следующего вида:
Pawn код:
using System;
class Hello
{
public static void Main(string[] args)
{
Console.WriteLine("Value is: {0}", 3);
}
}
В этом примере целое число 3 упаковывается, и для упакованного значения вызывается функция Int32.ToString() .
Массивы C# могут быть многомерными или ступенчатыми (jagged). Нетривиальные структуры данных (например, стеки и хэш-таблицы) относятся к пространству имен System.Collections.