Запись урока: Часть 1 [vk]http://vk.com/video_ext.php?oid=-66674957&id=167891624&hash=f0ca69e514ff475e&hd=3[/vk]
Часть 2 [vk]http://vk.com/video_ext.php?oid=-66674957&id=167894426&hash=6b0bfcf795fbaf49&hd=3[/vk]
Темы занятия:Повторное рассмотрение ключевых моментов по изученному материалу.
Домашнее задание:Ко все методам написать тесты или хотя бы вызвать каждый из методов с различными параметрами и проверить результат "на глазок". Но лучше написать тесты - ведь тесты дают гарантии и вселяют уверенность))
1. Написать метод, вычисляющий значение простого числа по его номеру. Простое число - то которое делится лишь на 1 и на само себя.
2. Написать метод проверки числа на простоту. Использовать этот метод в решении предыдущего задания.
3. Написать метод, возвращающий все простые числа. Я не ошибся. Все. Использовать конструкцию yield return.
4. Написать метод MergeSum, принимающий на вход 2 последовательности интов и возвращающий одну последовательность с поэлементной суммой. Использовать yield return.
Полезные ссылки:1. Скачать
dotCover (используется при тестировании).
2.
Информация о yield return.Пример решения домашнего задания:Код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace App0526
{
public class Program
{
// 1. Написать метод, вычисляющий значение простого числа по его номеру.
// Простое число - то которое делится лишь на 1 и на само себя.
/// <summary>
/// Поиск простого числа по его порядковому номеру
/// </summary>
/// <param name="index">Порядковый номер числа</param>
/// <returns>Простое число</returns>
public static int SimpleByIndex(int index)
{
for (int candidate = 2; true; candidate++)
{
if (!IsValueSimple(candidate))
continue;
if (index == 0)
return candidate;
index--;
}
}
// 2. Написать метод проверки числа на простоту.
// Использовать этот метод в решении предыдущего задания.
/// <summary>
/// Проверка числа на принадлежность к множеству простых чисел
/// </summary>
/// <param name="value">Проверяемое число</param>
/// <returns>Является ли простым</returns>
public static bool IsValueSimple(int value)
{
if (value < 2) return false;
for (int i = 2; i < value; i++)
if (value%i == 0)
return false;
return true;
}
// 3. Написать метод, возвращающий все простые числа.
// Я не ошибся. Все. Использовать конструкцию yield return.
/// <summary>
/// Получение всех простых чисел
/// </summary>
/// <returns>Все постые числа, начиная с 2</returns>
public static IEnumerable<int> AllSimpleNumbers()
{
for (int candidate = 2; true; candidate++)
{
if (IsValueSimple(candidate))
yield return candidate;
}
}
// 4. Написать метод MergeSum, принимающий на вход 2
// последовательности интов и возвращающий одну последовательность
// с поэлементной суммой. Использовать yield return.
/// <summary>
/// Слияние 2-х последовательностей поэлементным суммированием
/// </summary>
/// <param name="a">Первая последовательность</param>
/// <param name="b">Вторая последовательность</param>
/// <returns>Последовательность с поэлементной суммой</returns>
public static IEnumerable<int> MergeSum(IEnumerable<int> a, IEnumerable<int> b)
{
var en1 = a.GetEnumerator();
var en2 = b.GetEnumerator();
while (true)
{
bool b1 = en1.MoveNext();
bool b2 = en2.MoveNext();
if (!b1 && !b2)
break;
int v1 = b1 ? en1.Current : 0;
int v2 = b2 ? en2.Current : 0;
yield return v1 + v2;
}
}
}
}
ВложенияИсходные коды