برنامه مسیر ۸ ماهه تا کنکور: مشاوره خصوصیت با استاد رضوی رو رزرو کن!
رزرو مشاوره
کنکور کامپیوتر
0
ورود | ثبت نام
نظرات
اشتراک
بالا
علاقه‌مندی

اشتراک
 

Struct چیست؟ ساختار یا Structure چیست

Struct چیست؟ این صفحه عالی آموزش داده که ساختار یا Structure چیست و تفاوت Struct و Class و همچنین Struct در زبان سی و Struct تودرتو را آموزش داده

Struct چیست؟

در هر زبان برنامه نویسیزبان های برنامه نویسی چیست؟زبان های برنامه نویسی چیست؟این مقاله عالی توضیح داده که زبان های برنامه نویسی چیست؟ و انواع زبان های برنامه نویسی و بهترین زبان برنامه نویسی برای شروع و پردرآمدترین آنها را معرفی کرده، روش‌های مختلفی برای نگهداری داده وجود دارد؛ مانند آرایهآموزش آرایه در ساختمان داده به زبان ساده و از 0 تا 100آموزش آرایه در ساختمان داده به زبان ساده و از 0 تا 100در این مقاله موارد زیر بررسی شده است : 1- آرایه چیست 2- انواع اندیس گذاری در آرایه 3- انواع آرایه 4- محاسبه آدرس در آرایه 5- محاسبه شماره در آرایه 6- آرایه در برنامه نویسی 7- مزایای استفاده از آرایه‌ها، لیست‌های پیوندی و پشتهساختمان داده پشته ⚡️ پشته چیست؟ کاربرد پشته در ساختمان دادهساختمان داده پشته ⚡️ پشته چیست؟ کاربرد پشته در ساختمان دادهاین مقاله عالی توضیح داده که پشته چیست و کاربرد پشته در ساختمان داده چیست، همچنین نحوه کارکرد پشته، پیاده سازی پشته و عملیات های پشته را معرفی کرده که هر کدام موارد استفاده خودشان را دارند؛ به‌عنوان مثال، برای ذخیره چندین داده تحت عنوان یک نام، ساده‌ترین راه استفاده از آرایه است ولی اگر قصد داشته باشیم چندین داده از جنس‌های متخلف را تحت یک نام ذخیره کنیم، شاید آرایه دیگر گزینه مناسبی نباشد. اینجاست که می‌توانیم از ساختمان داده Struct استفاده کنیم. از این ساختار می‌توان به شکل‌های مختلفی استفاده کرد و کمک شایانی در دسته ‌بندی داده‌‌ها می‌کند. در این مقاله سعی می‌کنیم ابتدا با فرم کلی این دستور آشنا شویم و در مرحله بعد، Struct را در زبان‌های سی (Cزبان برنامه نویسی C – مزایا و کاربرد زبان C – فرق C و ++Cزبان برنامه نویسی C – مزایا و کاربرد زبان C – فرق C و ++Cاین مقاله عالی ابتدا توضیح می‌دهد که زبان برنامه نویسی c چیست، سپس به بررسی مزایا و معایب زبان C ، کاربردهای زبان سی ، و تفاوت بین C و ++C می‌پردازد) و سی‌شارپ (C#سی شارپ چیست ⚡️سی شارپ به زبان سادهسی شارپ چیست ⚡️سی شارپ به زبان سادهاین صفحه عالی بررسی کرده که سی شارپ چیست و تاریخچه سی شارپ، محیط و ابزارهای سی شارپ، ویژگی های سی شارپ، مزایای سی شارپ و کاربرد و بازار کار سی شارپ را گفته ) به تفصیل بررسی کنیم. در انتها برای آشنایی هرچه بیشتر، یک مثال را در زبان‌های سی پلاس پلاسبرنامه نویسی سی پلاس پلاس چیست؟ مزایای برنامه نویسی C++‎؟برنامه نویسی سی پلاس پلاس چیست؟ مزایای برنامه نویسی C++‎؟برنامه نویسی سی پلاس پلاس چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای برنامه نویسی C++ پرداخته و نمونه هایی از کدهای زبان برنامه نویسی ++C را آورده (C++) و گولنگ (Golang) مشاهده خواهیم کرد.

ساختار Struct در برنامه نویسی

چرا باید از Struct استفاده کنیم؟

در زبان‌های مختلف برنامه نویسی به‌دلیل مزیت‌های قابل توجهی که Struct دارد، استفاده زیادی از این ساختار می‌شود. اگر بخواهیم چند مورد از مزیت‌های این ساختمان دادهآموزش ساختمان داده و الگوریتمآموزش ساختمان داده و الگوریتمهر ساختمان داده یک نوع فرمت ذخیره‌سازی و مدیریت داده‌ها در کامپیوتر است، که امکان دسترسی و اصلاح کارآمد آن داده‌ها را برای یکسری از الگوریتم‌ها و کاربردها فراهم می‌کند، در این صفحه به بررسی و آموزش ساختمان داده و الگوریتم پرداخته شده است را نام ببریم، می‌توانیم به موارد زیر اشاره کنیم.

تفاوت Struct و Class

شاید در ظاهر این دو ساختمان مشابه یکدیگر باشند، ولی در واقع تفاوت‌های کلیدی با هم دارند که به شرح زیر است:

Struct در زبان سی (C)

برای پیاده سازی ساختمان داده Struct در زبان سی، می‌توان از دستور Struct به روش زیر عمل کرد:

struct structName
{
    datatype member_1
    datatype member_2
    datatype member_3
…
    datatype member_n

};

به‌عنوان مثال اگر بخواهیم از Struct برای دسته‌بندی اطلاعات مربوط به اشخاص استفاده کنیم، خواهیم داشت:

struct person
{
    char first_name[30];
    char last_name[30];
    int age;
};

و به‌صورت زیر یک متغیر از نوع person تعریف می‌کنیم:

int main() {
    struct person p1;
}

مقداردهی و دسترسی به عناصر

پس از تعریف Struct و متغیری از این نوع، نوبت به مقدار‌دهی به اعضای Struct و دسترسی به آنها است. برای مقداردهی به عضوی از نوع عدد صحیح یا Integer، به‌شکل زیر عمل می‌کنیم:

int main() {
    struct person p1;
    p1.age = 25;
}

نکته‌ای که باید به آن توجه کنیم این است که برای اختصاص دادن داده‌هایی از نوع رشته (Strringرشته یا String چیست ⚡️ نحوه کار با استرینگ در برنامه نویسیرشته یا String چیست ⚡️ نحوه کار با استرینگ در برنامه نویسیاین مقاله به معرفی رشته (String) یا استرینگ در برنامه نویسی، رشته در پایتون، رشته در C++ و همین طور الگوریتم‌های معروف مربوط به رشته ها در برنامه نویسی پرداخته ) نمی‌توان به صورت بالا عمل کرد؛ به‌عنوان مثال فرض کنید قصد داریم برای شخص p1 نام و نام خانوادگی تعیین کنیم، چنان‌چه به شکل زیر این کار را انجام دهیم، به خطا بر خواهیم خورد:

p1.first_name = "Alice";
p1.last_name = "Anderson";

برای جلوگیری از بروز خطا، می‌بایست از تابع strcpy() استفاده کنیم:

strcpy(p1.first_name, "Alice");
strcpy(p1.last_name, "Anderson");

همچنین می‌توانیم زمانی که متغیری را تعریف می‌کنیم، به اعضای آن مقداردهی کنیم که در واقع چهار قدم بالا در یک خط خلاصه می‌شود:

int main() {
    struct person p1 = {"Alice", "Anderson", 25};
}

Struct تودرتو

شما می‌توانید با استفاده از Struct، ساختارهای تودرتو طراحی کنید. با این متد می‌توان ساختمان داده‌های پیچیده را بدون سردرگمی از حجم بالای داده‌ها پیاده‌سازی کرد. در ادامه مثال قبل، اگر فرض کنیم که می‌خواهیم اطلاعات کارمندان یک شرکت را علاوه بر نام و سن آن‌ها ذخیره کنیم، خواهیم داشت:

#include <stdio.h>

struct person {
    char first_name[30];
    char last_name[30];
    int age;
};

struct company {
    struct person emp;
    int id;
    int salary;
};

int main() {
    struct company employee1;
    employee1.id = 236;
    employee1.salary = 25000;
    employee1.emp.age = 29;

    strcpy(employee1.emp.first_name, "Max");
    strcpy(employee1.emp.last_name, "Smith");

    printf("First name: %s\nlast name: %s\nage: %d\nID: %d\nSalary: %d\n", 
            employee1.emp.first_name, employee1.emp.last_name, employee1.emp.age, 
            employee1.id, employee1.salary);
    return 0;
}

که خروجی کد بالا به شکل زیر خواهد بود:

خروجی قطعه کد اطلاعات کارمندان به زبان سی

Struct در زبان سی‌شارپ (C#)

پیاده سازی Struct در زبان سی‌شارپ مشابه زبان سی است و در برخی از جزئیات متفاوت است که در ادامه به این موارد می‌پردازیم. برای تعریف Struct در سی‌شارپ به‌صورت زیر عمل می‌کنیم:

using System;

struct Person
{
    public string first_name;
    public string last_name;
    public int age;
}

و به شکل زیر یک متغیر به نام person از ساختاری که تعریف کرده‌ایم، ایجاد می‌کنیم:

class Program
{
    static void Main()
    {
        Person person;
    }
}

مقداردهی و دسترسی به عناصر

به صورت زیر عمل مقداردهی به اعضای person را انجام می‌دهیم که مشابه کدی است که در زبان سی پیاده‌سازی کرده‌ایم (به‌جز اختصاص‌دهی داده از نوع رشته به متغیر متغیر در برنامه نویسی چیست ⚡️انواع متغیر در برنامه نویسیمتغیر در برنامه نویسی چیست ⚡️انواع متغیر در برنامه نویسیاین صفحه عالی بررسی کرده متغیر در برنامه نویسی چیست و انواع متغیر در برنامه نویسی را معرفی و مراحل کار با متغیر، نحوه تعریف و قوانین نام‌گذاری متغیرها را گفته ).

person.first_name = "Liam";
person.last_name = "Anderson";
person.age = 36;

جهت دسترسی به مقادیر اعضای person نیز همانند توضیحات پیشین، خواهیم داشت:

Console.WriteLine("First Name: " + person.first_name); Console.WriteLine("Last Name: " + person.last_name);
Console.WriteLine("Age: " + person.age);

Struct تودرتو

زبان سی‌شارپ همانند زبان سی از Structهای تودرتو پشتیبانی می‌کند. چنان‌چه بخواهیم مثالی که در قسمت قبل بررسی کردیم را با زبان سی‌شارپ پیاده‌سازی کنیم، قطعه کد زیر حاصل می‌شود:

using System;

struct Person
{
    public string first_name;
    public string last_name;
    public int age;
}

struct Company
{
    public Person emp;
    public int id;
    public int salary;
}

class Program
{
    static void Main()
    {
        Company employee1;
        employee1.emp.first_name = "Benjamin";
        employee1.emp.last_name = "Walker";
        employee1.emp.age = 42;
        
        employee1.id = 632;
        employee1.salary = 57000;
        
        Console.WriteLine("First Name: " + employee1.emp.first_name);
        Console.WriteLine("Last Name: " + employee1.emp.last_name);
        Console.WriteLine("Age: " + employee1.emp.age);
        Console.WriteLine("ID: " + employee1.id);
        Console.WriteLine("Salary: " + employee1.salary);
    }
}

و پس از اجرا، خروجی نمایش داده شده به‌شکل زیر خواهد بود:

خروجی قطعه کد اطلاعات کارمندان به زبان سی‌شارپ

Struct در بقیه زبان‌های برنامه نویسی

در برخی از زبان‌‌ها مانند پایتونزبان برنامه نویسی پایتون چیست؟ – نحوه شروع و دلایل محبوبیتزبان برنامه نویسی پایتون چیست؟ – نحوه شروع و دلایل محبوبیتزبان برنامه نویسی پایتون (Python) چیست؟ این مقاله عالی به بررسی دلایل محبوبیت پایتون، موارد استفاده از پایتون و نحوه شروع به برنامه نویسی پایتون پرداخته و جاواجاوا چیست؟ تعریف، معنی و ویژگی های جاوا (java) از 0تا100جاوا چیست؟ تعریف، معنی و ویژگی های جاوا (java) از 0تا100جاوا یک زبان برنامه نویسی همه منظوره، مبتنی بر کلاس و شی گرا است که برای داشتن وابستگی های پیاده سازی کمتر طراحی شده است، زبان برنامه نویسی جاوا شبیه ++C است، دستور Struct وجود ندارد و باید به‌جای آن از دستور class استفاده کرد. این مورد می‌تواند یکی از معایب این زبان‌ها در مقابل زبان‌هایی مانند سی و سی‌شارپ باشد (عدم بهینه بودن مصرف حافظه)؛ به عنوان مثال اگر بخواهیم مثالی که تا به اینجا بررسی کرده‌ایم را به زبان پایتون پیاده‌سازی کنیم، خواهیم داشت:

class Person:
    def __init__(self, first_name, last_name, age):
        self.first_name = first_name
        self.last_name = last_name
        self.age = age

class Company(Person):
    def __init__(self, first_name, last_name, age, id, salary):
        super().__init__(first_name, last_name, age)
        self.id = id
        self.salary = salary

employee1 = Company("Lucas", "Bennett", 41, 721, 75000)
print(f"First name: {employee1.first_name}\n"\
      f"Last name: {employee1.last_name}\n"\
      f"Age: {employee1.age}\n"\
      f"ID: {employee1.id}\n"\
      f"Salary: {employee1.salary}\n")

از زبان‌های دیگری که دستور Struct را پشتیبانی می‌کنند، می‌توان به سی‌پلاس‌پلاس (C++) و گولنگ (Golang) اشاره کرد که جهت آشنایی هرچه بیشتر، با دو مثالِ Struct در این دو زبان، مقاله را به پایان می‌رسانیم.

Struct در سی‌پلاس‌پلاس

#include <iostream>
#include <string>
using namespace std;

struct Person{
    string first_name;
    string last_name;
    int age;
};

struct Company{
    Person employee;
    int id;
    int salary;
};

int main(){
    Company company;

    company.employee.first_name = "John";
    company.employee.last_name = "Doe";
    company.employee.age = 30;

    company.id = 827;
    company.salary = 50000;

    cout << "Employee Name:" << company.employee.first_name << " " << company.employee.last_name << endl;
    cout << "Age:" << company.employee.age << endl;
    cout << "ID:" << company.id << endl;
    cout << "Salary:" << company.salary << endl;

Struct در گولنگ

Package main

import (
    "fmt"
)

type Person struct{
    first_name string
    last_name  string
    age       int
}

type Company struct{
    Employee Person
    id       int
    salary   int
}

func main() {
    var employee1 Company

    employee1.Employee.first_name = "Alexander"
    employee1.Employee.last_name = "Johnson"
    employee1.Employee.age = 26

    employee1.id = 169
    employee1.salary = 41000
    
    fmt.Println("First name:", employee1.Employee.first_name)
    fmt.Println("Last name:", employee1.Employee.last_name)
    fmt.Println("Age:", employee1.Employee.age)
    fmt.Println("ID:", employee1.id)
    fmt.Println("Salary:", employee1.salary)
}

جمع‌بندی

در زبان‌های برنامه نویسی، متدهای مختلفی برای ذخیره و سازمان‌دهی داده‌ها وجود دارد که هر کدام وظایف مشخصی دارند. یکی از این ساختار‌ها، ساختمان داده Struct است که با توجه به ماهیت و قابلیت‌های آن، می‌توان در بخش‌های متعددی از آن بهره جست و داده‌هایی با ساختارهای پیچیده را پیاده‌سازی کرد.

Struct چیست؟

Struct یا Structure ساختمان داده‌ای است برای گروه‌بندی داده‌هایی که از لحاظ نوع و یا منطقی به هم مرتبط هستند. مانند مشخصات مربوط به یک خودرو مثل رنگ، وزن و ...

در چه شرایطی از Struct استفاده می‌شود؟

از این ساختار می‌توان در شرایط متنوعی استفاده کرد، ولی به صورت کلی از Struct برای گروه‌بندی متغیرهایی استفاده می‌شود که از لحاظ داده و یا مفهوم به هم مرتبط هستند. این کار باعث جلوگیری از پیچیدگی برنامه و دسترسی سریع‌تر به داده‌ها می‌گردد.

Struct و class چه تفاوت‌هایی با هم دارند؟

از تفاوت‌های این دو ساختمان داده، می‌توان به سه مورد اشاره کرد:
1. قابلیت وراثت در class و عدم وجود این قابلیت در Struct
2. نحوه دسترسی به حافظه
3. موارد استفاده

امتیازدهی5 1 1 1 1 1 1 1 1 1 15.00 امتیاز (3 رای)
اشتراک
بارگذاری نظرات
تلگرام اینستاگرام تماس با پشتیبانی: 09378555200 تماس با پشتیبانی: 09378555200