Софт-Портал

программа п2п

Рейтинг: 5.0/5.0 (1363 проголосовавших)

Описание

Программа п2п

BitTorrentPro 7.9.5 Build 41373 RePack By D!akov (БитторентПлюс, BitTorrentPlus, BitTorrent Plus, BitTorrentPro, BitTorrent Pro)

Многоязычная зарегистрированная и портативная версии в одном установщике.

(БитторентПлюс, BitTorrentPlus, BitTorrent Plus, BitTorrentPro, BitTorrent Pro)

BitTorrent Plus (BitTorrentPro) RePack By D!akov — платная версия клиентской программы пиринговой сети, нацеленная на возможность загрузки файлов больших размеров. В отличие от других подобных сетей (Kazaa, eDonkey и т.п.), где владельцами одного и того же файла могут быть сразу несколько человек, у которых этот файл находится, BitTorrent Plus (BitTorrentPro) RePack By D!akov предусматривает наличие у файла единственного владельца, который и заинтересован в его распространении. Таким заинтересованным лицом может быть, например, разработчик программного обеспечения.

?TorrentPro 3.4.5 build 41372 Stable Portable By PortableAppZ (UtorrentPlus, УторрентПлюс, МьюторрентПлюс, µTorrentPlus, µTorrent Pro, UtorrentPro, Utorrent Pro) BitTorrentPro 7.9.5 build 41373 Stable Portable By PortableAppZ (БитторентПлюс, BitTorrentPlus, BitTorrent Plus, BitTorrentPro, BitTorrent Pro) Portable µTorrent Pro 3.4.3 Build 40633 Stable

µTorrent Pro — дополненная некоторыми возможностями версия одного из самых быстрых, удобных и компактных торрент-клиентов. Клиент отличается небольшим размером и высокой скоростью работы при достаточно большой функциональности. Поддерживает работу независимо от треккера, позволяет загружать сразу несколько файлов, имеет настраиваемую полосу пропускания, быстрое восстановление прерванной загрузки и многое другое.

Azureus (Vuze) 5.6.0.0 Final

Vuze — это популярная утилита для работы в Peer 2 Peer сети BitTorrent со значительно более обширным ассортиментом функций, чем фирменный клиент сети. По большому счету, все богатство функционала сосредоточено в более продвинутом подходе к управлению закачками, чему способствует симпатичный и удобный интерфейс. Немаловажным достоинством является наличие функций трекера с возможностью поиска torrent-файлов. Стоит упомянуть поддержку плагинов, которые можно найти на официальном сайте.

