diff options
-rw-r--r-- | es-es/perl-es.html.markdown | 157 | ||||
-rw-r--r-- | haskell.html.markdown | 2 | ||||
-rw-r--r-- | php.html.markdown | 2 | ||||
-rw-r--r-- | ru-ru/go-ru.html.markdown | 30 | ||||
-rw-r--r-- | tr-tr/brainfuck-tr.html.markdown | 86 | ||||
-rw-r--r-- | tr-tr/objective-c-tr.html.markdown | 320 | ||||
-rw-r--r-- | tr-tr/php-tr.html.markdown | 7 |
7 files changed, 587 insertions, 17 deletions
diff --git a/es-es/perl-es.html.markdown b/es-es/perl-es.html.markdown new file mode 100644 index 00000000..b1327997 --- /dev/null +++ b/es-es/perl-es.html.markdown @@ -0,0 +1,157 @@ +--- +name: perl +category: language +language: perl +filename: learnperl-es.pl +contributors: + - ["Francisco Gomez", "http://github.com/frncscgmz"] +--- + +Perl 5 es un lenguaje de programación altamente capaz, rico en características con mas de 25 años de desarrollo. + +Perl 5 corre en mas de 100 plataformas desde portales hasta mainframes y es adecuado para realizar prototipos rápidos hasta desarrollar proyectos a gran escala. + +```perl +# Comentarios de una sola linea con un carácter hash. + +#### Tipos de variables en Perl + +# Las variables comienzan con el símbolo $. +# Un nombre de variable valido empieza con una letra o un guión bajo, +# seguido por cualquier numero de letras, números o guiones bajos. + +### Perl tiene tres tipos principales de variables: escalares, arreglos y hashes. + +## Escalares +# Un escalar representa un solo valor: +my $animal = "camello"; +my $respuesta = 42; + +# Los valores escalares pueden ser cadenas de caracteres, números enteros o +# de punto flotante, Perl automáticamente los convertirá como sea requerido. + +## Arreglos +# Un arreglo representa una lista de valores: +my @animales = {"camello","llama","buho"}; +my @numeros = {23,42,69}; +my @mixto = {"camello",42,1.23}; + + + +## Hashes +# Un hash representa un conjunto de pares llave/valor: + +my %color_fruta = {"manzana","rojo","banana","amarillo"}; + +# Puedes usar un espacio en blanco y el operador "=>" para asignarlos mas +# fácilmente. + +my %color_fruta = ( + manzana => "rojo", + banana => "amarillo", + ); +# Los escalares, arreglos y hashes están mas documentados en perldata. (perldoc perldata). + +# Los tipos de datos mas complejos pueden ser construidos utilizando +# referencias, las cuales te permiten construir listas y hashes dentro +# de listas y hashes. + +#### Estructuras condicionales y de ciclos + +# Perl tiene la mayoría de las estructuras condicionales y de ciclos mas comunes. + +if ( $var ) { + ... +} elsif ( $var eq 'bar' ) { + ... +} else { + ... +} + +unless ( condicion ) { + ... + } +# Esto es proporcionado como una version mas fácil de leer que "if (!condición)" + +# La post condición al modo Perl +print "Yow!" if $zippy; +print "No tenemos bananas" unless $bananas; + +# while + while ( condicion ) { + ... + } + + +# for y foreach +for ($i = 0; $i <= $max; $i++) { + ... + } + +foreach (@array) { + print "Este elemento es $_\n"; + } + + +#### Expresiones regulares + +# El soporte de expresiones regulares en Perl es muy amplio y profundo, y es +# sujeto a una extensa documentación en perlrequick, perlretut, entre otros. +# Sin embargo, resumiendo: + +# Pareo simple +if (/foo/) { ... } # verdadero si $_ contiene "foo" +if ($a =~ /foo/) { ... } # verdadero si $a contiene "foo" + +# Substitución simple +$a =~ s/foo/bar/; # remplaza foo con bar en $a +$a =~ s/foo/bar/g; # remplaza TODAS LAS INSTANCIAS de foo con bar en $a + + +#### Archivos e I/O + +# Puedes abrir un archivo para obtener datos o escribirlos utilizando la +# función "open()". + +open(my $entrada, "<" "entrada.txt") or die "No es posible abrir entrada.txt: $!"; +open(my $salida, ">", "salida.txt") or die "No es posible abrir salida.txt: $!"; +open(my $log, ">>", "mi.log") or die "No es posible abrir mi.log: $!"; + +# Es posible leer desde un gestor de archivo abierto utilizando el operador "<>" +# operador. En contexto escalar leer una sola linea desde el gestor de +# archivo, y en contexto de lista leer el archivo completo en donde, asigna +# cada linea a un elemento de la lista. + +my $linea = <$entrada>; +my @lineas = <$entrada>; + +#### Escribiendo subrutinas + +# Escribir subrutinas es fácil: + +sub logger { + my $mensajelog = shift; + open my $archivolog, ">>", "mi.log" or die "No es posible abrir mi.log: $!"; + print $archivolog $mensajelog; +} + +# Ahora podemos utilizar la subrutina al igual que cualquier otra función +# incorporada: + +logger("Tenemos una subrutina logger!"); + + +``` + +#### Utilizando módulos Perl + +Los módulos en Perl proveen una gama de funciones que te pueden ayudar a evitar reinventar la rueda, estas pueden ser descargadas desde CPAN( http://www.cpan.org/ ). Algunos de los módulos mas populares ya están incluidos con la misma distribución de Perl. + +perlfaq contiene preguntas y respuestas relacionadas con muchas tareas comunes, y algunas veces provee sugerencias sobre buenos módulos CPAN para usar. + +#### Material de Lectura + + - [perl-tutorial](http://perl-tutorial.org/) + - [Aprende en www.perl.com](http://www.perl.org/learn.html) + - [perldoc](http://perldoc.perl.org/) + - y perl incorporado: `perldoc perlintro` diff --git a/haskell.html.markdown b/haskell.html.markdown index e3ec3f38..6b3c6e17 100644 --- a/haskell.html.markdown +++ b/haskell.html.markdown @@ -329,7 +329,7 @@ main' = interact countLines sayHello :: IO () sayHello = do putStrLn "What is your name?" - name <- getLine -- this gets a line and gives it the name "input" + name <- getLine -- this gets a line and gives it the name "name" putStrLn $ "Hello, " ++ name -- Exercise: write your own version of `interact` that only reads diff --git a/php.html.markdown b/php.html.markdown index 1952d833..226eefff 100644 --- a/php.html.markdown +++ b/php.html.markdown @@ -72,7 +72,7 @@ $quotient = 2 / 1; // 2 $number = 0; $number += 1; // Increment $number by 1 echo $number++; // Prints 1 (increments after evaluation) -echo ++$number; // Prints 3 (increments before evalutation) +echo ++$number; // Prints 3 (increments before evaluation) $number /= $float; // Divide and assign the quotient to $number // Strings should be enclosed in single quotes; diff --git a/ru-ru/go-ru.html.markdown b/ru-ru/go-ru.html.markdown index f76ab920..8098f601 100644 --- a/ru-ru/go-ru.html.markdown +++ b/ru-ru/go-ru.html.markdown @@ -15,10 +15,10 @@ Go - это язык общего назначения, целью которо способ решать насущные проблемы. Концепции Go схожи с другими императивными статически типизированными языками. -Быстро компилируются и быстро выполняются, имеет легкие в понимании конструкции +Быстро компилируется и быстро исполняется, имеет легкие в понимании конструкции для создания масштабируемых и многопоточных программ. -Имеет в наличии отличную стандартную библиотеку и большое комьюнити, полное +Может похвастаться отличной стандартной библиотекой и большим комьюнити, полным энтузиазтов. ```go @@ -50,7 +50,7 @@ func main() { } // Функции содержат входные параметры в круглых скобках. -// Если параметров нет, пустые скобки все равно обязательны. +// Пустые скобки все равно обязательны, даже если параметров нет. func beyondHello() { var x int // Переменные должны быть объявлены до их использования. x = 3 // Присвоение значения переменной. @@ -102,11 +102,13 @@ func learnTypes() { p, q := learnMemory() // объявление p и q как указателей на int. fmt.Println(*p, *q) // * извлекает указатель. Печатает два int-а. - // Map как словарь или хеш теблица из других языков является динамически - // растущим ассоциативным массивом. + // Map как словарь или хеш теблица из других языков является ассоциативным + // массивом с динамически изменяемым размером. m := map[string]int{"three": 3, "four": 4} m["one"] = 1 + delete(m, "three") // встроенная функция, удаляет элемент из map-а. + // Неиспользуемые переменные в Go являются ошибкой. // Нижнее подчеркивание позволяет игнорировать такие переменные. _, _, _, _, _, _, _, _, _ = s2, g, f, u, pi, n, a3, s4, bs @@ -212,8 +214,8 @@ func learnInterfaces() { // Вызов метода String у i, типа Stringer. Вывод такой же что и выше. fmt.Println(i.String()) - // Функции в пакете fmt вызывают метод String у объектов для получения - // строкового представления о них. + // Функции в пакете fmt сами всегда вызывают метод String у объектов для + // получения строкового представления о них. fmt.Println(p) // Вывод такой же что и выше. Println вызывает метод String. fmt.Println(i) // тоже самое @@ -254,7 +256,7 @@ func learnConcurrency() { go inc(0, c) // go начинает новую горутину. go inc(10, c) go inc(-805, c) - // Считывание всех трех результатов из канала и вывоод на экран. + // Считывание всех трех результатов из канала и вывод на экран. // Нет никакой гарантии в каком порядке они будут выведены. fmt.Println(<-c, <-c, <-c) // канал справа, <- обозначает "получение". @@ -293,14 +295,14 @@ func (p pair) ServeHTTP(w http.ResponseWriter, r *http.Request) { } ``` -## Что еще почитать +## Что дальше Основа всех основ в Go это [официальный веб сайт](http://golang.org/). Там можно пройти туториал, поиграться с интерактивной средой Go и почитать объемную документацию. -Для ознакомления рекомендуется почитать исходные коды [стандартной библиотеки -Go](http://golang.org/src/pkg/). Отлично задокументированая, она является -лучшим источником для чтения и понимания Go, его стиля и идиом. Либо можно, -кликнув на имени функции в [документации](http://golang.org/pkg/), перейти к ее -исходным кодам. +Для живого ознакомления рекомендуется почитать исходные коды [стандартной +библиотеки Go](http://golang.org/src/pkg/). Отлично задокументированая, она +является лучшим источником для чтения и понимания Go, его стиля и идиом. Либо +можно, кликнув на имени функции в [документации](http://golang.org/pkg/), +перейти к ее исходным кодам. diff --git a/tr-tr/brainfuck-tr.html.markdown b/tr-tr/brainfuck-tr.html.markdown new file mode 100644 index 00000000..a6f6f078 --- /dev/null +++ b/tr-tr/brainfuck-tr.html.markdown @@ -0,0 +1,86 @@ +--- +language: brainfuck +filename: brainfuck-tr +contributors: + - ["Prajit Ramachandran", "http://prajitr.github.io"] +translators: + - ["Haydar KULEKCI", "http://scanf.info/"] +lang: tr-tr +--- + +Brainfuck son derece minimal bir programlama dilidir. (Sadece 8 komut) ve +tamamen Turing'dir. + +``` +"><+-.,[]" (tırnak işaretleri hariç) karakterleri dışındaki her karakter +gözardı edilir. + +Brainfuck is represented by an array with 30,000 cells initialized to zero +and a data pointer pointing at the current cell. + +There are eight commands: ++ : Geçerli hücrenin değerini bir artırır. +- : Geçerli hücrenin değerini bir azaltır. +> : Veri işaretçisini bir sonraki hücreye hareket ettirir(sağdaki hücreye). +< : Veri işaretçisini bir önceki hücreye hareket ettirir(soldaki hücreye). +. : Geçerli hücrenin ASCII değerini yazdırır (örn: 65 = 'A'). +, : Bir girdilik karakteri aktif hücre için okur. +[ : Eğer geçerli hücredeki değer sıfır ise, ]ifadesine atlar. + Diğer durumlarda bir sonraki yönergeye geçer. +] : Eğer geçerli hücredeki değer sıfır ise, bir sonraki yönergeye geçer. + Diğer durumlarda, [ ifadesine karşılık gelen yönergelere döner. + +[ ve ] bir while döngüsü oluşturur. Açıkça, dengeli olmalıdırlar. + +Basit bir Brainfuck programına göz atalım. + +++++++ [ > ++++++++++ < - ] > +++++ . + +Bu program 'A' karaterini ekrana basar. İlk olarak, #1'inci hücre 6'ya artırılır. +#1'inci hücre döngü için kullanılacaktır. Sonra, ([) döngüsüne girilir ve +#2'inci hücreye hareket edilir. #2'inci hücre 10 kez artırılır, #1'inci hücreye +geri dönülür. #1 hücresini bir azaltır. Bu döngü 6 kez gerçekleşir. (Bu 6 kez +azaltmak demektir, #1 hücresi 0 değerini alır ve bu noktada ] ifadesini atlar). + +Bu noktada, biz #1 hücresindeyiz, değeri şu anda 0 ve #2 hücresinin değeri +60'tır. Biz #2 hücresine hareket diyoruz ve bu hücreyi 5 defa artırıyoruz. +#2'nin şu anki değeri 65 olur. Sonra #2 hücresinin ASCII karşılığını +yazdırıyoruz. 65 değerinin ASCII karşılığı 'A'dır. Ekrana 'A' yazılacaktır. + + +, [ > + < - ] > . + +Bu program kullanıcıdan bir girdi okur, ve karakteri bir diğer hücreye yazdırır, +ve daha sonra aynı karakteri ekrana yazdırır. + +, ifadesi kullanıcıdan karakteri #1 hücresine okur. Sonra bir döngü +başlar. #2 hücresine hareket edilir, #2 hücresinin değeri bir artırılır, #1 +hücresine geri dönülür, ve #1 hücresinin değer bir azaltılır. Bu #1 hücresinin +değeri 0 olana kadar devam eder ve #2 hücresi #1'in eski değerini tutar. Çünkü +biz #1 hücresindeki verileri döngü süresince #2 hücresine taşıyoruz, ve sonunda +#2 hücresinin ASCII değerini yazdırıyoruz. + +Boşluk karakteri sadece okunabilirliği artırmak içindir. Aşağıdaki gibi de +yazabilirsiniz. + +,[>+<-]>. + + +Bu uygulamanın ne yaptığına bakalım: + +,>,< [ > [ >+ >+ << -] >> [- << + >>] <<< -] >> + +Bu program 2 sayı alır, ve birbiri ile çarpar. + +Özetle, ilk olarak iki girdi alır. Sonra, #1 hücresinde şarta bağlı harici bir +döngü başlar. Sonra #2 ye hareket edilir, ve içerde #2 hücresine bağlı bir döngü +daha başlar ve #3 hücresinin değerini artırır. Ama, Bir problem vardır: iç +döngünün sonunda #2'inci hücrenin değeri 0 olacaktır. Bunu çözmek için #4 +hücresinin de değerini yükseltiyoruz, ve sonra #4 hücresinin değerini #2'ye +kopyalıyoruz. +``` + +İşte Brainfuck. Zor değil değil mi? Eğlenmek için kendi programınızı +yazabilirsiniz, veya farklı bir dilde Brainfuck yorumlayıcısı yazabilirsiniz. +Yorumlayıcı oldukça basittir, ama mazoşist iseniz, Brainfuck içerisinde bir +Brainfuck yorumlayıcısı yazmayı deneyebilirsiniz. diff --git a/tr-tr/objective-c-tr.html.markdown b/tr-tr/objective-c-tr.html.markdown new file mode 100644 index 00000000..854d70f6 --- /dev/null +++ b/tr-tr/objective-c-tr.html.markdown @@ -0,0 +1,320 @@ +--- +language: Objective-C +contributors: + - ["Eugene Yagrushkin", "www.about.me/yagrushkin"] + - ["Yannick Loriot", "https://github.com/YannickL"] +filename: LearnObjectiveC-tr.m +translators: + - ["Haydar KULEKCI", "http://scanf.info/"] +lang: tr-tr +--- + +Objective-C Apple tarafından, OSX ve iOS işletim sistemleri ve onların +kendi çatıları olan Cocoa ve Cocoa Touch için kullanılan bir programlama dilidir. +Genel açamlı, object-oriented bir yapıya sahip programlama dilidir. C +programlama diline Smalltalk stilinde mesajlaşma ekler. + +```cpp +// Tek satır yorum // işaretleri ile başlar + +/* +Çoklu satır yorum bu şekilde görünür. +*/ + +// #import ile Foundation başlıklarını projeye import edebiliriz. +#import <Foundation/Foundation.h> +#import "MyClass.h" + +// Progarmınızı girişi bir main fonksiyonudur ve bir integer değer döner. +int main (int argc, const char * argv[]) +{ + // Programdaki bellek kullanımını kontrol etmek için autorelease bir + // oluşturuyoruz. Autorelease bellekte kullanılmayan değerlerin kendi + // kendini silmesi demektir. + NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; + + // NSLog konsola bir satırlık bilgi yazdırmak için kullanılır. + NSLog(@"Hello World!"); // "Hello World!" değeri yazdırılır. + + /////////////////////////////////////// + // Tipler & Değişkenler + /////////////////////////////////////// + + // Basit Tanımlamalar + int myPrimitive1 = 1; + long myPrimitive2 = 234554664565; + + // Nesne Tanımlamaları + // strongly-typed nesne tanımlaması için karakter değişken isminin önüne + // * karakteri konulur. + MyClass *myObject1 = nil; // Strong typing + id myObject2 = nil; // Weak typing + // %@ bir nesnedir. + // 'description' objelerin değerlerinin gösterilmesi için bir düzendir. + NSLog(@"%@ and %@", myObject1, [myObject2 description]); + // "(null) and (null)" yazdırılacaktır. + + // Karakter Dizisi (String) + NSString *worldString = @"World"; + NSLog(@"Hello %@!", worldString); // "Hello World!" yazdırılacaktır. + + // Karakterler + NSNumber *theLetterZNumber = @'Z'; + char theLetterZ = [theLetterZNumber charValue]; + NSLog(@"%c", theLetterZ); + + // Tamsayılar + NSNumber *fortyTwoNumber = @42; + int fortyTwo = [fortyTwoNumber intValue]; + NSLog(@"%i", fortyTwo); + + NSNumber *fortyTwoUnsignedNumber = @42U; + unsigned int fortyTwoUnsigned = [fortyTwoUnsignedNumber unsignedIntValue]; + NSLog(@"%u", fortyTwoUnsigned); + + NSNumber *fortyTwoShortNumber = [NSNumber numberWithShort:42]; + short fortyTwoShort = [fortyTwoShortNumber shortValue]; + NSLog(@"%hi", fortyTwoShort); + + NSNumber *fortyTwoLongNumber = @42L; + long fortyTwoLong = [fortyTwoLongNumber longValue]; + NSLog(@"%li", fortyTwoLong); + + // Kayan Noktalı Sayılar (Floats) + NSNumber *piFloatNumber = @3.141592654F; + float piFloat = [piFloatNumber floatValue]; + NSLog(@"%f", piFloat); + + NSNumber *piDoubleNumber = @3.1415926535; + piDouble = [piDoubleNumber doubleValue]; + NSLog(@"%f", piDouble); + + // BOOL Değerler + NSNumber *yesNumber = @YES; + NSNumber *noNumber = @NO; + + // Dizi objeleri + NSArray *anArray = @[@1, @2, @3, @4]; + NSNumber *thirdNumber = anArray[2]; + NSLog(@"Third number = %@", thirdNumber); // "Third number = 3" yazdırılır + + // Dictionary objeleri + NSDictionary *aDictionary = @{ @"key1" : @"value1", @"key2" : @"value2" }; + NSObject *valueObject = aDictionary[@"A Key"]; + NSLog(@"Object = %@", valueObject); // "Object = (null)" yazıdılır + + /////////////////////////////////////// + // Operatörler + /////////////////////////////////////// + + // Operatörler C dilindeki gibi çalışır. + // Örneğin: + 2 + 5; // => 7 + 4.2f + 5.1f; // => 9.3f + 3 == 2; // => 0 (NO) + 3 != 2; // => 1 (YES) + 1 && 1; // => 1 (Logical and) + 0 || 1; // => 1 (Logical or) + ~0x0F; // => 0xF0 (bitwise negation) + 0x0F & 0xF0; // => 0x00 (bitwise AND) + 0x01 << 1; // => 0x02 (bitwise left shift (by 1)) + + /////////////////////////////////////// + // Kontrol Yapıları + /////////////////////////////////////// + + // If-Else ifadesi + if (NO) + { + NSLog(@"I am never run"); + } else if (0) + { + NSLog(@"I am also never run"); + } else + { + NSLog(@"I print"); + } + + // Switch ifadesi + switch (2) + { + case 0: + { + NSLog(@"I am never run"); + } break; + case 1: + { + NSLog(@"I am also never run"); + } break; + default: + { + NSLog(@"I print"); + } break; + } + + // While döngü ifadesi + int ii = 0; + while (ii < 4) + { + NSLog(@"%d,", ii++); // ii++, ii değişkenini kullanıldıktan + //sonra yerinde artırır. + } // => "0," + // "1," + // "2," + // "3," yazdırılır + + // For döngü ifadesi + int jj; + for (jj=0; jj < 4; jj++) + { + NSLog(@"%d,", jj++); + } // => "0," + // "1," + // "2," + // "3," yazdırılır + + // Foreach ifadesi + NSArray *values = @[@0, @1, @2, @3]; + for (NSNumber *value in values) + { + NSLog(@"%@,", value); + } // => "0," + // "1," + // "2," + // "3," yazdırılır + + // Try-Catch-Finally ifadesi + @try + { + // İfadelerinizi buraya yazın + @throw [NSException exceptionWithName:@"FileNotFoundException" + reason:@"Sistemde Dosya Bulunamadı" userInfo:nil]; + } @catch (NSException * e) + { + NSLog(@"Exception: %@", e); + } @finally + { + NSLog(@"Finally"); + } // => "Exception: Sistemde Dosya Bulunamadı" + // "Finally" + // yazdırılacaktır + + /////////////////////////////////////// + // Objeler + /////////////////////////////////////// + + // Bellekten bir alan ayırmak ve objeyi burada oluşturmak bir obje örneği + // oluşturalım. Bir obje allocate ve init aşamalarını bitirmeden tam olarak + // işlevsel değildir. + MyClass *myObject = [[MyClass alloc] init]; + + // Objective-C nesne yönelimli programlama modelinin temelinde objelere + // mesaj gönderme vardır. + // Objective-C'de bir method çağırılmaz, ona bir mesaj gönderilir. + [myObject instanceMethodWithParameter:@"Steve Jobs"]; + + // Programda kullanılan bellek temizlenir + [pool drain]; + + // Program Sonu + return 0; +} + +/////////////////////////////////////// +// Sınıflar ve Fonksiyonlar +/////////////////////////////////////// + +// Sınıfınızı (MyClass.h) header dosyasında tanımlayın: + +// Sınıf tanımlama yapısı: +// @interface ClassName : ParentClassName <ImplementedProtocols> +// { +// Üye değişken (member variable) tanımlaması; +// } +// -/+ (type) Method tanımlaması; +// @end +@interface MyClass : NSObject <MyCustomProtocol> +{ + int count; + id data; + NSString *name; +} +// getter ve setter için otomatik oluşturulmuş gösterim. +@property int count; +@property (copy) NSString *name; // Copy the object during assignment. +@property (readonly) id data; // Declare only a getter method. + +// Metodlar ++/- (return type)methodSignature:(Parameter Type *)parameterName; + +// "+" class metodları içindir ++ (NSString *)classMethod; + +// "-" instance metodu içindir +- (NSString *)instanceMethodWithParmeter:(NSString *)string; +- (NSNumber *)methodAParameterAsString:(NSString*)string andAParameterAsNumber:(NSNumber *)number; + +@end + +// Metodların implementasyonlarını (MyClass.m) dosyasında yapıyoruz: + +@implementation UserObject + +// Obje bellekten silineceği (release) zaman çağırılır +- (void)dealloc +{ +} + +// Constructor'lar sınıf oluşturmanın bir yoludur +// Bu varsayılan bir constructor'dur ve bir obje oluşturulurken çağrılır. +- (id)init +{ + if ((self = [super init])) + { + self.count = 1; + } + return self; +} + ++ (NSString *)classMethod +{ + return [[self alloc] init]; +} + +- (NSString *)instanceMethodWithParmeter:(NSString *)string +{ + return @"New string"; +} + +- (NSNumber *)methodAParameterAsString:(NSString*)string andAParameterAsNumber:(NSNumber *)number +{ + return @42; +} + +// MyProtocol içerisinde metod tanımlamaları +- (void)myProtocolMethod +{ + // ifadeler +} + +@end + +/* + * Bir `protocol` herhangi bir sınıf tarafından implement edilen metodları tanımlar + * `Protocol`ler sınıfların kendileri değildir. Onlar basitçe diğer objelerin + * implementasyon için sorumlu oldukları bir arayüz (interface) tanımlarlar. + */ +@protocol MyProtocol + - (void)myProtocolMethod; +@end + + + +``` +## Daha Fazla Okuma + +[Vikipedi Objective-C](http://tr.wikipedia.org/wiki/Objective-C) + +[Objective-C Öğrenme](http://developer.apple.com/library/ios/referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/) + +[Lise Öğrencileri için iOS: Başlangıç](http://www.raywenderlich.com/5600/ios-for-high-school-students-getting-started) diff --git a/tr-tr/php-tr.html.markdown b/tr-tr/php-tr.html.markdown index c5576fd7..3db437cf 100644 --- a/tr-tr/php-tr.html.markdown +++ b/tr-tr/php-tr.html.markdown @@ -146,6 +146,11 @@ echo $associative['One']; // 1 yazdıracaktır. $array = ['One', 'Two', 'Three']; echo $array[0]; // => "One" +// Dizinin sonuna bir eleman ekleme +$array[] = 'Four'; + +// Diziden eleman silme +unset($array[3]); /******************************** * Çıktı @@ -692,7 +697,7 @@ $cls = new SomeOtherNamespace\MyClass(); Referans ve topluluk yazıları için [official PHP documentation](http://www.php.net/manual/) adresini ziyaret edin. -Gncel en yi örnekler için [PHP Usulüne Uygun](http://kulekci.net/php-the-right-way/) adresini ziyaret edin. +Güncel en yi örnekler için [PHP Usulüne Uygun](http://kulekci.net/php-the-right-way/) adresini ziyaret edin. Eğer bir paket yöneticisi olan dil kullandıysanız, [Composer](http://getcomposer.org/)'a bir göz atın. |