Advanced Programming using C# PDF
Document Details
Uploaded by AppreciatedJasper5929
Tags
Summary
This document is a lecture or presentation on advanced programming using C#. It covers different programming paradigms, including structured/modular and object-oriented programming (OOP), explaining how they approach program design. It also explores how programming languages are categorized, highlighting distinctions between compilers and interpreters. The document details aspects of .NET framework and memory management.
Full Transcript
Advanced Programming using C# C# البرمجة المتقدمة باستخدام مقدمة في البرمجة المتقدمة C#باستخدام Introduction to programming Variables and Data Types Operators Control Statements Arrays Methods Structures and Enum 2 ...
Advanced Programming using C# C# البرمجة المتقدمة باستخدام مقدمة في البرمجة المتقدمة C#باستخدام Introduction to programming Variables and Data Types Operators Control Statements Arrays Methods Structures and Enum 2 Programming Languages يمكن تصنيف اللغات عالية المستوى (من حيث المنهجية) إىل: اللغات المنظمة أو المعيارية Structured or Modular Languages البنامج مقسم إىل مهام أصغر تسىم الوحدة النمطية ليتم استدعاؤها عند ر الحاجة مثالFortran ،C : اللغات الشيئية Object Oriented Programming البرمجة الشيئية هي نموذج برمجي يعتمد على الكائنات Objectsالتي تمثل وحدات تحتوي على البيانات Attributesوالدوال Methodsهذه الكائنات يمكنها التفاعل مع بعضها البعض داخل البرنامج.الهدف الرئيس ي من البرمجة الشيئية هو تنظيم الكود بطريقة تجعل من السهل تطويره وصيانته. عىل سبيل المثال ،C ++ :جافا C# ، 3 Structured or Modular Programming البرمجة الهيكلية لبرمجة الهيكلية أو البرمجة املعيارية هي منهج برمجي يتم فيه تقسيم البرنامج إلى وحدات ُ مستقلة صغيرة تسمى الوحدات النمطية أو الوحدات البرمجية Modulesكل وحدة تحتوي على جزء معين من البرنامج وتقوم بوظيفة محددة.الهدف من البرمجة الهيكلية هو جعل البرامج أكثر تنظيما وقابلة لإلدارة ،مما يسهل عملية التطوير ،االختبار ،والصيانة. Module Module C , Fortran ,basic Module Module Module 4 Object Oriented Programming البرمجة الشيئية هي نموذج برمجي يعتمد على الكائنات Objectsالتي تمثل وحدات تحتوي على البيانات Attributesوالدوال Methodsهذه الكائنات يمكنها التفاعل مع بعضها البعض داخل البرنامج.الهدف الرئيس ي من البرمجة الشيئية هو تنظيم الكود بطريقة تجعل من السهل تطويره وصيانته. Object Message Object C++ ,Java ,C# Message Object 5 المترجم Compiler البمجية :Compilerهو برنامج يتحقق من بناء التعليمات ر البمجية المكتوبة بلغة برمجة عالية ويحول التعليمات ر المستوى إىل لغة األلة ،كل ذلك مرة واحدة ،قبل تشغيل البنامج. ر C , C++ Machine Code )(.exe Code Memory Compiling Execution CPU Compiler 7 Interpreter يعمل علي حتويل وترمجة كل مجلة من الربانمج ايل لغة األلة ،واحدة تلو األخرى، أثناء تشغيل الربانمج. : JavaScript ,Pythonمثال يف كل مرة حيتاج الربانمج إىل تشغيله جيب ترمجته أوال Code Memory Interpret and Execution CPU Interpreter 8 HyperMix compiled +Interpreted Java ,C# □ مثال Code Intermediate Memory Language Compiling Interpret and Execution CPU Compiler Interpreter 9.NET (C#) C# Intermediate Memory Code Language Interpret and Compiling Execution CPU file.cs file.exe Or file.dll Interpreter C# Compiler JIT (Just In Time Compiler) SDK CLR 10 .NET Framework إطار عمل .NETأو NET Frameworkهو مجموعة من التقنيات واألدوات التي تم تطويرها بواسطة شركة مايكروسوفت.إليك بعض األسباب التي تجعل استخدام NET. ً Framework مفيدا: ❖ تطوير متعدد اللغات :يدعم NET Frameworkعدة لغات برمجة مثل C#و VB.NET و F#.هذا يتيح للمطورين اختيار اللغة التي يفضلونها بناء على خبراتهم. ❖ االستقرار واألمان :يوفر NET.بيئة آمنة ومستقرة لتشغيل التطبيقات.تتضمن ميزات األمان التحقق من الهوية واألذونات ،مما يساعد في حماية التطبيقات من الهجمات. ❖ املكتبات الشاملة :يحتوي NET.على مكتبات ضخمة من األكواد القابلة إلعادة االستخدام ،مما يسهل تطوير التطبيقات بسرعة وكفاءة.هذه املكتبات تغطي مجاالت متعددة مثل الشبكات ،قواعد البيانات ،واجهات املستخدم ،والتشفير. ❖ دعم قاعدة البيانات :يتكامل NET.بسالسة مع قواعد البيانات مثل SQL Server و ،Oracleمما يسهل تطوير تطبيقات تعتمد على البيانات. ❖ تطوير التطبيقات املتعددة :يسمح بإمكانية تطوير تطبيقات تعمل على أنظمة تشغيل مختلفة، سواء كانت تطبيقات ويب ،تطبيقات سطح املكتب ،أو تطبيقات الهاتف املحمول. .NET Framework يتكون الـ .NET Frameworkمن مكونين أساسيين: )1. CLR (Common Language Runtime 2. Class Library بشكل عام ،يتيح لك .NET Frameworkإمكانية بناء تطبيقات متنوعة تعمل على عدة منصات باستخدام مكتبات ووظائف جاهزة تسهل عملية التطوير. 12 .NET framework CLR (Common Language Runtime).1 .1بيئة تشغيل :هو املكون املسؤول عن تنفيذ التعليمات البرمجية Codeاملكتوبة بلغات البرمجة املختلفة التي تدعمها NET.. .NET Application .2اآللة االفتراضية للتطبيقات Application Virtual Machine: ) ( IL تشغل هذه البيئة التعليمات البرمجية في وقت التشغيل. .NET Framework .3إدارة تنفيذ الشيفرة البرمجية Manage Execution of Code )(CLR هذا يعني أن CLRيتحكم في عملية تنفيذ الشيفرة البرمجية ويضمن أن جميع ُ التعليمات البرمجية تنفذ بشكل صحيح وآمن. Operating System Class Library.2 Hardware .1مجموعة من املكتبات : Set of Librariesتتكون من مكتبات تحتوي على الدوال والفئات املستخدمة لتطوير التطبيقات. .2املكتبة األساسية : Basic Class Library – BCLتحتوي على أنواع البيانات األساسية مثل النصوص واألعداد املستخدمة في جميع التطبيقات. Common Language Runtime CLR هو جزء أساس ي من إطار عمل .NET Framework.حيث يقوم بإدارة تنفيذ التعليمات البرمجية املكتوبة بلغات مختلفة مثل F# ،VB.NET ،C#وغيرها. يعد CLRاملسؤول عن إدارة ذاكرة النظام ،تنفيذ التعليمات البرمجية ،معالجة االستثناءات ،وتأمين األمان للبرامج. األدوار األساسية لـCLR: .1تنفيذ التعليمات البرمجية(Code Execution): يقوم CLRبتحويل التعليمات البرمجية املكتوبة بلغات برمجة عالية املستوى إلى ما يسمى اللغة الوسيطة العامة ) (Intermediate Language - ILيتم ترجمة هذه اللغة الوسيطة إلى التعليمات األصلية ) (Native Codeالتي يفهمها املعالج باستخدام مترجم يسمى)JIT (Just-In-Time .2إدارة الذاكرة(Memory Management): يعمل CLRعلى إدارة تخصيص الذاكرة وإزالتها باستخدام آلية تعرف باسم جامع القمامة) ، (Garbage Collectorحيث ً يقوم بإزالة الكائنات غير املستخدمة من الذاكرة تلقائيا لتحريرها. .3األمان(Security): يوفر CLRآلية لضمان أمان تنفيذ البرامج من خالل ما ُيعرف بـ أمان الكود املستند إلى األدلة(Code Access Security - CAS).يتم التحقق من التعليمات البرمجية لضمان أنها آمنة للتنفيذ وال تقوم بعمليات غير مسموح بها. .4التعامل مع االستثناءات(Exception Handling): يدير CLRجميع االستثناءات التي قد تحدث أثناء تنفيذ البرنامج بطريقة مركزية وموحدة.حيث ُيسهل التعامل مع األخطاء بطريقة منظمة مثلtry-catch-finally..NET Core (.NET).NET Core 1 (2016) , 2(2017),3(2019).NET 5 (2020).NET 6 (2021).NET7.0 (2022) Latest Version.NET 8.0 (2024) (LTS-Current) 15 First Program Method Declaration using System; namespace ConsoleApp1 { Class Definition internal class Program { static void Main(string[] args) { Console.WriteLine("Hello, World!"); Method } } Body } Statement Variables and Data Types 17 إدارة الذاكرة CLRاملسؤول عن إدارة الذاكرة فهو يقسم الذاكرة إلى منطقتين (التقسيم بناء على كيفية التعامل مع الذاكرة كالهما ذاكرة الوصول العشوائي) □ Stack Memory □ Heap Memory من خالل تقسيم الذاكرة إلى هاتين املنطقتين ،يكون NET Framework. قادرا على إدارة استخدام الذاكرة بكفاءة وتجنب املشكالت الشائعة املتعلقة بالذاكرة مثل تجاوز سعة املكدس( )Stackوتجزئة ()Heap 18 Stack Memory :Stack memoryهي منطقة خاصة من الذاكرة تستخدم لتخزين املتغيرات الصغيرة واملتغيرات املؤقتة. البيانات املخزنة متسلسلة(فوق بعضها البعض) محدودة ومحددة مسبقا في وقت التحويل البرمجي في الحجم وصول سريع. 3 2 ال يمكن تغيير حجم املتغيرات املوجودة فيه. 1 Stack 19 Heap Memory : Heap memoryه منطقة من الذاكرة تستخدم لتخصيص الذاكرة والمتغبات العامة ذات العمر الطويل ر الكببة ر والمتغبات ر الديناميكية ر مبعبة (مجموعة من كتل الذاكرة) ❖ البيانات المخزنة 3 2 ❖ ال حدود للحجم ❖ ال يوجد الوصول الرسي ع مثل المكدس 1 المتغبات ر ❖ يمكن ر تغيب حجم مجي ❖ يتم تخصيص الذاكرة أثناء تنفيذ التعليمات المكتوبة من قبل ر المب ر (وقت التشغيل) Heap 20 المتغيرات Variable موقع بالذاكرة يحتوي عىل: □ Name المتغب ر اسم المتغب )□ Size (number of bytes ر حجم □ Address العنوان X 10 12547 int X =10 Memory 21 Variable المتغب: ر اإلعالن عن Data Type □ Data type نوع البيانات حجم موقع بالذاكرة □ Name االسم يجب أن تبدأ بحرف int ;x يمكن أن تبدأ أو تحتوي عىل _ ال يمكن أن يكون رقما ال يمكن أن تحتوي عىل مسافة أو رمز مثل؟ @ ,*, - , / , Name المتغب ر تهيئة للمتغب ر تعيي القيمة األولية ر □ مرة واحدة فقط □ ;X = 10 المتغبات قبل استخدامها ر يجب تهيئة □ Variable Name value 22 Value Type القيم النوعية Value Typesهي نوع من البيانات في لغات البرمجة التي تعتمد على NET.مثل ،C#حيث يتم تخزين البيانات مباشرة في املكدس Stackعند التعامل مع X 10 12547 القيم النوعية ،يتم تخزين القيمة الفعلية للمتغير ،وليس )(address مرجعا يشير إلى مكان آخر في الذاكرة. Stack Memory نوع القيمة value type : مخزنة يف ذاكرة المكدس stack المتغي عىل القيمة نفسها ر يحتوي 23 Integer Data Types (value type) 24 Floating Point Data Types (value type) 25 value types Boolean true , false □ : مثال □ bool b = true; Character تحتوي عىل حرف واحد □ بايت2 = حجمها □ :مثال □ char ch; ch = 'A'; 26 Reference Types الـ ( Reference Typesأنواع المراجع) هي نوع من أنواع البيانات في البرمجة التي لا من تخزين القيمة الفعلية مباشرة . تشير إلى موقع في الذاكرة بد ً لا من عند استخدام نوع مرجعي ،يتم تخزين عنوان الذاكرة الذي يحتوي على البيانات بد ً البيانات نفسها . هذا يعني أنه عند تمرير أو تعديل مرجع ،فإنك تتعامل مع نفس البيانات المخزنة في الذاكرة. أمثلة على Reference Typesفي لغات مثل C#: يمثل كياناا يحتوي على خصائص ودوال ):الكالس( 1. Class مجموعة من العناصر من نفس النوع ):المصفوفة( 2. Array ):سلسلة نصية( 3. String نوع خاص يمثل النصوص بمعنى آخر ،إذا كان لديك متغير من نوع مرجعي وقمت بنسخه إلى متغير آخر ،فإن كال المتغيرين سيشيران إلى نفس الكائن في الذاكرة ،وبالتالي أي تغيير على الكائن من خالل أي منهما سيؤثر على المتغير اآلخر. 27 Reference Type Heap memoryالمتغي إىل القيمة الموجودة يف ر يشي ر □ 10 2357 (address) X 2357 Stack Heap Memory Memory 28 String String -→ a reference type 2357 Ahmed Aly string S = "Ahmed Aly"; S 2357 Console.WriteLine(s); Stack Heap Memory Memory 29 Input and Output Methods :طرق اإلخراج □ WriteLine() , Write() طباعة سلسلة حرفية Console.WriteLine("Hello World!"); المتغي ر طباعة قيمة int x,y; x = 100; y = 200; Console.WriteLine("value of x={0} \t value of y={1}", x,y); string s = "Ahmed Aly"; Console.WriteLine(s); 31 Input and Output Methods طرق اإلخراج □ األحرف الخاصة Symbol Meaning (prints) \t Tab spacing \n New line \\ backslash \’ Single quotes \” Double quotation \r عودة المؤشر الي بدلية السطر 32 Input and Output Methods طرق اإلدخال: □ )(ReadLine يقرأ سلسلة من إدخال المستخدم يحتاج المستخدم إىل الضغط عىل زر اإلدخال إلنهاء العملية ;)"Console.WriteLine("Enter Your Name ;)(string name=Console.ReadLine □ )(Read يقرأ حرفا واحدا من إدخال المستخدم ويعيد رقم Unicodeالخاص به إذا كانت الحروف متعددة يقرأ الحرف األول ;)"Console.WriteLine("Enter character ;)(int code=Console.Read □ )(ReadKey يقرأ زر لوحة المفاتيح الذي ضغط عليه المستخدم 33 التحويل بين أنواع البيانات .1التحويل الضمني Implicit Conversion يتم هذا النوع من التحويل تلقائيا بواسطة املترجم عندما يكون التحويل آمنا وال يوجد خطر فقدان البيانات.عادة ما يحدث بين األنواع املتوافقة. .2التحويل الصريح(Explicit Conversion): يتم عندما يكون التحويل قد يؤدي إلى فقدان البيانات أو عندما يكون غير آمن ،ويحتاج إلى تعليمات صريحة من املبرمج. يمكن استخدام التقسيم ) (Castingأو دوال التحويل مثلConvert. Byte short int long float double ;int x = 100 ;float f □ التحويل ألنواع البيانات المتوافقة (أنواع البيانات الرقمية) ;f = x التلقائ من األصغر إىل األكي ي □ التحويل 34 التحويل بين أنواع البيانات التحويل ألنواع البيانات المتوافقة (أنواع البيانات الرقمية) □ قد يتسبب يف فقدان البيانات □ من األكي إىل األصغر □ Byte short int long float double ;float f=3.15f التقسيم(Casting): ; int x ;x = (int) f في هذا املثال ،يتم تحويل doubleإلى int باستخدام التقسيم) ، (intلكن سيتم فقدان الجزء Convert to type العشري 35 التحويل بين أنواع البيانات )❖ باستخدام الدوال (من السلسلة إىل األرقام Parse ( ) Console.WriteLine("Enter Number"); string s = Console.ReadLine(); int x; x=int.Parse(s); TryParse () Console.WriteLine("Enter Number"); string s = Console.ReadLine(); int x; out int.TryParse(s,x); 36 التحويل بين أنواع البيانات ToString ( ) int x = 10; string s = x.ToString(); int x = 10; string s = Convert.ToString(x); x= Convert.ToInt32(s); C#أهم دوال التحويل في. لتحويل القيم إلى عدد صحيحConvert.ToInt32() ❖. لتحويل القيم إلى عدد عشريConvert.ToDouble() ❖. لتحويل القيم إلى نصConvert.ToString() ❖ False أوTrue لتحويل القيم إلى نوع منطقيConvert.ToBoolean() ❖ 37