WwW.TaRaBuL.NeT
 

Kullanıcı ismi
Şifreniz
Geri git   WwW.TaRaBuL.NeT > Bilgisayar ve İnternet > Bilgisayar Programlama

Konu Bilgileri
Konu Başlığı
C ile İlgili Temel Bilgiler
Konudaki Cevap Sayısı
0
Şuan Bu Konuyu Görüntüleyenler
 
Görüntülenme Sayısı
45

Yeni Konu aç  Cevapla
Alt 28.09.08, 14:36   #1 (permalink)
Kullanıcı Adı
Pc Kopat ADмiηistяαtOR™
Rütbesi
Yasal Uyarı
Cehennemden Çıkan Çılgın Türk
Üye Resmi
 
Baytar - ait Kullanıcı Resmi (Avatar)
Üye No
20
Bilgiler
Üyelik tarihi: Jul 2008
Mesajlar: 1.240
Konular: 1085
Online Süre: 5 gün 1 saat 2 dk
Reklam Komisyonu: 0
Cinsiyet
 Bay
Ruh HaLi
Nereden?
Dünyanın Merkezinden
İtibar
Tesekkür: 25
73 Mesajina 83 Tesekkür Aldi
Karizma
Rep Gücü : 8026
Rep Puanı : 800012
Rep Seviyesi : Baytar Bilgelerin Üstadıdır [en son seviye]Baytar Bilgelerin Üstadıdır [en son seviye]Baytar Bilgelerin Üstadıdır [en son seviye]Baytar Bilgelerin Üstadıdır [en son seviye]Baytar Bilgelerin Üstadıdır [en son seviye]Baytar Bilgelerin Üstadıdır [en son seviye]Baytar Bilgelerin Üstadıdır [en son seviye]Baytar Bilgelerin Üstadıdır [en son seviye]Baytar Bilgelerin Üstadıdır [en son seviye]Baytar Bilgelerin Üstadıdır [en son seviye]Baytar Bilgelerin Üstadıdır [en son seviye]
Seviye: 30 [♥ Bé-Yêu ♥♥ Bé-Yêu ♥♥ Bé-Yêu ♥♥ Bé-Yêu ♥♥ Bé-Yêu ♥]
Aktiflik: 621 / 888
Güç: 413 / 1010
Deneyim: 60%
İletisim
Baytar - MSN üzeri Mesaj gönder
Standart C ile İlgili Temel Bilgiler

C NEDIR ?

C programlama dili, Dennis Ritchie tarafindan Bell laboratuarlarinda yaratilmistir. PDP-11 ile Unix altinda calismak icin yaratilmis olmasina ragmen , ilgi uzerine MS-DOS altinda calisacak hale getirilmistir. Basitligi, olusan kodun kucuklugu, ve her cesit programlamada kullanilabilmesi, C yi populer bir dil yapmistir. C, cok kestirme olmasi nedeni ile, yeni bilgisayarlara baslayanlar icin ogrenmesi zordur. Bir programci, C ile ust seviyelerden, assembly'ye


yaklasan alt seviyelere kadar programlama yapabilir. C nin sagladigi bu rahatligin yaninda, tehlikeleride vardir. Ornegin, makineyi kilitleyebilecek bir

program yazmak, Pascal yada BASIC de yazmaktan cok daha kolaydir. Bir Pascal derleyicisinin fark edip uyaracagi bir hatayi, C derleyicileri fark etmeyebilir.

C de, kendi basinizasiniz..

NIYE C?

Bu gun IBM-PC icin yazilan piyasadaki yeni programlarin yuzde 75'i, C ile yaziliyor. MicroSoft, Macro Assembler 4.0 i cikardiktan sonra, onu C ile

yazdiklarini acikladi. Herhalde icinde birkac assembler rutin vardir ama, cogunlugu C ile yazilmistir. C, bir komite degilde, bir kisi tarafindan yazilmis oldugundan,

