One disadvantage of procedural programming compared to object-oriented programming (OOP) is the difficulty in managing data encapsulation. Procedural programming often involves the use of global variables or shared data structures that are accessible throughout the program, which can lead to issues with data integrity and maintenance. In contrast, OOP promotes data encapsulation by bundling data and the methods that operate on that data within objects. This encapsulation ensures that the internal state of an object is protected from unintended modifications and can only be accessed through defined methods, enhancing data security and integrity. Encapsulation also promotes modularity and maintainability, as changes to the internal state of an object can be made without affecting other parts of the program. Procedural programming's reliance on global data can make it challenging to track and manage changes to the data, leading to potential errors and difficulties in maintaining the code. This lack of encapsulation is a significant drawback when developing large and complex software systems.