Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2





НазваниеПрограмма по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2
страница20/20
Дата публикации07.05.2014
Размер1.28 Mb.
ТипУчебное пособие
100-bal.ru > Информатика > Учебное пособие
1   ...   12   13   14   15   16   17   18   19   20

Приложения



Пример расчёта чисел Фибоначчи пример программы на C#.
///

/// Represents Fibonacci number calculation routines.

///


public class Fibonacci

{

private int stepsNumber;

private int result;

private ManualResetEvent calculationComplete;

///

/// Gets this Fibonacci calculation argument.

///


public int StepsNumber { get { return stepsNumber; } }

///

/// Gets this Fibonacci calculation result.

///


public int Result { get { return result; } }

///

/// Creates new Fibonacci number calculation.

///


///
Fibonacci calculation

/// argument.


///
Event,

/// signaling calculation complete.


public Fibonacci(int stepsNumber,

ManualResetEvent calculationComplete)

{

this.stepsNumber = stepsNumber;

this.calculationComplete = calculationComplete;

}

///

/// Starts asynchronous calculation in thread pool.

///


///
Paramenter

/// passing from thread pool.


public void ThreadPoolCallback(object threadContext)

{

int threadIndex = (int)threadContext;

Debug.Print("Thread {0} started...", threadIndex);

result = Calculate(stepsNumber);

Debug.Print("Thread {0} result calculated...",

threadIndex);

calculationComplete.Set();

}

///

/// Synchronously calculates Fibonacci number

/// for specified argument.

///


///
Fibonacci

/// number argument.


/// Fibonacci number result.

public static int Calculate(int stepsNumber)

{

if (stepsNumber <= 1)

{

return stepsNumber;

}

return Calculate(stepsNumber - 1) +

Calculate(stepsNumber - 2);

}

}

///

/// Contains program entry point routines.

///


public class Program

{

private const int numberOfCalculations = 64;

private static ManualResetEvent[] doneEvents =

new ManualResetEvent[numberOfCalculations];

private static int[] arguments =

CreateArguments();

private static int[] results =

new int[numberOfCalculations];

private static Fibonacci[] calculations =

new Fibonacci[numberOfCalculations];

///

/// Program entry point.

///


public static void Main()

{

TimeSpan elapsedTime;

Console.WriteLine("Launching {0} synchronous tasks...",

numberOfCalculations);

elapsedTime = CalculateSynchronous();

Console.WriteLine("All synchronous calculations are complete.");

PrintSynchronousResults(elapsedTime);

Console.WriteLine("Launching {0} asynchronous tasks...",

numberOfCalculations);

elapsedTime = CalculateAsynchronous();

Console.WriteLine("All asynchronous calculations are complete.");

PrintAsynchronousResults(elapsedTime);

}

private static int[] CreateArguments()

{

Random random = new Random();

int[] arguments = new int[numberOfCalculations];

for (int i = 0; i < numberOfCalculations; i++)

{

arguments[i] = random.Next(20, 40);

}

return arguments;

}

private static TimeSpan CalculateSynchronous()

{

DateTime dateStart = DateTime.Now;

for (int i = 0; i < numberOfCalculations; i++)

{

results[i] = Fibonacci.Calculate(arguments[i]);

}

DateTime dateFinish = DateTime.Now;

return dateFinish - dateStart;

}

private static TimeSpan CalculateAsynchronous()

{

DateTime dateStart = DateTime.Now;

for (int i = 0; i < numberOfCalculations; i++)

{

doneEvents[i] = new ManualResetEvent(false);

Fibonacci f = new Fibonacci(arguments[i], doneEvents[i]);

calculations[i] = f;

ThreadPool.QueueUserWorkItem(f.ThreadPoolCallback, i);

}

WaitHandle.WaitAll(doneEvents);

DateTime dateFinish = DateTime.Now;

return dateFinish - dateStart;

}

private static void PrintAsynchronousResults(

TimeSpan elapsedTime)

{

foreach (Fibonacci f in calculations)

{

PrintResult(f.StepsNumber, f.Result);

}

PrintElapsedTime(elapsedTime);

}

private static void PrintSynchronousResults(

TimeSpan elapsedTime)

{

for (int i = 0; i < numberOfCalculations; i++)

{

PrintResult(arguments[i], results[i]);

}

PrintElapsedTime(elapsedTime);

}

private static void PrintResult(

int argument, int result)

{

Console.WriteLine("Fibonacci({0}) = {1}",

argument, result);

}

private static void PrintElapsedTime(

TimeSpan elapsedTime)

{

Console.WriteLine("Elapsed time: {0}",

elapsedTime);

}

}