cok kullanisli bir lisandir, fakat cok iyi tanimlanmamistir. C icin bir standart yoktur, ama ANSI grubu, bu konuda calismaktadir. Isin ilgincligi, bir standart olmamasina

ragmen, degisiklikleri cok azdir. Halbuki iyi tanimi olan Pascal dilinin, derleyicileri birbirinden cok farklidir, ve bir Pascal programini bir bilgisayardan digerine

gecirmek zordur.. C nin Tasinabilirlik referanslari iyi olmasina ragmen, derleyiciler arasinda farkliliklar vardir. Bu degisiklikler genellikle BIOS fonksiyonlari gibi

standart olmayan seyler kullanildiginda kendini gosterir.

TANIMLAYICI ISIMLERI

Fonksiyon ve degisken isimleri, harfler ve rakkamlardan olusabilir. Ilk harf ya bir harf yada alt-cizgi karakteri olmak zorundadir. geri kalanlar

ise, harf, rakkam yada alt cizgi olabilir. Iki nokta onemlidir: (1) Buyuk ve kucuk harfler farklidir. Bir programda "ISIM", "iSiM" ve "isim", degisik tanimlayicilardir.

(2) C'de, en fazla sekiz karakter onemlidir. Bir tanimlayici 8 karakterden uzun olabilir, fakat ilk sekizi sayilir. Bu derleyiciniz icin boyle olmayabilir.

DERLEYICI

Bu derste bircok ornek program sunulucak. Bunlari istediginiz herhangi bir derleyici ile derleyebilirsiniz, fakat kullanim kolayligi bakimindan

borland C++ derleyicisini tercih etmenizi tavsiye ederim.

Temel Bilgiler

Bu dili anlatırken azda olsa belli bir düzeyde programlama bilgisine sahip olduğunuzu düşünmekteyiz. Ancak yeni başlayanlarada mümkün olan en iyi şekilde yaklaşabilmek için başlangıçta C++ diline ait veri tiplerinden, değişken tanımlamadan ve değişkenlere değer atamadan bahsedip, basit bir C++ programının yapısına göz atacağız.
Hazırmısınız ? Hiç vakit kaybetmeden başlıyoruz.

Veri Tipleri
Değişkenler
Programlara açıklama eklenmesi
Basit bir C++ Programının Yapısı
Veri Tipleri

Temel Veri Tipleri :
bool true ve false değerlerini alır. true = 1, false = 0 gibi düşünelebilir. Derleyicisine göre Bool şeklindede tanimlanıyor olabilir.
char ASCII karakterleri ve çok küçük sayılar için kullanılır.
enum Sıralanmış değerleri tutar.
int Sayma sayıları.
long Sayma sayıları.
float Ondalıklı sayılar.
double Ondalıklı sayılar.
long double Ondalıklı sayılar.
void Değersiz - boş.

Temel Veri Tiplerinin Uzunlukları :
Not : Bu değerler 32 bit uygulama geliştirme ortamındaki platformlara özeldir. Platformdan platforma değişebilir.
bool 0--1
char -128 -- 127
enum int ile aynı değerde
int -2,147,483,648 -- 2,147,483,647
long -2,147,483,648 -- 2,147,483,647
float 3.4E +/- 38
double 1.7E +/- 308
long double 1.2E +/- 4932

unsigned :
unsigned belli veri tiplerinin işaretsiz değerler almasını sağlar.
Örneğin; unsigned char 0 - 255 arasında değer alır. Dikkat edilecek olunursa negatif kısım atılmış ve burada ki değer uzunluğu pozitif kısıma eklenmiş.
unsigned char;int ve long türlerine uygulanabilir.
typdef - Türleri kendinize göre adlandırın :
typdef kullanarak tanımlanmış türleri kendinize göre adlandırabilirsiniz..Dikkat ediniz ki bu şekilde yeni bir tür yaratmıyorsunuz. Ayrıca bu isimlendirmenizi diğer tiplerle birlikte kullanamazsınız.
örneğin:
typdef double FINANSAL
artık double yerine FINANSAL kullanabilirsiniz.
long FINANSAL şeklinde bir kullanım hatalıdır.
Değişkenler

