Skip to content

Category: programmingSyndicate content

C, PHP, VB, .NET

 Примерна задача 2

   от C, PHP, VB, .NET


1. Да се създаде клас „точка“ с член променливи „координати по осите x и y“. Създайте необходимите конструктори и get методи. Защитете координатите така, че да не могат да бъдат променяни след като бъдат инициализирани. Създайте метод отпечатващ координатите на точката. Създайте статичен метод, който сравнява координатите на две точки и показва дали те съвпадат:

 

C, PHP, VB, .NET

 Примерна задача 1

   от C, PHP, VB, .NET


1. Дефинирайте клас, описващ дати от календара.

а) Дефинирайте конструктор по подразбиране и такъв с параметри за задаване на дата.

б) Дефинирайте за него подходящите get и set методи.

в) Направете необходимите проверки за валидност на данните (ако не са валидни да се генерира изключение):

calException.java:

package example;
// Клас дефиниращ изключение "невалидна дата"
public class calException extends Exception{
  public calException(){
    super("Invalid date");
  }
  public calException(String msg){
    super(msg);
  }
  public String toString(){
    return "Invalid date";
  }
}

calendar.java:

 

C, PHP, VB, .NET

1. Масиви: Когато се заговори за понятието „списък“ всеки начинаещ програмист моментално се досеща за най-често използваната в учебните примери структура – масив. Масивите представляват наредени елементи от един и същи тип данни (може да бъде както примитивен тип, така и данни от определен клас). Те са с константна дължина (т.е. точно определен брой елементи). Това е колкото полезно (няма опасност от „утечки на памет“), толкова и неудобно (трябва да се пазим от проблема с „препълване“, често се заделя повече памет отколкото е необходима, и др.). Можем да обобщим проблемите свързани с използването на масив в три точки:

 

C, PHP, VB, .NET

Вече се запознахме подробно как се хвърлят изключения в Java. Веднага остава въпроса „можем ли ние сами да си дефинираме изключения“. Отговорът е положителен.

Всичко, което трябва да направите при дефиниране на изключение е да създадете клас, който наследява клас Exception:

 

C, PHP, VB, .NET

 Wait, notify и notifyAll

   от C, PHP, VB, .NET


Вече се запознахме с методът sleep() за нишки в Java, както и възможността да прекъснем „спането“ на нишката чрез метод interrupt().  Използването на метод sleep() всъщност прехвърля текущата нишка в „Not Runnable“ статус за определен период от време и по този начин дава процесорно време на другите нишки. Важно е да се спомене, че ако методът, който е извикал sleep(), е синхронизиран (synchronized), то никой не може да достъпи обектите в него по време на неговия „sleep“ период! Извикването на „interrupt()“ за тази нишка ще прекъсне sleep() преждевременно.

 

C, PHP, VB, .NET

 Синхронизация на нишки

   от C, PHP, VB, .NET


Когато имаме многонишково приложение, то ние много често работим и със споделени ресурси. Нека демонстрираме с един пример – имаме масив с наредени числа. Имаме две нишки – такава, която променя числата с произволни и такава, която сортира числата по големина:

 

C, PHP, VB, .NET

 Нишки

   от C, PHP, VB, .NET


Понятието „нишки“ можете да разгледате като „разклонение на една програма на подпрограми, които работят едновременно“. Представете си например един HTTP сървър. Работата, която извършва е да прехвърля данните поискани от даден клиент. Когато обаче има повече от един клиент едновременно, то ако нямаме „многонишковост“ те трябва да се изчакват един друг на „опашка“. Ако имаме един клиент, който изтегля огромно количество информация, то всички останали би трябвало да го изчакват, а това определено не е уместно. Пускането на нишка за всеки един клиент означава, че ние ще обслужваме всички с равно количество процесорно време, независимо кой се е свързал с HTTP сървъра първи, кой втори и кой последен.

 

Камен Томов

 Programming Competition

   от Камен Томов


Моето решение на задачата от турнира по програмиране. Превод на задачата на английски.

This code (Common Lisp) is my solution of the BASSCOM Programing Competition 2007 (Bulgarian). The program is started by evaluating a function called "process". The submission deadline was 10th of January so this publication would not affect the outcome. However, I can use the opportunity to receive comments on it.

Here is what the programming problem is:

 

Камен Томов

 Is Java a technological advance?

   от Камен Томов


The short answer is - no.

The most significant characteristic of Java is that it is an imperative language with the added feature to support objects. This is enough to turn me off. Unfortunately, the current market requires programmers to have experience with either Java or the other members of the same family of languages (C/C++, C#, VB). So the chances are that you are not lucky as well. If so - read on.

Nevertheless, Java gained market share in a highly competitive environment. How did that happen?! It prevailed over technologically superior languages by being in the right place at the right time.