Пример перемножения матриц на Java.

package ru.supercorporation;

import java.util.Arrays;

import java.util.List;

import java.util.Vector;

import java.util.concurrent.*;

import java.util.concurrent.atomic.AtomicInteger;

/**

* Math matrix class.

*/

public class Matrix {

protected final int[][] data;

/**

* Get matrix table. [row][column]

*

* @return matrix table

*/

public int[][] getData() {

return data;

}

/**

* @param rawData matrix table

*/

public Matrix(int[][] rawData) {

data = rawData;

}

/**

* Matrix factory.

*

* @param rows rows

* @param columns cols

* @param lessThen fills with random numbers 0<=x<lessThen

* @return matrix

*/

public static Matrix createRandomMatrix(int rows, int columns, int lessThen) {

int[][] raw = new int[rows][columns];

for (int i = 0; i < rows; i++) {

for (int j = 0; j < columns; j++) {

raw[i][j] = (int) (Math.random() * lessThen);

}

}

return new Matrix(raw);

}

@Override

public boolean equals(Object obj) {

if (this == obj) {

return true;

} else if (obj instanceof Matrix) {

int[][] data2 = ((Matrix) obj).getData();

for (int i = 0; i < data.length; i++) {

for (int j = 0; j < data2[i].length; j++) {

if (data[i][j] != data2[i][j]) {

return false;

}

}

}

return true;

} else {

return false;

}

}

/**

* @return rows

*/

public int getHeight() {

return data.length;

}

/**

* @return columns

*/

public int getWidth() {

return data[0].length;

}

@Override

public String toString() {

return Arrays.deepToString(data);

}

/**

* @param a first matrix raw data

* @param b second matrix raw data

* @param result resulting matrix

* @param row row number to multiply

*/

private void multiplySingleRow(

int[][] a, int[][] b, int[][] result,

int row) {

int cols = getWidth();

int rows = getHeight();

for (int j = 0; j < cols; ++j) {

result[row][j] += a[row][j] *

b[j][row];

}

}

/**

* Multiply by another matrix in single thread.

*

* @param matrix second matrix

* @return result of multiplication

*/

public Matrix multiply(Matrix matrix) {

int cols = getWidth();

int rows = getHeight();

int[][] result = new int[rows][cols];

for (int i = 0; i < rows; ++i) {

multiplySingleRow(data, matrix.data,

result, i);

}

return new Matrix(result);

}

/**

* Multiply by another matrix with help of {@link java.util.concurrent.ExecutorService}.

*

* @param matrix second matrix

* @param threadsNumber number of simultaneous threads

* @return result of multiplication

*/

public Matrix multiplyExecutorService(final Matrix matrix, int threadsNumber)

throws InterruptedException, ExecutionException {

final int[][] result = new int[getHeight()][getWidth()];

ExecutorService es = Executors.newFixedThreadPool(threadsNumber);

Vector> tasks = new Vector>(data.length);

// task per row

for (int i = 0; i < getHeight(); ++i) {

final int row = i;

tasks.add(new Callable() {

public Object call() throws Exception {

multiplySingleRow(data, matrix.data, result, row);

return null;

}

});

}

List> futures = es.invokeAll(tasks);

// wait for complete

for (Future future : futures) {

future.get();

}

es.shutdown();

return new Matrix(result);

}

/**

* Multiply by another matrix. Multithreaded.

*

* @param matrix second matrix

* @param threadsNumber number of simultaneous threads

* @return result of multiplication

*/

public Matrix multiplyLockFreeThreads(final Matrix matrix, int threadsNumber)

throws InterruptedException {

final int[][] result = new int[getHeight()][getWidth()];

final int rows = getHeight();

Thread[] threads = new Thread[threadsNumber];

for (int i = 0; i < threadsNumber; i++) {

final int start = i * (rows / threadsNumber);

final int before = i != threadsNumber - 1 ? (i + 1) *

(rows / threadsNumber) : rows;

threads[i] = new Thread(new Runnable() {

public void run() {

for (int i = start; i < before; ++i) {

multiplySingleRow(data,

matrix.data, result, i);

}

}

});

threads[i].start();

}

// wait for complete

for (Thread thread : threads) {

thread.join();

}

return new Matrix(result);

}

}