Değişken nedir?
Değişken belli bit türe ait verileri saklayan veri deposudur. Aksi belirtilmedikçe içerikleri değiştirilebilir.
Değişken nasıl Tanımlanır ?
Değişkenleri tanımlamak için aşağıdaki notasyon kullanılır.
[Veri Tipi] [Değişken Adı];

Örneğin içinde sayı tutacak bir değişken şu şekilde tanımlanabilir.

int sayi;

Benzer olarak aşağıdaki tanımlamalarda doğudur

char c;
int i;
float f;
double d;
unsigned int ui;

Değişken isimlerini tanımlarken dikkate alınacak noktalar :
C++ dilinde de C dilinde ki gibi büyük ve küçük harfler farklı verileri temsil eder.
Örneğin;
char c;
char C;
int sayi;
int Sayi;
c ve C hafızada farklı yerleri gösterirler. sayi ve Sayi'da farklıdır.
Değişkenler harflerle yada _ başlar.
İçlerinde boşluk yoktur.
Değişkenler istenildekleri yerde tanımlanabilirler. Ancak burada dikkate alınması gereken noktalar vardır. Lütfen bölüm sonundaki örneklere göz atınız.
Değişkenlere değer atanması :
Bir değişkene değer atamak için = operatörü kullanılır. Değişkene değer atama tanımlandığı zaman yapılabildiği gibi daha sonradanda yapılabilir.
Örneğin;
Tanımlama sırasında değer atama:
char c = 'c';
int sayi = 100;

Daha sonradan değer atama:
char c;
int sayi;
c = 'c ';
sayi = 100;

Aynı anda birden fazla değişken tanımlanabilir, ve aynı anda birden fazla değişkene değer atanabilir;

int i , j , k;
i = j = k = 100; i,j,k'nın değeri 100 oldu.

Programlara Açıklama Eklenmesi


Açıklama Nedir?
Değişkenleri tanımlarken dikkat ettiyseniz her C++ komutu ; (noktalı virgül) ile bitiyor. Bu derleyiciye komut yazımının bittiğini belitmek için kullanılıyor.
Programlar uzadıkça ve karmaşıklaştıkça programımıza bir daha ki bakışımızda neyi neden yaptığımızı unutabiliriz. Yada yazılmış olan programı bizden başka kişilerde kullanacak olabilir. Bundan dolayı ne yaptığımıza dair açıklamaları kodun içine serpiştirmeliyiz.

Yazdığınız komutlar basit fonksiyonları içersede detaylı şekilde açıklama eklemenizi öneririm. Böylecene aylar sonra kodunuza tekrar baktığınızda ne yaptığınızı kolayca hatırlayabilirsiniz. Başkası sizin kodunuza baktığında öğrenmesi çok hızlanacaktır.

Açıklamaları C++'ta nasıl tanımlayacaksınız ?
C++ program içerisine iki şekilde açıklama eklemenize izin veriyor.Biri C'nin açıklama ekleme şekli olan // kullanılması. C++ derleyicisi // 'den sonra satır boyunca yazılanların tümünü yok sayar.
Örneğin:
// Bu satır derleyici tarafından umursanmaz
// Ve ben satırın başına // yazarak bu satırın açıklama olduğunu belirtiyorum
// Aşağıda da örnek bir değişken tanımlanmıştır.
long ornek;

C++'ın C'den farklı olarak birden fazla satıra açıklama yazmayı sağlayan bir yapı daha vardır. Bu yapı /* ile başlar */ ile biter. Yukarıdaki örneği bu yapı ile aşağıdaki gibi tanımlayabiliriz.

/* Bu satır derleyici tarafından umursanmaz
Ve ben satırın başına // yazarak bu satırın açıklama olduğunu belirtiyorum
Aşağıda da örnek bir değişken tanımlanmıştır.*/
long ornek;

Basit bir C++ Programının Yapısı

Şu ana kadar veri tiplerinden bahsettik. Değişkenlerden bahsettik. Programa açıklama yazmaktan bahsettik. Ancak programı bir türlü göremedik. İşte şimdi bildiklerimizi kullanarak ilk programımızı yazacağız.
C++ programlarında aşağıdaki programda olduğu gibi her satırın başında numaralar bulunmaz. Biz bu numaraları daha sonra programı açıklamak için koyduk.

İlk Programımız :
1 // ilk olarak kütüphane dosyasını ekleyelim
2 #include "iostream.h"
3 void main( )
4 {
5 int sayi = 1;
6 cout **** sayi **** ". programınızı yaptınız!" **** endl;
7 }
Programın Açıklaması :
1 İlk satırda bir açıklama yazılmış.
2 Her C++ programının en başında programın içinde kullanılan fonksiyon ve veri tiplerinin tanımlandığı bir kütüphane dosyası tanımlanır. Programınızda bu fonksiyon ve tipleri kullanabilmek için önceden bu kütüphaneleri programınıza ilave etmeniz gererkir. Bu işlem

#include "[kütüphana adı]" şeklinde yapılır

3 Her C++ programında en az bir fonksiyonu vardır. ( Fonksiyonların ne olduğuna daha sonradan değineceğiz.) Bu fonksiyon main( ) fonksiyonudur.

4 Fonksiyonların içindeki komutlar { } aralığında yazılır. Bu satırdada fonksiyonun başlangıcı { ile tanımlanıyor . Komutlar 5,6. satırlarda tanımlanıyor. 7. satırda } ile bitiyor.

5 sayi değişkeni tanımlanıyor ve içeriğine 1 değeri atanıyor.

6 C'deki printf'e benzer olarak C++ 'da cout mevcut. Daha sonra cout 'u detaylı olarak inceleyeceğiz. Şu an için bilmeniz gereken tek şey cout'tan sonra **** kullandıktan sonra değişken adını yazarsak, o değişkenin değeri ekrana yazılır. Sabit değer yazarsak ( "filan falan", 3, -45.56 gibi ) bunuda ekrana yazar. endl ise satır sonunu belirterek yeni satıra geçmemizi sağlar.

7 main fonksiyonunun sonunu } ile bitiriyoruz.

Programın Çıktısı aşağıdaki gibi olacaktır :
1. programınızı yaptınız!


C Dili - 2. Konu

ILK C PROGRAMINIZ

En basit C programi:

main()

{

}

Bu bir programdir, ve bunu kisaltmanin, basitlestirmenin bir yolu yoktur. Isin kotu tarafi, bu program birsey yapmaz. Buradaki en onemli kelime,

main() sozcugudur. Her programda olmasi gereken bu sozcuk, daha sonra gorecegimiz gibi, ilk satirda olmak zorunda degildir, fakat bir giris noktasi saglamasi

nedeni ile gereklidir. Bunu takiben, iki tane parantez vardir. Bunlar da, main'in bir fonksiyon oldugunu belirtir. (Bir fonksiyonun tam olarak nelerden olustugunu

daha sonra gorecegiz) Programin kendisi ise, iki kume isareti arasinda yer alir.

BIRSEYLER YAPAN BIR PROGRAM:

Daha ilginc bir program:

main()

{

printf("Bu bir satirlik yazidir.");

}

Bu programin, ayni diger program gibi, main, ve kume isaretleri vardir. Icinde yer alan fonksiyonun, bir satiri ekrana getirmesi icin, satiri " "

isaretleri arasina aliyoruz. Ayrica fonksiyonun parametresi oldugunu belirtmek icin de, cevresine parantez koyuyoruz. Satirin sonundaki noktali virgule dikkatinizi

cekerim: Bir satirin bittigini derleyiciye bildirmek icin, C dilinde ; noktali virgul kullanilir.

DAHA COK SEY YAZAN BIR PROGRAM

main()

{

printf("Bu bir satirlik yazidir.\n");

printf("Bu bir baska ");

printf(" satirdir.\n");

printf("Bu ucuncu satirdir.\n");

}



Bu programda, 4 tane islenecek komut vardir. Satirlar bu sirada islenir. Ilk satirin sonundaki tuhaf ters bolu isareti, ondan sonra gelecek

karakterin bir kontrol karakteri oldugunu belirtiyor. Bu durumda n harfi, yeni bir satir istegini belirtir. Yani, cursor, ekranin sol basina, ve birsatir asagiya kayar.

Katarin herhangi bir yerinde yeni bir satir isteyince, "\n" komutunu verebilirsiniz. Hatta bir kelimenin ortasina bile koyup, kelimeyi iki satira bolebilirsiniz.

Ilk komut, metini ekrana yazar, ve bir satir asagi iner. Ikinci komut, yazdiktan sonra, yeni satir yapmadan, ucuncu komutun icindekileri ekrana yazar. Bu komutun

sonunda, yeni satira gecilir. Dorduncu komut ise, ucuncu satiri yazar, ve bir return karakteri sunar.

RAKAMLAR YAZALIM

main()

{

int index;



index = 13;

printf("Indexin degeri simdi %d\n",index);

index = 27;

printf("Indexin degeri simdi %d\n",index);

index = 10;

printf("Indexin degeri simdi %d\n",index);

}

Bu programda ise, ilk defa olarak bir degisken kullaniyoruz. main() ve { isaretlerine artik alismis olmalisiniz. Bunun altinda "int index" diye bir

satir yer aliyor. Bu satir, "index" isimli bir tamsayi degiskenini tanimliyor. Cogu mikrobilgisayarlar icin, 'int' tipi bir degiskenin alabilecegi degerler, -32768 ila 32767 dir.

'index' ismi ise, TANIMLAYICILAR da bahsettigimiz kurallara uyan herhangi birsey olabilir. Bu satirin sonunda da, satirin bittigini belirten ; noktali virgul yer alir.

Bir satirda birden fazla tam sayi tanimlanabilir, fakat henuz biz bununla ortaligi karistirmayacagiz. Programi incelerken, uc tane atama satiri oldugunu, ve bu satirlarin

altinda da degerlerin yazildigini goruyoruz. Once 13 atanir, ve ekranayazilir, sonra 27 ve 10. RAKAMLARI NASIL YAZARIZ Sozumuze sadik kalmak icin,

tekrar printf komutuna donelim, ve nasil calistigini gorelim. Gordugunuz gibi, butun satirlar, birbiri ile ayni, ve diger orneklerden farki, icindeki % isareti. Bu harf,

printf'e ekrana yazmayi durdurup, ozel birsey yapmasini soyler. % isaretinden sonra gelen harf, d, bir tamsayi yazilacagini belirtir. Bundan sonra, yeni satira

geciren tanidik \n isaretini goruyoruz. Den-denler arasinda kalan butun harfler, printf komutu ile ekrana cikacaklari tanimlar. Bundan sonraki virgul ve "index"

sozcugu yer alir. printf komutu buradan degiskenin degerlerini okur. Daha fazla %d ekleyerek ,ve bunlari yine virgul ile birbirine ekleyerek, birden fazla degiskenin

de bu komut ile goruntulenmesini saglayabiliriz. Hatirlamaniz gereken onemli bir nokta, saha tanimlayici %d ile gecirdiginiz degisken miktari, ayni kalmalidir, yoksa

bir runtime hatasi verir.

BILGI SATIRLARI NASIL EKLENIR

/* Bu satiri, derleyici kullanmaz */

main() /* Bir satir daha */

{

printf("Bilgi satirlarinin nasil eklenecegini ");

/* Bilgi satirlari,

bir satirdan uzun olabilir.

*/

printf("goruyoruz.\n");

}

/* Ve programin sonu... */



Programa aciklik katmak icin, eklenebilecek bilgiler, derleyici tarafindan uzerinden atlanir. Lutfen yukaridaki programi, iyi bir ornek olarak

almayin. Son derece daginik bir sekilde katilmis bilgi satirlari, sadece kullanimini gostermek amaci iledir. Bilgi satirlari, /* isaretleri ile baslar, ve */ isareti ile sona erir.

Dikkat etmeniz gereken bir nokta, birkac satirdan olusan bilgi satirlarinda bulunan program komutlarinin, isleme konmayacagidir.Bilgi satirlari, programin nasil

calistigini gostermesi bakimindan cok onemlidir. Yazdiginiz bir programin, bir baskasi tarafindan okunabilmesi, yada siz nasil calistigini unuttuktan sonra

hatirlayabilmeniz icin, mumkun oldugu kadar cok bilgi satiri eklemekte fayda vardir. Bazi derleyiciler ic ice bilgi satirlarini kabul ederler, fakat genelde, ic ice bilgi

satirlari kabul edilmez.

IYI SAYFA DIZIMI

Yazdiginiz bir program, kolay anlasilir olmalidir. Bunun icin, duzgun bir sekilde programlamak cok onemlidir. C derleyicileri, komutlar arasindaki

bosluklari goz onune almaz, ve bu nedenle de programlariniza aciklik katmak icin, dilediginiz gibi bosluk ve bos satir birakabilirsiniz. Su iki programi karsilastiralim:

main() /* Program buradan basliyor */

{

printf("iyi yazis,");

printf ("programin anlasilmasini kolaylastirir\n");

}

ve:

main() /* Program buradan basliyor */ {printf("iyi yazis,"); printf

("programin anlasilmasini kolaylastirir\n");}



Odev:

1. Ekrana kendi isminizi yazacak bir program yazin.

2. Programa ayri satirlarda, iki "printf" satiri daha ekleyerek,

adresinizi ve telefon numaranizi da yazdirin.

---------------------------------------------------------------------------------------------------------


Altın harflerle yaz mahlasımı. halvetim kasvet, kem gözlere şiş!... Cadü ya herru!...ya merru!...kafkef, gölge harâmilerine bir selam çak!... Abile ğatladı, demlenir simam, nüşinrevan'dan handan ummam ben. Ahu-yi felek mum, ben şamdan. düşmez kalkmaz bir Allah'tır uyan!...
Baytar isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Konuyu Beğendin mi ? O Zaman Arkadaşınla Paylaş
Sayfayı E-Mail olarak gönder

Sponsorumuz
Yeni Konu aç  Cevapla

Bookmarks
Facebook Google Yahoo Live Digg Reddit del.icio.us StumbleUpon Bluedot Blinklist Netvouz Spurl Mister-Wong Furl

Tags
bilgiler, ilgili, temel




internet kitapçınız kitapyurdu.com'dan binlerce kitaba ulaşabilirsiniz.



Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Pascal Temel Dersler Baytar Bilgisayar Programlama 3 28.09.08 12:50
Temel ve Maymun -Elisa- Komik 0 26.09.08 21:56
Temel reisin annesi bulundu... DeatheR Komik 0 20.09.08 21:46
Overclock’un Temel Prensipleri DeatheR Overclock ve Modifikasyon 0 09.09.08 18:41
Eviniz ve Mutfağınızla İlgili Pratik Bilgiler -Elisa- Pratik Bilgiler 1 07.09.08 15:52

Bütün Zaman Ayarları WEZ +2 olarak düzenlenmiştir. Şu Anki Saat: 07:04 .
Powered by vBulletin Version 3.7.0 Beta 6
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.
2oo8 © Copyright TaRaBuL.NeT(CoSKiM A.Ş. Kuruluşudur.)
Protected by CBACK.de CrackerTracker

17 18 19 20 21 22 24 25 26 27 34 35 36 38 39 40 45 46 47 48 49 50 51 52 53 54 55 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 78 79 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359