Программа П2П:

  • скачать
  • скачать
  • Другие статьи, обзоры программ, новости

    Что такое P2P?

    Что такое P2P.

    *¦*И ? и ? ?*¦* Высший разум (1467549) 5 лет назад

    Что такое P2P?

    Пиринговые (peer-to-peer, P2P - равный с равным) сети - компьютерные сети, основанные на равноправии участников. В таких сетях отсутствуют центры с которых скачивается тот или иной файл, а каждый узел (пользователь) может одновременно выступать как в роли клиента (получателя информации). так и в роли сервера (поставщика информации). Такая организация позволяет сохранять работоспособность сети при любом количестве и любом сочетании доступных узлов.

    Помимо чистых сетей P2P, существуют гибридные сети, в которых существуют сервера, используемые для координации работы, поиска или предоставления информации о существующих машинах этой сети. Гибридные сети сочетают скорость централизованных сетей и надежность децентрализованных. При выходе из строя одного или нескольких серверов, сеть продолжает функционировать. Примерами таких сетей могут быть популярные EDonkey и BitTorrent.

    Работа в сети P2P

    Работу в сети P2P можно описать так: пользователи сети выкладывают какие-либо файлы в "расшаренную" папку, т. е. папку, файлы из которой доступны для скачивания другим пользователям. Какой-нибудь другой пользователь сети посылает запрос на поиск какого-либо файла. Программа ищет у клиентов сети файлы, соответствующие запросу, и показывает результат. После этого пользователь может скачать файлы у найденных источников.

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

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

    Популярные P2P сети и программы для них

    eDonkey - крупнейшая гибридная файлообменная сеть. Поиск выполняют специализированные серверы, связанные между собой. Наиболее популярной программой для скачивания в сети eDonkey является eMule. Также для этой цели можно использовать и универсальный P2P клиент Shareaza.

    Overnet, Kad - децентрализованные технологии на базе протокола Kademlia, обслуживающие поиск по сети eDonkey.

    BitTorrent - сеть используемая в основном для распространения файлов большого размера. Отличается высокой скоростью и централизованностью. В отличие от других подобных сетей, где владельцами одного и того же файла могут быть сразу несколько человек, у которых этот файл находится, BitTorrent предусматривает наличие у файла единственного владельца, который и заинтересован в его распространении. Программы для работы в сети BitTorrent: Shareaza, BitTorrent, Azureus.

    Gnutella - сеть, использующая протокол, разработанный компанией Nullsoft. Существует также Gnutella2 - расширение протокола Gnutella. Для скачивания в сетях Gnutella и Gnutella2 можно использовать все ту же программу Shareaza.

    Остальные ответы

    Программа п2п

    Реализуемые программы Объявления

    для подготовительного отдеоения 5 - 9 лет (группы "П") состоится 26 декабря для групп П3, П4, П5, П9, П6 - в 10.00; для групп П1, П2, П8, П7 - в 11.00

    подробнее Занятия для групп "П" и "0" в январе 2016 года начинаются с 9 числа

    Занятия для групп "П" и "0" в январе 2016 года начинаются с 9 числа

    подробнее Оплата за образовательные дополнительные услуги в январе 2016 года будет приниматься до 18 числа.

    Оплата за образовательные дополнительные услуги в январе 2016 года будет приниматься до 18 числа.

    Понедельник - 09.00 - 17.00 (перерыв плавающий) Вторник - первые 3 недели каждого месяца - 10.00 - 18.00 последние две недели месяца - 9.00 - 17.00 среда - 9.00 - 17.00 четверг - 9.00 - 17.00 пятница - с 9.00 - 16.00 Вторая суббота каждого месяца - с 11.00 - 13.00

    Презентация на тему: Современные виды планирования музыкального руководителя в соответствии с ФГТ Закон «Об образовании» статья 32 п

    Современные виды планирования музыкального руководителя в соответствии с ФГТ Закон «Об образовании» статья 32 п. 2 п.п. 7. - презентация Похожие презентации

    Показать еще

    Презентация на тему: " Современные виды планирования музыкального руководителя в соответствии с ФГТ Закон «Об образовании» статья 32 п. 2 п.п. 7." — Транскрипт:

    1 Современные виды планирования музыкального руководителя в соответствии с ФГТ Закон «Об образовании» статья 32 п. 2 п.п. 7.

    2 Нормативно-правовые документы 1.Закон РФ "Об образовании". статья 32 п. 2 п.п. 7. 2.Письмо Минобразования от 02.06.1998 г. 89/34-16 «О реализации права дошкольного образовательного учреждения на выбор программ и педагогических технологий». 3.Письмо Минобразования РФ от 14.03.2000 г. 65/23- 16 «О гигиенических требованиях к максимальной нагрузке на детей дошкольного возраста в организационных формах обучения». 4.Приказ Министерства образования и науки РФ от 23.11.2009 г. 655 «Об утверждении и введении в действие федеральных государственных требований к структуре основной общеобразовательной программы дошкольного образования»

    3 Виды планирования Рабочая учебная программа по художественно-эстетическому развитию (ОО «Музыка»). Календарный план. Рабочая учебная программа кружка. План культурно-досуговой деятельности. План по самообразованию. План сотрудничества с семьей.

    4 Примерная основная общеобразовательная программа ДОУ 13 «Буратино» муниципального дошкольного образовательного учреждения детский сад компенсирующего «Буратино» г. Волжск РМЭ Рабочая учебная программа по образовательной области «Музыка» Направление: «Художественно-эстетическое развитие» Рабочая учебная программа по образовательной области «Художественное творчество» Рабочие учебные программы кружков «Бим- бам-бом», «Свирелька», «Буратинка» Рабочая учебная программа кружка «Веселый карандаш» Дополнительные образовательные услуги Новые подходы к планированию

    5 Структура рабочей учебной программы 1.Пояснительная записка. 2.Требования к уровню подготовки воспитанников. 3.Интеграция областей. 4.Календарно-тематическое планирование (федеральный компонент, компонент ДОУ, национально-региональный компонент). 5.Список литературы.

    6 Содержание календарного плана Тема недели. Виды музыкальной деятельности. Репертуар. Программное содержание (федеральный компонент). Компонент ДОУ (речевой). Национально-региональный компонент. Дополнительный репертуар. Праздники и развлечения. Индивидуальная работа с детьми. Работа по заданиям специалистов. Работа с воспитателями.

    7 Структура рабочей учебной программы кружка Приказ «О предоставлении дополнительных образовательных услуг». Положение об организации бесплатных дополнительных услуг. Список детей, посещающих кружок. Пояснительная записка. Календарно-тематическое планирование кружка. Список литературы. Табель учета посещаемости детей.

    8 Содержание культурно-досуговой деятельности Праздники. Тематические праздники и развлечения. Театрализованные представления. Рассказы с музыкальными иллюстрациями, игры с пением (2-3 года). Музыкально-литературные развлечения (3-4 года). Концерты (4-7 лет). Музыкально-литературные композиции (6-7 лет).

    9 План по самообразованию Методическая тема. Тема самообразования. Дата начала работы над темой, предполагаемая дата окончания работы над темой. Актуальность. Цель, задачи. Этапы работы над темой (этапы, пути реализации, сроки). Ожидаемый результат.

    10 План сотрудничества с семьей Музыкальная палитра (лекторий, консультации, открытые мероприятия, родительские собрания, встречи с интересными людьми). Творческая мозаика (кружки, студии, смотры- конкурсы, выставки). Организованный досуг (праздники и развлечения, семейная гостиная и т.д.) Информационные страницы (стенды, буклеты, папки- раскладушки). Использование ИКТ (страничка на сайте ДОУ для родителей: презентации, советы, консультации).

    11 Документация музыкального руководителя Должностная инструкция Циклограмма рабочего времени (график работы). Расписание непосредственно-образовательной деятельности Мониторинг Образовательная программа План по самообразованию Рабочая учебная программа по художественно-эстетическому развитию (ОО «Музыка»). Календарный план Рабочая учебная программа кружка План культурно-досуговой деятельности. План сотрудничества с семьей Тетрадь взаимосвязи музыкального руководителя со специалистами ДОУ Аналитический отчет о проделанной работе за год

    ПРОГРАММЫ - P2P Клиенты

    – Программа для поиска и скачивания файлов из файлообменных сетей.

    eMule поддерживает и глобальный поиск (включая web). eMule может

    подключаться к множеству серверов, на каждом из которых одновременно

    зарегистрировано до 500 тысяч пользователей. К дополнительным

    эффективной работы в eMule есть возможность точной настройки соединений

    Flylink DC-r387-build-2110

    - Программа для работы в p2p-сетях FlylinkDC++

    FlylinkDC++ базируется на исходном коде ApexDC++ 0.4.0, и оптимизирован для работы в ADSL и LAN сетях.

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

    Добавлено много различных полезностей.

    Основные возможности:

    Увеличена скорость закачки распространенных файлов

    Автоподключение уже к добавленным хабам при первом запуске.

    IP фильтрация

    Автоматически сохраняет настройки (в случае падения всегда можно будет восстановится)

    Программа автоматически определяет запуск под эмулятором wine(linux) и динамически корректирует свои настройки для исключения "креша"

    При просмотре файл-листа и обнаружении уже имеющегося у Вас файла, будет показано где он хранится

    Улучшено быстродействие

    Имеющиеся у вас файлы подкрашиваются другим цветом

    Возможность выбора любых ограничений скорости (скорость входящего не зависит от исходящего потока)

    Используется система "Автобан" для запрета скачивания файлов пользователями, не попадающих под заданные критерии

    Новая группа поиска "CD/DVD Image"

    Упрощение процедуры поиска личного IP адреса (возможность вручную указывать скрипт определения)

    Добавлен вывод логотипа и название района

    Расширена информация о пользователях

    Можно прикинуться другим клиентом (для тех, кому запрещают использовать FlylinkDC++)

    µTorrent 1.8.4.16150 - бесплатный клиент для сетей BitTirrent (P2P),

    функционирующий под ОС Windows: 98/ME, NT/2000, XP, 2003 и Vista.

    Главные отличия uTorrent от прочих torrent-клиентов это маленький

    размер при довольно большом функциональном потенциале и простому,

    дружелюбному интерфейсу. uTorrent занимает менее 220 кБ на диске,

    использует минимум системных ресурсов и не капризен к железу, нормально

    будет работать даже на очень старых PC. На мой взгляд uTorrent является

    лучшим клиентом для torrent сетей и не вызовет затруднений при скачивание

    фильмов, игр и музыки с известных torrent tracker'ов!

    Основные возможности uTorrent:

    • Можно регулировать скорости скачивания и отдачи

    Vuze 4.2.0.4

    - Программа для скачивания файлов из файлообменной сети Bittorrent.

    Популярные файлообменные сети P2P

    Популярные файлообменные сети P2P

    Что такое P2P?

    Описание модуля

    Однорaнговые, децентрализованные или пиринговые (от англ. peer-to-peer, P2P — один на один, с глазу на глаз) сети — это компьютерные сети, основанные на равноправии участников. В таких сетях отсутствуют выделенные серверы, а каждый узел (peer) является как клиентом, так и сервером. В отличие от архитектуры клиент-сервер, такая организация позволяет сохранять работоспособность сети при любом количестве и любом сочетании доступных узлов.

    Впервые фраза «peer-to-peer» была использована в 1984 году Парбауэллом Йохнухуйтсманом (Parbawell Yohnuhuitsman) при разработке архитектуры Advanced Peer to Peer Networking фирмы IBM.

    BitTorrent

    Описание модуля

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

    В сети, о которой идет речь, используются протоколы Bittorrent и BitTorrent Azureus DHT. Последний основан на модифицированном протоколе Kademlia и используется для обеспечения работы с файлами метаданных, не привязанными к серверам, для децентрализованного поиска ресурса по ID и присваивания ресурсам комментариев и рейтинга. Вместо BitTorrent Azureus DHT некоторые клиенты поддерживают аналогичный ему по функциональности протокол BitTorrent Mainline DHT.

    Программа п2п

    Сортировка выбором

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

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

    рис. 36-1. Сортировка выбором

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

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

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

    // k - индекс минимального элемента

    for   ( i = k =0; i < граница неотсорт.части; i ++)

    if ( A [ i ] < A [ k ]) k = i ;

    2. Выбранный элемент необходимо сохранить в промежуточной переменной.

    3. Для сдвига элементов на один влево также имеется стандартный программный контекст:

    for (int i=a; i<b; i++) A[i]=A[i+1];

    4. Выбранный элемент помещается в конец неупорядоченной части.

    5. Процесс сортировки является повторяющимся. Каждый его шаг подразумевает выполнение перечисленных действий, причем справа в массиве располагается отсортированная часть, а слева – оставшаяся исходная. На каждом шаге граница частей смещается влево.

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

    //---- Сортировка выбором. Шаг 0.

    void sort ( int A [], int n )<

    Ш1. сортировать A [] выбором

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

    //---- Сортировка выбором. Шаг 1.

    void sort ( int A [], int n )<

    Ш1. повторять шаг сортировки (п.5 из списка фактов).

    Однако для записи цикла нам необходимо определить его параметр и его содержательную интерпретацию, «смысл» переменной. Пусто это будет длина отсортированной части – i . Тогда длина неотсортированной части будет вычисляться как n - i (понадобится в дальнейшем).

    //---- Сортировка выбором. Шаг 1.

    void sort(int A[], int n)<

    Ш 1. for(int i=0; i<n; i++)<

    Ш2. Шаг сортировки. i – длина отсортированной части

    Шаг сортировки включает в себя последовательность действий, перечисленных в пп.1-4 списка фактов. Поставленные «для надежности» фигурные скобки в теле цикла оказались кстати: синтаксически последовательность действий образует блок. Для связи шагов последовательности необходимо определить две переменные: индекс минимального элемента – k и извлеченное значение, хранимое в переменной v .

    //---- Сортировка выбором. Шаг 2.

    void sort(int A[], int n)<

    Ш1. for ( int i =0; i < n ; i ++)<

    Ш2. последовательность действий пп.1-4

    //---- Сортировка выбором. Шаг 2.

    void sort(int A[], int n)<

    for ( int i =0; i < n ; i ++)<                                                        // i – длина отсортированной части

    int k ;                                                                  // k – индекс минимального элемента

    int v ;                                                                  // v – сохраненное выбранное значение

    Ш3. найти max в неотсортированной части         // k ß

    Ш4. сохранить минимум в v                               // k à   v ß

    Ш5. сдвинуть «хвост» влево                              // k. n. i à

    Ш6. записать сохраненный последним               // v. n. i à

    Дальнейшая формализация фрагментов идет по линии наименьшего сопротивления. Сначала просто переведем «слова» в операции и операнды, используя «смысл» уже определенных переменных: сохранение и запись – присваивание, сохраненный – v , последний из неупорядоченных – A [ n - i -1],   минимальный – A [ k ].

    Ш4. v = A [ k ];

    Ш6. A [ n - i- 1]= v ;

    Для оставшихся фрагментов используются стандартные программные контексты, в которых в заголовках циклов поставлены необходимые границы. В каждом цикле используется своя рабочая переменная j – индекс текущего элемента.

    Ш3. for ( k = j =0; j < n - i ; j ++)            // До границы неотсортированной части

    if ( A [ j ]< A [ k ]) k = j ;

    Ш5. for ( j = k ; j < n - i -1 ; j ++)             // От максимального до конца неупорядоченной части

    Окончательный вариант.

    //---- Сортировка выбором. Окончательный вариант.

    void sort(int A[], int n)<

    for(int i=0; i<n; i++)<       // i длина отсортированной части

    int v;                        // v сохраненное выбранное значение

    for(k=j=0; j<n-i; j++) // Ш 3

    if (A[j]>A[k]) k=j;

    v=A[k];                       // Ш 4

    A[j]=A[j+1];

    A[n-i-1]=v;                  // Ш6

    Замечание: вместо сдвига можно использовать простой обмен максимального элемента в последним из оставшихся, программа от этого только выиграет:

    int c=A[k]; A[k]=A[n-i-1]; A[n-i-1]=c;         // Вместо Ш 4, Ш 5, Ш 6

    Задача на вычеркивание

    Из n - значного числа нужно вычеркнуть m цифр таким образом, чтобы оставшееся число было максимальным из возможных.

    Образная модель. На примере этой задачи можно видеть, что образной модели может предшествовать обсуждение идей, положенных в основу решения. И не всегда, казалось бы, здравая идея дает правильное (универсальное) решение.

    Например, естественно предположить, что для того, чтобы оставить максимальное число, необходимо вычеркивать минимальные цифры. Однако, такой простой пример, как 12 0 ( n =3, m =1), показывает, что эта идея работает не всегда (правильный результат 120 ). Аналогично, для   53784564 (n=8 m=4) получаем 5378 456 4 вместо 5378 4 564. Видимо, необходимо учитывать не только значение цифры, но и ее положение.

      Попробуем рассуждать по-другому, с точки зрения всех возможных вариантов решения для заданного числа. Для того, чтобы оставшееся число было максимальным, в старшей позиции должна быть максимальная из возможных цифр. Поскольку вычеркивать можно не больше, чем m цифр, то следует найти максимальную из m+1 цифр и вычеркнуть все предыдущие (54378 564 при n=8 m=4). Эта идея и является основой процесса решения задачи.

    Вопрос, что делать дальше. Ответ простой: для оставшейся части числа решается та же задача (4564 при n=4 m=1) – 45 64. Процесс повторяется, пока нечего будет вычеркивать (при 64 n=2 m=0).

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

    Сбор фактов осуществляется по принципу «исторического» программирования. Мы рассмотрим первый шаг алгоритма, а потом попытаемся внести коррективы.

    1. Исходное число представлено в массиве, содержащем его цифры A [], а также входными параметрами – исходное количество цифр – n и вычеркиваемое – m .

    2. Выбирается максимальная цифра (элемент массива) от   начала в диапазоне m -1 ;

    3. Затем «удаляются» (заменяются на -1) значения цифр от начала до найденной максимальной. При этом корректируется значение m – количество оставшихся цифр.

    4. Для оставшейся части процесс необходимо повторить. В технологии «исторического» программирования этому соответствует «переход к п.2», структурное программирование требует введения цикла повторения: повторять пп.2,3, пока m не станет равным 0 (нечего вычеркивать).

    Этим набор действий, выполняемых в программе, исчерпывается. Можно сразу же набросать структурированную схему программы, выполнив 3 шага проектирования.

    Ш 1: void F(int A[], int n, int m)<

    Ш2: п4 while ( m != 0 ) <

    Ш3. последовательность п2,п3

    Все-таки мы здесь немного забежали вперед, поскольку не определили характеристик цикла из Ш2. На первом шаге он выполняется от начала массива, но на всех других, от цифры, следующей за найденной – максимальной. Это типичный пример итерационного цикла (см. 4.3 ). После того, как мы введем две переменные, все встанет на свои места: i – индекс очередной максимальной цифры, k – начало интервала просмотра цифр на очередном шаге.

    Ш 1: void F(int A[], int n, int m)<

    int s , k =0 ;                                   // s – индекс максимальной цифры

    Ш2: п4 while ( m !=0)<                    // k – начало интервала просмотра

    Ш3. последовательность п2,п3

                            k = s +1;                           // интервал начинается за макс. цифрой

    Дальше нужно сформулировать подробнее п2,п3, а затем формально их расписать:

    Ш 1: void F(int A[], int n, int m)<

    int s , k =0 ;                                   // s – индекс максимальной цифры

    Ш2: п4 while ( m !=0)<                    // k – начало интервала просмотра

    Ш3. последовательность п2,п3

                            Ш4 :

                            п2 найти максимум в A [] в диапазоне, начиная с k длиной m +1

                                 результат – индекс максимального значения s

                            п3 A [ j ]=-1 в диапазоне от k до s -1, корректируя s

                            k = s +1;                           // интервал начинается за макс. цифрой

                            Ш 6: п 3 A[j]=-1 в диапазоне от k до s-1, корректируя s

    for (j=k;j!=s;j++,m--) A[j]=-1;

    В результате получим программу, которая будет работать на приведенных выше примерах.

    // Вычеркивание цифр: вычеркнуть из n-значного числа

    // m цифр, чтобы осталось максимальное

    void F(int A[], int n, int m)<

    int s,j,k=0;                                              // k - начало интервала просмотра

    while(m!=0)<                                            // пока есть что вычеркивать

    for (s=j=k; j<k+m+1;j++)              // Найти максимальную цифру в

    if(A[j]>A[s]) s=j;             // интервале k..k+m (включительно)

    for (j=k;j!=s;j++,m--)                    // Вычеркнуть цифры перед максимальной

    k=s+1;                                       // Пропустить максимальную

    Однако, стоит на значении 98765432, при n =8 и m =4 программы «вывалится». Если попытаться проанализировать поведение программы, либо просто проследить за ней при помощи отладчика, то мы увидим следующее: максимальная цифра находится в начале диапазона, поэтому на каждом шаге вычеркивания не будет¸ а начало будет смещаться на 1. В результате программа зациклится, выйдет за пределы массива и, скорее всего, «вывалится» по защите памяти (особенности Си, точнее, его адресной арифметики).

    Ошибка вида «крайняя ситуация»

    Обнаруженная ошибка является типичной ошибкой, которая возникает из-за неучтенной крайней ситуации. Дело в том, что образная модель просматривается нами на конкретном примере, не учитывающем многообразие вариантов выходных данных, т.е. для некоторого усредненного случая. Поэтому, общей рекомендацией является перечисление всех «крайних ситуаций», которые могут возникнуть в программе от различных сочетаний входных данных. Это можно сделать уже по написанному коду. Для каждой из них возможны два варианта.

    · написанный код адекватно реагирует на сочетание данных, соответствующих «крайней ситуации», в программе ничего менять не надо;

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

    В нашем примере в образной модели мы пропустили ситуацию, когда количество вычеркиваемых цифр станет равным количеству оставшихся (именно она возникла на последнем сочетании данных). Исправить ее достаточно просто. В основной цикл нужно добавить условие выхода по n == m , а после выхода добавит цикл вычеркивания, если m !=0. Причем вычеркивать нужно от начала текущего диапазона (т.е. k ).

    // Вычеркивание цифр: вычеркнуть из n-значного числа

    // m цифр, чтобы осталось максимальное

    void F(int A[], int n, int m)<

    int s,j,k=0;                                              // k - начало интервала просмотра

    for (s=j=k; j<k+m+1;j++)              // Найти максимальную цифру в

    if(A[j]>A[s]) s=j;             // интервале k..k+m (включительно)

    for (j=k;j!=s;j++,m--)                    // Вычеркнуть цифры перед максимальной

    k=s+1;                                       // Пропустить максимальную

                while(m--!=0) A[k++]=-1;                        // вычеркивать все

    Отладка: две программы – в компьютере и в голове

    Большинство начинающих искренне считают, что их программа должна работать уже потому, что она написана. На самом деле отладка программы является еще более трудным делом, чем ее написание. Это только так кажется, что программист в состоянии контролировать разработанную им программу. На самом деле число возможных вариантов ее поведения, обусловленных как логикой программы, так ошибками, разбросанными там и сям по ее тексту, чрезвычайно велико. Отсюда следует, что к собственной программе следует относиться скорее как к противнику в шахматной игре: фигуры расставлены, правила известны, число возможных ходов не поддается логическому анализу.

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

    В отладке программы, как и в ее написании существует своя технология, сходная со структурным программированием:

    · нельзя отлаживать все сразу. На каждом этапе проверяется отдельный фрагмент, для чего программа должна проходить только по уже протестированным частям, «внушающим доверие».

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

    · если поведение программы не поддается анализу и определить местонахождение ошибки невозможно, необходимо произвести «следственный эксперимент»: проследить выполнение программы на различных комбинациях входных данных, набрать статистику уже на ее основе строить догадки и выдвигать гипотезы, которые в свою очередь нужно проверять на новых данных;

    · модульному программированию соответствует модульное тестирование. Отдельные модули (функции, процедуры) следует сначала вызывать из головной программы ( main ) и отлаживать на тестовых данных, а уже затем использовать по назначению. Вместо ненаписанных модулей можно использовать «заглушки», дающие фиксированный результат;

    · нисходящему программированию соответствует нисходящее тестирование. Внутренние части программы аналогично могут быть заменены «заглушками», позволяющими частично отладить уже написанные внешние части программы.

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

    · мелкие ошибки типа «опечаток»,   которые обусловлены просто недостаточным вниманием программиста. К таковым относятся неправильные ограничения цикла (плюс-минус один шаг), использование не тех индексов или указателей, использование одной переменной одновременно в двух «смыслах» и т.п.;

    · локальные ошибки логики программы, состоящие в пропуске одного из возможных вариантов ее работы или сочетания входных данных, ошибка вида «крайняя ситуация»;

    · грубые просчеты, связанные с неправильным образным представлением того, что и как должна делать программа. Это «идейные» ошибки, когда предложенная идея либо просто не работает, либо дает правильный результат не во всех случаях.

    «Любая программа в любой момент содержит как минимум одну ошибку». Программистский фольклор.

    Бесплатный P2P клиент StrongDC

    P2P клиент Содержание:

    P2P клиент — программа, работающая с сетями P2P.

    P2P (от англ. peer-to-peer. P2P — один на один, с глазу на глаз) — пиринговые сети — компьютерные сети. основанные на равноправии участников. В них отсутствуют выделенные серверы. а каждый узел (peer) является как клиентом, так и сервером. Такая организация взаимодействия позволяет сети работать при любом количестве доступных узлов.

    Этот протокол позволяет пользователям обмениваться файлами: пользователь сети создаёт на своём компьютере «расшаренную» (англ. share. делиться) папку, и копирует в неё файлы, которые хотел бы раздавать. Если другой пользователь сети посылает запрос на поиск какого-либо файла, то программа ищет у всех клиентов в сети подходящие файлы и выдаёт список найденного и предлагает скачать эти файлы.

    Как правило, один файл можно скачать сразу у нескольких раздающих. Это повышает скорость и надёжность скачивания. Для определения идентичности файлов, производится их сравнение по хешам (контрольным суммам в форматах MD4, TTH, SHA-1). Когда часть файла уже получена, скачивающий может начать раздавать его другим пользователям, что в итоге ускоряет работу всей сети.

    На этой странице можно скачать программу StrongDC++, являющуюся бесплатным клиентом для сетей P2P.