package ru.supercorporation;

import java.util.concurrent.ExecutionException;

public class MultiplyMain {

public static void main(String[] args) {

System.out.println("Starting Matrix multiply");

Matrix a = Matrix.createRandomMatrix(8000, 1000, 10);

Matrix b = Matrix.createRandomMatrix(1000, 8000, 10);

benchmarkMultiplication(a, b, 4);

System.out.println("Completed");

}

public static void benchmarkMultiplication(Matrix a, Matrix b, int threadsNumber) {

long time = System.currentTimeMillis();

Matrix result1 = a.multiply(b);

System.out.println("Computed in single thread. Done in "

+ (System.currentTimeMillis() - time));

time = System.currentTimeMillis();

try {

Matrix result2 = a.multiplyExecutorService(b, threadsNumber);

System.out.println("Computed using ExecutorService with " +

threadsNumber + " threads. Done in "

+ (System.currentTimeMillis() - time));

assert result1.equals(result2) : "answers not equals";

} catch (InterruptedException ie) {

assert false : ie;

} catch (ExecutionException e) {

assert false : e;

}

time = System.currentTimeMillis();

try {

Matrix result3 = a.multiplySimpleThreads(

b, threadsNumber);

System.out.println(

"Computed using simple Threads with " +

threadsNumber + " threads. Done in " +

(System.currentTimeMillis() - time));

assert result1.equals(result3) : "answers not equals";

} catch (InterruptedException ie) {

assert false : ie;

}

time = System.currentTimeMillis();

try {

Matrix result4 = a.multiplySimpleThreads(

b, threadsNumber);

System.out.println(

"Computed using lock free Threads with " +

threadsNumber + " threads. Done in " +

(System.currentTimeMillis() - time));

assert result1.equals(result4) : "answers not equals";

} catch (InterruptedException ie) {

assert false : ie;

}

}

}

Пример создания процесса в Java
ProcessBuilder pb =

new ProcessBuilder(

"myCommand",

"myArg1",

"myArg2");

Process p = pb.start();






1   ...   12   13   14   15   16   17   18   19   20

Похожие:

Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...
Проектно-образовательная деятельность по формированию у детей навыков безопасного поведения на улицах и дорогах города
Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...
Цель: Создание условий для формирования у школьников устойчивых навыков безопасного поведения на улицах и дорогах
Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...
«Организация воспитательно- образовательного процесса по формированию и развитию у дошкольников умений и навыков безопасного поведения...
Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...
Цель: формировать у учащихся устойчивые навыки безопасного поведения на улицах и дорогах, способствующие сокращению количества дорожно-...
Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...
Конечно, главная роль в привитии навыков безопасного поведения на проезжей части отводится родителям. Но я считаю, что процесс воспитания...
Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...
Поэтому очень важно воспитывать у детей чувство дисциплинированности и организованности, чтобы соблюдение правил безопасного поведения...
Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...
Всероссийский конкур сочинений «Пусть помнит мир спасённый» (проводит газета «Добрая дорога детства»)
Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...
Поэтому очень важно воспиты­вать у детей чувство дисциплинированности, добиваться, чтобы соблюдение правил безопасного поведения...
Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...

Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...

Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...

Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...

Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...

Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...

Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...

Программа по формированию навыков безопасного поведения на дорогах и улицах «Добрая дорога детства» 2 iconПрограмма по формированию навыков безопасного поведения на дорогах...



Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск