What's "Controller"? is that the name of a Script component that you've written yourself?
Is "Boid Controller Flock 1" the name of a gameobject in your scene that has a Controller component attached?
Although I'm getting the feeling that you may be mixing up the concept of Components and GameObjects perhaps, so if you could give a little more detail about the hierarchy and naming of your gameobjects and components, this would help a lot in solving your problem.
If you use GetComponent(something) and you don't know if the object exists anymore it's always good to use an if after that controlling if it does exist, like this:
And just to mention that GetComponent calls is quite CPU heavy, so it's good to cache values when possible, to use less CPU, first get the Boid controller, save it to a variable, and then extract the values:
Not seeing the rest of the code makes diagnosing this a bit tricky. But I strongly suspect the problem isn't with your if-statement but with how you are handling input.
For example, let's say you call calc() in response to a key being pressed. Input.GetKeyUp will return false because the C key wasn't just released.
Doublecheck the conditions that lead to calc() being called and make sure they match the Input check inside of calc(). Better yet, change the code so it doesn't matter. One way would be for the code which is responding to the key/mouse/whatever to pass an argument to calc() that tells it what to do. For example, it could pass in the name or index of which boid controller to switch to.