1 семинар


Запись урока:

Часть 1

[vk]http://vk.com/video_ext.php?oid=-66674957&id=167885987&hash=d536573735784063&hd=3[/vk]

Часть 2

[vk]http://vk.com/video_ext.php?oid=-66674957&id=167885988&hash=edabb2295af7cb8b&hd=3[/vk]

Рекомендованный учебник: Герберт Шилдт - C# 4.0. Полное руководство - также учебник прикреплен к теме.

Темы занятия:

  1. Среда программирования Visual Studio 2010, основные возможности .

  2. Объявление и инициализация переменных, типы данных (см. стр. 67 Шилдта).

  3. Операторы (см. стр. 97 Шилдта):

  • Арифметические операции(+, -, /, *, %);
  • Инкремент/Декремент (i, i, --i, i--);
  • Операции сравнения (==, !=, <, >, <=, >=);
  • Логические операции(&&, ||);
  1. Условный оператор и оператор ветвления:
  • Оператор if (см. стр. 121 Шилдта);
  • Оператор switch (см. стр. 125);
  1. Операторы циклов:
  • С предусловием - while (см. стр. 137);
  • С постусловием - do-while (см. стр. 138);
  • Оператор цикла for (см. стр. 129);

Код с занятия:см. Вложения

Домашнее задание:

  1. Прочитать об использовании модификаторов параметра ref и out (см. стр. 223 Шилдта; в Интернет-справочнике C# - ref, out)
  2. Скачать программу TortoiseHg.
  3. Дописать метод IsLeap для определения високосности года (см. статью на Википедии - "Год является високосным в двух случаях: либо он кратен 4, но при этом не кратен 100, либо кратен 400." Другой пример алгоритма расчета).
  4. Дописать в функцию DayInMonths параметр "год", учесть его для февраля на основании разработанного метода.

Полезные ссылки:

  1. Соглашение по оформлению кода C#.
  2. Форум для получения быстрых ответов.
  3. Культуры.

Пример решения домашней задачи.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Homework
{
    class Program
    {
        enum Month
        {
            Jan, Feb, Mar,
            Apr, May, Jun,
            Jul, Aug, Sep,
            Oct, Nov, Dec
        }


        static bool IsLeap(int year)
        {
            // Либо ((кратен 4) но (не кратен 100)) либо (кратен 400)
            //if (((year%4 == 0) && (year%100 != 0)) || (year%400 == 0))
            //    return true;
            //else
            //    return false;

            return ((year%4 == 0) && (year%100 != 0)) || (year%400 == 0);
        }


        static int DaysInMonth(Month month, int year) //параметр "год" добавлен
        {
            switch (month)
            {
                case Month.Jan:
                case Month.Mar:
                case Month.May:
                case Month.Jul:
                case Month.Aug:
                case Month.Oct:
                case Month.Dec:
                    return 31;

                case Month.Apr:
                case Month.Jun:
                case Month.Sep:
                case Month.Nov:
                    return 30;

                case Month.Feb:
                    //if (IsLeap(year))
                    //    return 29;
                    //else
                    //    return 28;
                    return IsLeap(year) ? 29 : 28; 
                    // Используется тернарный оператор: 
                    // http://ru.wikipedia.org/wiki/Тернарная_условная_операция
            }

            return 0;
        }

        static void Main(string[] args)
        {
            int year;
            Month feb = Month.Feb; // переменная типа Month, в которой хранится Month.Feb, 
                                   // т.е. указан месяц февраль из перечисления enum

            bool YearIsValid;      // переменная для проверки корректности введенного года
            do
            {
                Console.Write("Введите год: ");
                string strYear = Console.ReadLine();           // считываем год
                YearIsValid = int.TryParse(strYear, out year); // преобразуем в число и проверяем правильность преобразования
                //из строкового формата в числовой в переменную year
            } while (!YearIsValid);

            Console.WriteLine("В феврале этого года {0} дней.", DaysInMonth(feb, year));
        }
    }
}

Вложения: Исходные коды


Теги:


Спасибо:


< 1 2 
UsilaDobry

Фотография
Дата: 01.04.2013
Ответить


Хотел поиграть с модификатором ref, взял пример из книги Г. Шилдта:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoRef
{
    class ValueSwap
    { 
        // Этот метод меняет местами свои аргументы, 
        public void Swap(ref int a, ref int b)
        { 
            int t; 
            t = a; 
            a = b; 
            b = t; 
        } 
    } 

    class ValueSwapDemo 
    {
        static void Main(string[] args)
        {
            
            ValueSwap ob = new ValueSwap();
            int x = 10;
            int у = 20; 
            Console.WriteLine("х и у до вызова: " + х + " " + у); 
            ob.Swap(ref x, ref у); 
            Console.WriteLine("х и у после вызова: " + х + " " + у); 
        } 

     }
}

В операторе вывода указывает, что имя х отсутствует в текущем контексте. Как так? Переменная х объявлена, инициализирована.

Спасибо:

IvanB

Фотография
Дата: 01.04.2013
Ответить


При объявлении латинский символ, а при использовании русский.

Спасибо: UsilaDobry
< 1 2 

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy